<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-parecki-oauth-dpop-device-flow-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.30.2 -->
  <front>
    <title abbrev="DPoP for Device Authorization Grant">DPoP for the OAuth 2.0 Device Authorization Grant</title>
    <seriesInfo name="Internet-Draft" value="draft-parecki-oauth-dpop-device-flow-00"/>
    <author fullname="Aaron Parecki">
      <organization>Okta</organization>
      <address>
        <email>aaron@parecki.com</email>
      </address>
    </author>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <date year="2025" month="September" day="20"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>oauth</keyword>
    <keyword>device</keyword>
    <keyword>dpop</keyword>
    <abstract>
      <?line 47?>

<t>The OAuth 2.0 Device Authorization Grant <xref target="RFC8628"/> is an
authorization flow for devices with limited input capabilities.
Demonstrating Proof of Possession (DPoP) <xref target="RFC9449"/> is a mechanism
to sender-constrain OAuth 2.0 tokens. This document describes how to
use DPoP with the Device Authorization Grant to provide a higher
level of security for clients. It binds the DPoP key to the entire transaction,
from the initial device authorization request through the lifetime of
the issued tokens.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://drafts.aaronpk.com/oauth-dpop-device-flow/draft-parecki-oauth-dpop-device-flow.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-parecki-oauth-dpop-device-flow/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Web Authorization Protocol Working Group mailing list (<eref target="mailto:oauth@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/oauth/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/oauth/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/aaronpk/oauth-dpop-device-flow"/>.</t>
    </note>
  </front>
  <middle>
    <?line 59?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The OAuth 2.0 Device Authorization Grant <xref target="RFC8628"/> provides a mechanism
for devices that lack a browser or have constrained input capabilities
to obtain an OAuth <xref target="RFC6749"/> access token. The flow involves the device polling the token
endpoint while the user authorizes the request on a separate, more
capable device.</t>
      <t>OAuth 2.0 Demonstrating Proof of Possession (DPoP) <xref target="RFC9449"/>
introduces a mechanism for sender-constraining access and refresh
tokens. It works by requiring the client to prove possession of a
cryptographic key with every request, binding the tokens to that key.
<xref target="RFC9449"/> explicitly details its application with Pushed Authorization
Requests (PAR) <xref target="RFC9126"/>, a flow that, like the Device Authorization
Grant, begins with a direct back-channel request from the client to the
authorization server.</t>
      <t>This specification formally defines the mechanism of using DPoP with the Device
Authorization Grant. By requiring a DPoP proof at the beginning of the
flow, the authorization server can bind the <tt>device_code</tt> to a specific
public key. This ensures that only the client possessing the
corresponding private key can complete the flow by polling the token
endpoint, thereby preventing a stolen <tt>device_code</tt> from being redeemed
by a malicious actor. The resulting access and refresh tokens are also
DPoP-bound, mitigating the risk of token leakage.</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="protocol-flow">
      <name>Protocol Flow</name>
      <t>The overall Device Authorization Grant flow remains as defined in
<xref target="RFC8628"/>, with the addition of the DPoP header and associated
validation logic at two key steps: the device authorization request and
the device access token (polling) request.</t>
      <section anchor="device-authorization-request">
        <name>Device Authorization Request</name>
        <t>To initiate the flow, the client makes a POST request to the device
authorization endpoint as specified in Section 3.1 of <xref target="RFC8628"/>. When
using DPoP, this request <bcp14>MUST</bcp14> include a DPoP header field containing a
valid DPoP proof JWT as defined in Section 4 of <xref target="RFC9449"/>.</t>
        <t>The authorization server <bcp14>MUST</bcp14> validate the DPoP proof according to the
rules in Section 4.3 of <xref target="RFC9449"/>. If the DPoP proof is invalid, the
authorization server <bcp14>MUST</bcp14> return an error response, and it is
<bcp14>RECOMMENDED</bcp14> that this be a 400 Bad Request with an error code of
<tt>invalid_dpop_proof</tt>.</t>
        <t>If the DPoP proof is valid, the authorization server proceeds as defined
in Section 3.2 of <xref target="RFC8628"/> by generating a <tt>device_code</tt>, <tt>user_code</tt>,
etc. In addition, the authorization server <bcp14>MUST</bcp14> associate the public key
from the <tt>jwk</tt> header of the DPoP proof with the generated <tt>device_code</tt>
and store this association for later verification.</t>
        <t>For example:</t>
        <artwork><![CDATA[
POST /device_authorization HTTP/1.1
Host: server.example.com
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6Ik...

client_id=1406020730&scope=example_scope
]]></artwork>
      </section>
      <section anchor="device-access-token-request">
        <name>Device Access Token Request</name>
        <t>After the user authorizes the request, the client begins polling the
token endpoint as described in Section 3.4 of <xref target="RFC8628"/>. Each access
token request (polling request) using the
<tt>urn:ietf:params:oauth:grant-type:device_code</tt> grant type <bcp14>MUST</bcp14> include a
DPoP header with DPoP proof JWT.</t>
        <t>Upon receiving a token request, the authorization server <bcp14>MUST</bcp14> perform
the following steps in addition to the processing described in <xref target="RFC8628"/>:</t>
        <ul spacing="normal">
          <li>
            <t>Look up the data associated with the received <tt>device_code</tt>.</t>
          </li>
          <li>
            <t>Retrieve the public key that was associated with the <tt>device_code</tt> during the device authorization request.</t>
          </li>
          <li>
            <t>Validate the DPoP proof JWT in the DPoP header of the current polling request per Section 4.3 of <xref target="RFC9449"/>.</t>
          </li>
          <li>
            <t>Verify that the public key in the <tt>jwk</tt> header of the DPoP proof matches the public key associated with the <tt>device_code</tt>.</t>
          </li>
        </ul>
        <t>If any of these checks fail, the authorization server <bcp14>MUST</bcp14> reject
the request with an <tt>invalid_grant</tt> error.</t>
        <t>If all checks are successful and the user has approved the grant, the
authorization server issues an access token and an optional refresh
token. The issued access token <bcp14>MUST</bcp14> be bound to the DPoP public key,
and the access token response <bcp14>MUST</bcp14> include <tt>"token_type": "DPoP"</tt>`, as
specified in Section 5 of <xref target="RFC9449"/>.</t>
        <t>Any issued refresh token <bcp14>MUST</bcp14> also be bound to the same DPoP public key.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="device-code-binding">
        <name>Device Code Binding</name>
        <t>The primary security benefit of this specification is the binding of
the DPoP key to the <tt>device_code</tt> at the start of the authorization
flow. In the standard Device Authorization Grant, an attacker who obtains
a valid <tt>device_code</tt> (e.g., through log inspection or a compromised
device) can start polling the token endpoint. If the attacker completes
the user authorization step (e.g., via a phishing attack that tricks the
user into entering the <tt>user_code</tt>), they can obtain the access token.</t>
        <t>By binding the <tt>device_code</tt> to the client's DPoP key, this attack is
prevented. The attacker's polling requests to the token endpoint will
fail because they cannot produce a valid DPoP proof signed with the
private key corresponding to the public key bound to the <tt>device_code</tt>.
Only the legitimate client can successfully redeem the <tt>device_code</tt>.</t>
      </section>
      <section anchor="client-impersonation">
        <name>Client Impersonation</name>
        <t>This specification does not prevent a malicious application on a device
from initiating a device flow and using DPoP correctly. It protects the
integrity of a single authorization flow by ensuring the same cryptographic
identity (the DPoP key pair) is used throughout. It is not a client
authentication mechanism. As such, the security considerations for public
clients in Section 5 of <xref target="RFC8628"/> and <xref target="RFC9700"/> remain relevant.</t>
      </section>
      <section anchor="general-dpop-considerations">
        <name>General DPoP Considerations</name>
        <t>All security considerations from <xref target="RFC9449"/> apply, including those
regarding DPoP proof replay, nonce usage, signature algorithms, and the
need to protect the private key on the client device.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC8628">
          <front>
            <title>OAuth 2.0 Device Authorization Grant</title>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="August" year="2019"/>
            <abstract>
              <t>The OAuth 2.0 device authorization grant is designed for Internet- connected devices that either lack a browser to perform a user-agent- based authorization or are input constrained to the extent that requiring the user to input text in order to authenticate during the authorization flow is impractical. It enables OAuth clients on such devices (like smart TVs, media consoles, digital picture frames, and printers) to obtain user authorization to access protected resources by using a user agent on a separate device.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8628"/>
          <seriesInfo name="DOI" value="10.17487/RFC8628"/>
        </reference>
        <reference anchor="RFC9449">
          <front>
            <title>OAuth 2.0 Demonstrating Proof of Possession (DPoP)</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Waite" initials="D." surname="Waite"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>This document describes a mechanism for sender-constraining OAuth 2.0 tokens via a proof-of-possession mechanism on the application level. This mechanism allows for the detection of replay attacks with access and refresh tokens.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9449"/>
          <seriesInfo name="DOI" value="10.17487/RFC9449"/>
        </reference>
        <reference anchor="RFC9700">
          <front>
            <title>Best Current Practice for OAuth 2.0 Security</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="A. Labunets" initials="A." surname="Labunets"/>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <date month="January" year="2025"/>
            <abstract>
              <t>This document describes best current security practice for OAuth 2.0. It updates and extends the threat model and security advice given in RFCs 6749, 6750, and 6819 to incorporate practical experiences gathered since OAuth 2.0 was published and covers new threats relevant due to the broader application of OAuth 2.0. Further, it deprecates some modes of operation that are deemed less secure or even insecure.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="240"/>
          <seriesInfo name="RFC" value="9700"/>
          <seriesInfo name="DOI" value="10.17487/RFC9700"/>
        </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>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC9126">
          <front>
            <title>OAuth 2.0 Pushed Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="D. Tonge" initials="D." surname="Tonge"/>
            <author fullname="F. Skokan" initials="F." surname="Skokan"/>
            <date month="September" year="2021"/>
            <abstract>
              <t>This document defines the pushed authorization request (PAR) endpoint, which allows clients to push the payload of an OAuth 2.0 authorization request to the authorization server via a direct request and provides them with a request URI that is used as reference to the data in a subsequent call to the authorization endpoint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9126"/>
          <seriesInfo name="DOI" value="10.17487/RFC9126"/>
        </reference>
      </references>
    </references>
    <?line 213?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Emelia Smith for her reply on
social media suggesting that this document should exist.</t>
    </section>
    <section numbered="false" anchor="document-history">
      <name>Document History</name>
      <t>[[ To be removed from the final specification ]]</t>
      <t>-00</t>
      <ul spacing="normal">
        <li>
          <t>Initial draft</t>
        </li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA51Ze3PbuBH/H58CVWZ6yY0ky46bh+Zeip1cdE1iN3Euvd7d
xBAJiYhIggVAKWom36WfpZ+suwuAIiXZuTaTGYsgHovf7v72wcFgwJxyuRzz
3vmlvuRzbbjLJL+Y1C7jJ8MRP5crlUiOz9qofwmndMl/NKJ0PSZmMyNX7bW3
zU6EkwttNmNuXcpYqpNSFHByasTcDSphZLJUAy1g7SCtdDVIabPBPNfrwWjE
bD0rlLWwo9tUsG769OoZK+tiJs2YpbD5mCW6tLK0tR1zZ2rJQLb7DDYWIOMb
mdRGuU2PrbVZLoyuKxh9J2c70l4a7XSi8x5byg1MTceMDziJhT+8UPQLZGQr
WdZwMOd/ZEPOveS9dyCBKheADCzC8UKoHMbplB+UdPOhNgt8IUySwYvMucqO
j45wHg6plRzGaUc4cDQzem3lEe1whCsXymX1DNYKYXRZLY8OI4tTcwDPutYx
pBI7DCuHiS5uWH30R5Q3zFwBt2eCYEE44UzO53WeewuY4Dn80m9C7+BaogwA
jvnF0gkalh4nkuuHcChKt7/lE6NEyc9EUc1knh/Y8xLxn6ayBPvftDefJWHR
DxVMUWEGncJKbQpYvyKNv3529uDh6ePw89GDk0fh5+PTZvTxw9FozJgq5zsr
Hx+fPIAXw+GQscFgwMXMOiMSx9jVH3Q//ulTOPbzZ64sF2UAOM5C6MkpvSos
X4NF8FwVysmUq7KqHU9EJWYqV05JO2TnsgAHAjkcggN2q+cc/l9qayU5Hr+L
nn7PH43XDEfzQiYZgGsL5jQHF0ylGSR+L1W2ruP0EvxzyK8yWAYMUBcALwho
E6NmIGIGIjvNais5cQqJjIR0Cw5wYmX0CjQFgmRqkUnDcrmSOcpug9cTEEmu
4Dg4fur4TJWp9VvjQeDruBE+o8KNBAIRpQWNwEF9Nje6oJeqBKxEHjDlXcSN
/GcNjgQTwa8XXvBczaVThQRhGG1gbQ3wByCY136h0jSXjN3h09IZndZ07P9p
CwGMrlraduAy4cDnkyXM8LRhwDl4JlaSN0o7aCKoXT1zqFMR1UpHoyPA0SKB
/a2/HCpZeiNU5UrnK+nhDshVOs/RynCI5jOwmkoruMw6U7mkFzWKFjEO6yPI
cHcB6gUWAPbq80IbyUjWPJ4B6LbB+99tG/zWa6MLJtnSrpHjruH6okxByrmR
NmPR4MHiMOxYPtvQDZSJl/dGGa0YgWkkAvkES8ymcnphRJWphOyUnAIM3Gwi
GH0y5w6c1pszaBqWDFnbY+XHKlcJhP0NAAXKzC1XDsSucNhbFR1xWdsMzKBj
b+y1P9Hyu5eT1xEtILPPn/uAEakbT+2D4S/lja7LyGxBbLlQZWAmwVPwuwRc
E0xzgFiX4MNR3Y0HbvGCpx3KA3MBWIboOMAvtpKJmscrEQPndOc5mLc3pq1O
AevaIoKHeIcd8Lkhf9JWpfALKzIs4Wgx3Y4sA8ZQWoSnT68OyQ2uVpIiaca1
N+L3iU7lNV5XNBdiVT3LvTEEKsWkx0TX1iXcsgVVtChvHpAkGZhaaW8wlVEr
cCAyLDwf4lyVS+dVR+oEi73ZWek2RuIcSAWROgkL63Quy507kApnEmcYmUpZ
yJTBQvAsgfaoa7DBxGnjmQNkrHN32K2iiUMGwEVuNUPsBzNdlykwAVDVwrs5
8YWyS8Ifl/BciqVYIDXc4We6JIl16Tc/R8NQ9Oypl5wNMkDLey/fvrnq9f1f
/uqCfr9++re309dPz/H3m+eTFy+aHyzMePP84u2L8+2v7cqzi5cvn74694th
lHeGWO/l5Bd4g1L1Li6vphevJi96wKNwo3bgxPuDZcwwLjlpQAUY2oVlMaIi
ifMnZ5f/+ffxKfjqn8BZT46PkQT8w6Pjh6fwsM5k6U8j2/GPAN6GASlIYXAX
8B2MBcoB4DAX3AuCdclR+4Dm178iMr+P+TezpDo+/S4M4IU7gxGzziBhtj+y
t9iDeGDowDENmp3xHaS78k5+6TxH3FuD33wPbiD54PjR999B6AYbisk9fwau
4q0GSNwgWLeEa/Irgwknmp4NlITKYq1I3t/SkEhTMsxAJJ5rMilSjI8lqtzq
RIEfp2wFzpT6w3K9AJZAMlprMmbrZIW10TYMH05gYEvWntQK6/xuIIN7cTb6
0p3Dtw3BAnDRIXNqEUu/zVGFWFKQvbwAo2nyKN0SdYfqm2xBNETvrR3qPJpw
f3iMaLXwHPJ3YNhsS/N9707xODJYVSZ5TalkG2PYPE8xOXIx1Huc26T/07ur
ri4bUU4bQXwEHnpDORgDSIigQ7nVdYgrCZC3j/M+/Jk6B9jaRw3v7x7Gp/Pd
fRSuoUP6N0ZRLwkwSm0o25PGQNrjI4eVni2Ug61Yy6F8ACJUZ4jh6WjEn4g0
GkII9HEzDAuYF18HYd5j5fieRLwGjA7KvZX6MH4wMZEybbsV61jFyY5VYHxb
yFKGzFB0g1afX2MSGh6YdAngWTb+eIsgBF/jlzRvG7a3BcX1h/XyOpqZ3rtx
wwBBRDCsjnwM1QDRFgMBoh4PDBkPlfaGgzxNIgTAPoMX8qPAQA81KNa+5HZH
YePudZ5fXV0eHQ+Pad5zjX2CkGaFLXwBDv8gnjrw5cEVNTla6eTRx8F6vR5g
BjaoDSQGKHpKa/CqYy43P43k3yfqQv20TH58vP7rSXU/PZvaafHM/mMzfTBd
/nz18sPbk6laQ1mfmumH6uG0cCP5Bt9REY2beS55r9Jvj09HD0Yno4f3R3+2
ia7kt0HW9/TUISzPbVfEbQ1fTeYI2xdKkA6BhUy2lSn53L9DVJ2wvDXJ0z2i
eiqSLNBu2CaSVKTfOHAvpK144DW46hjbQmOsigo7pn7MeIExZ0Ctp04+tvDl
M4zvUB9rUx9ZYJfmAO63FYWLRKqV95qOlF9yi0oaNAaKMXO4j17jJhSdKNWI
0S4EAPJpn8B2EGxBBnb8NX+h9ZLXlQ8awolWWNw6khd614+GsPy1dEZBErvj
q57T1sIe3K6b4qZ1U9fdFmDxtJ9v4HgMI5TodaN8oIakhuSdcvqOFSCit8UA
PA85YBMJunPBcNwXqKgQLsmCB7QWfxEUz+Si3IQ9LdwikwnUwnOoPb9kKkZ+
gGuxduUfg0gTNsiQr31QCadhsuoPwRzZ1uRK8zqnsNX4dSao7MW6248ufFl6
Y0yk7g1WC92ciFIwSM4qnCvybvXvy5nQ9+ksowtCnKTCJRq7R7zBt8+ixJ2l
MQ53Pfe6R2/fo0/3Ql++d32N6To7mCT9ZT8zmYCigrCdaisENKi29kS2otiT
e0jpcWy6Y2ywKqUgS+XVloDPMAl44tsXPi+CkrQQZrPt3c0g9s0h1yD72Svs
lTfJ2AEJfbbdrl7XT4MPWCeMi6beUTiV6hTqw7wyFSa9Jafvk1E4J5IlkmYW
G2WWCZ+z7EhwVw4Xw37TKoRUHfSCF/NpPsQcKsUhTVAWYqVfe49KdC/1Xk3e
RJom42vEiUW9ZXshLZg3UG8UaaWAOHkFQGdE7bRJ4A2j0KXQPWgTOExjv1Q2
rNfKlu75EpJEDk3DXTMGI3my6fSu9roe2xD7lW2UGhL3IBqkoKH5IFPvbPHi
X9ldorRxz53gvFZ5zpCPwNgSgf3nKHupHRIgdgF5VGWLFa1alC3qY51+SqfT
EoPZljo7TrTDmRexiZNDYuHAIVyTapANNIyWb0I35SDzgp+d+VXTAmKEBXqK
reU9R0o1UJu/LqHZ7cy0uoPUeg1VGSWyobbzmUAIfFTjIne12moESOLyDTVE
AUAHT96esIGxIG/HOofjmnw3LsR2FHW7osUQ+XSapCx+tOF3O0xQCWXuIV2A
etPoebp2JIzyVxcBZKJ/3CVcuWkUDvnEIvqZD1wNRyUdgqPc22uaha8Oh2k3
1CCIk6fhh6MRPPveAPzJ5Qp7jYw0+SPVALm/0S6jTiDk3SgNKqndAkZtghf5
uOGR1BbKSbkQvr5sWbiRVS5gcqnLBMlDLKD6Q7MXUBpi/20BGnJZYfsxuLJS
0ieOqOGQxG0dQ5ft1Lnp1uP3j8mryd7Vul+LMGiX2s/032ea7yjYOcZdJsmy
1OtcpgtcYdmnsf9OLNNve3MIYbL3uV2CW77WNdT3vmVNbfNyyZ8WMgcqfFOg
a6M+M2kIDJSfUdKTg12kMMfWiwWQiwcyFsCNwDaj3eVHZb0m+Xl89Vxh7bY5
LOBvv/72KxQmGG7BHihHacpGKGzh9K7//v47oDAaYSY8jZ+p8PMs+y/Xxuhg
5x8AAA==

-->

</rfc>
