<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version  (Ruby 3.1.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc editing="no"?>
<?rfc tocompact="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>

<rfc ipr="trust200902" docName="draft-ietf-nfsv4-scsi-layout-nvme-04" category="std" consensus="true" submissionType="IETF" tocDepth="3" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="pNFS SCSI Layout for NVMe">Using the Parallel NFS (pNFS) SCSI Layout to access NVMe storage devices</title>

    <author initials="C." surname="Hellwig" fullname="Christoph Hellwig" role="editor">
      <organization></organization>
      <address>
        <email>hch@lst.de</email>
      </address>
    </author>
    <author initials="C." surname="Lever" fullname="Charles Lever">
      <organization abbrev="Oracle">Oracle Corporation</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>chuck.lever@oracle.com</email>
      </address>
    </author>
    <author initials="S." surname="Faibish" fullname="Sorin Faibish">
      <organization>Opendrives.com</organization>
      <address>
        <postal>
          <street>11 Selwyn Road</street>
          <city>Newton</city>
          <region>MA</region>
          <code>02461</code>
          <country>United States of America</country>
        </postal>
        <phone>+1 617-510-0422</phone>
        <email>s.faibish@opendrives.com</email>
      </address>
    </author>
    <author initials="D." surname="Black" fullname="David L. Black">
      <organization>Dell Technologies</organization>
      <address>
        <postal>
          <street>176 South Street</street>
          <city>Hopkinton</city>
          <region>MA</region>
          <code>01748</code>
          <country>United States of America</country>
        </postal>
        <email>david.black@dell.com</email>
      </address>
    </author>

    <date year="2023" month="August" day="31"/>

    <area>Transport</area>
    <workgroup>NFSv4</workgroup>
    <keyword>NFSv4</keyword>

    <abstract>


<t>This document specifies how to use the Parallel Network File System
(pNFS) SCSI Layout Type to access storage devices using the NVMe
protocol family.</t>



    </abstract>



  </front>

  <middle>


<section anchor="sec:intro"><name>Introduction</name>

<t>NFSv4.1 (in <xref target="RFC8881"/>) includes a pNFS feature that allows
reads and writes to be performed by other means than directing read and
write operations to the server.  Through use of this feature, the server,
in the role of metadata server is responsible for managing file and
directory metadata while separate means are provided for execution of
reads and writes.</t>

<t>These other means of performing file reads and writes are defined by
individual mapping types which often have their own specifications.  The
SCSI Layout Type, defined in RFC8154, describes how I/O is to be done
directly to block storage devices.</t>

<t>The pNFS Small Computer System Interface (SCSI) layout <xref target="RFC8154"/> is a layout type
that allows NFS clients to directly perform I/O to block storage devices
while bypassing the Metadata Server (MDS).  It is specified by using
concepts from the SCSI protocol family for the data path to the storage
devices.</t>

<t>This document defines how NVMe Namespaces using the NVM Command Set <xref target="NVME-NVM"/>
exported by NVMe Controllers implementing the
NVMe Base specification <xref target="NVME-BASE"/> are to be used as
storage devices using the SCSI Layout Type.
The definition is independent of the underlying transport used by the
NVMe Controller and thus supports Controllers implementing a wide variety
of transports, including PCI Express, RDMA, TCP and FibreChannel.</t>

<t>This document does not amend the existing SCSI layout document.  Rather,
it
defines how NVMe Namespaces can be used within the SCSI Layout by
establishing a mapping of the SCSI constructs used in the SCSI layout
document to corresponding NVMe constructs.</t>

<section anchor="ssc:intro:reqlang"><name>Requirements Language</name>

<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

</section>
<section anchor="ssc:intro:defs"><name>General Definitions</name>

<t>The following definitions are provided for the purpose of providing
an appropriate context for the reader.</t>

<dl>
  <dt>Client</dt>
  <dd>
    <t>The "client" is the entity that accesses the NFS server's
resources.  The client may be an application that contains the
logic to access the NFS server directly or be part of the operating
system that provides remote file system services for a set of
applications.</t>
  </dd>
  <dt>Metadata Server (MDS)</dt>
  <dd>
    <t>The Metadata Server (MDS) is the entity responsible for coordinating
client access to a set of file systems and is identified by a server
owner.</t>
  </dd>
</dl>

</section>
</section>
<section anchor="sec:slm"><name>SCSI Layout mapping to NVMe</name>

<t>The SCSI layout definition <xref target="RFC8154"/> references only a
few SCSI-specific concepts directly.  This document provides a mapping
from these SCSI concepts to NVM Express concepts that are used
when using the pNFS SCSI layout with NVMe namespaces.</t>

<section anchor="ssc:volident"><name>Volume Identification</name>

<t>The pNFS SCSI layout uses the Device Identification VPD page (page code
0x83) from <xref target="SPC5"/> to identify the devices used by
a layout. Implementations that use NVMe namespaces as storage devices
map NVMe namespace identifiers to a subset of the identifiers
that the Device Identification VPD page supports for SCSI logical
units.</t>

<t>To be used as storage devices for the pNFS SCSI layout, NVMe namespaces
<bcp14>MUST</bcp14> support either the EUI64 or NGUID value reported in a Namespace
Identification Descriptor, the I/O Command Set Independent Identify
Namespace Data Structure, and the Identify Namespace Data Structure,
NVM Command Set. If available, use of the NGUID value is preferred
as it is the larger identifier.</t>

<t>Note: The PS_DESIGNATOR_T10 and PS_DESIGNATOR_NAME have no equivalent
in NVMe and cannot be used to identify NVMe storage devices.</t>

<t>The pnfs_scsi_base_volume_info4 structure for an NVMe namespace
<bcp14>SHALL</bcp14> be constructed as follows:</t>

<t><list style="numbers">
  <t>The "sbv_code_set" field <bcp14>SHALL</bcp14> be set to PS_CODE_SET_BINARY.</t>
  <t>The "pnfs_scsi_designator_type" field <bcp14>SHALL</bcp14> be set to
  PS_DESIGNATOR_EUI64.</t>
  <t>The "sbv_designator" field <bcp14>SHALL</bcp14> contain either the NGUID or
  the EUI64 identifier for the namespace.  If both NGUID and EUI64
  identifiers are available, then the NGUID identifier <bcp14>SHOULD</bcp14> be
  used as it is the larger identifier.</t>
</list></t>

<t>RFC 8154 specifies the "sbv_designator" field as an XDR variable length
opaque&lt;&gt;. The length of that XDR opaque&lt;&gt; value (part of
its XDR representation) indicates which NVMe identifier is present.
That length <bcp14>MUST</bcp14> be 16 octets for an NVMe NGUID identifier and
<bcp14>MUST</bcp14> be 8 octets for an NVMe EUI64 identifier.  All other lengths
<bcp14>MUST NOT</bcp14> be used with an NVMe namespace.</t>

</section>
<section anchor="ssc:fencing"><name>Client Fencing</name>

<t>The SCSI layout uses Persistent Reservations (PRs) to provide client
fencing.  For this to be achieved, both the MDS and the Clients have to
register a key with the storage device, and the MDS has to create a
reservation on the storage device.</t>

<t>The following sub-sections provide a full mapping of the required
PERSISTENT RESERVE IN and PERSISTENT RESERVE OUT SCSI commands <xref target="SPC5"/>
to NVMe commands which <bcp14>MUST</bcp14> be used when using
NVMe namespaces as storage devices for the pNFS SCSI layout.</t>

<section anchor="ssc:fencing:keys"><name>PRs - Key Registration</name>

<t>On NVMe namespaces, reservation keys are registered using the
Reservation Register command (refer to Section 7.3 of <xref target="NVME-BASE"/>)
with the Reservation Register Action
(RREGA) field set to 000b (i.e., Register Reservation Key) and
supplying the reservation key in the New Reservation Key (NRKEY)
field.</t>

<t>Reservation keys are unregistered using the Reservation Register
command with the Reservation Register Action (RREGA) field set to
001b (i.e., Unregister Reservation Key) and supplying the reservation
key in the Current Reservation Key (CRKEY) field.</t>

<t>One important difference between SCSI Persistent Reservations
and NVMe Reservations is that NVMe reservation keys always apply
to all controllers used by a host (as indicated by the NVMe Host
Identifier). This behavior is analogous to setting the ALL_TG_PT
bit when registering a SCSI Reservation key, and is always supported
by NVMe Reservations, unlike the ALL_TG_PT for which SCSI support is
inconsistent and cannot be relied upon.
Registering a reservation key with a namespace creates an
association between a host and a namespace. A host that is a
registrant of a namespace may use any controller with which that
host is associated (i.e., that has the same Host Identifier,
refer to Section 5.27.1.25 of <xref target="NVME-BASE"/>)
to access that namespace as a registrant.</t>

</section>
<section anchor="ssc:fencing:reg"><name>PRs - MDS Registration and Reservation</name>

<t>Before returning a PNFS_SCSI_VOLUME_BASE volume to the client, the MDS
needs to prepare the volume for fencing using PRs. This is done by
registering the reservation generated for the MDS with the device
(see <xref target="ssc:fencing:keys"/>) followed by a Reservation Acquire
command (refer to Section 7.2 of <xref target="NVME-BASE"/>) with
the Reservation Acquire Action (RACQA) field set to 000b (i.e., Acquire)
and the Reservation Type (RTYPE) field set to 4h (i.e., Exclusive Access
- Registrants Only Reservation).</t>

</section>
<section anchor="ssc:fenceaction"><name>Fencing Action</name>

<t>In case of a non-responding client, the MDS fences the client by
executing a Reservation Acquire command (refer to Section 7.2 of <xref target="NVME-BASE"/>),
with the Reservation Acquire Action
(RACQA) field set to 001b (i.e., Preempt) or 010b (i.e., Preempt and
Abort), the Current Reservation Key (CRKEY) field set to the
server's reservation key, the Preempt Reservation Key (PRKEY) field
set to the reservation key associated with the non-responding client
and the Reservation Type (RTYPE) field set to 010b (i.e., Exclusive
Access - Registrants Only Reservation).
The client can distinguish I/O errors due to fencing from other
errors based on the Reservation Conflict NVMe status code.</t>

</section>
<section anchor="ssc:recovery"><name>Client Recovery after a Fence Action</name>

<t>If an NVMe command issued by the client to the storage device returns
a non-retryable error (refer to the DNR bit defined in Figure 92 in
<xref target="NVME-BASE"/>), the client <bcp14>MUST</bcp14> commit all layouts that
use the storage device through the MDS, return all outstanding layouts
for the device, forget the device ID, and unregister the reservation
key.</t>

</section>
</section>
<section anchor="ssc:caches"><name>Volatile write caches</name>

<t>For NVMe controllers a volatile write cache is enabled if bit 0 of the
Volatile Write Cache (VWC) field in the Identify Controller Data
Structure, I/O Command Set Independent (see Figure 275 in <xref target="NVME-BASE"/>)
is set and the Volatile Write Cache Enable (WCE) bit (i.e., bit 00) in
the Volatile Write Cache Feature (Feature Identifier 06h)
(see Section 5.27.1.4 of <xref target="NVME-BASE"/>) is set.
If a volatile write cache is enabled on an NVMe namespace used as a
storage device for the pNFS SCSI layout, the pNFS server (MDS) <bcp14>MUST</bcp14>
use the NVMe Flush command to flush the volatile write cache to
stable storage before the LAYOUTCOMMIT operation returns by using the
Flush command (see Section 7.1 of <xref target="NVME-BASE"/>).
The NVMe Flush command is the equivalent to the SCSI SYNCHRONIZE
CACHE commands.</t>

</section>
</section>
<section anchor="sec:security"><name>Security Considerations</name>

<t>NFSv4 clients access NFSv4 metadata servers using the NFSv4
protocol. The security considerations generally described in <xref target="RFC8881"/>
apply to a client's interactions with
the metadata server. However, NFSv4 clients and servers access
NVMe storage devices at a lower layer than NFSv4. NFSv4 and
RPC security are not directly applicable to the I/Os to data servers
using NVMe.
Refer to Section <xref target="RFC8154" section="2.4.6" sectionFormat="bare">Extents Are Permissions</xref> and Section <xref target="RFC8154" section="4" sectionFormat="bare">Security Considerations</xref> of <xref target="RFC8154"/> for the
Security Considerations of direct block access from NFS clients.</t>

<t>pNFS with an NVMe layout can be used with NVMe transports
(e.g., NVMe over PCIe <xref target="NVME-PCIE"/>) that provide
essentially no additional security functionality. Or,
pNFS may be used with storage protocols such as NVMe over TCP <xref target="NVME-TCP"/>
that can provide significant transport
layer security.</t>

<t>It is the responsibility of those administering and deploying
pNFS with an NVMe layout to ensure that appropriate protection is
deployed to that protocol.
When using IP-based storage protocols such as NVMe over TCP, data
confidentiality and integrity <bcp14>SHOULD</bcp14> be provided for traffic between
pNFS clients and NVMe storage devices by using a secure communication
protocol such as TLS <xref target="RFC8446"/>.  For NVMe over TCP,
TLS <bcp14>SHOULD</bcp14> be used as described in <xref target="NVME-TCP"/> to
protect traffic between pNFS clients and NVMe namespaces used as
storage devices.</t>

<t>Physical security is a common means for protocols not based on IP.
In environments where the security requirements for the storage
protocol cannot be met, pNFS with an NVMe layout <bcp14>SHOULD NOT</bcp14> be
deployed.</t>

<t>When security is available for the data server storage protocol,
it is generally at a different granularity and with a different
notion of identity than NFSv4 (e.g., NFSv4 controls user access
to files, and NVMe controls initiator access to volumes).  As
with pNFS with the block layout type <xref target="RFC5663"/>,
the pNFS client is responsible for enforcing appropriate
correspondences between these security layers. In environments
where the security requirements are such that client-side
protection from access to storage outside of the layout is not
sufficient, pNFS with a SCSI layout on a NVMe namespace <bcp14>SHOULD
NOT</bcp14> be deployed.</t>

<t>As with other block-oriented pNFS layout types, the metadata server
is able to fence off a client's access to the data on an NVMe namespace
used as a storage device.  If a metadata server revokes a layout, the
client's access <bcp14>MUST</bcp14> be terminated at the storage devices via fencing
as specified in <xref target="ssc:fencing"/>.  The client has a
subsequent opportunity to acquire a new layout.</t>

</section>
<section anchor="sec:iana"><name>IANA Considerations</name>

<t>The document does not require any actions by IANA.</t>

</section>


  </middle>

  <back>


    <references title='Normative References'>



<reference anchor='RFC5663'>
  <front>
    <title>Parallel NFS (pNFS) Block/Volume Layout</title>
    <author fullname='D. Black' initials='D.' surname='Black'/>
    <author fullname='S. Fridella' initials='S.' surname='Fridella'/>
    <author fullname='J. Glasgow' initials='J.' surname='Glasgow'/>
    <date month='January' year='2010'/>
    <abstract>
      <t>Parallel NFS (pNFS) extends Network File Sharing version 4 (NFSv4) to allow clients to directly access file data on the storage used by the NFSv4 server. This ability to bypass the server for data access can increase both performance and parallelism, but requires additional client functionality for data access, some of which is dependent on the class of storage used. The main pNFS operations document specifies storage-class-independent extensions to NFS; this document specifies the additional extensions (primarily data structures) for use of pNFS with block- and volume-based storage. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='5663'/>
  <seriesInfo name='DOI' value='10.17487/RFC5663'/>
</reference>

<reference anchor='RFC8154'>
  <front>
    <title>Parallel NFS (pNFS) Small Computer System Interface (SCSI) Layout</title>
    <author fullname='C. Hellwig' initials='C.' surname='Hellwig'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>The Parallel Network File System (pNFS) allows a separation between the metadata (onto a metadata server) and data (onto a storage device) for a file. The Small Computer System Interface (SCSI) layout type is defined in this document as an extension to pNFS to allow the use of SCSI-based block storage devices.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8154'/>
  <seriesInfo name='DOI' value='10.17487/RFC8154'/>
</reference>

<reference anchor='RFC8881'>
  <front>
    <title>Network File System (NFS) Version 4 Minor Version 1 Protocol</title>
    <author fullname='D. Noveck' initials='D.' role='editor' surname='Noveck'/>
    <author fullname='C. Lever' initials='C.' surname='Lever'/>
    <date month='August' year='2020'/>
    <abstract>
      <t>This document describes the Network File System (NFS) version 4 minor version 1, including features retained from the base protocol (NFS version 4 minor version 0, which is specified in RFC 7530) and protocol extensions made subsequently. The later minor version has no dependencies on NFS version 4 minor version 0, and is considered a separate protocol.</t>
      <t>This document obsoletes RFC 5661. It substantially revises the treatment of features relating to multi-server namespace, superseding the description of those features appearing in RFC 5661.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8881'/>
  <seriesInfo name='DOI' value='10.17487/RFC8881'/>
</reference>


<reference anchor="SPC5" >
  <front>
    <title>SCSI Primary Commands-5</title>
    <author >
      <organization>INCITS Technical Committee T10</organization>
    </author>
    <date year="2019"/>
  </front>
  <seriesInfo name="ANSI INCITS" value="502-2019"/>
</reference>
<reference anchor="NVME-BASE" >
  <front>
    <title>NVM Express Base Specification, Revision 2.0b</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="January"/>
  </front>
</reference>
<reference anchor="NVME-NVM" >
  <front>
    <title>NVM Express NVM Command Set Specification, Revision 1.0b</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="January"/>
  </front>
</reference>
<reference anchor="NVME-PCIE" >
  <front>
    <title>NVMe over PCIe Transport Specification, Revision 1.0b</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="January"/>
  </front>
</reference>
<reference anchor="NVME-TCP" >
  <front>
    <title>NVM Express TCP Transport Specification, Revision 1.0b</title>
    <author >
      <organization>NVM Express, Inc.</organization>
    </author>
    <date year="2022" month="January"/>
  </front>
</reference>


<reference anchor='RFC8446'>
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname='E. Rescorla' initials='E.' surname='Rescorla'/>
    <date month='August' year='2018'/>
    <abstract>
      <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <seriesInfo name='RFC' value='8446'/>
  <seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>

<reference anchor='RFC2119'>
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname='S. Bradner' initials='S.' surname='Bradner'/>
    <date month='March' year='1997'/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='2119'/>
  <seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>

<reference anchor='RFC8174'>
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname='B. Leiba' initials='B.' surname='Leiba'/>
    <date month='May' year='2017'/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name='BCP' value='14'/>
  <seriesInfo name='RFC' value='8174'/>
  <seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>




    </references>



<section numbered="false" anchor="acknowledgements"><name>Acknowledgements</name>

<t>Carsten Bormann ran the scripted conversion from the XML2RFC v2 format
used by earlier drafts to the currently used markdown source format.</t>

<t>David Noveck provided ample feedback to various drafts of this document.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA71ba3MauZr+rl+hTT4M3gUWHMfJuE6dGoJxQh0bc4BkTvZS
LtEtTJebbqYvECrl/7K/ZX/ZvhdJrW5wZqZqd784tLolvZfnvUrpdDoiVIW+
kue98zed3vvOm74I0yBRGxgLM7UqOpEuVp1kle8uOnmQR51YHdKy6CS7je70
LsTuSr4RgSquZF6EIi8yrTZXcjxa3IhtdCUkDGdRAK9/Ouj8J3gO0s1GJ0Ve
jURJHCW6etZhVETJIwwkKT4XaVC9hId0s1X+ijAU6m2xhpE3+JwfNpleeRvk
aVbUR47WyMtlNYbbFlERA02fc6BEFmstpypTcaxjObmZy9YW/p7J+XA+lrck
EKBCqiDQeS4nX+40sJ1m6lHLUO8iGBVqucw0CAsn1uat0oxmCAWiu5KLTCX5
FggWe5AAfLy7EE97+0uoslin2ZXoyCxF+lBWaQYMsMqG6yyCnbdr+UnH8T56
RHFuVBRfyXWw/iXOi26oYbL9WmWxzuWt3mlcI81gy/tMBbGWwzQDKlQRpQm8
sdTzSxJgmRTZAQSURIUO5bwAGOUyXcnBRoPCVbVxsC6Dp26Me/yS0vwuiNoR
MU+zKJE3KlpG+doRsdVJmEU7ndO3hCKtQTf9vpzreH9I5CxVIRISFUDFRO8L
IjTTj0DxlbwbEJEhwqp3fnHZ/+nPEZ13V0zRL2mTlO06RbT+S19e9t913vZ7
YAbn58BPlADCrrvyQ6yCJ6eSa7WLQnlbDROD16AeudDBOknj9DECgHg8vrsE
qYCigUAccVx+SrdPUfIDRvvvLt7/SUZDJK+7RNp+CYEoYlIkabYB3e80WvDs
Zvj28vKN+fm+//bC/nz/vo8/59PhW/wXTJGthvA9zaKNyg6ApM1GJWHeeUuf
WATj7w4LYzwZjhdzFgcQF9OUqCi0lot+j760Xqr/Mz3mwIUG01ylvJCUgwls
yQtdybe98475Fkxr1PkwmI9qBMKoHH3bZmiuH1Su5Xyrg2gFmyPg23IGVpvD
L3ne7S1fIttbpC3HSdCtUXp+3un1LQHw58X98beREWC7eJGU/v8OKdPh+EgW
WqZgnRJe6coB/V8TshhOX5QJvPt/IQRBfHFxeSVEp9MBLwcmCCFACLFYR7mE
SFhirJI5EwAmtE736OlLgEw9KOhin2ZP8iYC3zk/5IXeiBNBYnHYai9SNIIE
LGujDUWEbZZiuIvlSm2i+NBlKjdRGIIPFq+BrSJLwzJAscjvr3MdXEU49CwE
hYtuX7bAt37/bmz1+fkMnFQQlyHspTgUrbQqygy5UYUEXtJ9LiAQhfAB4HGf
Reg4gOKllludQbDagD9ZHmQKVGZyo0FHODeRYZTpAOO2xOk4W9BsCQ6U4wit
g8yB9QLculIu1llaPq5JnOCcChS6IajtfdkWwAU+YszDDze6UKBKZd5LmAaK
3sIW0RK+wJAK5qQekZoVagSpYQJT8Ehu+n6NL3O9BTUCpcwNxGEJkge3CJzi
UvqbDkqScbo6kk0XsaKRfk8gQKIRlqPgSKa4TahXkPmgPIHDMIItS/B+G7Xd
Eg4ALDnSGKxhxUIncq12hLsok+k+sbBku8hJnlo04dZ2u4AQjf/GsTzIoqVB
9Phf71GGrOYQwpsRVnygsTgNnppYZb5NOrMB4KAP25YFyIDhj+gEGahAyxbS
dCY5czRwBCqen3FTZceRXeHBkBKtII4wWUQyHElGtET1S+QJVu3ysFW5M6o7
q/c5w6Z1dz0/A7GNCyTEGjnBmyxRBGkSQGYJoMzSDS1B0m3YJYEEX9LaWwWB
2wKdiRK+zHy/wpphHZAbnkDKkEMW2vQFtQDx/buNKc/PQn9DF8lE0xLDFF0A
OKUsl9FmG2vcySwl6AsKeDXs2CUxToJWEJqMBTBMMOVcvOyomnDrEiyIsYiW
Bn4B2xqzKGSZzBwWhqcsPtAqzs/TbsCHo7TihSynWJegpnKLH+cvMwp2DbYr
dwpyhOIgcEe7BcQCdoD4HYS7KkTMru8GbYo7uNNNBPkupMdJouNjraUggSQF
nMJjSOzob5B245okDgNoOwEQNlPoHcCPFeJHOg/Aj1qp7yNwh8mRjMFV6LxQ
yxhyU2bWugsjWfoYgAuhDCJDzov5CzF1wrEDmg7SjP0nyYWoqlYA/l+/hqD7
WwkGSKUb0JI8logHCDq5CTpXmf4thvFndgxP+iAhIoLPe3X3eb541eZ/5eSe
fs9Gf/88no2u8ff80+D21v0Q5ov5p/vPt9fVr2rm8P7ubjS55skwKmtD4tXd
4Cu8QTW+up8uxveTwe0rloCvxQrkEToqgEHBWLeukaT2YTj97//qX4CB/BN4
rfN+/2ewD354D9k2POzXOuHd0gR8AT+CsA8C9KJVhqugewzUNipUDFBTAOI1
+m+ABNiL+Od/R8n855X8yzLY9i/+agaQ4dqglVltkGR2PHI0mYV4YujENk6a
tfGGpOv0Dr7Wnq3cvUFBMPqoE8gGYqh/rIPIayAC68gNglYphgEEZOh9fBSd
EdfbEopVziH4HTpvsCXQQJZuswiDOwC60N8KNwcDMiQhQgwpxIgrjJ7yFQec
VxQO0bDBpRQHkx1R0qb5BQYnzj5+yqkcy9MyQx9PUdjELbDNAyKMSYmtt6XV
kB4VUfaEBTVWgYGXGtb3qIIfUI+pmMqcKzX5VfJIrQ8KvbSBkRKmRpsUBEBp
iPkAVyVHjtLANApXwzq/ohLtXpyMmEZUJ9815NbMyoIUXEKUWHKNlCzLqSPF
J5azJgwjGEBchLbJH1bU+4Q0CSmx7ypdHpWyS+MMOY83BmA1X10FLD8/yfQK
bDRBSZF1K7HSe5rYsQFUuiTB6ogg4LsapwnnrIVNKPLKYfMiTKwrhKpxQmDG
wUGgl/GCcNVUMuxg8GCmExdd2I9/SWMgSo6NLG38JxPcpTHJ+NnP7bxVSwv+
a0oDmot8mV4DMCEqtOgvNiVE79v7N2ecPn3/jn0CECqwaFR54LTJJRWcCtuM
sCvHNqzb+gGFgMVCgzVyqY0EECTd+KwCUGbBVi4N3pAO7zXnoX+AVZeNILpZ
VmjIKhYlwIkyPj+ROqr4nAdryLrdZFFQSDDbSR1RtYEzR5/HlxfoFiYfP4+v
IeuJS3RuJivE4FNlGKLBxjWFui3QxOUWZtR+pjn2Ejcz9SDcavKarJ+yBKrY
lMmG7KfyxU9FI6cFVa+k2qkohswGVnIFoa6xBUa1JZPMwAZAmlFh/U2sskcs
BJ0KQfKTFIt9RPJ0/nA9mo8/TgaL+9nDot8jUuujk8HdiAusJJWY7MCWGBdA
gqQKnAH5GeZ9Vp8+kE81fW2NlKzyB+ydPywh837YkQU+YPPqQuZWJOyJk4ba
BQfzpZePMY44OOZXQvS7HLjy5e4BTe4BEP0K/KeOQbJ2NqIcqAWOh/fXo4f5
aPHwYTwZzL52qwUqMsFVRY/gpNPsAYuyF1YDx1uXICGxW6eoWqq+iol+PpBZ
0dTMrnBdKdSZihMOVm4ruUzR1dFcVBFNw0MFz9bRbXrgKtB5Vjt6W5iMaIkB
2VrsjzEGoUJirPBaRMXLvCuMZfIf1zMqTpAaCRh7LNYi3arfSv0ff/kry45H
2QTAEeEM94WxhZbJAaCmyOkDsHkIGdZZYqcnRDt3LQRClscsGxNOwJoNdjGb
kqMBLfcvZQpwM77NQvNIZthasVPen5rRVCSobQD5MPdLeE/j3TDD9MufY3vo
chbJKZu8gciMIZCj14qfTgR3iltTQAIUaThvpjF1MDGlNZ3lZ2gcJkqbpESY
5YDaGwKe64+oYB3pnQ7bDD1qLFzPnfMbmo4F92pSgY36HNsiimuiyMyp+4rK
eeJaa0WbBZCjQuKmRFYRLNPkxPRuM2WGyNbJdcAsWs6UXJVx3CwYM67sQjEd
zebj+WI0wTx/Ppp9GcnxhD3l8Zv7zwubuXB738V3YfMt94bxZ0HC6nUJjPj9
WP5ilKSU5rUEDcqO/BtId0bCzvykxujxCoSPlcV9E1JQkPnixc/IYVi9AbEu
0RIecsxeOrN8yhaFJlTcnCUv33XfoJRr3ZUz4SBwcrUBTRWt2Wz0cXBmHIfx
371ebylbUVd329UEfxWQwRlZJCYKpr1CKq4xaNsBE8hlG7NlazL72+jrmaB9
0cGdkk2ZnJLOSX6Elc4f4Vqe4lr0en3H9We380m+5Yt8C4/vYQkJRN0PMO9D
4l1a3u8TjZ0lyKQUtn2ilSkGAMXFXgOA+ZzrtGMRSA5BreZuIpPF0ptj4MV7
hf8gE2hH1Djw+ly2Q6bkOs0L2VK5c/O2c8Yrf4LXLtvT2VmXS5KlBrcUpeT8
VaIgV01LcjUgatsklBCfHxYfH6YLsYTgR5Zqhc4dJ2K7AYy2rdIMCyZTBbdi
G5O+GCDDS+LoSdf3IztnZ0Fb2Gw3yiELwwTIiLmeimU6xpKwhEKzK2Y1Qpu4
56DiVQTsYVEWkE7maRDxt1a/Rsy4n/LzjgGPkyKRZePkM8UNTn8H7ABgNquS
g6dJpoRZxVUErYdLGSqAIYN42oQCAnp9WJd0KyvdtsWR33nbPX/X7XfP357w
Pn6LAVauKMXkRFaMcKi1zhWjUs25okx8CNSdLSwDvvaDBoWigiDBTVgjU/Dg
D6jchy/3t5/vRg9IluSU2HbNOQC3bTQUidZhzhEaT2oYNGYKIsZsahwR0GvA
TiV4gocAwsdv0yE+Ukuq8NpJyKxzVxyDRCvXGkR5FFGez0zUtYbpC2UQUGgV
P4oQ58c6os1F01eaxSpXORj+/UcBwnx/Jmxm4S9GB5Gt2eLrdNRY4mJtFxh9
C2KQ6Q63RMCIjoMAJjj32BDx1jyziLFp2SBoIEMrGgFkjBMwYK7xwFjSpOO1
nxvqJ/WatNr0i7AHzmdyhKlTQvqTEm+fDsp1kYsXRF5Fp2mm9WZbnGE53uv3
muMUmQdLcGln7T8eiOxGmH/YjmPTs/Fydpuj5abecqJa7sg/et7HyeOkdv4k
pnxZOFQJRpX8XVR5/dSADprpqKWM8jU1LHSWpRAaw5IciHUG1HKiGkOYD7D4
Dm367NM9TJNVHAWFreFVUebUvbKANuXGTAd4TQLEtOJ8/oaSgRrMM/MNYnzl
6heLxijPyypQG57qZ4XG3xinCVmEUUCRHaheJGY8WFOPajKTGKq9g96b6BGb
Cj+fw4NoYN3fnJLygK7bULLBeTXHBmFvOTRIK8ypvTHQtqGV5uNkyJYIKmYt
4Y5HTaUDz4+68Ibk+JrThyqvPJW+dc0Zwpc0hjGQBd8vCKAg0/YUgR9A+jfm
Wl0tfVIYNo7mYqDQCUoXRLciSfZMcSTcXr/S90P6vvXl16FFuEkpXcvLO7LE
npfw2mM/6q5ReDFKO3/3VkZJM27jCbUuXJl4krARcSFbvw7BApEPY3PEUg9b
AuLFuTfmIkjL/qgyDNm7XJ9xBGxkGBcnghcT2iX8/668KZNo9mlt60U1zp1/
0C11o7l/GIHodiimTW7A96ydPaK/oAGTURyTCuUHnbZWRrDkpAZn3A6+QhmM
J2LjRXXNxZquu0ZAQKpvXJMlCPJYjOz2TtBsD1hch9J6AZLH/Otk+Gl2Pxn/
20gMB8NPI1eFs/XgpmWGRzNDzKdDdzXHHI6Yt/YGkbt/Ya+20mDj+k3trgJd
U7UXJLiZZRelHqa3JSdeMfj72pGrd11JUCHEvXqm5Kecj2uVaW24TKlBUxey
5D1eOW3LBiNYJBqymSlxqnUr8bRFYlqXIcbIISFQ6VqVWRKj+Ww6rPjD3BSL
EndYZ47TED5GSeAD+DKLJz7B4kMysIAxjv37d4uP8+5F91K2Rt8K4mAAu0DN
uYFggiLgutd+eyFaL2j4DDFWnWwZUxIv4QE+ZjbM/RoDAAqr3sUcQBWZXa1d
Z9puzdsM/LK6iyFauvvYbTcvIBo7wHuK6E78s0yB56/glAg0CaAiDOnMTsWV
ElZlEvAYPHXlPdRHRKE5iq2osRq3YMWaFcoxlXsE4X0QQw/8xN4WHd0CY7an
hi1eOlBBQ3R3txkyliYQ0th1kd2RaIQEcpzBs2sVbqKkql1BpxAd4hR7GS+L
GHCik7y6v+eddyNbBhQRXmrAtfjMwkqUTVT8Wp0ljqcdzpL+oGzahGO8JrXi
/i4JnTsBYKWPpBDXVG+c22dqhcenptZmHn0rPWmWzqcqli7nVmViTrSqK5OW
3sXt3HiUi4vL52fTzq1zIfCjikwbfhpeqUIBRgUj3iYb8jQbiX+v6+SVKsDI
dH3I6fqzwzJdj0MGQYl8sxAlVymFOiA2rR1Pu1hX6WQXZWnCF3X2eMXE3KQ0
a2b+RR4bUO1FNSe+qr0CjrUtXwRgdYcET00syoAZQlWNEXsAU78uZ+J1E3B4
VQpnVTGCHLLtwRXyEWytjFVm8WZaO+4DAeTzlU1z9MC3OIwLl9b1cGzgnI10
k9mogLkBZAN5u9Ki+46uCuDBjnd1gRsSOd4nHORcTlZSQ3bZj3qXHRmXeLX+
+bktXAZjMvMTd1p1An+puvEMXVSXt7hQtkjk2wVOBeSS8q5sQET8HkQwqJEx
sesj4joYKYTnYSgsVLKw2sT0H52kOWkwvEcEXJGXaDhc63v4qp3cpHR8Xc8O
GXLCHBZ5kBtwOmBOlkjcnTTDDcBAaAdP+DnnjI20AbNsG66p7wCkr/zko+LR
IfhUCitcCts8qKEzS3V0gznTu/RJV7dhiTrR3NYeoRQY/hOq0801haaf3EXK
lsJ4UF7dbSVX5h+XPddvLK0578aLEb+VdGGTerB4m4ETMdMSgbpU76tjGLyN
PpgMTmeVkUqUOZY7vkRpwEYNUpvVgZfH1XBdvPG+xP84AzsMgqck3UPZ8MjY
FN+vyiQpN0s8h4ANhirDBrH8gP97JYFEXJmzMrrkAMyDAWPC5RCLL/9xd3uO
p7i7c7SxDZe9VKNrlcVY/dD/g3M6D7hnEx/Yk29U9hTSZWy6/2XWAMr5//1M
IMiA1bvIp/BGC2hGh8gU+Q3wYdiEN7vYa/Du8qgQ/wOZpcKbpjcAAA==

-->

</rfc>

