<?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.43 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-rosomakho-oauth-txn-challenge-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title abbrev="Txn Challenge">OAuth Transaction Authorization Challenge</title>
    <seriesInfo name="Internet-Draft" value="draft-rosomakho-oauth-txn-challenge-01"/>
    <author fullname="Yaroslav Rosomakho">
      <organization>Zscaler</organization>
      <address>
        <email>yrosomakho@zscaler.com</email>
      </address>
    </author>
    <author fullname="Brian Campbell">
      <organization>Ping Identity</organization>
      <address>
        <email>bcampbell@pingidentity.com</email>
      </address>
    </author>
    <author fullname="Karl McGuinness">
      <organization>Independent</organization>
      <address>
        <email>public@karlmcguinness.com</email>
      </address>
    </author>
    <author fullname="Pieter Kasselman">
      <organization>Defakto Security</organization>
      <address>
        <email>pieter@defakto.security</email>
      </address>
    </author>
    <date year="2026" month="November" day="02"/>
    <area>Security</area>
    <workgroup>Web Authorization Protocol</workgroup>
    <keyword>Transaction</keyword>
    <keyword>Authorization</keyword>
    <keyword>Human-in-the-loop</keyword>
    <keyword>Human-on-the-loop</keyword>
    <keyword>Human-out-of-the-loop</keyword>
    <abstract>
      <?line 71?>

<t>This document defines an OAuth mechanism for transaction-specific authorization challenges.
A protected resource can require additional authorization for a particular operation by
returning a transaction authorization challenge. This is useful when requests are mediated by
agents, automated workflows, or delegated services and the protected resource requires
confirmation from a human user, resource owner, or organizational authority. The client
presents the challenge to an authorization server, which validates the challenge, obtains
any required approval, and issues an OAuth 2.0 access token whose granted authorization details, expressed
using Rich Authorization Requests, describe the approved operation. The access token is then
presented to the protected resource as evidence that the challenged operation was authorized.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://yaroslavros.github.io/oauth-txn-challenge/draft-rosomakho-oauth-txn-challenge.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-rosomakho-oauth-txn-challenge/"/>.
      </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/yaroslavros/oauth-txn-challenge"/>.</t>
    </note>
  </front>
  <middle>
    <?line 83?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>OAuth 2.0 (<xref target="OAUTH-FRAMEWORK"/>) access tokens authorize access to protected
resources. In many deployments, however, a protected resource cannot determine whether a
requested operation is acceptable based only on the access token that accompanies the request.
The access token might establish that the caller is authorized to interact with the protected
resource, but a particular operation can still require additional, transaction-specific
authorization.</t>
      <t>This situation arises when the protected resource needs confirmation that a concrete transaction
has been approved by an appropriate party. The approving party might be the human user on whose
behalf the request is made, a different resource owner, or an organizational authority such as
an administrator, manager, data owner, or policy decision point.</t>
      <t>This document defines a transaction authorization challenge. A protected resource uses this
challenge to request additional authorization for a specific operation. The challenge is
relayed to a client, which presents it to an authorization server. The authorization server
validates the challenge, obtains any required approval, and issues an OAuth 2.0 access token
whose granted authorization details, expressed using Rich Authorization Requests
(<xref target="OAUTH-RAR"/>), describe the approved operation and bind the access token to the
challenged transaction. The access token is then presented to the protected resource as
evidence that the challenged operation was authorized. Reusing the OAuth 2.0 access token
abstraction avoids defining a new bearer artifact and allows existing access-token validation
and protection mechanisms, including sender-constrained access tokens, to apply unchanged.</t>
      <t>This mechanism is complementary to OAuth step-up authentication defined in <xref target="OAUTH-STEP-UP"/>.
Step-up authentication enables a protected resource to require stronger or fresher authentication
of a user. A transaction authorization challenge instead requests authorization for a specific
transaction. The approving party can be different from the subject associated with the access token
used for the original request.</t>
      <t>Automated clients, including AI agents, are deployed with different levels of human oversight <xref target="FSB-AI"/>. With human-in-the-loop (HITL), a person approves an action before it is taken. With human-on-the-loop (HOTL), actions proceed and a person can intervene or stop them. With human-out-of-the-loop (HOOTL), no person is involved when the action is taken, and authorization is decided by policy that a person previously approved. This document supports all three modes by letting the authorization server obtain approval asynchronously from the appropriate party.</t>
      <section anchor="human-approval-for-agent-mediated-actions">
        <name>Human Approval for Agent-Mediated Actions</name>
        <t>Software agents, automated workflows, and delegated services can perform operations on behalf of
users. Some operations are sufficiently sensitive that a protected resource might require explicit
approval before processing them. Examples include sending a payment, publishing content, deleting
data, modifying access policy, or disclosing sensitive information.</t>
        <t>Local confirmation mechanisms within an agent framework can reduce risk, but they are not always
visible to the protected resource and do not necessarily produce authorization evidence that the
protected resource can validate. A transaction authorization challenge allows the protected resource
to require explicit authorization for the concrete operation and to receive an access token
representing that authorization.</t>
      </section>
      <section anchor="authorization-by-a-different-resource-owner">
        <name>Authorization by a Different Resource Owner</name>
        <t>The party that initiated an operation is not always the party authorized to approve it. For example,
an agent acting on behalf of one user might request access to a resource owned or controlled by
another user. The protected resource can determine that approval from the resource owner, or
from another party authorized to act for that resource owner, is required before the operation
can proceed.</t>
        <t>In this case, the transaction authorization challenge allows the protected resource to describe the
requested operation and the authorization server to determine the appropriate approving party. The
resulting access token represents authorization of the challenged operation by the party
selected according to authorization server policy.</t>
      </section>
      <section anchor="organizational-approval">
        <name>Organizational Approval</name>
        <t>Some operations require approval by an organizational authority rather than by an individual end
user. Examples include approving access to regulated data, authorizing a production deployment,
granting elevated administrative access, or permitting data transfer to an external party.</t>
        <t>A transaction authorization challenge allows the protected resource to request authorization evidence from
an authorization server or associated policy infrastructure. The authorization server validates the challenge,
applies organizational policy, obtains any required approval, and issues an access token only when the
required authorization has been obtained.</t>
      </section>
    </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?>

<t>This document uses the terms "client", "authorization server", "access token", "refresh token", and "protected
resource" as defined by <xref target="OAUTH-FRAMEWORK"/>.</t>
      <t>This document uses the term "authorization details" as defined by <xref target="OAUTH-RAR"/>.</t>
      <t>This document defines the following additional terms:</t>
      <dl>
        <dt>Approving Party:</dt>
        <dd>
          <t>The human user, resource owner, organizational authority, or policy authority whose approval is required
before the challenged transaction can proceed.</t>
        </dd>
        <dt>Agent:</dt>
        <dd>
          <t>A software component, automated workflow, delegated service, or other intermediary that attempts an operation
at a protected resource and relays a transaction authorization challenge to a client.</t>
        </dd>
        <dt>Transaction Authorization Challenge:</dt>
        <dd>
          <t>A challenge returned by a protected resource to indicate that a specific requested operation requires
transaction-specific authorization before it can proceed.</t>
        </dd>
        <dt>Human-in-the-Loop (HITL):</dt>
        <dd>
          <t>A mode of operation in which a person approves an action before it is taken.</t>
        </dd>
        <dt>Human-on-the-Loop (HOTL):</dt>
        <dd>
          <t>A mode of operation in which actions proceed without prior approval and a person
monitors them and can intervene or stop them.</t>
        </dd>
        <dt>Human-out-of-the-Loop (HOOTL):</dt>
        <dd>
          <t>A mode of operation in which no person is involved when an action is taken, and
authorization is decided by policy that a person previously approved.</t>
        </dd>
      </dl>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>A transaction authorization challenge involves a protected resource, an agent, a client, an authorization
server, and an approving party.</t>
      <t>The protected resource receives a request and determines whether the authorization currently presented
with the request is sufficient. If the protected resource determines that the requested operation requires
transaction-specific authorization, it returns a transaction authorization challenge.</t>
      <t>The agent is the component that attempted the operation at the protected resource. The agent relays
the transaction authorization challenge to the client and later presents the resulting access token
to the protected resource. The agent is not trusted to modify the contents of the challenge or the resulting
access token.</t>
      <t>The client receives the transaction authorization challenge from the agent and presents it to the authorization
server. The client is responsible for mediating the interaction between the agent-facing environment and the
authorization server. The client does not need to interpret all application-specific details of the challenged
transaction, but it <bcp14>MUST</bcp14> preserve the integrity of the challenge when presenting it to the authorization server.</t>
      <t>The authorization server validates the transaction authorization challenge, determines the approving party,
obtains any required approval, and issues an access token whose granted authorization details describe the
approved operation. The authorization server can use local policy, resource metadata, resource-owner
information, organizational policy, or other authorization context to determine whether the requested operation
can be approved.</t>
      <t>The approving party is the human user, resource owner, organizational authority, or policy authority whose
approval is required. The approving party can be the same subject on whose behalf the agent is acting, but
this is not required.</t>
      <t>The following figure shows the basic protocol flow:</t>
      <figure anchor="fig-architecture">
        <name>Overall architecture of Transaction Authorization Challenge</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="272" width="480" viewBox="0 0 480 272" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 8,128 L 8,160" fill="none" stroke="black"/>
              <path d="M 8,224 L 8,256" fill="none" stroke="black"/>
              <path d="M 48,72 L 48,120" fill="none" stroke="black"/>
              <path d="M 48,168 L 48,216" fill="none" stroke="black"/>
              <path d="M 96,32 L 96,64" fill="none" stroke="black"/>
              <path d="M 152,224 L 152,256" fill="none" stroke="black"/>
              <path d="M 168,32 L 168,64" fill="none" stroke="black"/>
              <path d="M 192,128 L 192,160" fill="none" stroke="black"/>
              <path d="M 232,32 L 232,64" fill="none" stroke="black"/>
              <path d="M 304,32 L 304,64" fill="none" stroke="black"/>
              <path d="M 472,32 L 472,64" fill="none" stroke="black"/>
              <path d="M 8,32 L 96,32" fill="none" stroke="black"/>
              <path d="M 168,32 L 232,32" fill="none" stroke="black"/>
              <path d="M 304,32 L 472,32" fill="none" stroke="black"/>
              <path d="M 104,48 L 160,48" fill="none" stroke="black"/>
              <path d="M 240,48 L 296,48" fill="none" stroke="black"/>
              <path d="M 8,64 L 96,64" fill="none" stroke="black"/>
              <path d="M 168,64 L 232,64" fill="none" stroke="black"/>
              <path d="M 304,64 L 472,64" fill="none" stroke="black"/>
              <path d="M 8,128 L 192,128" fill="none" stroke="black"/>
              <path d="M 8,160 L 192,160" fill="none" stroke="black"/>
              <path d="M 8,224 L 152,224" fill="none" stroke="black"/>
              <path d="M 8,256 L 152,256" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="304,48 292,42.4 292,53.6" fill="black" transform="rotate(0,296,48)"/>
              <polygon class="arrowhead" points="248,48 236,42.4 236,53.6" fill="black" transform="rotate(180,240,48)"/>
              <polygon class="arrowhead" points="168,48 156,42.4 156,53.6" fill="black" transform="rotate(0,160,48)"/>
              <polygon class="arrowhead" points="112,48 100,42.4 100,53.6" fill="black" transform="rotate(180,104,48)"/>
              <polygon class="arrowhead" points="56,216 44,210.4 44,221.6" fill="black" transform="rotate(90,48,216)"/>
              <polygon class="arrowhead" points="56,120 44,114.4 44,125.6" fill="black" transform="rotate(90,48,120)"/>
              <g class="text">
                <text x="52" y="52">Client</text>
                <text x="200" y="52">Agent</text>
                <text x="352" y="52">Protected</text>
                <text x="428" y="52">Resource</text>
                <text x="104" y="100">transaction</text>
                <text x="208" y="100">authorization</text>
                <text x="304" y="100">challenge</text>
                <text x="72" y="148">Authorization</text>
                <text x="156" y="148">Server</text>
                <text x="92" y="196">approval</text>
                <text x="176" y="196">interaction</text>
                <text x="56" y="244">Approving</text>
                <text x="120" y="244">Party</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+----------+        +-------+        +--------------------+
|  Client  |<------>| Agent |<------>| Protected Resource |
+----------+        +-------+        +--------------------+
     |
     | transaction authorization challenge
     v
+----------------------+
| Authorization Server |
+----------------------+
     |
     | approval interaction
     v
+-----------------+
| Approving Party |
+-----------------+
]]></artwork>
        </artset>
      </figure>
      <t>The flow is as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t>The agent sends a request to the protected resource using its existing authorization context.</t>
        </li>
        <li>
          <t>The protected resource determines that the request requires transaction-specific authorization.</t>
        </li>
        <li>
          <t>The protected resource returns a transaction authorization challenge to the agent.</t>
        </li>
        <li>
          <t>The agent relays the transaction authorization challenge to the client.</t>
        </li>
        <li>
          <t>The client presents the transaction authorization challenge to the authorization server.</t>
        </li>
        <li>
          <t>The authorization server validates the challenge, determines the approving party, and obtains any required approval.</t>
        </li>
        <li>
          <t>The authorization server issues an access token to the client. The access token's granted authorization
details describe the approved operation, and the access token is bound to the challenged transaction.</t>
        </li>
        <li>
          <t>The client provides the access token to the agent.</t>
        </li>
        <li>
          <t>The agent retries or continues the request and presents the access token to the protected resource.</t>
        </li>
        <li>
          <t>The protected resource validates the access token, including its authorization details, and processes the
request if the token authorizes the challenged operation.</t>
        </li>
      </ol>
    </section>
    <section anchor="transaction-authorization-challenge">
      <name>Transaction Authorization Challenge</name>
      <t>A transaction authorization challenge is a signed JWT (<xref target="JWT"/>) generated by a protected resource to
request transaction-specific authorization for a particular operation. The challenge describes the operation to be
authorized, identifies the authorization server expected to process the challenge, identifies the intended
audience of the resulting access token, and contains freshness and integrity protection. It can also identify a key
to which the resulting access token is bound (<xref target="access-token-key-binding"/>).</t>
      <t>The challenge is consumed by the authorization server and can also be validated by the client before the client
presents it to the authorization server. The agent relays the challenge, but it is not trusted to modify the challenge
or to describe the challenged transaction.</t>
      <section anchor="challenge-capability-signal">
        <name>Challenge Capability Signal</name>
        <t>An agent indicates that it supports the transaction authorization challenge mechanism by sending the
<tt>Accept-Txn-Challenge</tt> header field with a true value in requests to a protected resource.</t>
        <t>The <tt>Accept-Txn-Challenge</tt> header field is an Item Structured Field; see <xref section="3.3" sectionFormat="of" target="STRUCTURED-FIELDS"/>.
Its value <bcp14>MUST</bcp14> be a Boolean. Any other value type <bcp14>MUST</bcp14> be handled by recipients as if the field were not present.
For example, if this field is included multiple times, its type will become a List and the field will be ignored.</t>
        <t>This document does not define any parameters for the <tt>Accept-Txn-Challenge</tt> header field value, but future
documents might define parameters. Receivers <bcp14>MUST</bcp14> ignore unknown parameters.</t>
        <t>The following example indicates support for transaction authorization challenges:</t>
        <figure anchor="fig-challenge-capability">
          <name>Agent indicating support for transaction authorization</name>
          <artwork><![CDATA[
Accept-Txn-Challenge: ?1
]]></artwork>
        </figure>
        <t>An <tt>Accept-Txn-Challenge</tt> header field with a false value has the same semantics as when the header field is not present.</t>
        <t>An agent <bcp14>MUST NOT</bcp14> include the <tt>Accept-Txn-Challenge</tt> header field unless it has a client interaction path capable
of relaying the challenge to a client that can validate the challenge and present it to an authorization
server.</t>
        <t>A protected resource <bcp14>MUST NOT</bcp14> return a transaction authorization challenge, or a response requesting establishment
of a binding key as defined in <xref target="establishing-binding-key"/>, unless the request includes an <tt>Accept-Txn-Challenge</tt>
header field with a true value, or the protected resource has out-of-band knowledge that the client supports this
specification.</t>
      </section>
      <section anchor="challenge-response">
        <name>Challenge Response</name>
        <t>When a protected resource requires transaction-specific authorization, it returns an HTTP error response
indicating that transaction authorization is required. This document defines the OAuth error code
<tt>transaction_authorization_required</tt> for this purpose.</t>
        <t>For example, in response to a request with a DPoP-bound access token:</t>
        <figure anchor="fig-challenge-response">
          <name>Protected resource requesting transaction authorization</name>
          <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: DPoP error="transaction_authorization_required",
  error_description="Transaction-specific authorization is required",
  algs="ES256",
  transaction_challenge="eyJhbGciOiJFUzI1NiIsInR5cCI6InR4bi1hdXRoei1jaGFsbGVuZ2Urand0..."
]]></artwork>
        </figure>
        <t>The challenge uses the authentication scheme of the access token in the request (<xref section="7.2" sectionFormat="of" target="DPOP"/>) or, if
there is none, a scheme that the protected resource accepts.</t>
        <t>The <tt>transaction_challenge</tt> parameter contains a transaction authorization challenge encoded as a JWS Compact
Serialization object as specified in <xref target="JWS"/>. The challenge <bcp14>MUST</bcp14> be signed by the protected resource. The
parameter is absent only when the operation requires a binding key that the request does not provide
(<xref target="establishing-binding-key"/>).</t>
        <t>The <tt>error_description</tt> parameter <bcp14>MAY</bcp14> be included to provide a human-readable diagnostic description. The
<tt>error_description</tt> parameter <bcp14>MUST NOT</bcp14> be used as the basis for an authorization decision.</t>
        <t>A protected resource <bcp14>SHOULD</bcp14> use status code 401 when the request was understood but requires additional
transaction-specific authorization. Other status codes <bcp14>MAY</bcp14> be used when appropriate for the application
protocol.</t>
        <section anchor="challenge-representation">
          <name>Challenge Representation</name>
          <t>A transaction authorization challenge is a JWT secured using JWS. The JOSE header <tt>typ</tt> value <bcp14>MUST</bcp14> be
<tt>txn-authz-challenge+jwt</tt>. The <tt>alg</tt> value <bcp14>MUST</bcp14> identify an asymmetric digital signature algorithm.
The <tt>alg</tt> value <bcp14>MUST NOT</bcp14> be <tt>none</tt>.</t>
          <t>The <tt>kid</tt> value in the JOSE header is used to identify the signing key in the protected resource's JWK Set.</t>
          <t>The challenge claims identify the protected resource, the authorization server expected to process the
challenge, the transaction being authorized, and the intended audience of the resulting access token.</t>
        </section>
        <section anchor="challenge-claims">
          <name>Challenge Claims</name>
          <t>A transaction authorization challenge <bcp14>MUST</bcp14> contain the following claims:</t>
          <dl>
            <dt><tt>iss</tt>:</dt>
            <dd>
              <t>Issuer claim defined in <xref target="JWT"/>. Identifier of the protected resource that generated the challenge. The
access token issued in response to the challenge <bcp14>MUST</bcp14> use this value as its audience unless an
application profile defines a different audience binding.</t>
            </dd>
            <dt><tt>aud</tt>:</dt>
            <dd>
              <t>Audience claim defined in <xref target="JWT"/>. Identifier of the authorization server expected to validate the challenge
and issue an access token for the challenged operation. The value is selected by the protected resource
and need not be the issuer of the access token presented with the original request. The protected resource
<bcp14>MUST</bcp14> select an authorization server that it trusts to evaluate the challenge and issue access tokens
for the requested operation.</t>
            </dd>
            <dt><tt>iat</tt>:</dt>
            <dd>
              <t>Issued At claim defined in <xref target="JWT"/>. Time at which the challenge was issued.</t>
            </dd>
            <dt><tt>exp</tt>:</dt>
            <dd>
              <t>Expiration Time claim defined in <xref target="JWT"/>. Time at which the challenge expires.</t>
            </dd>
            <dt><tt>jti</tt>:</dt>
            <dd>
              <t>JWT ID claim defined in <xref target="JWT"/>. Unique identifier for the challenge object.</t>
            </dd>
            <dt><tt>txn</tt>:</dt>
            <dd>
              <t>Transaction Identifier claim defined in <xref target="SET"/>. Transaction identifier for the challenged operation.
 in response to the challenge <bcp14>MUST</bcp14> contain the same transaction identifier. The
transaction identifier <bcp14>MUST</bcp14> be unique within the context of the protected resource for the lifetime of the
challenge and any access token issued in response to it.</t>
            </dd>
            <dt><tt>authorization_details</tt>:</dt>
            <dd>
              <t>Claim containing Authorization Details as defined in <xref target="OAUTH-RAR"/>. Structured description of the operation
for which transaction-specific authorization is requested. The granted authorization details carried by the
access token issued in response to the challenge are derived from this value.</t>
            </dd>
            <dt><tt>reason</tt>:</dt>
            <dd>
              <t>Human-readable explanation of why transaction-specific authorization is required. This value is intended for
display to the client, the user, or the approving party. The value is integrity protected as part of the
challenge.</t>
            </dd>
          </dl>
          <t>A transaction authorization challenge <bcp14>MAY</bcp14> contain the following claims:</t>
          <dl>
            <dt><tt>cnf</tt>:</dt>
            <dd>
              <t>Confirmation claim <xref target="POP-KEY"/> identifying the key to which the authorization server binds the issued
access token (<xref target="access-token-key-binding"/>). Unlike <tt>cnf</tt> in a sender-constrained access token
(<xref section="6" sectionFormat="of" target="DPOP"/>, <xref section="3.1" sectionFormat="of" target="MTLS"/>), the party presenting the challenge need not hold the key; it is
held by the party that sent the request that triggered the challenge, which can be the client itself. The claim
contains exactly one confirmation method. As <xref section="3.1" sectionFormat="of" target="POP-KEY"/> permits, an authorization server that does
not support that method rejects the challenge instead of ignoring the member.</t>
            </dd>
            <dt><tt>reason_uri</tt>:</dt>
            <dd>
              <t>URI identifying additional information about the transaction authorization request. The URI <bcp14>MUST</bcp14> be controlled by
the protected resource or by a party trusted by the protected resource. The client and authorization server <bcp14>MAY</bcp14>
dereference this URI to obtain additional information for display or policy evaluation.</t>
            </dd>
            <dt><tt>act</tt>:</dt>
            <dd>
              <t>Actor claim defined in <xref target="OAUTH-TOKEN-EXCHANGE"/>. Information about the actor or delegation context
associated with the request that caused the challenge. The value identifies the party that attempted the
challenged operation, or the delegated actor acting on behalf of another party.</t>
            </dd>
          </dl>
          <t>The challenge <bcp14>MAY</bcp14> contain additional claims. The authorization server <bcp14>MUST</bcp14> ignore claims it does not understand
unless local policy requires otherwise.</t>
          <t>Information obtained from <tt>reason_uri</tt> <bcp14>MUST NOT</bcp14> override the security-relevant contents of the signed challenge
unless an application profile defines how that information is authenticated and bound to the challenge.</t>
          <t>Application profiles <bcp14>MAY</bcp14> define additional claims that bind the challenge to the original request or to selected
security-relevant request components.</t>
          <t>The following example shows the claims of a transaction authorization challenge:</t>
          <figure anchor="fig-challenge-example">
            <name>Example transaction authorization challenge</name>
            <artwork><![CDATA[
{
  "iss": "https://resource.example.com",
  "aud": "https://as.example.com",
  "iat": 1710000000,
  "exp": 1710000300,
  "jti": "f1f7c8c4-2f8c-4c6a-83d1-example",
  "txn": "97053963-771d-49cc-a4e3-20aad399c312",
  "cnf": {
    "jkt": "0ZcOCORZNYy-DWpqq30jZyJGHTN0d2HglBV3uiguA4I"
  },
  "authorization_details": [
    {
      "type": "payment",
      "actions": ["initiate"],
      "locations": ["https://payments.example.com/accounts/123"],
      "instructedAmount": {
        "currency": "GBP",
        "amount": "5000.00"
      },
      "creditorName": "Example Ltd"
    }
  ],
  "reason": "Approval is required before initiating this payment.",
  "reason_uri": "https://resource.example.com/transactions/97053963-771d-49cc-a4e3-20aad399c312",
  "act": {
    "sub": "spiffe://example.com/aiagent/6526f880-1895-400b-a929-11a7eecf9753"
  }
}
]]></artwork>
          </figure>
        </section>
      </section>
      <section anchor="challenge-signing-and-key-discovery">
        <name>Challenge Signing and Key Discovery</name>
        <t>A protected resource that issues transaction authorization challenges <bcp14>MUST</bcp14> sign each challenge using an
asymmetric signing key. The client and authorization server <bcp14>MUST</bcp14> validate the challenge signature before using
any claim from the challenge for an authorization decision or for display to the user.</t>
        <t>A protected resource that issues transaction authorization challenges <bcp14>MUST</bcp14> make the public keys needed to
validate those challenges available to clients and authorization servers. This document defines protected
resource metadata parameters, using the OAuth 2.0 Protected Resource Metadata mechanism described in
<xref target="OAUTH-PROT-METADATA"/>. Deployments <bcp14>MAY</bcp14> also use preconfigured trust relationships or other
mechanisms to establish the same keying information.</t>
        <t>This document defines the following protected resource metadata parameters:</t>
        <dl>
          <dt><tt>txn_challenge_jwks_uri</tt>:</dt>
          <dd>
            <t>URL of the protected resource's JSON Web Key Set containing public keys used to validate transaction authorization challenges.</t>
          </dd>
          <dt><tt>txn_challenge_signing_alg_values_supported</tt>:</dt>
          <dd>
            <t>JSON array containing the JWS <tt>alg</tt> values supported by the protected resource for transaction authorization challenges.</t>
          </dd>
        </dl>
        <t>If a protected resource uses the same JWK Set for transaction authorization challenges and for other protected
resource signing keys, the value of <tt>txn_challenge_jwks_uri</tt> <bcp14>MAY</bcp14> be the same as another JWK Set URI published by
the protected resource.</t>
        <t>When the challenge-signing key is published in the JWK Set identified by <tt>txn_challenge_jwks_uri</tt>, the <tt>kid</tt> value in the JOSE header of a
transaction authorization challenge <bcp14>MUST</bcp14> identify the signing key in that JWK Set.</t>
        <t>If the challenge cannot be validated, the client or authorization server <bcp14>MUST NOT</bcp14> treat the challenge as authentic.</t>
      </section>
      <section anchor="access-token-key-binding">
        <name>Access Token Key Binding</name>
        <t>A protected resource can request that the access token issued for a challenge be
bound to a key by including in the challenge a <tt>cnf</tt> claim that identifies that
key (the binding key). The binding key is a key that the sender of the triggering
request demonstrated possession of when sending that request. The triggering
request is the request to the protected resource that caused the challenge to be
issued; it can be sent by an agent or by a client. The authorization server binds
the issued access token to the binding key (<xref target="authorization-server-processing"/>).
The binding key comes from a sender-constrained access token in the triggering request
(<xref target="existing-token-binding"/>) or, otherwise, from a DPoP proof or client certificate sent with that request
(<xref target="establishing-binding-key"/>).</t>
        <t>The protected resource <bcp14>MUST</bcp14> validate the access token, including any sender constraint, and if validation fails,
returns the error response specified for that access token (<xref section="3.1" sectionFormat="of" target="BEARER"/>, <xref section="7.1" sectionFormat="of" target="DPOP"/>,
<xref section="3" sectionFormat="of" target="MTLS"/>).</t>
        <t>A protected resource <bcp14>SHOULD</bcp14> include a binding key in the challenge whenever the access token in the triggering
request is sender-constrained, and for high-impact or non-idempotent operations. It <bcp14>MUST NOT</bcp14> do so unless it knows,
for example by configuration, that the authorization server supports binding keys in challenges with the
confirmation method used.</t>
        <section anchor="existing-token-binding">
          <name>Using an Existing Token Binding</name>
          <t>If the access token in the triggering request is sender-constrained, the <tt>cnf</tt> claim identifies its key, using the
confirmation method and value verified when validating that access token. A DPoP proof sent with an access token
bound using mutual-TLS is not used for <tt>cnf</tt>. The protected resource rejects a DPoP-bound access token sent with the
<tt>Bearer</tt> scheme (<xref section="7.2" sectionFormat="of" target="DPOP"/>).</t>
        </section>
        <section anchor="establishing-binding-key">
          <name>Establishing a Binding Key</name>
          <t>If the triggering request does not contain a sender-constrained access token, the protected resource can take the
binding key from a DPoP proof or a mutual-TLS client certificate sent with the access token, which is presented
using the <tt>Bearer</tt> scheme. Whether an access token is sender-constrained is determined from the token itself, such
as its <tt>cnf</tt> claim or introspection response, not from the authentication scheme. This document extends <xref target="DPOP"/>,
which defines DPoP proofs at a protected resource only for DPoP-bound access tokens (<xref section="7" sectionFormat="of" target="DPOP"/>). Such a
proof only determines the binding key; it does not authenticate the request or authorize access.</t>
          <t>To include a binding key in the challenge, the protected resource processes a request that does not contain a
sender-constrained access token as follows:</t>
          <ol spacing="normal" type="1"><li>
              <t>If the operation requires a binding key and the request contains no access token, the protected resource ignores
any DPoP proof and responds as specified in <xref section="3.1" sectionFormat="of" target="BEARER"/>, including a <tt>DPoP</tt> challenge if it accepts
DPoP-bound access tokens.</t>
            </li>
            <li>
              <t>If the request contains a DPoP proof, the protected resource <bcp14>MUST</bcp14> validate it as specified in
<xref section="4.3" sectionFormat="of" target="DPOP"/>, omitting the key comparison in item 12; the proof <bcp14>MUST</bcp14> contain an <tt>ath</tt> claim
(<xref section="4.2" sectionFormat="of" target="DPOP"/>). If the proof is not valid, it returns a 401 (Unauthorized) response with a <tt>Bearer</tt>
challenge that contains <tt>algs</tt> and the <tt>invalid_dpop_proof</tt> error or, if a nonce that it requires
(<xref section="9" sectionFormat="of" target="DPOP"/>) is missing or unacceptable, the <tt>use_dpop_nonce</tt> error with a <tt>DPoP-Nonce</tt> header field.</t>
            </li>
            <li>
              <t>The key of the DPoP proof (<tt>jkt</tt>, <xref section="6.1" sectionFormat="of" target="DPOP"/>) or, if there is none, of the mutual-TLS client
certificate (<tt>x5t#S256</tt>, <xref section="3.1" sectionFormat="of" target="MTLS"/>) shows only that the sender of the request holds it
(<xref target="security-considerations"/>). If the challenge would contain requester context derived from the access token,
such as an <tt>act</tt> claim, the protected resource <bcp14>MUST NOT</bcp14> use that key unless it authenticates the key holder and
verifies that the holder is authorized to act in that requester context.</t>
            </li>
            <li>
              <t>If the protected resource can use that key and the authorization server supports its confirmation method
(<xref target="access-token-key-binding"/>), the <tt>cnf</tt> claim of any transaction authorization challenge for the request
identifies it. Otherwise, a challenge for the request has no <tt>cnf</tt> claim, and if the operation requires a binding
key, the next step applies.</t>
            </li>
            <li>
              <t>If the operation requires a binding key and the request does not establish a key that the protected resource can
use, it returns a 401 (Unauthorized) response with:  </t>
              <ul spacing="normal">
                <li>
                  <t>if it can use the key of a DPoP proof for this operation and requester context and the authorization server
supports <tt>jkt</tt>, a <tt>Bearer</tt> challenge with the <tt>binding_key_required</tt> error and <tt>algs</tt>; or</t>
                </li>
                <li>
                  <t>if it requires a sender-constrained access token, a <tt>Bearer</tt> challenge with the
<tt>transaction_authorization_required</tt> error and no <tt>transaction_challenge</tt>, and, if it accepts DPoP-bound access
tokens, a <tt>DPoP</tt> challenge with <tt>algs</tt> (<xref section="7.2" sectionFormat="of" target="DPOP"/>).</t>
                </li>
              </ul>
            </li>
          </ol>
          <t>The <tt>binding_key_required</tt> error indicates that the operation requires a binding key and that repeating the request
with the same access token and a DPoP proof can provide it. This document defines <tt>algs</tt> as a <tt>Bearer</tt>
authentication parameter (<xref section="3" sectionFormat="of" target="BEARER"/>) with the meaning given in <xref section="7.1" sectionFormat="of" target="DPOP"/>. A <tt>DPoP</tt>
challenge can accompany the <tt>Bearer</tt> challenge if the protected resource accepts DPoP-bound access tokens, but the
retry does not need it. Without a <tt>transaction_challenge</tt> parameter, the <tt>transaction_authorization_required</tt> error
indicates that the request needs to be repeated with a sender-constrained access token, such as a DPoP-bound or
certificate-bound access token.</t>
          <t>To avoid the <tt>binding_key_required</tt> round trip, a request that contains the <tt>Accept-Txn-Challenge</tt> header field with
a true value can include a DPoP proof from the start.</t>
          <t>For example, a protected resource requests a DPoP proof:</t>
          <figure anchor="fig-binding-key-required">
            <name>Protected resource requesting a DPoP proof for a binding key</name>
            <artwork><![CDATA[
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer error="binding_key_required", algs="ES256"
]]></artwork>
          </figure>
          <t>The request is then repeated with the same access token and a DPoP proof:</t>
          <figure anchor="fig-dpop-proof-request">
            <name>Repeating a request with a DPoP proof for a binding key</name>
            <artwork><![CDATA[
POST /payments HTTP/1.1
Host: resource.example.com
Authorization: Bearer mF_9.B5f-4.1JqM
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7...
Accept-Txn-Challenge: ?1
Content-Type: application/json

{"amount": "5000.00", "currency": "GBP", "recipient": "Example Ltd"}
]]></artwork>
          </figure>
          <t>The DPoP proof is formed as specified in <xref section="4.2" sectionFormat="of" target="DPOP"/>, with <tt>ath</tt> computed over the bearer access token.
The JWK SHA-256 thumbprint of its key is the <tt>jkt</tt> value in the <tt>cnf</tt> claim of the resulting challenge.</t>
        </section>
      </section>
      <section anchor="agent-relay">
        <name>Agent Relay</name>
        <t>After receiving a transaction authorization challenge from a protected resource, the agent relays the challenge
to the client using a deployment-specific client-agent protocol.</t>
        <t>The agent <bcp14>MUST</bcp14> relay the transaction authorization challenge without modifying it and <bcp14>MUST NOT</bcp14> replace it with
an agent-generated description of the requested operation. The client <bcp14>MUST</bcp14> treat any agent-supplied
description as advisory. Any authorization decision, user display, or disclosure decision <bcp14>MUST</bcp14> be based on
the validated challenge or on protected resource state identified by the validated challenge.</t>
        <t>A client-agent protocol that carries transaction authorization challenges <bcp14>SHOULD</bcp14> distinguish a transaction
authorization challenge from ordinary agent messages or natural-language content. For example, such a protocol
can carry the challenge using a field named <tt>transaction_challenge</tt> whose value is the JWS Compact Serialization
of the transaction authorization challenge.</t>
        <t>In deployments where one agent delegates work to another agent, a transaction authorization challenge <bcp14>MAY</bcp14> be
relayed through one or more intermediate agents before reaching the client. Each agent that relays
the challenge <bcp14>MUST</bcp14> relay it without modification. An intermediate agent <bcp14>MUST NOT</bcp14> replace the challenge with
a new challenge unless it is itself acting as a protected resource for a distinct operation and generates a
new signed transaction authorization challenge for that operation.</t>
      </section>
      <section anchor="client-processing">
        <name>Client Processing</name>
        <t>Before presenting the challenge to the authorization server, the client <bcp14>MUST</bcp14> validate the challenge signature,
issuer, audience, and expiration. The client <bcp14>MUST</bcp14> verify that the <tt>aud</tt> claim identifies the authorization
server to which the client intends to present the challenge.</t>
        <t>The client <bcp14>MAY</bcp14> display the challenge contents to the user before sending the challenge to the authorization server.
This allows the user to decide whether to continue and whether to disclose the challenged transaction to the authorization server.</t>
        <t>When displaying challenge information, the client <bcp14>MUST</bcp14> use information obtained from the validated challenge or from
protected resource state identified by the validated challenge. The client <bcp14>MUST NOT</bcp14> rely on an unprotected description
supplied by the agent.</t>
        <t>If the user declines to continue, or if the client cannot validate the challenge, the client <bcp14>MUST NOT</bcp14> present the challenge
to the authorization server.</t>
      </section>
      <section anchor="authorization-server-processing">
        <name>Authorization Server Processing</name>
        <t>The authorization server <bcp14>MUST</bcp14> validate the transaction authorization challenge before accepting it for processing or
issuing an access token.</t>
        <t>At a minimum, the authorization server <bcp14>MUST</bcp14> verify that:</t>
        <ul spacing="normal">
          <li>
            <t>the challenge signature is valid;</t>
          </li>
          <li>
            <t>the challenge was issued by a protected resource recognized by the authorization server;</t>
          </li>
          <li>
            <t>the challenge has not expired;</t>
          </li>
          <li>
            <t>no challenge with the same <tt>iss</tt> and <tt>jti</tt> values has previously been accepted for processing, unless the same client
resubmits it, in which case the authorization server continues the original transaction authorization request; the
authorization server retains this state until the challenge expires;</t>
          </li>
          <li>
            <t>the <tt>aud</tt> claim identifies the authorization server;</t>
          </li>
          <li>
            <t>the authorization server is willing to issue access tokens for the protected resource identified by the <tt>iss</tt>
claim and for the requested operation;</t>
          </li>
          <li>
            <t>the access token issued in response to the challenge will use the protected resource identified by the <tt>iss</tt> claim
as its audience, unless an application profile defines a different audience binding;</t>
          </li>
          <li>
            <t>the <tt>txn</tt> claim is present, is a string, and is acceptable;</t>
          </li>
          <li>
            <t>the requested operation is sufficiently described;</t>
          </li>
          <li>
            <t>the client is permitted to request transaction authorization for the challenged operation;</t>
          </li>
          <li>
            <t>if the challenge contains a <tt>cnf</tt> claim, that claim contains exactly one confirmation method, <tt>jkt</tt> or <tt>x5t#S256</tt>,
with a well-formed value, and the authorization server supports it (<xref target="access-token-key-binding"/>).</t>
          </li>
        </ul>
        <t>When requester context, such as the <tt>act</tt> claim, is present in the challenge, the authorization server <bcp14>MUST</bcp14> consider that
context when determining whether the challenged operation can be approved. The authorization server <bcp14>MUST NOT</bcp14> treat <tt>cnf</tt>
as identifying or authenticating the requester.</t>
        <t>The authorization server determines the approving party according to local policy. The approving party can be the subject
associated with the original request, a different resource owner, an administrator, an organizational approval workflow,
or another policy authority.</t>
        <t>The authorization server <bcp14>MUST</bcp14> obtain any required approval before issuing an access token. The authorization server
<bcp14>SHOULD</bcp14> present the approving party with sufficient information to understand the operation being authorized. The
authorization server <bcp14>MUST NOT</bcp14> rely on an unprotected description supplied by the agent as the basis for the
authorization decision.</t>
        <t>If the authorization server accepts the challenge for processing, the client obtains the result using the transaction
authorization flow described in <xref target="transaction-authorization-flow"/>. If the authorization server rejects the challenge,
cannot validate the challenge, or cannot obtain the required approval, it <bcp14>MUST NOT</bcp14> issue an access token for the
challenged operation.</t>
        <t>When the challenge contains a <tt>cnf</tt> claim, the authorization server <bcp14>MUST</bcp14> bind the access token to the key identified
by <tt>cnf</tt> as specified in <xref section="6" sectionFormat="of" target="DPOP"/> or <xref section="3" sectionFormat="of" target="MTLS"/>, with <tt>token_type</tt> <tt>DPoP</tt> for <tt>jkt</tt>
(<xref section="5" sectionFormat="of" target="DPOP"/>) or <tt>Bearer</tt> for <tt>x5t#S256</tt>, and <bcp14>MUST NOT</bcp14> bind it to any other key. It <bcp14>MUST NOT</bcp14> issue a
refresh token, because a refreshed access token would be bound to a key that the client proves
(<xref section="5" sectionFormat="of" target="DPOP"/>).</t>
        <t>The authorization server does not verify possession of the binding key and does not require the client to
demonstrate it; it relies on the protected resource identified by the <tt>iss</tt> claim, which verified possession on the
triggering request and asserts the key in the signed challenge (<xref target="access-token-key-binding"/>). Client authentication
still applies. As an exception to <xref section="5.2" sectionFormat="of" target="DPOP"/>, the authorization server does not require a DPoP proof on
a transaction authorization request whose challenge contains a <tt>cnf</tt> claim, or on a poll for that request, even if
the client's <tt>dpop_bound_access_tokens</tt> metadata is <tt>true</tt>.</t>
      </section>
    </section>
    <section anchor="transaction-authorization-flow">
      <name>Transaction Authorization Flow</name>
      <t>The client presents the transaction authorization challenge to the token endpoint
(<xref section="3.2" sectionFormat="of" target="OAUTH-FRAMEWORK"/>) using the transaction authorization grant
defined in this document. When the authorization server cannot issue a token
response immediately, for example because satisfying the challenge requires
approval from the resource owner, an administrator, or an organizational policy
authority, it uses the OAuth Deferred Token Response mechanism
<xref target="DEFERRED"/>, with the transaction
authorization grant as the originating grant.</t>
      <t>A token response to the grant (returned immediately or, after deferral, on a polling request) authorizes the
challenged operation. A deferred response is not a token response: it only indicates that the authorization
server has accepted the challenge for processing.</t>
      <t>The level of human oversight is a deployment choice and does not change the protocol. The client uses the same grant and the same deferred token response flow whether the challenge is approved by a person before the operation proceeds (HITL), approved automatically subject to human monitoring and intervention (HOTL), or approved by policy a person established in advance (HOOTL).</t>
      <t>The following figure shows the transaction authorization flow when the request is deferred:</t>
      <figure anchor="fig-transaction-authorization-flow">
        <name>Transaction authorization flow using a deferred token response</name>
        <artset>
          <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="480" width="664" viewBox="0 0 664 480" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
              <path d="M 8,32 L 8,64" fill="none" stroke="black"/>
              <path d="M 40,72 L 40,464" fill="none" stroke="black"/>
              <path d="M 80,32 L 80,64" fill="none" stroke="black"/>
              <path d="M 288,32 L 288,64" fill="none" stroke="black"/>
              <path d="M 376,72 L 376,464" fill="none" stroke="black"/>
              <path d="M 472,32 L 472,64" fill="none" stroke="black"/>
              <path d="M 512,32 L 512,64" fill="none" stroke="black"/>
              <path d="M 584,72 L 584,464" fill="none" stroke="black"/>
              <path d="M 656,32 L 656,64" fill="none" stroke="black"/>
              <path d="M 8,32 L 80,32" fill="none" stroke="black"/>
              <path d="M 288,32 L 472,32" fill="none" stroke="black"/>
              <path d="M 512,32 L 656,32" fill="none" stroke="black"/>
              <path d="M 8,64 L 80,64" fill="none" stroke="black"/>
              <path d="M 288,64 L 472,64" fill="none" stroke="black"/>
              <path d="M 512,64 L 656,64" fill="none" stroke="black"/>
              <path d="M 48,128 L 368,128" fill="none" stroke="black"/>
              <path d="M 48,192 L 368,192" fill="none" stroke="black"/>
              <path d="M 384,224 L 576,224" fill="none" stroke="black"/>
              <path d="M 48,288 L 368,288" fill="none" stroke="black"/>
              <path d="M 48,320 L 368,320" fill="none" stroke="black"/>
              <path d="M 384,352 L 576,352" fill="none" stroke="black"/>
              <path d="M 48,416 L 368,416" fill="none" stroke="black"/>
              <path d="M 48,448 L 368,448" fill="none" stroke="black"/>
              <polygon class="arrowhead" points="584,224 572,218.4 572,229.6" fill="black" transform="rotate(0,576,224)"/>
              <polygon class="arrowhead" points="392,352 380,346.4 380,357.6" fill="black" transform="rotate(180,384,352)"/>
              <polygon class="arrowhead" points="376,416 364,410.4 364,421.6" fill="black" transform="rotate(0,368,416)"/>
              <polygon class="arrowhead" points="376,288 364,282.4 364,293.6" fill="black" transform="rotate(0,368,288)"/>
              <polygon class="arrowhead" points="376,128 364,122.4 364,133.6" fill="black" transform="rotate(0,368,128)"/>
              <polygon class="arrowhead" points="56,448 44,442.4 44,453.6" fill="black" transform="rotate(180,48,448)"/>
              <polygon class="arrowhead" points="56,320 44,314.4 44,325.6" fill="black" transform="rotate(180,48,320)"/>
              <polygon class="arrowhead" points="56,192 44,186.4 44,197.6" fill="black" transform="rotate(180,48,192)"/>
              <g class="text">
                <text x="44" y="52">Client</text>
                <text x="352" y="52">Authorization</text>
                <text x="436" y="52">Server</text>
                <text x="560" y="52">Approving</text>
                <text x="624" y="52">Party</text>
                <text x="68" y="100">POST</text>
                <text x="116" y="100">/token</text>
                <text x="180" y="100">grant:</text>
                <text x="288" y="100">txn-authz-challenge</text>
                <text x="140" y="116">transaction_challenge,</text>
                <text x="268" y="116">deferred</text>
                <text x="64" y="164">400</text>
                <text x="168" y="164">authorization_pending</text>
                <text x="108" y="180">deferral_code,</text>
                <text x="204" y="180">interval</text>
                <text x="420" y="212">Approval</text>
                <text x="488" y="212">Request</text>
                <text x="68" y="260">POST</text>
                <text x="116" y="260">/token</text>
                <text x="180" y="260">grant:</text>
                <text x="244" y="260">deferred</text>
                <text x="104" y="276">deferral_code</text>
                <text x="64" y="308">400</text>
                <text x="168" y="308">authorization_pending</text>
                <text x="420" y="340">Approval</text>
                <text x="484" y="340">Result</text>
                <text x="68" y="388">POST</text>
                <text x="116" y="388">/token</text>
                <text x="180" y="388">grant:</text>
                <text x="244" y="388">deferred</text>
                <text x="104" y="404">deferral_code</text>
                <text x="64" y="436">200</text>
                <text x="104" y="436">token</text>
                <text x="164" y="436">response</text>
                <text x="232" y="436">(access</text>
                <text x="292" y="436">token)</text>
              </g>
            </svg>
          </artwork>
          <artwork type="ascii-art"><![CDATA[
+--------+                         +----------------------+    +-----------------+
| Client |                         | Authorization Server |    | Approving Party |
+--------+                         +----------------------+    +-----------------+
    |                                         |                         |
    | POST /token  grant: txn-authz-challenge |                         |
    | transaction_challenge, deferred         |                         |
    |---------------------------------------->|                         |
    |                                         |                         |
    | 400 authorization_pending               |                         |
    | deferral_code, interval                 |                         |
    |<----------------------------------------|                         |
    |                                         | Approval Request        |
    |                                         |------------------------>|
    |                                         |                         |
    | POST /token  grant: deferred            |                         |
    | deferral_code                           |                         |
    |---------------------------------------->|                         |
    | 400 authorization_pending               |                         |
    |<----------------------------------------|                         |
    |                                         | Approval Result         |
    |                                         |<------------------------|
    |                                         |                         |
    | POST /token  grant: deferred            |                         |
    | deferral_code                           |                         |
    |---------------------------------------->|                         |
    | 200 token response (access token)       |                         |
    |<----------------------------------------|                         |
    |                                         |                         |
]]></artwork>
        </artset>
      </figure>
      <section anchor="transaction-authorization-grant">
        <name>Transaction Authorization Grant</name>
        <t>This document defines the grant type <tt>urn:ietf:params:oauth:grant-type:txn-authz-challenge</tt>. The client presents a
validated challenge (relayed to it by the agent) by making a token request to the token endpoint with the
following parameters in the <tt>application/x-www-form-urlencoded</tt> request body:</t>
        <dl>
          <dt><tt>grant_type</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. <bcp14>MUST</bcp14> be <tt>urn:ietf:params:oauth:grant-type:txn-authz-challenge</tt>.</t>
          </dd>
          <dt><tt>transaction_challenge</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14>. The transaction authorization challenge received from the protected resource.</t>
          </dd>
          <dt><tt>completion_mode</tt>:</dt>
          <dd>
            <t><bcp14>OPTIONAL</bcp14>. Including the value <tt>deferred</tt>, as defined by <xref target="DEFERRED"/>, signals that the client accepts a deferred
token response. Because the approval that satisfies a challenge is typically asynchronous, a client <bcp14>SHOULD</bcp14>
include <tt>deferred</tt>. An authorization server <bcp14>MUST NOT</bcp14> return a deferred response to a client that has not
signaled <tt>deferred</tt>. If the authorization server cannot approve the operation synchronously for such a client,
it <bcp14>MUST</bcp14> return the <tt>access_denied</tt> error (<xref section="3.5" sectionFormat="of" target="OAUTH-DEVICE"/>); the client can then repeat
the request with <tt>deferred</tt> included in <tt>completion_mode</tt>.</t>
          </dd>
          <dt><tt>client_id</tt>:</dt>
          <dd>
            <t><bcp14>REQUIRED</bcp14> if the client is not authenticating with the authorization server as described in
<xref section="3.2.1" sectionFormat="of" target="OAUTH-FRAMEWORK"/>.</t>
          </dd>
        </dl>
        <t>The client authentication requirements of <xref section="3.2.1" sectionFormat="of" target="OAUTH-FRAMEWORK"/> apply, and requests <bcp14>MUST</bcp14> use TLS
following the best practices of <xref target="BCP-195"/>. The authorization server <bcp14>MUST</bcp14> validate the challenge as
described in <xref target="authorization-server-processing"/> before accepting the request. If the challenge fails validation,
the error code is <tt>invalid_grant</tt> (<xref section="5.2" sectionFormat="of" target="OAUTH-FRAMEWORK"/>) unless a more specific code applies, such
as <tt>unauthorized_client</tt> for a client that is not permitted to request transaction authorization for the operation.</t>
        <t>For example, a public client, which <xref target="DEFERRED"/> requires to present a DPoP proof (<xref target="DPOP"/>) on this request, sends
the following request:</t>
        <figure anchor="fig-transaction-authorization-request">
          <name>Transaction authorization grant request</name>
          <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYi...

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Atxn-authz-challenge
&client_id=s6BhdRkqt3
&completion_mode=deferred
&transaction_challenge=eyJhbGciOiJFUzI1NiIsInR5cCI6InR4bi1hdXRoei1jaGFsbGVuZ2Urand0In0...
]]></artwork>
        </figure>
      </section>
      <section anchor="deferred-processing">
        <name>Deferred Processing and Polling</name>
        <t>If the authorization server can approve the challenged operation without further interaction, it returns a token
response as described in <xref target="successful-access-token-response"/>.</t>
        <t>Otherwise, if the client signaled <tt>completion_mode=deferred</tt>, the authorization server returns a deferred token
response as defined in <xref target="DEFERRED"/>: an HTTP 400 response whose body carries the <tt>authorization_pending</tt> or
<tt>interaction_required</tt> error code, a <tt>deferral_code</tt>, an <tt>expires_in</tt>, and an <tt>interval</tt>. The client then polls the
token endpoint using the deferred grant of <xref target="DEFERRED"/> (<tt>grant_type=urn:ietf:params:oauth:grant-type:deferred</tt>
with the <tt>deferral_code</tt>) until it receives a token response or a terminal error. The polling cadence, the
<tt>interaction_required</tt>, <tt>slow_down</tt>, <tt>expired_token</tt>, and <tt>access_denied</tt> errors, optional completion-callback
notifications, and cancellation via the revocation endpoint are all as defined in <xref target="DEFERRED"/>.</t>
        <t>When approval requires interaction that the client can facilitate, the authorization server returns
<tt>interaction_required</tt> with an <tt>interaction_uri</tt>, on the deferred response or on a later polling response, as
defined in <xref target="DEFERRED"/>. The client presents the <tt>interaction_uri</tt> to the user or other approving party, or opens
it in a user agent, and continues polling.</t>
        <t>The <tt>deferral_code</tt> is sender-constrained as defined in <xref target="DEFERRED"/>; this protects the polling credential. If the
challenge contains a <tt>cnf</tt> claim, the access token issued on a polling request is bound to the key identified by
<tt>cnf</tt> (<xref target="authorization-server-processing"/>), even if <xref target="DEFERRED"/> binds the <tt>deferral_code</tt> to the client's DPoP
key. Otherwise, if the client presents a DPoP proof on the transaction authorization grant request, as <xref target="DEFERRED"/>
requires of a public client, <xref target="DEFERRED"/> binds both the <tt>deferral_code</tt> and the access token later issued on a
polling request to the client's DPoP key; if it does not, the format and binding of the issued access token are as
described in <xref target="successful-access-token-response"/>. The <tt>txn</tt> value correlates the challenge, the issued token, and
any re-evaluation.</t>
        <ul empty="true">
          <li>
            <t>Editor's note: When the client presents a DPoP proof, binding the access token to the key identified by <tt>cnf</tt>
conflicts with <xref target="DEFERRED"/>, which requires the access token to be bound to the client's DPoP key in both its
sender-constraint requirements and its sender-constraining continuity guarantee. Resolving this requires
<xref target="DEFERRED"/> to let the originating grant define how the issued access token is bound, separately from the
binding of the <tt>deferral_code</tt>.</t>
          </li>
        </ul>
        <t>For example, the authorization server returns a deferred response, and the client then polls:</t>
        <figure anchor="fig-deferred-response">
          <name>Deferred token response</name>
          <artwork><![CDATA[
HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "authorization_pending",
  "deferral_code": "LRGidcSAeVs_xYpEDt5pNx0A0TBr7qPHbh_Se6pfdf4",
  "expires_in": 300,
  "interval": 5
}
]]></artwork>
        </figure>
        <figure anchor="fig-deferred-poll">
          <name>Polling a deferred transaction authorization request</name>
          <artwork><![CDATA[
POST /token HTTP/1.1
Host: as.example.com
Content-Type: application/x-www-form-urlencoded
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYi...

grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adeferred
&client_id=s6BhdRkqt3
&deferral_code=LRGidcSAeVs_xYpEDt5pNx0A0TBr7qPHbh_Se6pfdf4
]]></artwork>
        </figure>
      </section>
      <section anchor="discovery">
        <name>Discovery</name>
        <t>An authorization server indicates support for this mechanism by including
<tt>urn:ietf:params:oauth:grant-type:txn-authz-challenge</tt> in the <tt>grant_types_supported</tt> value of its metadata
<xref target="OAUTH-AS-METADATA"/>, and by setting the <tt>deferred_token_response_supported</tt> metadata parameter defined in
<xref target="DEFERRED"/> to <tt>true</tt>.</t>
      </section>
      <section anchor="successful-access-token-response">
        <name>Successful Access Token Response</name>
        <t>If the transaction authorization request is approved, the authorization server returns an access token response.</t>
        <t>The response uses the access token response format defined in <xref section="5.1" sectionFormat="of" target="OAUTH-FRAMEWORK"/> and the
<tt>authorization_details</tt> response parameter defined in <xref section="7" sectionFormat="of" target="OAUTH-RAR"/>. The granted
<tt>authorization_details</tt> value <bcp14>MUST</bcp14> describe the operation approved for the challenged transaction and <bcp14>MUST</bcp14>
be derived from the <tt>authorization_details</tt> claim of the transaction authorization challenge. The
authorization server <bcp14>MAY</bcp14> normalize, narrow, or otherwise constrain the granted authorization details
relative to those requested by the challenge, but <bcp14>MUST NOT</bcp14> broaden them.</t>
        <t>The authorization_details parameter in the token response is returned by the authorization server as required
by Section 7 of <xref target="OAUTH-RAR"/> and conveys the authorization details as granted, which <bcp14>MAY</bcp14> differ from those
requested in the challenge. This response parameter is informational for the client. The protected resource
<bcp14>MUST</bcp14> determine authorization from the granted authorization details bound to the access token
(see <xref target="access-token"/>), and <bcp14>MUST NOT</bcp14> rely on the token response parameter.</t>
        <t>The access token <bcp14>MUST</bcp14> contain the <tt>txn</tt> value from the transaction authorization challenge, <bcp14>MUST</bcp14> be bound
to the granted authorization details, and <bcp14>MUST</bcp14> use the <tt>iss</tt> value from the transaction authorization
challenge as its audience unless an application profile defines a different audience binding. The
authorization server <bcp14>MAY</bcp14> issue this access token in any access token format negotiated with the protected
resource; when JWT access tokens defined in <xref target="JWT-AT"/> are used, the <tt>txn</tt> and
<tt>authorization_details</tt> claims are included as defined in <xref target="SET"/> and <xref section="9" sectionFormat="of" target="OAUTH-RAR"/>
respectively.</t>
        <t>The access token issued in response to a transaction authorization challenge is scoped to the challenged
operation and <bcp14>MUST NOT</bcp14> be accepted as authorization for any operation that is not described by its granted
authorization details.</t>
        <t>For example:</t>
        <figure anchor="fig-access-token-response">
          <name>Successful access token response</name>
          <artwork><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store

{
  "access_token": "eyJhbGciOiJFUzI1NiIsInR5cCI6ImF0K2p3dCJ9...",
  "token_type": "DPoP",
  "expires_in": 120,
  "authorization_details": [
    {
      "type": "payment",
      "actions": ["initiate"],
      "locations": ["https://payments.example.com/accounts/123"],
      "instructedAmount": {
        "currency": "GBP",
        "amount": "5000.00"
      },
      "creditorName": "Example Ltd"
    }
  ]
}
]]></artwork>
        </figure>
        <t>The access token <bcp14>MUST</bcp14> have a limited lifetime. The authorization server <bcp14>SHOULD</bcp14> issue the access token with a short lifetime because it represents
authorization for a specific operation. When the challenge contains a <tt>cnf</tt> claim, the access token is sender-constrained to
the key identified by <tt>cnf</tt>, using DPoP <xref target="DPOP"/> or mutual-TLS <xref target="MTLS"/>
(<xref target="authorization-server-processing"/>). Otherwise, the authorization server <bcp14>MAY</bcp14> sender-constrain the access token to
a key that the client proves; only the client can then present it. A client that relays the access token to an
agent also relays its <tt>token_type</tt>. The client need not possess the binding key or generate DPoP proofs; the agent
presents the access token using the indicated token type.</t>
      </section>
    </section>
    <section anchor="access-token">
      <name>Access Token</name>
      <t>The access token issued in response to a transaction authorization challenge represents authorization for the challenged operation.
It is an OAuth 2.0 access token whose granted authorization details, expressed using the <tt>authorization_details</tt> parameter and claim
defined in <xref target="OAUTH-RAR"/>, describe the operation that was approved.</t>
      <t>The access token is issued by the authorization server identified by the <tt>aud</tt> claim of the transaction authorization challenge and is
presented to the protected resource that issued the challenge.</t>
      <t>The access token <bcp14>MUST</bcp14> contain sufficient information for the protected resource to determine that the token authorizes the challenged
operation. At a minimum, the access token <bcp14>MUST</bcp14> be bound to the <tt>txn</tt> value from the challenge and <bcp14>MUST</bcp14> carry granted authorization
details that describe the approved operation. The granted authorization details <bcp14>MAY</bcp14> be the value of the <tt>authorization_details</tt> claim
from the challenge, a value derived from it, or a reference to protected resource state agreed between the protected resource and the
authorization server.</t>
      <t>When requester context, such as the <tt>act</tt> claim, is present in the transaction authorization challenge, the authorization server <bcp14>MUST</bcp14>
include equivalent requester context in the access token or otherwise bind the access token to that context.</t>
      <t>This access token is scoped to the challenged operation. Clients and protected resources <bcp14>MUST NOT</bcp14> assume that the
access token issued in response to a transaction authorization challenge confers authorization beyond the operation described by its
granted authorization details.</t>
      <section anchor="token-presentation">
        <name>Token Presentation</name>
        <t>The client provides the access token to the agent. The agent presents the access token to the protected resource together with the
request for the challenged operation.</t>
        <t>In deployments where one agent delegates work to another agent, the access token <bcp14>MAY</bcp14> be relayed through one or more intermediate agents
before being presented to the protected resource. Each agent that relays the access token <bcp14>MUST</bcp14> relay it without modification. An agent
<bcp14>MUST NOT</bcp14> use the access token for a different transaction, different protected resource, or different requester context.</t>
        <t>When the challenge contains a <tt>cnf</tt> claim, only the holder of the key identified by <tt>cnf</tt> can present the access
token; an agent acting for another agent can obtain its own challenge.</t>
        <t>When HTTP is used, the access token <bcp14>MUST</bcp14> be presented to the protected resource as defined by <xref target="OAUTH-FRAMEWORK"/>. Bearer access
tokens are presented using the <tt>Authorization</tt> request header field as specified in <xref target="BEARER"/>. Sender-constrained access
tokens are presented using the mechanism defined by the corresponding access token format, for example <xref target="DPOP"/> or
<xref target="MTLS"/>.</t>
        <t>For example:</t>
        <figure anchor="fig-access-token-presentation">
          <name>Presenting the access token to a protected resource</name>
          <artwork><![CDATA[
POST /payments HTTP/1.1
Host: resource.example.com
Authorization: DPoP eyJhbGciOiJFUzI1NiIsInR5cCI6ImF0K2p3dCJ9...
DPoP: eyJ0eXAiOiJkcG9wK2p3dCIsImFsZyI6IkVTMjU2IiwiandrIjp7Imt0eSI6IkVDIiwiY3J2IjoiUC0yNTYi...
Content-Type: application/json

{
  "amount": "5000.00",
  "currency": "GBP",
  "recipient": "Example Ltd"
}
]]></artwork>
        </figure>
        <t>The agent <bcp14>MUST NOT</bcp14> modify the access token. If the agent cannot present the access token to the protected resource, the challenged
operation cannot be completed using this mechanism.</t>
      </section>
      <section anchor="protected-resource-validation">
        <name>Protected Resource Validation</name>
        <t>Before accepting the access token as authorization for a challenged operation, the protected resource <bcp14>MUST</bcp14> validate the access token
according to <xref target="OAUTH-FRAMEWORK"/>, the access token format in use, and the requirements of this document.</t>
        <t>At a minimum, the protected resource <bcp14>MUST</bcp14> verify that:</t>
        <ul spacing="normal">
          <li>
            <t>the access token was issued by the authorization server identified by the <tt>aud</tt> claim of the transaction authorization challenge;</t>
          </li>
          <li>
            <t>the access token audience identifies the protected resource, unless an application profile defines a different audience binding;</t>
          </li>
          <li>
            <t>the access token has not expired;</t>
          </li>
          <li>
            <t>the access token is bound to the same <tt>txn</tt> value as the transaction authorization challenge;</t>
          </li>
          <li>
            <t>if the challenge, as recorded by the protected resource, contains a <tt>cnf</tt> claim, the access token is
sender-constrained with the confirmation method and value in that claim, and the request satisfies that constraint
(<xref section="7.1" sectionFormat="of" target="DPOP"/>, <xref section="3" sectionFormat="of" target="MTLS"/>);</t>
          </li>
          <li>
            <t>the granted authorization details associated with the access token authorize the requested operation and are consistent with the
<tt>authorization_details</tt> claim of the transaction authorization challenge;</t>
          </li>
          <li>
            <t>any requester context required by the transaction authorization challenge is present and matches the challenged transaction;</t>
          </li>
          <li>
            <t>no access token for the same <tt>txn</tt> value has previously been accepted, if the protected resource requires single use for the
challenged operation.</t>
          </li>
        </ul>
        <t>A protected resource <bcp14>MUST</bcp14> reject an access token that does not correspond to the transaction authorization challenge for the requested
operation.</t>
        <t>A protected resource <bcp14>SHOULD</bcp14> treat access tokens issued in response to a transaction authorization challenge as single-use when the
challenged operation is non-idempotent or high impact. If single-use semantics are required, the protected resource <bcp14>MUST</bcp14> maintain
sufficient state to detect replay of the transaction identifier.</t>
        <t>The protected resource <bcp14>MUST NOT</bcp14> accept an access token issued in response to a transaction authorization challenge as general
authorization for operations other than the challenged operation. In particular, the protected resource <bcp14>MUST NOT</bcp14> honour the granted
authorization details of such an access token for any operation that is not the challenged operation described by those authorization
details.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>Transaction authorization challenges and the access tokens issued in response to them are security-sensitive
artifacts. A transaction authorization challenge requests authorization for a specific operation, and the
access token issued in response represents evidence that the challenged operation was authorized. Implementations
need to ensure that these artifacts cannot be modified, replayed, substituted, or used for a different operation.</t>
      <t>A protected resource <bcp14>MUST</bcp14> sign each transaction authorization challenge using an asymmetric signing key. Clients and
authorization servers <bcp14>MUST</bcp14> validate the challenge signature before using any claim from the challenge for display,
policy evaluation, or authorization decisions. If a challenge cannot be validated, it <bcp14>MUST NOT</bcp14> be treated as
authentic.</t>
      <t>The authorization server <bcp14>MUST</bcp14> verify that the <tt>aud</tt> claim identifies the authorization server and that the protected
resource identified by the <tt>iss</tt> claim is trusted to request transaction authorization for the requested operation. An
authorization server <bcp14>MUST NOT</bcp14> issue an access token for a challenge issued by an unrecognized or unauthorized
protected resource.</t>
      <t>The transaction authorization challenge and the resulting access token <bcp14>MUST</bcp14> be bound to the same transaction
identifier. The protected resource <bcp14>MUST</bcp14> verify that the <tt>txn</tt> value bound to the access token matches the <tt>txn</tt>
value from the challenge. An access token issued in response to a transaction authorization challenge <bcp14>MUST NOT</bcp14> be
accepted as authorization for any operation other than the challenged operation.</t>
      <t>Access tokens issued in response to a transaction authorization challenge can be replayed if they are not
sufficiently constrained. Authorization servers <bcp14>MUST</bcp14> issue these access tokens with short lifetimes, and protected
resources can require key binding (<xref target="access-token-key-binding"/>). Protected resources <bcp14>SHOULD</bcp14> treat these access tokens
as single-use for non-idempotent or high-impact operations, and maintain sufficient state to detect replay where
single-use semantics are required.</t>
      <t>A binding key protects the access token issued for a challenge. The <tt>cnf</tt> claim is part of the signed challenge, so a party that relays the challenge cannot remove or replace the binding key. A party that does not hold the binding key, such as an intermediate agent, cannot present the access token. If that party submits the challenge itself, the resulting access token is bound to the same key, so it cannot present that token either. The authorization server accepts a challenge only once, so such a party can at most prevent the transaction from completing.</t>
      <t>The strength of this protection depends on where the binding key comes from. If it is the key of a sender-constrained access token, a party that captured that token cannot substitute its own key. If it comes from a DPoP proof or a client certificate, it only shows that the sender of the triggering request holds the key. A party that obtained a bearer access token can then obtain a challenge with its own key as the binding key. Any requester context derived from that access token, such as an <tt>act</tt> claim (<xref section="4.1" sectionFormat="of" target="OAUTH-TOKEN-EXCHANGE"/>), still identifies the original requester to the approving party. For this reason, <xref target="establishing-binding-key"/> restricts this source of binding keys when the challenge would contain such requester context.</t>
      <t>Key binding does not replace single use (<xref target="protected-resource-validation"/>), because the holder of the key can
present the access token more than once.</t>
      <t>Because the access token issued in response to a transaction authorization challenge carries granted
authorization details that describe a specific operation, protected resources <bcp14>MUST</bcp14> evaluate those authorization
details against the operation being requested. Accepting such an access token without evaluating its
authorization details would allow a token issued for one operation to authorize a different operation.</t>
      <t>The agent is not trusted to modify or summarize the challenge. Clients and authorization servers <bcp14>MUST NOT</bcp14> rely on an
unprotected description supplied by the agent as the basis for user display, policy evaluation, or authorization
decisions. Information presented to the user or approving party <bcp14>SHOULD</bcp14> be derived from the validated challenge, from
protected resource state identified by the challenge, or from information otherwise authenticated and bound to the
challenge.</t>
      <t>When requester context is relevant to the authorization decision, the protected resource <bcp14>SHOULD</bcp14> include that context
in the challenge, for example using the <tt>act</tt> claim. The authorization server <bcp14>MUST</bcp14> consider requester context when it
is present. This helps prevent an approval obtained for one agent, client, user, or delegation context from being used
to authorize a transaction initiated by another requester.</t>
      <t>The client can inspect the challenge before presenting it to the authorization server. This is important because the
challenge can contain sensitive information about the requested operation, user intent, protected resources, or
organizational policy. Clients <bcp14>SHOULD</bcp14> allow the user to decline before disclosing the challenge to the authorization
server when the challenge contains privacy-sensitive transaction details.</t>
      <t>Challenges and the access tokens issued in response to them can reveal sensitive information if logged or exposed
to unintended parties. In particular, the granted authorization details carried by the access token can describe
the operation in detail. Implementations <bcp14>SHOULD</bcp14> minimize the information included in challenges and in the
granted authorization details of the access token, avoid logging them unless necessary, and protect them in
transit and at rest.</t>
      <t>Application profiles that define additional challenge claims, request binding mechanisms, or alternative audience
bindings <bcp14>MUST</bcp14> describe how those extensions preserve challenge integrity, prevent replay and substitution, and avoid
confused-deputy attacks.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document registers the <tt>Accept-Txn-Challenge</tt> HTTP field name, two
OAuth error codes, one OAuth parameter, one OAuth grant type, two OAuth Protected Resource
Metadata parameters, and two JWT claims. It relies on the deferred token response registrations (the
<tt>completion_mode</tt> and <tt>interaction_uri</tt> parameters, the deferred grant type, the deferral-code type, and the
token endpoint usage of the <tt>interaction_required</tt> error) defined by <xref target="DEFERRED"/>.</t>
      <section anchor="http-field-name-registration">
        <name>HTTP Field Name Registration</name>
        <t>IANA is requested to register the following field name in the "HTTP Field Name" registry <xref target="IANA.HTTP.FieldNames"/> as a structured Header Field:</t>
        <dl>
          <dt>Field Name:</dt>
          <dd>
            <t>Accept-Txn-Challenge</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Structured Type:</dt>
          <dd>
            <t>Item</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-extensions-error-registration">
        <name>OAuth Extensions Error Registration</name>
        <t>IANA is requested to register the following error values in the "OAuth Extensions Error" registry <xref target="IANA.OAuth.Parameters"/>:</t>
        <dl>
          <dt>Error name:</dt>
          <dd>
            <t>transaction_authorization_required</t>
          </dd>
          <dt>Usage location:</dt>
          <dd>
            <t>resource access error response</t>
          </dd>
          <dt>Protocol extension:</dt>
          <dd>
            <t>OAuth Transaction Authorization Challenge</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Error name:</dt>
          <dd>
            <t>binding_key_required</t>
          </dd>
          <dt>Usage location:</dt>
          <dd>
            <t>resource access error response</t>
          </dd>
          <dt>Protocol extension:</dt>
          <dd>
            <t>OAuth Transaction Authorization Challenge</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t><xref target="establishing-binding-key"/> of this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-parameter-registration">
        <name>OAuth Parameter Registration</name>
        <t>IANA is requested to register the following parameters in the "OAuth Parameters" registry <xref target="IANA.OAuth.Parameters"/>:</t>
        <dl>
          <dt>Name:</dt>
          <dd>
            <t>transaction_challenge</t>
          </dd>
          <dt>Parameter Usage Location:</dt>
          <dd>
            <t>WWW-Authenticate response, token request</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-protected-resource-metadata-registration">
        <name>OAuth Protected Resource Metadata Registration</name>
        <t>IANA is requested to register the following values in the "OAuth Protected Resource Metadata" registry <xref target="IANA.OAuth.Parameters"/>.</t>
        <dl>
          <dt>Metadata name:</dt>
          <dd>
            <t>txn_challenge_jwks_uri</t>
          </dd>
          <dt>Metadata description:</dt>
          <dd>
            <t>URL of the protected resource's JSON Web Key Set containing public keys used to validate transaction authorization challenges.</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Metadata name:</dt>
          <dd>
            <t>txn_challenge_signing_alg_values_supported</t>
          </dd>
          <dt>Metadata description:</dt>
          <dd>
            <t>JSON array containing the JWS <tt>alg</tt> values supported by the protected resource for transaction authorization challenges.</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="oauth-uri-registration">
        <name>OAuth URI Registration</name>
        <t>IANA is requested to register the following value in the "OAuth URI" registry <xref target="IANA.OAuth.Parameters"/>, in
accordance with <xref target="OAUTH-URI"/>.</t>
        <dl>
          <dt>URN:</dt>
          <dd>
            <t>urn:ietf:params:oauth:grant-type:txn-authz-challenge</t>
          </dd>
          <dt>Common Name:</dt>
          <dd>
            <t>Grant type URI for presenting an OAuth transaction authorization challenge to the token endpoint.</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
      <section anchor="json-web-token-claims-registration">
        <name> JSON Web Token Claims Registration</name>
        <t>IANA is requested to register the following claims in the "JSON Web Token Claims" registry <xref target="IANA.JSON.Web.Token"/>.</t>
        <dl>
          <dt>Claim Name:</dt>
          <dd>
            <t>reason</t>
          </dd>
          <dt>Claim Description:</dt>
          <dd>
            <t>Human-readable explanation of why authorization, confirmation, or other processing is required.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
          <dt>Claim Name:</dt>
          <dd>
            <t>reason_uri</t>
          </dd>
          <dt>Claim Description:</dt>
          <dd>
            <t>URI identifying additional information about why authorization, confirmation, or other processing is required.</t>
          </dd>
          <dt>Change Controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
          <dt>Reference:</dt>
          <dd>
            <t>this document</t>
          </dd>
        </dl>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="OAUTH-FRAMEWORK">
          <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="OAUTH-RAR">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </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>
        <reference anchor="JWT">
          <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="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="September" year="2024"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </reference>
        <reference anchor="JWS">
          <front>
            <title>JSON Web Signature (JWS)</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 Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7515"/>
          <seriesInfo name="DOI" value="10.17487/RFC7515"/>
        </reference>
        <reference anchor="SET">
          <front>
            <title>Security Event Token (SET)</title>
            <author fullname="P. Hunt" initials="P." role="editor" surname="Hunt"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="W. Denniss" initials="W." surname="Denniss"/>
            <author fullname="M. Ansari" initials="M." surname="Ansari"/>
            <date month="July" year="2018"/>
            <abstract>
              <t>This specification defines the Security Event Token (SET) data structure. A SET describes statements of fact from the perspective of an issuer about a subject. These statements of fact represent an event that occurred directly to or about a security subject, for example, a statement about the issuance or revocation of a token on behalf of a subject. This specification is intended to enable representing security- and identity-related events. A SET is a JSON Web Token (JWT), which can be optionally signed and/or encrypted. SETs can be distributed via protocols such as HTTP.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8417"/>
          <seriesInfo name="DOI" value="10.17487/RFC8417"/>
        </reference>
        <reference anchor="POP-KEY">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="OAUTH-TOKEN-EXCHANGE">
          <front>
            <title>OAuth 2.0 Token Exchange</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="A. Nadalin" initials="A." surname="Nadalin"/>
            <author fullname="B. Campbell" initials="B." role="editor" surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="C. Mortimore" initials="C." surname="Mortimore"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This specification defines a protocol for an HTTP- and JSON-based Security Token Service (STS) by defining how to request and obtain security tokens from OAuth 2.0 authorization servers, including security tokens employing impersonation and delegation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8693"/>
          <seriesInfo name="DOI" value="10.17487/RFC8693"/>
        </reference>
        <reference anchor="OAUTH-PROT-METADATA">
          <front>
            <title>OAuth 2.0 Protected Resource Metadata</title>
            <author fullname="M.B. Jones" initials="M.B." surname="Jones"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <author fullname="A. Parecki" initials="A." surname="Parecki"/>
            <date month="April" year="2025"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client or authorization server can use to obtain the information needed to interact with an OAuth 2.0 protected resource.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9728"/>
          <seriesInfo name="DOI" value="10.17487/RFC9728"/>
        </reference>
        <reference anchor="DEFERRED">
          <front>
            <title>Deferred Token Response</title>
            <author fullname="Guilherme de Oliveira Niero" initials="G." surname="de Oliveira Niero">
              <organization>Itaú</organization>
            </author>
            <author fullname="Dapeng Liu" initials="D." surname="Liu">
              <organization>Alibaba Group</organization>
            </author>
            <date day="31" month="October" year="2026"/>
            <abstract>
              <t>   This document defines the Deferred Token Response (DTR) extension for
   OAuth 2.1.  In existing OAuth grants, the token endpoint either
   issues an access token or returns an error.  DTR establishes a
   generic asynchronous token request mechanism that any OAuth grant may
   plug into.  In DTR-aware flows, the authorization server returns a
   deferral_code and a polling interval, indicating that the final token
   response will be available at a later time.  The client retrieves the
   eventual response by polling the token endpoint, or by receiving a
   callback from the authorization server when one is configured.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-deferred-token-response-01"/>
        </reference>
        <reference anchor="BCP-195">
          <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="R. Holz" initials="R." surname="Holz"/>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) are widely used to protect data exchanged over application protocols such as HTTP, SMTP, IMAP, POP, SIP, and XMPP. Over the last few years, several serious attacks on TLS have emerged, including attacks on its most commonly used cipher suites and their modes of operation. This document provides recommendations for improving the security of deployed services that use TLS and DTLS. The recommendations are applicable to the majority of use cases.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7525"/>
          <seriesInfo name="DOI" value="10.17487/RFC7525"/>
        </reference>
        <reference anchor="OAUTH-AS-METADATA">
          <front>
            <title>OAuth 2.0 Authorization Server Metadata</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <date month="June" year="2018"/>
            <abstract>
              <t>This specification defines a metadata format that an OAuth 2.0 client can use to obtain the information needed to interact with an OAuth 2.0 authorization server, including its endpoint locations and authorization server capabilities.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8414"/>
          <seriesInfo name="DOI" value="10.17487/RFC8414"/>
        </reference>
        <reference anchor="DPOP">
          <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="MTLS">
          <front>
            <title>OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <date month="February" year="2020"/>
            <abstract>
              <t>This document describes OAuth client authentication and certificate-bound access and refresh tokens using mutual Transport Layer Security (TLS) authentication with X.509 certificates. OAuth clients are provided a mechanism for authentication to the authorization server using mutual TLS, based on either self-signed certificates or public key infrastructure (PKI). OAuth authorization servers are provided a mechanism for binding access tokens to a client's mutual-TLS certificate, and OAuth protected resources are provided a method for ensuring that such an access token presented to it was issued to the client presenting the token.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8705"/>
          <seriesInfo name="DOI" value="10.17487/RFC8705"/>
        </reference>
        <reference anchor="BEARER">
          <front>
            <title>The OAuth 2.0 Authorization Framework: Bearer Token Usage</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="D. Hardt" initials="D." surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This specification describes how to use bearer tokens in HTTP requests to access OAuth 2.0 protected resources. Any party in possession of a bearer token (a "bearer") can use it to get access to the associated resources (without demonstrating possession of a cryptographic key). To prevent misuse, bearer tokens need to be protected from disclosure in storage and in transport. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6750"/>
          <seriesInfo name="DOI" value="10.17487/RFC6750"/>
        </reference>
        <reference anchor="OAUTH-URI">
          <front>
            <title>An IETF URN Sub-Namespace for OAuth</title>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>This document establishes an IETF URN Sub-namespace for use with OAuth-related specifications. This document is not an Internet Standards Track specification; it is published for informational purposes.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6755"/>
          <seriesInfo name="DOI" value="10.17487/RFC6755"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="IANA.HTTP.FieldNames" target="https://www.iana.org/assignments/http-fields/">
          <front>
            <title>Hypertext Transfer Protocol (HTTP) Field Name Registry</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.OAuth.Parameters" target="https://www.iana.org/assignments/oauth-parameters/">
          <front>
            <title>OAuth Parameters</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="IANA.JSON.Web.Token" target="https://www.iana.org/assignments/jwt/">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author>
              <organization/>
            </author>
            <date>n.d.</date>
          </front>
        </reference>
        <reference anchor="FSB-AI" target="https://www.fsb.org/uploads/P151026-1.pdf">
          <front>
            <title>Sound Practices for Responsible Adoption of Artificial Intelligence (AI): Final report</title>
            <author>
              <organization>Financial Stability Board</organization>
            </author>
            <date year="2026" month="October" day="15"/>
          </front>
        </reference>
        <reference anchor="OAUTH-STEP-UP">
          <front>
            <title>OAuth 2.0 Step Up Authentication Challenge Protocol</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="September" year="2023"/>
            <abstract>
              <t>It is not uncommon for resource servers to require different authentication strengths or recentness according to the characteristics of a request. This document introduces a mechanism that resource servers can use to signal to a client that the authentication event associated with the access token of the current request does not meet its authentication requirements and, further, how to meet them. This document also codifies a mechanism for a client to request that an authorization server achieve a specific authentication strength or recentness when processing an authorization request.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9470"/>
          <seriesInfo name="DOI" value="10.17487/RFC9470"/>
        </reference>
        <reference anchor="OAUTH-DEVICE">
          <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="JWT-AT">
          <front>
            <title>JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens</title>
            <author fullname="V. Bertocci" initials="V." surname="Bertocci"/>
            <date month="October" year="2021"/>
            <abstract>
              <t>This specification defines a profile for issuing OAuth 2.0 access tokens in JSON Web Token (JWT) format. Authorization servers and resource servers from different vendors can leverage this profile to issue and consume access tokens in an interoperable manner.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9068"/>
          <seriesInfo name="DOI" value="10.17487/RFC9068"/>
        </reference>
      </references>
    </references>
    <?line 1253?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19a3fUWHbo9/MrNGbdDGSqCptnY6ZnpgDTuJvGjm2G6cnK
wqoqlS2okqollY3HTX5Lfkt+2d2v85KOVDKQZN11w0qmQSWdxz777PdjOByq
Kq0WyW60dTBeV+fRSRFnZTyt0jyL8EFepP+I6V/Pz+PFIsnOki0VTyZFcgHf
nHzynk/jKjnLi6vdqKxmSs3yaRYvYexZEc+rYZGX+TL+eJ4P8xhGHlafsuFU
fzzc3lHlerJMyxImq65W8Nn+3snLKLoVxYsyh8nSbJasEvifrNoaRFvJLK1g
dfEC/7E/fgb/yQv429HJyy2VrZeTpNhVM1jRrprmWZlk5brcjapinShY+n0V
F0kMox4n03WRVldb6jIvPp4V+XoFT98lk9r2D4u8yqf5Ykt9TK7g1dmuioYu
uPCf3if44NV6GWfDNBtW58lwkecr+zAPPlxXw3xuf7hIsjVsIIr6LCyKGG5b
72AnaXYW/YAf4fNlnC7gOcH9L2lSzUd5cYY/xMX0HH44r6pVuXv3Lr6Hj9KL
ZKRfu4sP7k6K/LJM7tIId/HLs7Q6X0/g26sYDnYRX8D/3g0cLL67gFMoK2ce
55sRDzRK89DXd3ugzui8WsLuVUxgwWOBKaNovl4sGP1+kdmiIz0MvQB7izOB
4m7093IaL5KCfkkYXldm2r/8g38dTfNlc/ytZ4CGcBHi5WqSLOgg6qNvHeJ5
7CPuEq45s0ym8t1fVvBOKq+EZ/opLhbRz9Mf1mmWJWUZmGjfXhJ3ktV6skin
f/kI3y+nZ/J5eI5DOPikgKnKMlkATgYmeZHM449VHum7481En/9lxq+MSv2K
yvJiCd9fADqrNJvbf0XR/vjNePTq5ORw9DJNFrM3sI5ylwYV4vQK8Lqokk8V
X7g5rE+jfXQbP7wT0ZcRfhodJWdpWRW8rCouzhLAPY16l5eXIzitmFEbqM1Z
tgRglXfxheEcRynv0pcGn+jPkKGDS9UrJoo5OowL+AX27C+Zyan98WaLYTRf
ma97rujH44M3IyARo5P8Y5J568GfIqQe9FN0+8d3J3dutqYPl9XmZbw8fjYc
73szbx3n62wGB4Z0cpqUEZw9nFG5AqqcThZJNJ7lKyJl+TwaF1U6T6dA1gGV
K7gV6VmSTZPo9nj/zi4ccgY/FMkqL6qt1tXPywktfr1a5DGc5uHOw53te4+G
O6PVbB7YAbzLQ2c073EVT9IF4Gz0LI+LGb1EfCS6R6NsD3ceKjUcDqN4AmgG
u1Lq5DwtI+B3awRVBMifwgWLgCgwGiwToFZZWi5p75VlGsNylUxxw7IkTdQN
cStHahytANeTaZXMYOtlvi4AHlMYu0h+XadFEsUzYIXwFazdHwUniyPAIoD7
Ggh7lMM14p8mV6pIqnWRIV2K3SW1rWQU0Sbh/9ZlAuQiujxPeA1A22GvsJAl
8OQYlwmjx2eINAMcDWgoPkT+Ol8AGyFGPUsWyRk9L5PigvAiBiwBzhfarmy1
RFY+T4l04P6KfAmLP0fWiasqBvaL/DLDf8NMLu2yIAISCxsCQC5SpJUr+BAX
TAswe46AyMV1iOB6cejL83R6Hl3EixSxo/YlzDyp4jQrVZxd6eXPongFm4NP
BrRZEHbWLprcG21H8RRAAYPRLb08z8sEeH+cITT8ZcwSGH8BwEw+4eLLZKbW
JZ7mES7LlxGO5JQG8FU5LdJJQqvl1cDIBi8YJt4aUtpZpiEEbwNQWo4pLqPk
AlnYFCeIKx8mzjzRJbyq95PMRnyflulstkiUuoV3v8hnaxaslIXO7evr3x2M
3568Gr48Gv+89+7g6Kfvj14+f/T4wZPPn+94C3fGt8/topVedDmC2UBCgmMC
1rnIr5aMuOf5ZULnHLfcvyzHmw7UeQmXHW8DbBbum5Ir4W0XgIhrWAFpAYI3
iUv8NVtcwf/wSbgQJ8jBk3y5AsQVzJJRR6pxQMv07LyK4DcYOy3PHcAj3Aua
20AaYZDCKSLZii5B9PKP0kBlEE3WVRvxQOJTVuliESBBgyB5Ux7ujoRglmm1
5hHjIi1ho0RSWnArS5JZGXn3nwGFz6ZAzBJ3ZnUOCDZJYDiD5JMrusv4z1WB
dIo2J2SA38LrQw8FqHJPLIHB86JLqSYJoPXcPRoE9DKeJYgxs3QOQgryggBB
grHaaFJUruHyxkg1AKaAWCjIxKDnDBBDgabCX4DaxM5oqxwkO8TdaYqqE/wb
znfUypL6kfogz1mXhIspUGGXQOrtb2BDhtPViI0dCwYukkV8xVgaC2nWhNZQ
6LTqIMtymoFf1CZKHX0FpVY3o9TRRkqtLKU7Gh8hjXty/8kjoHEbSTitd5IK
L/UJCxFu5RBkBxnaSX/Uj/SrLyP9sGWGBn7QAl0taNH2LvIUCAEhNAsvWXIJ
NxUEEEAzFB+RtCEQYG6QNgDqcInoTRpyyHsTbEBSge/KjnACI6zBiaXZdLGe
4cclKlXFEE0JsBS4SzOf2wwIKVcroOnrDAc4I7ZGt9CKfylSsOVqkeCljIsr
/Ij3DAxjNVyvCDKoAk417sxprjSLrq//zAhxfLJ3OHx7SEjx4PH2588jdRz+
OsmQ35RhFiZXF8k3bCmHBaOsBEJVUhIj84ZSIJvHRAKROPSgIbBi2FI8cyTE
DqKgmohYI8jIcwDnLWEl4Q9xplxPPiR45GWZT1n+NIzNw6I13jwSwOEXWMmZ
aBPCWNXYiKpMebzzH+9HRqQFiLGooKeyq1qAzLAoUZNhpgF3syiJl1xfs24E
xxW9w4/O67YhUGX3T17fIYkDvsoN7yLCI+CeJLCDBIkg3s4Y9uUNl3vDHfBw
9GWJODBNEG/xbugpEK4kEFwkGUIFcAE+hTGW/ri+YQrH5sGzXI+EykF2kS+Q
GhlGLqvWa2Vq6mMCsinAghmzaGFnwtplaCBAF2m+LuFyaYIn6ohhcOV6hVph
ibcevi4SUEdyIJU45iKpKk1hQqxBOICh+YBKV3CH4U7wnAbVmsIDCKu32HYX
jfXXiGJjxJXhz1ohGvMRKHWcz6tLRKBO/QiBFFCQ8KwAImg7sfS0jAgrSBrJ
54jkBYi0x/kycd/BKcv1HFVrmBf2hAbRFA0wBtRNCsFCkCYSwL3gaNJKGTAJ
LhJelZqGA97sfYqRxpVyfRIinkyrVzHJ1wO2SJXn+BRoakXPcMt4UGi2jQd4
fun8ylJuwQ1WH9NyushLocyyE2NWIhHzdQ4CsC8wWtJO9xaPPOOTgDOOlwke
gajWoHyAZJeWH1kSho1dERBR6o8Xl/FVqS5Stl90MEU8x5y+yRLcAsi5APsV
6TZ1XGywT9Wi92tBpi8lFj4YXqNy2IA+4QCpJm6u5Wxf1qABpgkeAJEph+IW
iYgOjBtxbWS+Pb4AhFJ69MLQ0yO98QMUeBVpP8wQaDgQASq+YUhrXXXLnhNv
nL7x9SAhJUBLR9FL2GPCaDtQBikQsLBy94LBPxJWBeztIOnXqJixL/PPEF0R
xYsczoNtI7A4ZLHMTk/CuIMnbdVLBp6hMJogNbULxUYRmSG4beCVfKRxUz0B
yBkRWK43cUsNWkU0iBkJHN9+RgoBLLYEQRrf/GqExCW6Im5Qn9amoiA1pwEs
4HyyXZMrCPyo9a4Xjowo8q9B37rwks/bxdvJlUU4VQJFo92hOl8QDcQTCK2a
iRtfiQNfPdScBdmHT9aN/m1I8lWnegnfIVrA0WfyKigKKRCeNbwGRFoxSjYI
uIWaxfMiOVsv6O4xuda7EkJv7DeOWWWgSEPCNwAwF3xxrZpLJITGZ80Wj5A5
N+m8lbb9s/qXfIIzxu1pTvwNqKGnz4apM94v1aJ9knZvxVCRZYAtFTFsEMCx
LpJ2DbXVlogcd4GGoNq5Gn54EwXWw3CyQWlhTdlvvdUZUwrPQxf/VvQ8zy6Q
spN0ATO8IIVMxBzc4kfgmOgoLaOtn98en6CbFv8bvTmgvx/t/cvb/aO9F/j3
41fj16/NX5S8cfzq4O3rF/Zv9svnBz//vPfmBX8MTyPvkdr6efzLFu976+Dw
ZP/gzfj1FqpQlScyIjuH854kLACvkLfNUJHV5IfUrmfPD//zP3YegPz+O1C4
7u3sPPn8Wf7x3c7jB/APhB/PZsBJtPAKzw30UhwFpdJpvEqrGA0BANDyHChu
BJcxAWj+878iZP5tN/rjZLraefAneYAb9h5qmHkPCWbNJ42PGYiBR4FpDDS9
5zVI++sd/+L9W8PdefjHPy+QIg93vvvzn1TdQCXGJTgRuPWAMqyC4fmGrgo9
dxAZ/10kpLqaB3T8TcvmFkJfq9VAA6+vawZl1Ke7FldfkZh32sY9Gh8FRtT2
OBx0niNJIrJpTWgEhl0gaobyHiKZ21W7RD+6fR5h6u+aCy1LYMuVYSCOAKAi
VwQIW40iXx4gtQfXOI5KremgwQOEJhTwm8rOoKnnsNOG+BTdS/IqFVolrKpk
uapKT97DQIYWFQaRgIyKPU2fruURD21zOAzv1g7AbjWxN7ewGGS6GCyjdS9j
Gw3JOsb3FfXxHFr7gH8yXiTKa2tt4OWjqkzCrRWhM7G73tAYoWfKvZkOes1U
s1OgipaD7gWSG/JVo5w75guMbckzDASiq7SkHztMGmZ11pzx2jFnbFxih7XD
QsUzdqjo25g7kOWOMTQH0QnEiL7ijiwybAMcGP134Njb68KN0h5PgnzWEKFF
Kwt5bUktLEklEqGKLBsinJfGa9aU5afromBLhbE+K2PWczwu1qgxivbnbWKd
M6UxTnfetc03bYBoz5e9r1uFAcWqZSpCniaOHnlLZr7WFcmSmzsTafKMXU1I
51RfLUzMFnzqdDAozReR5woPa0aq1eThrke0cBB8S/EdsEVHGxMqmqWuS0Vi
bTAzK3dmgaEs2iBY3z1bS96Z3nTNr9TAROU6lmReYpI2gAW1aY590FZG7WJl
IlldJtocSmbBeTwlFSi7SIs8W+qVoAje7tOSqWd5UopByfHmouxKMiZpCmyy
t3grEkpTbXXRnO1cAASSPAkqxUVidnNGwkLjsC4d/xDuqQWIeidyAzYrPz0O
c+Df6oZqP1Bfrhf1cOf5RorWUIrQVqcsukULslBqLc6aXWECVqn1oyFJdsqx
bzakPMc2yrJTDWp43T5Vvm3Epb4BaqjE5+LwoJBnRijZN5ZIVUgi7XQNkS8I
4/+0Q0j76iPHV28oE5v2COlVJYFNeK3MVLxZK5vP07M1GtHPtfVgEpdwt1Y6
DhGlWZDX//3f/z2Oy4sz9Yeh+fOHSP78oe2B9+cP6rcoes7XPfrtj/zwT7+x
T8F9cGjIrzGT/vZV89Jvv8l/+txBfvVCBcfjnfhi8zHfgN/av/DXYLHAUtT2
SWk+X2EKTvUHPCZ1vRvdglMdxo5YxUGL328dwCqJnrq/AfXrEx//WVAHEIIw
rRQsQnVux2WQ6BZxhaN2RwJ7yNPK9WaH7vfIzHAzIcgIPj1UjM45biQQGVZx
xtrWTlOa6c3ZPWnGjiVc05NpbrKyMBPb+QIj3iZuxQakLo61YeIWVuYDphHk
8fsyzObwkoU4XSDiZGDN8bXokQlF/uoVhMNOmkeVo6m1bAtfacOWqmALKV2F
NFv7cXO+qNc2dECe7UJ2/6jdAd3IgbThPjABQRJ5gt/xIAh1o9wwx+IFGhdO
WYelFThQRexBn3prjniLMfwbJvnx3QnFXsJ/Mezk8cMdircE0OPkncYOZajb
ZuNFe8ByPVZMo2RZU5TInmuk6GQGB0EZFXMdRxm8OsmnFa+bI0T5HP3bWxsG
2VEGOjxMNUvJL5DrYMCQwsRHjZhJ15sMlZiCwTKoEa9tFBIos2zBweQnPTnC
+GNyhdoXmyPaJ7S3D47NDXwawgBDDA+DL+AItT7lnjrGOK2XfKitINOGFlrf
xN4F85VcZ9eCWAu13qArhHmBcySir3SrmQbr86LuWWynSLdu2esSPY9XOiHg
GG4DuuHG2kGsDXnCUVMnDqUvp7HBYZMrEyiBpOB0TBHDw5NP2dCs5jQ6T+IZ
wJ8yVTj6KKasNjyBNSKmjbgiW2aQpiFo+4yfEj/Zr5JldKwdWDPOtXkKi02i
6+tjCZu7P7qPd+B3xydHb5+fvD3aezF8ub/3+sUxxak9eriDVvB9WBWvk7RM
VC6iZ3m+SGLA+DEwPdZd+BXMZjPvAYxm7D5HrT9dpeyWLTWZFHgkEqIhSDZS
rmOf34U9mc2Jf3MWLfEOrTCYI10mGPiF4MP5LzHMeZJM0fEaR6/T0ujq5gjo
hQhQIy9szJ+19GuFnU3+xNptYo8JruhzGgQWxvv5moyAepZSohFkDjs+hleS
jQSmIlDyMqN19jFDB5TzZl3hEag5OC64XU9iac1dYXVIhXa2G/15xxPCbSbo
1N43EcbH7l2jkJ8+C0E5HC7qDa7RHIiZvkfo9LQaZbJEt/WUEM7EttVviod3
lkZoT55xpvc97nW2QHoORAUXExvjk2NbWsWwcALYIsEQTSKU2ggVdGowoXLD
iGrvOoJSS6i1MnJwMEzc7Jd1gX6qAAfGa6uaEdsID3VmAyI6x6EK/yIXs+N1
oyBZ8zq8oBkdMr3Pnwcaop4JmQ+F6Fz4UFQ3xR1og2UAFHhu4mqYIFzxzgER
O3NDpPlUHLaRlkqLR3GIH0nqHMhx78jv0JUv1UPo8u3YWYTplFFSFLArfRrK
uXq88NYDrRlr2lyeHPPMs0zzGTA7Z8j33pDv9XinQithzNW6WOUlMjKfvGcW
gSQQiw9ZDu3FYX44ZKnIlZWETOHG7+6MdqIH2zvR28zKkOrdu3fDsQ2HBuKF
I/Hyv9/avPKtAcj19PZ7lj8o3fH7rZPNErEDTxolXpyV32/tHd97+Ij+7U5u
LtP3W8nVj+eTH6bpQfrjy7f/2N95k+6X+9nRw+nz/Ufw3weTdOd89rejPEl3
PsQ/vCwnP/x1/fd7b2Gw2fZoNNpqIc0WukyYD8OYJxe3kzL7UqdxsNcC2Mvp
ebI0srUv4GbePb5tJZHHo3v4xYvDg0NUUjB5Jp2jW6RImExnlKMjY5ubGPIe
Ez3QrPE0COxTy0OtgN/P/AF6Qz6jkBP44Md3x9FzTPmaVuo4wcIGJtpMx7dr
P7EmdaCOHYs69hDDyn2YaslJVDgdlxZ22Si7CZT5JkT+veiggJesRokbRiUj
+ohOj0kt7eRZ6yKnjZvigvjn8S8csSOCG2tsOLrOBAUsjWeUZzdLY5B2ABmn
kTMa73fDLJqHTQg36Yi0zZdltkYEmE7AamOLEmuDdn8AQbUuifARsTEgNvQK
pltjvklZ5fmMBD4LcxMj0sNJOYoOSKB2Ziw1CGlf7Lp24iO1POo4kpS2cRMn
8lmRSAr83k0MC2hRoOIAJhsKkJlR+MeD4z0tCZ2CEH7qqwzAK4A/4+D/sKTp
Dx8uq1P+/BRopPeJ1Z4zjOxfLtFWBCiRnmE4Ft2PmOy78CF6IM6XnGXZGEgQ
4hQpyKnG1o/p7NTqXlVt/ZwuzY46vQwSK2FSfW/StpzH35cAlJ+i46RqqOnT
RZwuS3/MkH//piYP5UhkdQ12krh2Z7StaE1IW0OiftaQBh49p930xR86CyG1
tQAqBgsw9NO0LE8xnGMfraIF/+ALioCBSDT3tWGn0IsOmbGQtFlrlycxMz2J
6uYXmHZWl0iqJoFGekAyDaMQKrRkLxQ4isRKZTicK4lrnKdI4kxep81BMh8L
eQVwn8IzAsdY/3YTgGxEoLAqgUvWLtaGWdokFYQsmXSP5U4B19NB1K0sTGYi
lzjyG7HvpHz2IenBpjSaoJJGRliL2Rcmo5PjZbUlohqDENmlyBaT4I7CCpfA
yE0ohGnmeatvFs8U6LVF8Vk0rjoO9SRF+0Xl2A0dHz4iHY2Bo8K50qh7n1ap
8Hv6+MvGTnAUrGKhTj9UKQ2MlH//Rcd4b7P0Vzx5i4cNZBGZCIcFZkDDupZv
B4UD0/zueI+s2N892HlM63e+7JrUA38U9bjcLpEiQ0IVnEpTkPCvRpBbM1wk
c4mmE69+O+HSm1ik8wRNW/IqTOYjIFqlehCwtGJi4mo54s2gQyBCrrdNaZPe
1XghDqW6zu5GyrqGRkc603t0gz5xc4J0vTUpukd8tbvDO6ZxUaSG6HwJfec8
0SJFZ5kEHmk6j1AEMbXMGXdf+XIr5mHFmUk1uTy/usEGHdXbUFDDnwFisJNZ
WsIEV75rkPk9x29YGbCRK+MP6rktWEzGVwNY1js/A6XTTcx9ms0Z3dzkPr7p
cL1B7xv+tPcLaUbfbW9//mzEJG0ZI23FdaIEKTiyz9IyklkdBzZ4VoCOLdKP
ICHiaikHYFMSOUzgqLGPrBI78OzsO/jDzyevj6kcAF18inTwcu1cRDR88Txf
zDQAnrLvBOY8R7uWm7bEvKtka6HVSsT0k56dJUVdCNJVGpxYHG2urIBRzrWL
F44IsULrycknwAYqg5LUMzXhQACPx2Vz63K+cK6cIVQ2Q1Y9JoxqKEyKANCG
Y3rOc8D2kJXUK//o9HWYj0zmGqrLBCsL2vv7fl0wW3t7tO/hmRPL78RtgWqd
czppx2XwBBAcV3MAP40waiP6cH3ZH8uHKY6xbgOAGwcaBCXcSyQdcPQkZk5F
bMXlwVXSGdThTc85Y5eIjo34EnlIpBmABEuo0yoPs23mEicHP+29Ge797fmr
8Zsf9oiPP3pynwTXIJhjGs9WnHKiZfBCB4oGePg+jVl/a0j8mhD6fmHn/nix
vC4p9EInhNTaLAhebyjz1EvqbGiELt10joGJZkfYiOsV0lqlY7oRMwRGsosu
4kYtWrMELe0yJaOsexA6Z4w5oHtprE6NRRKKVDwjumIgsENMEQSUrIcKi0HL
6hlGSepUkc7zSxHKneVJcSRt2eXiCOGwlREl49SHZ3OK9u3V4c4Tmmosjfii
us4RsZdaazyqCQz9ogkcb3fc2VBFWQz5TnrwYDGIXwPSbgHr23IqdxqaIZNg
DUkyRG+Bhum+GJfNV+CewSs7j3e2+Q89BGHHPrwvD0FXwMHmO/PH0++mD4b3
5t9Nhw+mj+Lhd/dnO0MZmUcFBQDfffJ4++H9J4/uDx8/3pkNHzyZTofxg+T+
8N52HM/uP3kyvb9zjz8AfgwfXFMY4daHj7imre2/Tw+eHxz9/c0vV8MX71a/
/np/+8Pfr3784dXJm+3ZvVdni2d/vb9Oz9bjB/tYePCzbDkgB8No/0pDX0t5
wS30I+McUvuAFkE/SMILfrGlM9m3/s38jBfNvqABK6N44L2L6cVrLNK4c+++
MwIyMRSmk9l4ib+bbdOvnGIxvcK1/fDs0KwLV6Zf33oIpzLa3t6S3z6bsacF
V+DFkpv4ouQMR6+rGb/8Gf6XlrLFlx5fGgeCek0WEUOAGS06eXijoy1nDCQc
m9DxroPh5d3+aAFfWLQo1xOcp1yhVQUm8oCdkmP37qOH9x7Nv/tue7jz3ZOH
wwfb25Nh/OTek+HOTvw4SabzJ48f3idkUZ9b/Cn6poo7RYOwxxVFF4pnQjsW
gyLSr59AvH2RllOkq1ct5mimhBwy2MeXLzYPmCVKYhT0HN8Nz6sc26pj3uwp
XeDoLR5pa6AVTKEZqbAiiwkmq8NJ9Ogy0VOZI0ckEWJMue/fFFzL+CNvhuvv
IjhKksbJbKac/WKYuvN1fIGVmKW4iFQjagVe2eZpbSa/mtwCJ/BjEIXqbwVi
y3/W39qQJTdTWhkR7fDo4GT4897J+MX4ZEzhP4/vfYcS2gtbYJHYJgWPoQUU
VBcS/89I7SeJlWIZ6A6fp6vS5DUop4YL2tScsodiYwEgU9ilVwymT/ZtqAJO
E1y7bHOyDsD3Hy4/lo4a8LrdHIMGfV2HFy/pcVK5xhIXS7TXwOJID6wbNdYm
F/F9vDh7TwJr+V50oIQNwrSeuCjgGjgrITfGu2PXBWLCf7pUid6hQSglzsOx
C8YXTKcpDpDeA9MtmZssmMAVcGhTyeozS/Jwam0Hq11mZlXosRVpXC8QFSEp
asTqWYuyJWEbHrkaeu6g0hlHu5RkEqNt0Bm0LZd3tcEzhcKg6u1u6XZeAW20
jqr9eo6Y1Ep1g0QHroUgrycruTwB9YMKmH+toGAUO4K71BFiSwrXt8bb9Ux8
09e3Ws00LdReV1e2Vo9G9AHb/zhg2a5qkiijPFCsLh6TEwqe1Xch1iHmY8xk
XIUyrrDdQHSbfM/W1X6HmarrfCenqueFZ2OTJkZit0HGadzzyZINUVyrBGPQ
S2NyTDInGDWufJtEYLDUD6tqT2Vp1aoldpsh+1RnsE8SNkRJ9dYzQRiyb3g5
Da0WPGUteMGgfxeKaNJzBxryQENb4oziFOrAx+jQUpej3mDk00hgYaiBRuER
kt4juGrNiRTGYpTsgZ6MApFgdZiuXugLNU24ijqyDQKemDbsMfaLxGgL7vPk
tLa0BxTPBAUNKCpJupw75TejOeVCKB2ChmP64WdO2IupW1U3xNZMhM/2xkd7
R77h9DH/JBZV5Xzj2FM3RG+Yekj+3atfa7w+yYXOa+88fPcCNTFnYNjZeXp2
PkwpPAhPOgPcBEqxXOUV3QhTEooSBwzlnOURSlgmkBQDEAHWcxs1hzdJi15i
krIUL3SnTKSiAwF0Brg8WJvSVMCmS5KNRAC8FdUh2tNZbUy9LeVuuQ+Gy/S7
WW3AJTbpEGCH9qIXHnbmCMfBzeDxMIsF2DCOEu3U+G3q3rnhD9HYvbf2htbL
5zEr4QUs19U6XgwBS3WosSlnSjvoyMhj83Zr+KNHIhJ1+oxK6Z7q+LjWwDo5
wz2HjGA0vxwdMmA4vjYaYw4wcFjG9mjMmZto6qCN2SAHqUQJU+6VDZLP2IXy
BlpaJ3zs/kDZzZSrsGpVDaaj6J2uFp81snYCW6WSIZI8OLParnxC/pUBVQ5X
Ej7i4nROZXSKHImoeBeYrA4IxrYiQijysq5ZYs01dIpdX2syyvvWCpWFZ9la
koeiChFvW/Cx9FDORbjomKqjKzkwHKeWVOkc8VPPjO0aeT1BxRE+9ZEi98t7
kvpWzLNpfbEvSjaxW22SGOoZxPs1V3hbQKYOz7I2Y3G7ZXm/68NuAepdg+zc
uS1cVwkRaVYGIlNb2bEjH0SnON6p63Ob45lJ0C1O2oYhIxcMjd2517p1a74g
kzbCa3F6u48HnNykvbG5rkuoncnUq6FIqTAQXslkGe3ce6rnRvHCDQfBVIO4
Oj81/lAX4x/4RNYpaoOuSEYdWnetAA0Gkt52w9bvWAFK4t81GcIZHbGbBHIN
PNT4y1ODOqdpRpO9n63y1XtaxKmIZxxXjfXXc1O1NrWBqrVtPXFDsrEmesoV
g2GgdWZ7YwhPBt7GM9LYeka9DUKLN/yLm5xhk3XxTETxcZD29umHj9WpKxM+
cmVCHSqOn7mh4jJQgzcQGB32cPv008PqFobmn7Y77MUrQ8SrRVXTCI3eeqTn
AknjC0I6AZKKCHwukjgSaL5emIRTE/hSmIihWlxKjZvhjNKJgpF1Wgmydt8n
FDk5oBE2hmdgJU+XAJfm3uAWOZkUpxQRyilPIL83WpigFKwtD43NedShRSjw
VtlZTdbIu8hYAyKgnE5HJEhTziQCetUrHKYWA0hxZ66UKhHerBTG7R9SLhLQ
fWcZRhnbxExwUpKF8cUM0Qe7FURSlXT0VTzJsENrya3ZMcIniGta455vRASB
f8J3/yycxiKCoRieSGjyjfzCw83b1IVA7C8zWCQkyBJj99Jq0fJUIPYeVuXk
PzEVxMmYSj/Fes/uhhyYb5SYO1fAi+6VlGUXhdgVTpEhTBv4/L3J3HlS3U4j
IB/Q6oRBdaklJ5tAWEvbvgHiEr1ZJbHh/vpemrNj+7AnvlHBQgevpDIjJa2k
VZv3RnPi0uXcNSndZqzcrtkztMh1x2LVMonJbHsGlD/z5TTPNoL6KcNeeUZc
05PqyldqPAGu5ca2Hro5b6myj3ag4qpW5gyB9E6qQcab87CE4PbGXhXAB02f
uO0Ulwnmk09MEujGO2Z4qLtvmM+RGgLAYP2D+tx0UYOCDc1FuhrUdQwjzdHn
PROglVdHgItoahXIJYqm70oVF1U9BbM1G5VbwDgDfUHWJSOczrsMQQXL/joZ
kp7b3TE/DE3sQa9ExgZT8CiDzmb0LeFZDVv6kQYByuEBCFMm0iPSMFKvcmyj
Gwp6UF6gtQHV8uX7J6NnD+fDB6OdH3/9WeFMu1Fy9eN28rcxZod+nP7w5PKn
e6v7s+f75f7yZfn3q/1H+x//evLzh7f39tPLFFZY7H9YPR6NRu2J/M85Qmt4
Qv2HnSCsux+wSKu6DgSUDAIBKBjmIbUd6iElfggF6gZDgtjQID6f5JGhzsH0
302H6LzDiX5Ljmpu0W89ZW2gGRSpdkAp15Syoe3AukWVd9NPtHPv1XgIGAsv
rpeTVZFmFEMtRkjtXCHZwffo1aRKplw658oNXUMHGTlPjrBEgFLjOXINLqCZ
9u0Bqs1mrZlmrdValBdrrmNGnNYANqqdXxnyWE7q4YmZgHQNmkVMiJsXrmsJ
254yKYttTrWC1SKekimAqaF4m4Y27SuQjhBKzXEDXmh49l9SigWNiMIg/DxT
7oDIJmYXaZkXV1wKJRy7MuDmIxK64vbCWVO6gUS46Ihh3WpSiZ9bavR41VY5
mLFO/zBlNKk5nFsGIadJ8Ni0t6+g4ly9/PfiaZmx3X/NCoHb2bETN6nJBlYL
53UssefOGdcFoxgiUOAXMQwbn5kStH7zF+HZZgdUBBM3UKsnZFCYGSg2QZ61
SiZchtJkTlQSXSHp3pGX7q2Mw7ZPQeF9t70G1SbBOoWZvik6rLikgutczEPK
g+qqz31zMiaJ7c54DrLH2TnNg6VvOXpPl2qvdHMrHa5VYMCYyUoQn+0eBpHx
IkWqNsWLa6EHfNHlWpo7rItjwFUJzN281jXzCMs72DnQOVFjrEhLMavrOOy4
pYce8xHG1WlV0xM14YBvFc4kccv9tf648qu73dJVQQ+NO1qpZ7oJV0vyR0eJ
LS8Ko1cE3oDd81gLXBJJ2YiQmGTBJvUjq46jz1MuatPh1liksu18nMxCWwMn
Y7lc16rxVuyXiaYIbR3r54em6NByJwRQo61Ti6tvYUhS5GLbYIaGo6pjWPDd
1tvNTZFCgp7zXGh5Z8uF7tqUFF0ku/WEgMgrH1w/ebSDpK1x+x3cg/rhfCX/
aOAM31zuj4xGmsxO4PBMpRmpqVQnpSHFGMWcMpku2D9koU5sU5RV7efjIKXw
BWiCCxcYxDzVfTqNfmdSENfeaAxX2hCC0lFFu3mL+5AbwXhW0kU4QhJk50St
Fa+++Otr6uoY1XJs47RcLztqDtTJAWg7/9xGaSLOX0xnT5sv2YTl1rqTGE96
lpG5uKOKYWBsNpNWkrjMs2d5yEhH2hzVGWCTHOY361BJHMXp4sCNqAm64rO3
kPWqUtGYxruAkvwEE9zgPAa2CQU2W2sHsl/+1CSYbMw2eyp2v+CgRaLtCeih
ppsN6ly6qAFPsr0NWPuS+vpxtNS3pVp7KfdQC2TMG5N3yJPZoEN0cpiWRavT
YTYtMr1d2U2TgKk8oDYy91+YcQ3WCkIMon7JTl31IOzxYO68Ph4TuTCQyq9V
QdjJ5Qmc9vXm85ZG916bURMgbq+aaaEg/d2Smdt1rR1Pu/LxafS0EXhqPcKe
24OVEjdVfWMm6kCUbwy3sV4+OB+xLVwmi8VQzAVSFq6vV2lzhdZ3bE6qeR2s
eZGvmuOjs4fZErDQTp61c5GApLSDg2KadKwF3kC3dUDoQKJ674ANCYg2zJdO
igJZnGTa3O9H7dveu/tKdJfd9hszuqmNm3sNcJsBFUohref1DbwLWW+PgHfZ
dkHM+Um9Z4LOnDKdsxS5XSTMvdZDoQsgBG+drxuqM24Sslr4fetRKtHdXcGo
DkACkSURnsxZ5U66ac0rUy8+xDUzuhFqswQZBSXIZrWvqjGXU+5rv6NKjvZ7
+ISpLgE4dFFXgLeWPCc9p90MQs0GvL6F19duzQhfpMS3KWO6Y+XBtPiB2iAn
54WWpAXD9D2t9V5J3bqoXQWCVIi6BJMoOsh9100wybmh2HAyvhoOrTDngkZu
twg7VRsQGMEoY20opqneY3roqXZ2UjwnchrlOPQe+jEq1vM299mRb9CkjekK
rrqyMiXk7TeBr7zuiQOseIwh+mREpx/qMWkcYIIWRj/foV7YlMh/2babTsKt
XYCiMfgZCnQ/a+5Z84Vui+uso8qVk+8AcHnKDnPuq9pWga1bPNNRnyb0110i
t1QNhLeSzwfe00XCnbDCemb7xhIjYg/yvcKqrFLdCiopqYYGtcsl5Y7JrHMa
vgej9a40YOsHz2aqy5JoHDF+nmPrjWWjdIxsbeH2qhZempD/eq7s8f6+jE4p
Xoyw8T3D7D2rBac2iw+o+Sn6OE839Ep4idT0+tYGAurZmL60wwjfpiSD1adZ
pbxUBjqZRnfSO2GGUJuIihspp4CG1/uWIpCzDiWSabgQh0h3cxclJ12KsXVx
NYi8XAKhGiUMVs4DhahNcODmVuZNoYhTeoN9r5SRfIi1mBRCzmd9gSVLkP9w
doEuoGzzWDF19cXey72jo70X3+8PX4zSpJoPcxx0OJOP5QZqIBgq3s2X6Ri0
PCFSIcmv9AMXRZJe474GyR/eNt1EHZhTmGJM/jteHDJUc18cUnOn1jYkzEuj
caT3aFchgaZxbXW7CF2KXQyETAStt1S6XFs+uqQgYQULuNwLxHvuJ4be05JK
25NSan0dME6eSoNXG1INx3lmVW1yHLq2RT+1VM5G2D89MoCoHQqJV0Gdh9al
W+KwNYqbeDqNL6wUu+LWpqU0Xx3YT2NujQswXQB0dQszQAaGg3Q51Rn+ur0p
DcrtVfl+OCvROoFekAmwY3oQzy5iNApI69PN/c46NHOBjl/ElrIWGJzBvmim
GVnjT1tvsPBv2PRL+OBvrUO29SGT39p7hn27VfJUff90bEVG4iARRlTG5d0o
UBm3x0hBr+XAXobeawpDpPnnT5vX1PfP5pEebG/7+Pp+JZ6dm46kqe17rKM8
kEsIPOjGa/pjX0B9SziZ2itHckG/dKT2U/1vwfEGWvYayTu7r1nTN8Txb4aZ
/9P4RGaKLx6pdfX/i083w6d7gE81weW2q7Tf6bum/xF8ah/Jjfzr1sl0FOBJ
t6xiw8+C4p4UV2rXD38g5aqjqAyLltRA6hTk913UJ3YpPrncJbVil94Y4hu7
AaZ9Gu5eGauQE/62icvBAr2eJfMO/msZf5QIP9mlV6LBV0BtBoBTF8d2q9JR
h26I56fh5eUl+T6G62IhPS1OzTSTfHaFNXNow2zswrozR3v/8nYf1K2RCVX7
QkAp1RJ15c9y0lMtl5biTtxDsIbLKcZ3LhKacgkbptkODk/2D96MX2MpSp3m
KCEPoEafamxDQ50tgAwHdH2tlU/UKskFvnD0Kl07S0zJFm1VVEPcUfRMNHBr
eo8lCI918pR8g572AqAVrSMur7LpeZFn+ZoSMGRituqryMSD251Q+NUmI7x0
gWoqmY22VOJ8h6kYCBhS58zVZa4Wi4UoQDW1y9mX5B5LlJ+UPsa9mbBSWq64
1MiMNEuy1OaOeBYasmX+mU00L/b+uv9cCpJiuas7T2vxJfhPHRYuxVu9CGW7
VdveBC5cA9UI/WjU9+nMQ/NaTEvayH0m151JYA86LErPjaAiL5PxHueJNGxS
frxVLUlFjD5LXcOzz4BkvZSmuCZ9wAQqnbw+dugTmYIRiitqizZNZJbfPXt+
ONx58pBb5NwzLXJuXIAuLlXNtbKxSEwzpMY57kC+JhVBcaqiDMi4aRtkkelS
5+ISSfRSoB622wolXICjNG2QNY4pFmJbO+B07SRgvOfTPNVFjpx7qpvdfZkD
33Xj1JNHuAKarkjO5nWXPNrsLCf0zzNF39a1Ce6wDd7WfR9ww22CrMUe+dHL
vGCqWku78CuaduQ8BBniV6Re7C+r7eSYfnuBz3+5/+O9/Q95+vb59tWbk19S
TM1Qlr1+D/Tr/9wfIyeF/zAvhb8QN4X/Wn4K/whwVPVPhrZ8Xz56dj47+vhr
dR+e+lToe8OE/incg+xrWpDtZ9iFrKfcV0sAaRf9WCiT10XGM6ZhJwAPac6h
WFKvbxn7rxeAt4EVeXwoGB+hg5nn64KMik5Xx1pOa834XiPQcDvg9uLC5uvF
0HMWWVM14IeTJewzCctp2074tMMtZJfpy9K19TplvO1d3jXtBlERtnm65CRC
sdEmDnAsWUBTxogcdeoAr5HrybaaWHNX0djIWRqdSsDa+zQT7yk+1HYdXwgn
5o0Gdjal18Rm65IxcGB0I07k0K/bp/5N7ZZ4zRHY/NLaPu5IIB6hDImuZcNq
z7VtOAwGxEGCi9QLEjSfxjOOLsOthcE5iE5LIJnvZ/klAktAN2Mnm0AvKDEB
f8lX4q2xKDZEkXMSTz8q4CQmnF96ok/RMr3g8p/RRRoL87yQgsgW7DF17Vp0
IJkOFTDCsGEgbh/VuqyNV3geT7ELLYgDm/G/DQV1WSfvZy7RKD7nplSsnZ+w
fY7sEZeOrtpD0kh4r0GlkZ3Wtfm9gHdTLbMWrMOO2BU2I0or7mBB7+vcEWlp
ztGmslCdfu1jaUtho/Zje8qcW3Qvqa2vkRXAheJlvNCClOoZBBII3gz5zWzz
9GAYCBb35LF7lQs0/mqfENjuInVYealyv+ecaUWBG61E3FoIfK98HyexE6NW
ektUtrj/vCmbBTYzycM0yoZCugfA+O0cg6ofQwgQUtpp7lZ34tPlODIu4C+B
IRInEir+SJSjIdf3YKXcY5AiZyVTOi+oVHHSaFDvzK2LLmQzxTF3Q6/7xZ+i
PSqm/nvaD8iTNryp44AHZqP94pciHb8E82GMKxxnJcX6fBMEy91W1A6M7kb+
BA8JAUoIkVYlzFe//ZWvFpJTs2oSCbrvTGOw09DZOqamTcmIylIvLlJdLd5E
FvzJx0yM6kyqsPtdt23gzhBhPNGkAJUH5NLkgNe2IZishmo1zK9rODeRoxyK
r9tH1CWRZg79dvQsnmkPz6a87Ofx9DwZPuemMruAecMScDBR3PmBmDemYQcF
L66Z7+0W33199EM6mx6Pk7+W7z/9stp7UT1cvfm0Pd4+eVY8/vXw1eT8/XHy
aDWfzR9s6fYPIoHB57r9g5bA4NHDWvF8I47XexG/aLfl/n+o2FntLKzNeQf3
/Q1OLXwYFKilaykIFXdVgk2RYVobc5oWtNgVbdyJ7uVkqvTYsvRu0WX1ZXZl
Y+q28HdLp9ua4Ui1dICZLYE/PvYK4H/3YOcBElZiTlgX15aPM1Y/lqTfa8R1
J2uWoXfkJlWndzbE7RZWTBSG5tfHNjFQ17c28jynVuemAD8nGKYPsauF/Boz
ti6oIWu03cFDb2vG70mS1jDWZl9kmtrWzNCOHgJ5VCtQ6fUvPDk3rQVbR3ea
CmsJpGayNpE8gbQX7xwk5FdNGs0GGzqzmd6rF9En0bwj2H78CzAOOIBF+g8s
KQoae345MCoFCqu2/rP1jSUtbRcVd324kDg4tATYNKPJVV3CwqJBNuC5yFGN
xXeWocBivX/nSHXFYB+hSJyQuLuO7EGUl7Wqh6HhHkp4TS21qnSRXIWy32a2
LaYAR4tgnLmMeSP6UAEiykKknt0jtaQCyEsNG02qRbyweOUUUQ80uxUclRya
ukVXI1p3K01PUPQqHN8ukyTyY5xJY6pV5uA0jsBJmf3p83YJRKMFqyu12yq6
m9F/YMtp4E6UG6LZtmlnD9ofx5HjfadXrv+hpSn0l7eE7r7QHPdLTLVeYLvR
KFaob5ac5VUtC6rZfOMphwliC2A/ddOjrX+G34dj6tH7ZPvRd3h/Cu5XP3DO
EXWpTgJX0mfGlVY3NhzvncjNrFUpdS4umTHxtwvAwRCOhVNA+1XVQJvIFCh+
s9XcTPmVJNzu8yaYNi4D/hXK9DDfus4aq+midFQZUtPIayIQ+opLXc/AQJOD
n75OvXBj9FFz6PQXLF9us0D94xMQiqXvm8mewc9RCg9oFDv3tv+3VVu/Vm01
RSsoC2oZ3xErgzIZyvMtBPk8vsCUgkW6TBGLdWPqDtes7r0gRKk2qK7Fd466
gGlzrTMRyCyujSf1nDkyixuXqBMRf9Pkss0l3KtcddhjdJcBsp1gLsLhwSFR
vwcPnnAemVN8GH7HNDJSKx5vPwQi1a9riWs9bBVpkPrXlx+y/6iubK+nurxx
M/rBpCVXmHfg+pSdqmF1WxP2luO8TOwXJi9SnXsng84zfpuOx5KRxTECTroY
gFSX53GL1j+1oVPKM6B7S7LOHq2NaqsDroRyizxly29A9PkbsxGL3zdImB+p
fdbWMqfnm3+vSPjeIOMArS2wyv3MgUkbT7ayKEnDVN+grQv8oE0tIlTB+h8m
sTwITac8SCuqB1L7nHIV/ZUjqZCgTOMHzc472wjWWwpvkl9bUqY7Sl5Q3SEt
t5uLKtZvLy8oKHjA/WxWdWksr24GDorYPqh4W1RRLYhdSqsN3C7BxQOjFNeK
7XWrH07zNmO12agdq+bq0YvMA3iKNtZmIU7idMbO2yvqxWcFEqdJUl0mSWve
qTZPdBV5+rqKEL30nnY+gSYHHQ+IOjAAJskCxdijEP/wrAMdCdhSypZrup80
1ZF2AdrFkOdO/8wmqEsrXcdwMZf2rqhvRqLR2YLhs/7vk+Qqb9Q5qIvpqhO3
2cjHXOaQz5fvkJ+aSqWmw7zV8DsRwM4avuPQF0Fyc8bpcSaCWBsFu/nQV5cw
bBImvu83rFaoJGKPC030IOZtNQxbKOXmMoYsdtQaKSQNbdtT7B3sGziPQwVa
qVKoLUHSbJpwA6nXyHfSoEEoaot4KwXPnaIgXO+dtvTU9vWTYotzp7AJ/4Df
Sz0JFPvyS78IJi2cAonS0jETBLlVHy5dj85uhrvq+sruRtjcYMd3JCIve8CG
xnsluJslJX7HNdxR0H/0+OE2TnvcVnF80xLclr1mZ3TW6L2mPj7ks2ladvwM
75ByohoaSdB68PVFrUlQv4Gd4L/YNbex6rUKqufcgz6g0LcXv+5SzVcO2bfl
zL1ioA19KoD0ugB2rXwq10tujGJj8fX9JGWrccU3cY1Bu93Ldo2VoDEHn11n
H7PAQLvqv9oWk9e3zNRDPfXQBlt/NlVU/XDtehOukPkgxNR6Np1qWMO9WlQB
shMga2J9TTNuhuJ2V3FD7v3iD6GCja2rDZRr9PXE+L9V2wpX4jP27VqVwRDG
fcMCet4aQpUjQ9YhT1/iIpKO0hT3riASrHk3YKcU4pGFdAgKN7BnYTpOk+8Y
K393W0zdpcnpOKQRFFmgzUrS0r6EB6nIb/Hi9m4NV1W6YyDerQ6G6rXVkEmU
Y3elXvA2RQoX7NhMS+rA6nTO+VZeV9qPrtDmK1Wmotakfwl8RwXE9cOBTc8b
+r87kq59GirL1UTcrpKng47OMCbKDGn7gtw8pvZX1KYzBHv0iphNhTPqoQX1
1ota6DFZkDdvxeUZS7rbBksDAM/j9TX6ZKyhNVyXiam8ESzvIm3svGbB3E04
4m7CxMqd0cpkGWPuFsuSGtG6mcQSbyz8v3KsVGztECPUlMzwqAAF0N/QbO3F
7WovxygVaJz6VdBkW/Ai4CCwnZUlRhowKatfGsfYsE9NmQB+60VcbO6Wd45J
iYVLtcL+OIQbG3cCZfLanX5t6/TNDBxnETTCkTH7WDoPRs+9zoNwWH0aOoSC
f9vQH95bEt6ZZodAr8oU/a8KoTqHybCiWU/DuG471MvtM7BGtw2Y5VjcE7Ss
mPaXreC+dKRHrF25jxLtUovtpSJ/BewfNrsu7GB4KnrXjkDMlgO8lHyp8G/l
elKC9L8maotNNXV3aFeQ6UdCMSMowp4NvaC81j284/JqCey/AJjiCOJp8cxv
QXNm2a/1gM6o1PNdCT8NWJnnuW2QoqQMkg23Hrg9f/Vt4GKeJRFDNz/aAt1k
3vvFK9GwXHCfp7i07dk2FmD90q4IJvZIt6PzKIwJtOguXEhp38W6vHHqZrDd
zbhe9KyeAt5e4NNPRTcV3bFeq1PBnXvEmusT6DYg4O7rreGt6DZJm70aJOy4
Rd4cltXWdz18yo7A1BoV5Ylm9IVqc6iw3fBbMUIHqdVNwkz6MEalxt9M/JEi
zJr4iXB5RYwDywd4FcgdnWVUK+Ph0R8TXlDWWRWXLPbiCyS8q3nviExrqYns
odrrvKmUZ7MFXemLj4GlKV8QxJMJy3pDlvUcaWYgSkDacC+2CG5kl1cbBUXi
LK6n3UvhCqFqjQ5Igo3T1yyliM1Ki471IqnA+8ikRZXb6nb4BiUvkiXm5eZF
5HYGchaM0oUzltEZ0NJdf3fgdklu+hQGmwxjYkaDaXhG3e7BXzm3Ihp0Ua2g
WYEXmEunW38diE+cwZri5e2IvrFlR5y2LxlFZE4Z9rpjlimQHqNzg+oxYOZb
1RD4iY7pVFCTMgi3FAaHq6btVYI5zKBX1O8HRSnyD9UOAkeDc8KBCaapbsNo
+/r2aIjrHPs0XqHQMXNBJUC0kpZxRnBVZe4pbBZSy8Vzaig47T8HpqCmLrQY
bAkeKCPM3cFlizWkNc174lDXQRuNo6vA19ubOPsytdC9GxI0StTCz2sa76Cl
o7hr5nngRuufHPy092a497fnr8ZvftijsGAubFwTj/JarX1upFSZcAGTzsqN
3iRbLC5REry+NlUxsTWo0yKUSk1gDwwmXehqlvK0cxcWpa176cDQa75O2w75
235yuINTXpmpkmMNAQB1m68RNBOn8E/TKYcNs1ut80uuU4o+toxEKa+I0Dfz
gUsuf7ea68d8hNW0Vh++yPhJl0ILlBnNnvWmz+z1NeLtKBobT0BQ7dZOXK1W
UM+keoChnpLxgfqCmdx8h/mRY9qq77ljgGxT3qynRiv6VpoXlw0VOVouY2PI
dDisGxHRoZL5PRTUV/ZQ8PtW9lDLlKuWOTFPDReuTmKv95oQ8SmUGROooza4
cSszv+8BBwO5LdQqHeLiFERK2Djucmtrt2uN7OGUlAVAKzNp0WEVttXkpKNo
JWbHDa5RzSYxrs/XDe0zZHtTKSXTR6a5F6KYKcxqDNKStnKeLFalkRpMFRUg
7bYbndwXLV9JMjpiAEc4cLQIkR6Zjs6F7zcaRVTtgnmWSInsFi2U9Zp6lxkn
pBUIyYrKNHvkf9LoyJi2HJrEc/Hu8f+WmPGHZ+yQ81oTdsNWtGHMw7l4kq+9
Bua+X5JuCjVPrIJ0FGGoghXWLdEQRGJyZq4fdznETnt6/9LKsF8LRV0uPMBN
jadqBXc4njomQe/srMHy+VfYHll7u0hg32EAg665yM/O2CqRfFrlglLrjHtS
wg9k/03KoC242zXFPNIS0rrQphmj8plXqkdoGBb1YZGrVzMCbztOobmazZaJ
Qnf8mZYxapI0ta5HMMnhL7XTNUvwvbi48vRnfiXNFJ2nNGYmPa4kZ3XTTWsE
Bcrfj2ezVJDVQRtKARoYeVlLWiZwoGSOs4CbjUUBMCtB/LxK3i1rGZpcJwBF
C6AriB15JiQMcNdrtFklZ9yMQBMzUaJxY0Z/MDZnghf22pojgRqCsrPGzlRV
FU8/IkKrW9H++M24aX736o8WyRn6IguxG4WatZ9ylJRtWQxIeZkrjgC35ZIQ
MplunmDCtt2Htr4pjSBPm0EY6udG5rJYHvArTAPjY6KeNH4zlrZS/LxN7ZO5
jSjaqJDIxYgaNW/cNXhTeNsxP8SLIZXJ4+faOdAo/IStpHVEcUchqjttFT85
gIUO5iUdDKbpAATtNpWi47eV7LTZlg+cpnYL9+vT1bG3W7XBtzQQcSE49Ahf
GNEL+HuJeXHSA3A9ZT34Fceq0Tu7StnBsP5kCNeUOgYitC7xdywUGGcY3QgP
zZAUNwW/7lfJUqkjHT2Nj7x4FYIPY9ievXd7hK5fDiZGd+nXqQEVnqUJL3pv
dGjw6fNngAmvKBOYuFXx/IAAkzOs3hLy6OQx/MrGIDJF5VVq5FfqUDdWNxSI
Cs/SstvrFTuH8pxbZEw5K2+RFHQCeycvu0/A35vQx/egWv6/sZtOPb8eH+Xg
mznhr0C0ZvnkrdrgZU8EexNALVu3UdnF8km8dk7i3bt3w7GjhZhDGBj6yiVj
vhRBHJg1Q/EMF/hyKAYvasdUfUAKlNeszFzbTw5M33+4/Fgi73BedDRffP/t
0WtN/Zvy9O/L6MfjgzfRu2QSobXnOKm0OEuYwRW1yIxE/lrYvnWD9vCtj774
uDbsWxy47+PF2XuGvC1H0g4L2iuIsPGVu0sEzY/vjkF5XJyZBslmtPYYNXY6
/pdCweDs26P9r8XNGmrCiH1QELuISNwndeORYlxSRQYGkehvDqp+e/QGd/El
BW0ARvlyCXDTROQHW6Ied8/NmIzGavICv7iV2decyn/+h7k2nNvynPP5v/yI
pCCAPqPg8M3zwtdG8NrohCtT4J7IZq2ByHZk/fSFfx1eYeemIbwyw7bJqCwu
4kxMQ3PQdK98gA68SEpbQsXtwm4Lnc0sfJ/fEL6hLTCRC24DscPtxetoW03L
w//crtRwOIyooCil337M8stFMjujEGh1vZutlxP4dvb91jxecIL6ycGLA5BM
9JvJSP1f/GtuzxAFAQA=

-->

</rfc>
