<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.0.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-demarco-nonce-endpoint-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.1 -->
  <front>
    <title abbrev="Nonce Endpoint">OAuth 2.0 Nonce Endpoint</title>
    <seriesInfo name="Internet-Draft" value="draft-demarco-nonce-endpoint-00"/>
    <author fullname="Giuseppe De Marco">
      <organization>Independent</organization>
      <address>
        <email>demarcog83@gmail.com</email>
      </address>
    </author>
    <date year="2024" month="January" day="24"/>
    <keyword>OAuth 2.0</keyword>
    <abstract>
      <?line 39?>
<t>This document defines the Nonce Endpoint for OAuth 2.0 implementations <xref target="RFC6749"/>. It details how an Authorization Server generates and issues opaque Nonces and how a client can learn about this endpoint to obtain a Nonce generated by the Authorization Server.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://peppelinux.github.io/draft-demarco-nonce-endpoint/draft-demarco-nonce-endpoint.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-demarco-nonce-endpoint/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/peppelinux/draft-demarco-nonce-endpoint"/>.</t>
    </note>
  </front>
  <middle>
    <?line 42?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This specification presents a comprehensive guide to the Nonce endpoint in OAuth 2.0 implementations <xref target="RFC6749"/>. It describes in detail how a client can request and receive a server-generated Nonce, which is a unique, one-time use, opaque string. This document provides in-depth insights into the cryptographic methods used in generating Nonces to protect the confidentiality of the information associated with them. In addition, it is a great resource for developers and system architects who desire to strengthen the scalability, security, and efficiency of their systems while using OAuth 2.0.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</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>
      <?line -18?>

</section>
    <section anchor="terminology">
      <name>Terminology</name>
      <dl>
        <dt><strong>Nonce</strong>:</dt>
        <dd>
          <t>A random or pseudo-random number that is generated for a specific use, typically for cryptographic communication. The Nonce is used to protect against replay attacks by ensuring that a message or data cannot be reused or retransmitted. The term "Nonce" stands for "number used once" and it <bcp14>MUST</bcp14> be unique within some scope.</t>
        </dd>
        <dt><strong>Nonce Issuer</strong>:</dt>
        <dd>
          <t>The entity that generates and provides the Nonce. In the context of OAuth 2.0, the Nonce Issuer would typically be the Authorization Server.</t>
        </dd>
        <dt><strong>Nonce Endpoint</strong>:</dt>
        <dd>
          <t>The HTTP endpoint provided by the Nonce Issuer for the issuance of the Nonces.</t>
        </dd>
      </dl>
    </section>
    <section anchor="requirements">
      <name>Requirements</name>
      <t>The <strong>Nonce Endpoint</strong> <bcp14>MUST</bcp14> satisfy the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>Employ TLS for securitung the Endpoint <xref target="RFC5246"/>.</t>
        </li>
      </ul>
      <t>The <strong>Nonce</strong> <bcp14>MUST</bcp14> satisfy the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>Pure opacity to recieving Clients.</t>
        </li>
      </ul>
      <t>The <strong>Nonce Issuer</strong> <bcp14>MUST</bcp14> satisfy the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>Generate a unique Nonce for each request to ensure the Nonce Issuer never produces identical Nonces, regardless of whether they occur simultaneously or at different times;</t>
        </li>
        <li>
          <t>Encrypt the Nonce with an encryption key that:
          </t>
          <ul spacing="normal">
            <li>
              <t><bcp14>MUST NOT</bcp14> supplied by the Nonce Issuer to the Client;</t>
            </li>
            <li>
              <t><bcp14>MUST NOT</bcp14> disclosed by the Nonce Issuer to any external entity beyond its domain.</t>
            </li>
          </ul>
        </li>
      </ul>
      <t>The <strong>audiences of the Nonces</strong> satisfies the following requirements:</t>
      <ul spacing="normal">
        <li>
          <t>The servers, within the Nonce Issuer's domain, <bcp14>SHOULD</bcp14> decrypt the Nonce and access its decrypted contents. No other entity might decrypt or know the decrypted contents of the Nonce.</t>
        </li>
      </ul>
    </section>
    <section anchor="nonce-request">
      <name>Nonce Request</name>
      <t>When a Client needs a Nonce, it sends an HTTP GET request to the Nonce Endpoint.</t>
      <t>Below is a non normative example of the HTTP Request made by a Client to the Nonce Endpoint.</t>
      <sourcecode type="http"><![CDATA[
GET /nonce HTTP/1.1
Host: server.example.com
]]></sourcecode>
    </section>
    <section anchor="nonce-response">
      <name>Nonce Response</name>
      <t>The Nonce Endpoint provides a Nonce to the Client, encapsulated within a JSON object <xref target="RFC7159"/>.
The response <bcp14>MUST</bcp14> use the HTTP Header Content-Type value set to <tt>application/json</tt> and <bcp14>MUST</bcp14> provide in the response message a JSON object with the member <tt>nonce</tt>.</t>
      <t>Below is a non-normative example of the response given by a Nonce Endpoint:</t>
      <sourcecode type="http"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json

{
  "nonce": "d2JhY2NhbG91cmVqdWFuZGFt"
}
]]></sourcecode>
    </section>
    <section anchor="nonce-endpoint-discovery">
      <name>Nonce Endpoint Discovery</name>
      <t>When an Authorization Server requires the use of a Nonce in the request for a specific resource and the Client does not provide it in its request,
the Authorization Server <bcp14>MUST</bcp14> return an HTTP response with the HTTP status code <tt>400</tt> and an <tt>error</tt> field with the value set to <tt>"nonce_required"</tt>.</t>
      <t>This response <bcp14>MUST</bcp14> also contain the <tt>Nonce-Endpoint-URI</tt> HTTP header, with the value set to the URL corresponding to the Nonce Endpoint, where the Client <bcp14>SHOULD</bcp14> request and fetch a new Nonce. Once the Nonce is received, the Client <bcp14>MAY</bcp14> renew the request to the Authorization Server, including the obtained Nonce.</t>
      <t>Below is a non-normative example of an error response issued by an Authorization Server that requires the Nonce in the Client request, the response informs the Client about the Nonce Endpoint where the Nonce should be requested:</t>
      <sourcecode type="http"><![CDATA[
HTTP/1.1 400 Bad Request
Nonce-Endpoint-URI: https://server.example.org/nonce-endpoint

{
  "error": "nonce_required",
  "error_description":
    "Authorization server requires the nonce in the request"
}
]]></sourcecode>
      <t>In cases where, for some reasons, a correctly issued Nonce can no longer be considered valid by the Authorization Server that receives it, the Authorization Server <bcp14>MUST</bcp14> return the generic error <tt>"nonce_required"</tt> reporting the same description as <tt>"error_description"</tt>, as if the Nonce had not been received. The cases when an issued Nonce is considered no longer valid <bcp14>MAY</bcp14> be caused by the rotation of the encryption keys, its expiration or other specific conditions internal to an implementation.</t>
    </section>
    <section anchor="non-normative-examples-of-a-nonce-payload">
      <name>Non-normative Examples of a Nonce Payload</name>
      <t>The decrypted Nonce payload may use different formats and encodings, according to the different implemententative requirements, and contains any kind of implementation-specific claims, such as the issuance time, the time of expiration, the audiences and other where needed.</t>
      <t>Below are provided some non-normative examples, describing how a decrypted and JSON serialized Nonce payload may appear:</t>
      <artwork><![CDATA[
{
  "iss": "https://server.example.org",
  "iat": 1615908701,
  "exp": 1615995101,
  "source_endpoint": "https://server.example.org/nonce-endpoint",
  "aud": [
    "https://service.example.com/endpoint",
    "https://another.example.com/cb"
  ]
}
]]></artwork>
      <t>Please note that the values represented in the previous examples may depend on domain specific requirements and <bcp14>MUST NOT</bcp14> be intended as normative.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Nonce Endpoint <bcp14>MUST</bcp14> be protected by TLS to prevent eavesdropping and man-in-the-middle attacks, therefore the practices defined in <xref target="BCP195"/> should be followed.</t>
      <t>The Nonce Issuer <bcp14>MUST</bcp14> securely generate and store the encryption key used to encrypt the Nonce. The robustness of the encryption key plays a crucial role in the security of the Nonce Endpoint. The following considerations <bcp14>MUST</bcp14> be taken into account:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Key Strength</strong>: The cryptographic key used to encrypt the Nonce requires sufficient length to withstand brute-force attacks. A key length of 256 bits has been proposed as a common practice to ensure a minimum level of security.</t>
        </li>
        <li>
          <t><strong>Key Management</strong>: The cryptographic key requires secure management, which includes secure generation, storage, and revocation. Access to the key necessitates strict control, with access granted only to authorized entities.</t>
        </li>
        <li>
          <t><strong>Key Rotation</strong>: Regular key rotation is a good practice to mitigate the risk of key compromise. The frequency of key rotation depends on the specific requirements and threat model, but a common practice is to rotate keys frequently.</t>
        </li>
        <li>
          <t><strong>Randomness</strong>: To assure the randomness of the cryptographic key, it requires the usage of a safe random number generator. Attackers can simply guess predictable keys.</t>
        </li>
        <li>
          <t><strong>Secure Transmission</strong>: If the cryptographic key needs to be transmitted over a network and within the Nonce Issuer domain, it requires the usage of secure protocols such as TLS.</t>
        </li>
        <li>
          <t><strong>Backup and Recovery</strong>: Cryptographic keys require secure backup and recovery mechanisms. This ensures that the key can be retrieved in the event of its loss while also prohibiting unauthorised access to the backup.</t>
        </li>
      </ol>
      <t>The security of the Nonce Endpoint is only as strong as the security of the encryption key. Therefore, proper key management practices are essential.</t>
    </section>
    <section anchor="considerations-about-nonce-vs-jti">
      <name>Considerations about Nonce vs. jti</name>
      <t>This section provides some thought about the main differences and scopes of the Nonce in compared to the <tt>jti</tt> claim defined in <xref target="RFC7519"/>.</t>
      <t>Both <tt>jti</tt> and Nonces are used to prevent replay attacks, however Nonces offer more implementation flexibility and are considered best practice. They can be created and managed stateless (e.g., by issuing the hmac over the current time as the Nonce), as this document outlines.</t>
      <t>The main differences between the use of the <tt>jti</tt> and the Nonces can be summarized as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Generation</strong>: Nonces are generated by the server, while <tt>jti</tt> is generated by the Client.</t>
        </li>
        <li>
          <t><strong>Storage</strong>: Nonces can be self-authenticating and self-contained and therefore need not be stored. A common way to achieve this is for the Nonce to contain content encrypted to the Authorization Server that creates it. On the other hand, checking <tt>jti</tt> properly definitely requires a store that is shared across all domains that the associated JWT can be presented in.</t>
        </li>
        <li>
          <t><strong>Lifetime</strong>: The life span difference between a Nonce and a <tt>jti</tt> is significant. Nonces are kept just until the Client responds, which happens practically immediately after they are obtained, resulting in a very short lifespan. A <tt>jti</tt>, on the other hand, must be stored until the expiration window of its associated JWT expires, which is a substantially longer length than that of a Nonce.</t>
        </li>
        <li>
          <t><strong>Security</strong>: Nonces prevent replay attacks by ensuring that the proof of possession is fresh. On the other hand, <tt>jti</tt> does not guarantee freshness and using client-generated timestamps has problems, even for non-attacking Clients (e.g. devices with incorrect time-zones or daylight saving settings).</t>
        </li>
      </ol>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="RFC7159">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="March" year="2014"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7159"/>
          <seriesInfo name="DOI" value="10.17487/RFC7159"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/bcp195">
          <reference anchor="RFC8996" target="https://www.rfc-editor.org/info/rfc8996">
            <front>
              <title>Deprecating TLS 1.0 and TLS 1.1</title>
              <author fullname="K. Moriarty" initials="K." surname="Moriarty"/>
              <author fullname="S. Farrell" initials="S." surname="Farrell"/>
              <date month="March" year="2021"/>
              <abstract>
                <t>This document formally deprecates Transport Layer Security (TLS) versions 1.0 (RFC 2246) and 1.1 (RFC 4346). Accordingly, those documents have been moved to Historic status. These versions lack support for current and recommended cryptographic algorithms and mechanisms, and various government and industry profiles of applications using TLS now mandate avoiding these old TLS versions. TLS version 1.2 became the recommended version for IETF protocols in 2008 (subsequently being obsoleted by TLS version 1.3 in 2018), providing sufficient time to transition away from older versions. Removing support for older versions from implementations reduces the attack surface, reduces opportunity for misconfiguration, and streamlines library and product maintenance.</t>
                <t>This document also deprecates Datagram TLS (DTLS) version 1.0 (RFC 4347) but not DTLS version 1.2, and there is no DTLS version 1.1.</t>
                <t>This document updates many RFCs that normatively refer to TLS version 1.0 or TLS version 1.1, as described herein. This document also updates the best practices for TLS usage in RFC 7525; hence, it is part of BCP 195.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="8996"/>
            <seriesInfo name="DOI" value="10.17487/RFC8996"/>
          </reference>
          <reference anchor="RFC9325" target="https://www.rfc-editor.org/info/rfc9325">
            <front>
              <title>Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)</title>
              <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
              <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
              <author fullname="T. Fossati" initials="T." surname="Fossati"/>
              <date month="November" year="2022"/>
              <abstract>
                <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are used to protect data exchanged over a wide range of application protocols and can also form the basis for secure transport protocols. Over the years, the industry has witnessed several serious attacks on TLS and DTLS, including attacks on the most commonly used cipher suites and their modes of operation. This document provides the latest recommendations for ensuring the security of deployed services that use TLS and DTLS. These recommendations are applicable to the majority of use cases.</t>
                <t>RFC 7525, an earlier version of the TLS recommendations, was published when the industry was transitioning to TLS 1.2. Years later, this transition is largely complete, and TLS 1.3 is widely available. This document updates the guidance given the new environment and obsoletes RFC 7525. In addition, this document updates RFCs 5288 and 6066 in view of recent attacks.</t>
              </abstract>
            </front>
            <seriesInfo name="BCP" value="195"/>
            <seriesInfo name="RFC" value="9325"/>
            <seriesInfo name="DOI" value="10.17487/RFC9325"/>
          </reference>
        </referencegroup>
      </references>
    </references>
    <?line 213?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA5Va63IbuZX+30+BMD+SuEja8tieGSabRL5rYlteSV7XrMs1
ArtBEuPuBgN0S+ZMzT7LPss+2X7nHKAvFKVKXK4S2Q0cnOt3LuBsNssa25Rm
oSanx22zUQ/nD9Q7V+dGvaiLrbN1M8n0cunNFZbsv8h1Y9bO7xbK1iuXZYXL
a12BWOH1qpkVptI+d7Oats1M3DZ78CAL7bKyIVhXN7st1p+8uHip1O+VLoPD
ObYuzBbrDQ6ZqokpbOO81SV9OTl+ij/O49PZxctJVrfV0vhFVoCXRZa7Opg6
tGGhGt+aDFx/k4GuNxp0z03eetvsJnh07fyXtXftdqF6yT/ioa3X6hW9yL6Y
HVYVi0zN+jXZlalbnPR7peL2j6/oiwgyJoDHlbYl9CGaWH/3zd/X9GSeuyoD
Adts2iUY25rt1pS2br/ev0t1E+wpIWdosGfTNNuwuH+/3zsXenPr7qRy58v5
pqnKSZZpiOs8iY4zlVq1ZSmmfWXbQCeq50a9JQL83vm1ru0vuoFJYc7efvzW
3KGFrHa+wr4r6FSps5fPHh4dfb9IH+TR44ePnizSB3n05NtHsoo+yKNvjx7L
I/oQHz2OtOhDlpGXDg57+uz90fePF/Fvls1mM6WXofE6b7KLjQ0KDt1WkAKs
r2xtgmo2Zi88FEgOPMhW29LQFlZFUJ8ii5/n6oTINJA7qI27VrpWx6zkqDZ1
bvyV8WptauPJyFhRKERJi49uq//ZxqPlBZNQeWmJvRzESqN9Df5d24BNMJ9M
qhqn3BIH421kPp1RqOWOZTrEyVw0UtmiKE0GZz6pG++KNqc1mSgobE1uVzaX
fVtvEH1NIMZchW8bxCKUrdatLQzx0euv4w5s/evqC7m3S2gAm0SXN/XgDTQV
GlaSN7mh87UKLNKsF5y5mKrrjc030DKWtLXFTmBLbWaNrYyCo0+T5uEViOu5
GrvF1rsrSEb8IJ62EMJC4PWmoSdR3Nzvto1be73FUaoyUHQRiHZBUkSGCDOi
cbENZBuTN7Ld1StLkQT8A3Qpt+LHnStD7ToEl1uW6hoIQO8r6AsvCiAnVkyV
bUTGNYCwgVqCaz2MQL5bmCtTuq3x4ldhFxpTATHzjSUmAlTkSPPWswWhCFOv
cUTNfIRcl3ppibUplCz4OmVKZgXHgFnyxLT1kTrRtCUpmOTurD8nJ3vm6iuS
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
JqeuaVPpXMKMI7P13Qg82Z8Z/tNUvg4vN6Fyum1LFwM3NL9E1Jp4NxxHT72W
01QpqiNKENqq0gL3OsRcH1L+ftXlHorJgepv/IQhxLmGRIwcOLrIi+tkcJCy
5rnkswHxxJUpVzMKMrlpaFKxxs9j0xLV3hdpBGmxqZRqqqAiICL/tZbslm8o
5kWvNnSXTN0sNo2m4ow7xV7vsrf33OIM1HLT5EgGO9zlAJOKqco3JuefJ4l2
JHLLnfi9bagg7GBUd+WgXIiGDUeNzj3BEt07C/gOkG3wO4QfPl4kRQ7r9pTG
39iVIXdLVUqJ70ineuhLnSultpXjojdssOuaf3pCVeLAMb4YFHA/oyAFSDa2
HE+VeEoXUqGzoearDimy+F7RVhXSm2Zl6FWTLpGIcpqR0W1TaEt2CZ6NM/Kj
/PYNS0KCkN2Z1WmqFoaGqIi9zkcGjA7GAKh3C3SUMRns6ZbXmTD6/Upol1SL
EsyC9ziXSLUqzhVD9XOAVGSkBmcQA4fx7Oa9tDQlDjTxH4VsMJz22a3B3uag
F4oFu5HyutVc/xnZwgUNmVp+HCI/7Bn8bocv6ho0fFJF43TUITQTII45mKhV
F44HF5mChPRjF05KXH6izpXpFxOd/eLoF158wb4r+Q4qaL4LDaYhW4c/cfY6
OX53fKAXHILkhptIWak5hYX4YypKzkTkOKdLrdIUa7k5/nUhJZgp/mOyQrY3
k99A9PT5KfanlWSw/wdZWM4XsSkAAA==

-->

</rfc>
