<?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.39 (Ruby 4.0.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thallapelly-oasnt-02" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="OASNT">OASNT: Attested Action Authorization Tokens</title>
    <seriesInfo name="Internet-Draft" value="draft-thallapelly-oasnt-02"/>
    <author initials="A." surname="Thallapelly" fullname="Arun Thallapelly">
      <organization>OmniArx</organization>
      <address>
        <email>arun@advitlabs.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="15"/>
    <area>Security</area>
    <keyword>attestation</keyword>
    <keyword>authorization</keyword>
    <keyword>WYSIWYS</keyword>
    <keyword>mobile</keyword>
    <keyword>agent</keyword>
    <abstract>

<t>This document defines the OASNT token, a compact JWS-based credential in
which a hardware-bound device key attests that a specific human, on a
device whose runtime integrity was assessed, authorized one specific
action whose human-readable disclosure is cryptographically bound to the
token (What You See Is What You Sign). Tokens are single-use, short-lived,
and may additionally be bound to one concrete HTTP request.</t>
    </abstract>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Systems increasingly execute consequential actions on a person's behalf without
that person present at the moment of execution. Autonomous agents move funds,
change access, and modify records, carrying credentials that prove only who
issued them and to whom. Such a credential does not record that any human saw
the operation it is now being used to perform.</t>
      <t>Where a human approval step does exist, it is usually a server-side artifact: a
flag on a session, a row in a table, a callback that fired. The approval and the
executed operation are connected by application logic rather than by
cryptography, so an incident review cannot establish what the approving person
actually read. Nor can it establish anything about the device they read it on.</t>
      <t>This document defines the OASNT token, which addresses both gaps in a single
signed object. A key held in device-resident secure hardware signs a digest of
the action to be performed, a digest of the disclosure text as it was rendered
to the user, and optionally a fingerprint of the one concrete request the
approval authorizes. The signed object also carries the device's own assessment
of its runtime integrity at the moment of signing.</t>
      <t>Binding the rendered disclosure, rather than only the operation, is the property
this document treats as essential and is commonly called What You See Is What You
Sign. Its absence is exploitable: a system that binds only the operation will
accept a token whose operation digest was recomputed after the human approved
something else. <xref target="verify"/> therefore requires the disclosure binding and forbids
falling back to operation binding alone.</t>
      <t>OASNT is deliberately narrow. It expresses a single human authorization event as
verifiable evidence. It does not describe delegation between components, policy
evaluation, or how authority is attenuated as it passes through a system.
Frameworks that address those concerns, including remote attestation procedures
<xref target="RFC9334"/>, can consume an OASNT token as the human-authorization evidence at
the root of a chain they otherwise manage.</t>
    </section>
    <section anchor="related">
      <name>Relationship to Other Work</name>
      <t>Several active efforts address adjacent parts of this problem. This section states what
they cover and what this document adds, so that the delta is explicit rather than implied.
Descriptions reflect the versions available at the time of writing.</t>
      <section anchor="human-authorization-receipts">
        <name>Human authorization receipts</name>
        <t><xref target="I-D.schrock-ep-authorization-receipts"/> defines a signed receipt asserting that a named
human, or an M-of-N quorum, authorized a specific operation before execution, together
with transparency-log inclusion proofs and key directory material that this document does
not attempt to duplicate. <xref target="I-D.schrock-ep-action-evidence-graph"/> composes such receipts
into a portable evidence graph with a replayable admissibility verdict, and
<xref target="I-D.rampalli-cross-org-delegation-mapping"/> treats human authorization as a distinct
capability satisfied by artifacts of that kind. This document is written to interoperate
with that work rather than to restate any part of it.</t>
        <t>Those receipts bind an action digest and a context digest, and require that the approver
be shown a faithful human-readable rendering of the action. The signature covers the
context digest rather than the rendered text. That is a deliberate scoping decision, and a
defensible one: the receipt is designed to establish evidentiary exactness, and honouring
the rendering requirement is left to the approving client, which in the general case is
the only party positioned to do so.</t>
        <t>This document specifies the complementary piece for the case where that client is a mobile
device. <xref target="canon-display"/> defines a digest over the rendered octets and <xref target="verify"/> requires
it to match, which lets a relying party confirm the rendering requirement was honoured
rather than rely on it having been. The binding is meaningful here because such a device
renders the disclosure and holds the signing key within a single trust boundary, which is
not true of authenticators generally; see <xref target="txconf"/>.</t>
        <t>An OASNT token can therefore serve as the human-authorization artifact that a receipt of
this kind carries or references, adding the display binding without altering the
surrounding evidence model, its transparency machinery, or its quorum semantics.</t>
      </section>
      <section anchor="executor-models">
        <name>Executor-side processing models</name>
        <t><xref target="I-D.schrock-action-evidence-boundary"/> defines an executor-side processing model for
consequential agent actions: native verification of each artifact, matching against a
Canonical Action Identifier, satisfaction of an authorization evidence chain, atomic
consumption of one-time authority, and closed effect outcomes. It deliberately defines no
token format, and the artifacts it consumes retain their own semantics and verifiers.</t>
        <t>An OASNT token is designed to be consumed by such a model as a natively verified,
attested per-action artifact, and the boundary between the two layers is clean. The token
is independently verifiable: the verifier recomputes <tt>adg</tt> from its own representation of
the action (<xref target="verify"/>), so the token means the same thing wherever it is evaluated, and a
canonical action identifier can be derived from that same recomputation rather than from
any value the token carries. Where a concrete request is authorized, <tt>rqf</tt> supplies the
admissibility condition, and its absence is a refusal rather than a downgrade. Single use
of <tt>jti</tt> is token-local (<xref target="reserve-commit"/>); coordinating consumption of authority across
executors or trust domains is an executor-side concern, and a processing model of this
kind is the natural place for it.</t>
        <t>A profile of this document is planned to fix the derivation of a canonical action
identifier from <tt>adg</tt>, together with the semantics of the named-human binding, so that
every executor checks one derivation rather than each integration defining its own.</t>
      </section>
      <section anchor="txconf">
        <name>Transaction confirmation in WebAuthn</name>
        <t>The <tt>txAuthSimple</tt> and <tt>txAuthGeneric</tt> extensions to <xref target="WEBAUTHN"/> were defined to carry a
prompt for display on the authenticator, which is the same property <xref target="canon-display"/>
provides. They were not implemented by browsers and have been proposed for removal as
untestable.</t>
        <t>The obstacle is architectural rather than a lack of interest: a general-purpose
authenticator has no display, so it cannot attest to what a user was shown. This document
targets a class of device where the constraint does not hold. A modern mobile device
renders the disclosure and holds the signing key inside the same trust boundary, which is
what makes a binding over the rendered octets meaningful. <xref target="display-trust"/> states the
limits of that assumption.</t>
      </section>
      <section anchor="agent-identity-delegation-and-policy">
        <name>Agent identity, delegation and policy</name>
        <t><xref target="I-D.ietf-wimse-arch"/> and <xref target="I-D.ni-wimse-ai-agent-identity"/> establish workload identity
for non-human callers. <xref target="I-D.mishra-oauth-agent-grants"/> and <xref target="RFC8693"/> address delegated
authorization and token exchange. <xref target="I-D.mcguinness-oauth-actor-proofs"/> adds per-hop
actor-signed evidence. <xref target="I-D.nivalto-agentroa-route-authorization"/> defines policy
envelopes, per-hop attestations and enforcement receipts, and admits device-bound approval
strengths.</t>
        <t>These operate at a different layer, and deliberately so. Each constrains what an agent is
permitted to do and records how authority moved between components. None sets out to
establish what a human was shown before agreeing, which is the question this document
takes up. The relationship is complementary: OASNT produces evidence for the root of a
delegation chain that those mechanisms then carry and attenuate.</t>
      </section>
      <section anchor="regulatory-requirements">
        <name>Regulatory requirements</name>
        <t>Strong customer authentication under <xref target="PSD2-RTS"/> requires that authentication codes be
dynamically linked to a specific amount and payee, and that the payer be made aware of
both. Electronic signature practice describes the same property as What You See Is What
You Sign.</t>
        <t>These establish the requirement without defining an interoperable format for the
resulting evidence. Deployed implementations are largely proprietary, frequently using
dedicated hardware with a trusted display. This document specifies a claim format for the
same property on general-purpose mobile hardware.</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>

<t>The term "disclosure" refers to the human-readable text presented to a user
on a display, in the form in which the user read it, immediately before that
user authorized an action.</t>
    </section>
    <section anchor="architecture">
      <name>Architecture</name>
      <t>Three roles participate.</t>
      <t>The <strong>minter</strong> runs on the user's device. It holds the signing key in secure
hardware, renders the disclosure, obtains the user's approval, and produces the
token. It is the only role that observes the human.</t>
      <t>The <strong>enrollment service</strong> establishes, once per key, that the key is
hardware-bound and belongs to the device it claims to. It records the key's
thumbprint. <xref target="enrollment"/> specifies this.</t>
      <t>The <strong>verifier</strong> is the party about to execute the action. It holds the set of
enrolled thumbprints, recomputes every binding from its own representation of
what it is about to do, and accepts or refuses. <xref target="verify"/> specifies this.</t>
      <t>A typical exchange:</t>
      <artwork><![CDATA[
   verifier                 minter (device)          enrollment service
      |                           |                          |
      |                           |---- attested key ------->|
      |                           |<--- enrolled ------------|
      |                           |                          |
      | -- action + disclosure -->|                          |
      |                           | renders disclosure       |
      |                           | user approves            |
      |                           | hardware key signs       |
      |<------- token ------------|                          |
      | recompute adg, dsp, rqf   |                          |
      | accept or refuse          |                          |
]]></artwork>
      <t>How the action reaches the device, and how the token returns, are out of scope.
The token is self-contained and its verification does not depend on the channel
that carried it.</t>
      <t>Two properties follow from this arrangement and are relied on throughout.</t>
      <t>First, the verifier never trusts the token for anything it can compute itself.
Every digest is recomputed from the verifier's own view of the action and
request. The token supplies only digests to compare against and a key identifier
to look up.</t>
      <t>Second, the party that observes the human is the party that holds the key. The
disclosure binding is meaningful only because rendering and signing happen inside
the same trust boundary. <xref target="display-trust"/> states the limits of that assumption.</t>
    </section>
    <section anchor="token-format">
      <name>Token Format</name>
      <t>An OASNT token is a JWS <xref target="RFC7515"/> in compact serialization.</t>
      <section anchor="jose-header">
        <name>JOSE Header</name>
        <t>The protected header <bcp14>MUST</bcp14> consist of exactly the members <tt>alg</tt> and <tt>typ</tt>,
with the values shown:</t>
        <sourcecode type="json"><![CDATA[
{"alg":"ES256","typ":"oasnt+jwt"}
]]></sourcecode>
        <t>A verifier <bcp14>MUST</bcp14> reject a token whose <tt>alg</tt> is not <tt>ES256</tt> or whose <tt>typ</tt> is
not <tt>oasnt+jwt</tt>. Algorithm agility is deliberately not offered; see
<xref target="alg-rationale"/>.</t>
      </section>
      <section anchor="signature">
        <name>Signature</name>
        <t>The signature is ECDSA using P-256 and SHA-256, encoded as the concatenation
<tt>R || S</tt> of two 32-octet big-endian integers (64 octets total), base64url
encoded without padding per <xref target="RFC7515"/>. A verifier <bcp14>MUST</bcp14> reject a signature
whose decoded length is not exactly 64 octets.</t>
      </section>
      <section anchor="claims">
        <name>Claims</name>
        <t>The JWS payload is a JSON object <xref target="RFC8259"/> containing the following members.
All digest-valued claims are base64url <xref target="RFC4648"/> encoded without padding,
over a SHA-256 <xref target="RFC6234"/> digest.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim</th>
              <th align="left">Type</th>
              <th align="left">Presence</th>
              <th align="left">Binds</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>sub</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">the subject the token was issued for</td>
            </tr>
            <tr>
              <td align="left">
                <tt>adg</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">the action to be executed (<xref target="canon-action"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>dsp</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">the disclosure the human read (<xref target="canon-display"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>rqf</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">one concrete request (<xref target="canon-rqf"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>asl</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>OPTIONAL</bcp14></td>
              <td align="left">assurance level of the approval (<xref target="asl"/>)</td>
            </tr>
            <tr>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">result of a device runtime integrity assessment at signing time</td>
            </tr>
            <tr>
              <td align="left">
                <tt>jti</tt></td>
              <td align="left">string</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">single-use nonce</td>
            </tr>
            <tr>
              <td align="left">
                <tt>iat</tt></td>
              <td align="left">number</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">issuance time, seconds since the epoch</td>
            </tr>
            <tr>
              <td align="left">
                <tt>exp</tt></td>
              <td align="left">number</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">expiry, seconds since the epoch</td>
            </tr>
            <tr>
              <td align="left">
                <tt>cnf</tt></td>
              <td align="left">object</td>
              <td align="left">
                <bcp14>REQUIRED</bcp14></td>
              <td align="left">key confirmation; contains <tt>jkt</tt></td>
            </tr>
          </tbody>
        </table>
        <t><tt>cnf.jkt</tt> is the JWK thumbprint <xref target="RFC7638"/> of the public key corresponding
to the signing key.</t>
        <t><tt>int</tt> takes exactly one of the values <tt>clean</tt>, <tt>compromised</tt>, or <tt>unknown</tt>.
It is asserted by the device, not proven by the token; see <xref target="int-trust"/>.</t>
        <t>The payload is signed as serialized. Member order is at the minter's
discretion and carries no meaning, because verification recomputes the
signature over the octets as received and never re-serializes the payload.
An implementation <bcp14>MUST NOT</bcp14> depend on member order.</t>
        <t>An <bcp14>OPTIONAL</bcp14> claim that is absent <bcp14>MUST</bcp14> be omitted entirely rather than
included with an empty or null value. This distinction is load-bearing:
<xref target="verify"/> requires a verifier to distinguish "not bound to a request" from
"bound to a request that does not match".</t>
      </section>
      <section anchor="asl">
        <name>Assurance level</name>
        <t><tt>asl</tt> conveys the assurance level of the approval that produced the token. Its
value <bcp14>MUST</bcp14> be a string registered in the "OASNT Assurance Levels" registry
(<xref target="iana-asl"/>).</t>
        <t>The claim is <bcp14>OPTIONAL</bcp14>, and this document defines only what it means and how a
verifier derives its effective value. Assurance floors, the age beyond which an
assurance statement is no longer accepted, and the refusals that apply when
either is not met are relying-party policy and are defined in
<xref target="I-D.thallapelly-oasnt-enforce"/>. A threshold is not a property of the token.</t>
        <section anchor="asl-effective">
          <name>Effective level</name>
          <t><tt>asl</tt> is asserted by the device. Enrollment (<xref target="enrollment"/>) separately
establishes a ceiling: the strongest level the enrolled key's hardware and boot
state can support. Where the two disagree, the weaker governs.</t>
          <t>A verifier deriving an effective level <bcp14>MUST</bcp14> take the lesser of the level named
by <tt>asl</tt> and the ceiling recorded at enrollment for the key that verified the
signature, and <bcp14>MUST</bcp14> evaluate any assurance requirement against that lesser
value rather than against the claim.</t>
          <t>An over-claim therefore buys nothing. A token naming <tt>attested-display</tt> against
a <tt>platform-key</tt> ceiling has an effective level of <tt>platform-key</tt>, and a
requirement for <tt>attested-display</tt> still refuses it.</t>
          <t>A verifier <bcp14>SHOULD</bcp14> report the over-claim separately from the outcome. A minter
claiming more than its hardware supports is a real signal, and it must remain
visible once it has stopped being decisive.</t>
          <t>The lesser value is taken rather than the token being refused outright, because
the two conditions are different findings. Refusing every over-claim conflates
"this device is misreporting its tier" with "this device lacks the assurance
this action requires", and it makes correct tiering unobservable: a device
whose key properties genuinely support the stronger level, but whose boot state
caps its ceiling below that, would be refused for an action the ceiling in fact
satisfies.</t>
        </section>
        <section anchor="asl-unknown">
          <name>Unrecognized and absent levels</name>
          <t>A verifier that does not recognize the value of <tt>asl</tt> <bcp14>MUST</bcp14> treat the token as
carrying no assurance statement. It <bcp14>MUST NOT</bcp14> infer a level, and <bcp14>MUST NOT</bcp14> treat
an unrecognized value as equivalent to the weakest registered one.</t>
          <t>To a relying party with an assurance requirement, an absent <tt>asl</tt> and an
unrecognized <tt>asl</tt> are the same condition: neither can satisfy the requirement,
and both refuse. They are distinguished in what is reported, not in what is
decided. A relying party with no assurance requirement evaluates neither.</t>
          <t>This is deliberately stricter than treating an unknown level as the weakest
registered one. The weakest registered level is a statement about an approval;
an unrecognized string is the absence of any statement this verifier can
evaluate, and a verifier that substitutes the former for the latter has
manufactured evidence it does not have.</t>
          <t>The distinction is easy to lose because a weakest tier does exist, and defaulting
to it is the right answer for a different question. Where enrollment recorded no
assurance for a key, the ceiling of <xref target="asl-effective"/> is the weakest registered
level, because a ceiling is a bound this verifier derives and it must bind
something. The claim is not a bound the verifier derives; it is an assertion the
device either made or did not.</t>
          <t>Absent attestation at enrollment is a third case again, and <xref target="enrollment"/>
refuses it rather than deriving any ceiling at all. Evidence that cannot be
obtained is not weak evidence.</t>
        </section>
      </section>
    </section>
    <section anchor="canon">
      <name>Canonicalization</name>
      <t>Three canonical encodings are defined. Each is hashed with SHA-256 and
base64url encoded to produce a claim value. None of them is ever parsed;
they exist only to be produced deterministically and hashed.</t>
      <section anchor="key-order">
        <name>Key ordering</name>
        <t>Wherever this document specifies that parameters are sorted, they <bcp14>MUST</bcp14> be
sorted in ascending lexicographic order of the UTF-8 octet sequence of the
parameter name.</t>
        <t>Implementations <bcp14>MUST NOT</bcp14> sort by UTF-16 code unit, which is the default
string ordering in some languages and which differs from UTF-8 octet order
for names containing characters outside the Basic Multilingual Plane. Two
implementations disagreeing here will produce different digests for the same
action and fail to interoperate.</t>
        <t>Parameter names <bcp14>MUST</bcp14> be unique within an action. A duplicate name <bcp14>MUST</bcp14> cause
the minter to fail rather than resolve the duplicate.</t>
      </section>
      <section anchor="canon-action">
        <name>Canonical action</name>
        <t>The canonical action is:</t>
        <artwork><![CDATA[
escape(type) "|"
  escape(k1) "=" escape(v1) "&"
  escape(k2) "=" escape(v2) ...
]]></artwork>
        <t>(shown wrapped for width; the canonical string contains no line breaks)</t>
        <t>where parameters are ordered per <xref target="key-order"/>, and <tt>escape()</tt> prefixes each
occurrence of the four octets <tt>\</tt>, <tt>|</tt>, <tt>=</tt>, and <tt>&amp;</tt> with a single <tt>\</tt>. Each
input octet is classified exactly once; the escape prefix introduced for one
octet is never itself re-escaped.</t>
        <t>The <tt>|</tt> separator is emitted even when there are no parameters.</t>
        <t><tt>adg</tt> is the base64url encoding of the SHA-256 digest of this string.</t>
        <t>Escaping is what prevents a parameter value from impersonating a separator.
Without it, the parameter pair (<tt>a</tt>, <tt>b&amp;c=d</tt>) and the pair set
{(<tt>a</tt>,<tt>b</tt>), (<tt>c</tt>,<tt>d</tt>)} would produce identical canonical strings and thus
identical digests.</t>
      </section>
      <section anchor="canon-display">
        <name>Canonical display</name>
        <t>The canonical display is the disclosure text, constructed as the <tt>type</tt>
followed, for each parameter in the order of <xref target="key-order"/>, by a line feed
(0x0A), the parameter name, a colon, a space, and the parameter value:</t>
        <artwork><![CDATA[
escape(type)
  LF escape(k1) ": " escape(v1)
  LF escape(k2) ": " escape(v2) ...
]]></artwork>
        <t>(shown wrapped for width; LF marks the only line breaks the string contains)</t>
        <t>Here <tt>escape()</tt> replaces each <tt>\</tt> with <tt>\\</tt> and each line feed with the two
characters <tt>\n</tt>, in that order, and performs no other transformation.</t>
        <t><tt>dsp</tt> is the base64url encoding of the SHA-256 digest of this string.</t>
        <t>This string is what the human reads. A verifier that recomputes <tt>dsp</tt> is
asserting that the octets displayed to the user are the octets the user's
key signed. See <xref target="display-trust"/> for the boundary of that assertion.</t>
      </section>
      <section anchor="canon-rqf">
        <name>Request fingerprint</name>
        <t>The request fingerprint binds a token to one concrete request. It is the
base64url encoding of the SHA-256 digest of:</t>
        <artwork><![CDATA[
method 0x00 path 0x00 org-id 0x00 scope 0x00 body-digest
]]></artwork>
        <t>where <tt>body-digest</tt> is the raw 32-octet SHA-256 digest of the request body,
and the digest of the empty string is used when there is no body. The four
text fields are UTF-8 encoded and <bcp14>MUST NOT</bcp14> contain a NUL octet; a minter or
verifier encountering one <bcp14>MUST</bcp14> treat the input as invalid rather than
attempt to encode it.</t>
        <t>The NUL separators make the encoding unambiguous for fields that may
themselves contain any non-NUL octet. <tt>body-digest</tt> is appended raw rather
than hex- or base64-encoded, and is fixed-length, so no separator follows it.</t>
      </section>
    </section>
    <section anchor="verify">
      <name>Verification Procedure</name>
      <t>A verifier <bcp14>MUST</bcp14> perform the following checks. Every failure is terminal: a
token that fails any check <bcp14>MUST</bcp14> be refused, and <bcp14>MUST NOT</bcp14> be accepted on
weaker terms.</t>
      <t>The order below is normative only where a later step depends on an earlier
one having established its precondition. Implementations are <bcp14>RECOMMENDED</bcp14> to
evaluate all applicable checks and report the complete set of failures, as
this materially assists integration; see <xref target="reason-reporting"/>.</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Structure.</strong> The token <bcp14>MUST</bcp14> consist of exactly three base64url segments
separated by two <tt>.</tt> characters, and the first two <bcp14>MUST</bcp14> decode to
well-formed JSON objects.</t>
        </li>
        <li>
          <t><strong>Header.</strong> <tt>alg</tt> <bcp14>MUST</bcp14> equal <tt>ES256</tt> and <tt>typ</tt> <bcp14>MUST</bcp14> equal <tt>oasnt+jwt</tt>.</t>
        </li>
        <li>
          <t><strong>Key lookup.</strong> The verifier <bcp14>MUST</bcp14> look up <tt>cnf.jkt</tt> among keys that have
completed enrollment (<xref target="enrollment"/>). A thumbprint that is absent,
malformed, or not enrolled <bcp14>MUST</bcp14> be refused. The verifier <bcp14>MUST NOT</bcp14> accept
a key supplied by the token itself.</t>
        </li>
        <li>
          <t><strong>Signature.</strong> The signature <bcp14>MUST</bcp14> verify under the enrolled public key
over the octets <tt>BASE64URL(header) "." BASE64URL(payload)</tt> exactly as
received.</t>
        </li>
        <li>
          <t><strong>Thumbprint confirmation.</strong> The verifier <bcp14>MUST</bcp14> recompute the JWK
thumbprint of the enrolled key and confirm it equals <tt>cnf.jkt</tt>.</t>
        </li>
        <li>
          <t><strong>Expiry.</strong> <tt>exp</tt> <bcp14>MUST</bcp14> be a number and <bcp14>MUST</bcp14> be greater than or equal to
the current time. A minter <bcp14>SHOULD</bcp14> set <tt>exp</tt> no more than 120 seconds
after <tt>iat</tt>. A verifier <bcp14>MUST</bcp14> additionally refuse a token whose <tt>exp</tt>
exceeds its <tt>iat</tt> by more than a locally configured maximum, rather than
accepting whatever interval the token declares. See <xref target="approval-window"/>
for why this bound is the verifier's to set and not the minter's.</t>
        </li>
        <li>
          <t><strong>Issuance.</strong> <tt>iat</tt> <bcp14>MUST</bcp14> be a number and <bcp14>MUST NOT</bcp14> be more than a small
tolerance in the future. Implementations <bcp14>SHOULD</bcp14> use 5 seconds.</t>
        </li>
        <li>
          <t><strong>Replay.</strong> <tt>jti</tt> <bcp14>MUST</bcp14> be present and <bcp14>MUST NOT</bcp14> have been seen before.
See step 13 for when it is recorded.</t>
        </li>
        <li>
          <t><strong>Action binding.</strong> <tt>adg</tt> <bcp14>MUST</bcp14> equal the digest recomputed per
<xref target="canon-action"/> over the action the verifier is about to execute. The
verifier <bcp14>MUST</bcp14> recompute this from its own representation of that action
and <bcp14>MUST NOT</bcp14> use any value carried in the token.</t>
        </li>
        <li>
          <t><strong>Intent binding.</strong> <tt>dsp</tt> <bcp14>MUST</bcp14> be present and <bcp14>MUST</bcp14> equal the digest
recomputed per <xref target="canon-display"/> over that same action. A token lacking
<tt>dsp</tt> <bcp14>MUST</bcp14> be refused rather than accepted as action-bound only.</t>
        </li>
        <li>
          <t><strong>Request binding.</strong> If the verifier is authorizing a concrete request,
then <tt>rqf</tt> <bcp14>MUST</bcp14> be present and <bcp14>MUST</bcp14> equal the fingerprint recomputed per
<xref target="canon-rqf"/> over that request. A token lacking <tt>rqf</tt> <bcp14>MUST</bcp14> be refused
in this case. If the verifier is not authorizing a concrete request,
<tt>rqf</tt> is ignored.</t>
        </li>
        <li>
          <t><strong>Integrity.</strong> <tt>int</tt> <bcp14>MUST</bcp14> equal <tt>clean</tt>.</t>
        </li>
        <li>
          <t><strong>Commit.</strong> Only if every preceding check passed, the verifier <bcp14>MUST</bcp14>
record <tt>jti</tt> as seen.</t>
        </li>
      </ol>
      <section anchor="reserve-commit">
        <name>Reserve and commit</name>
        <t>Step 13 is deliberately last. A verifier that records <tt>jti</tt> when it first
observes the claim can be induced to consume the nonce of a legitimate
token: an attacker who observes a token in flight may alter any octet and
submit the result, which fails signature verification but, under a
record-on-sight implementation, has already burned the nonce. The genuine
token is then refused as a replay when it arrives.</t>
        <t>Recording the nonce only after full validation removes this. A token that
fails any check leaves no trace, so an unforgeable copy cannot deny service
to the token it was copied from.</t>
        <t>The seen-<tt>jti</tt> set is scoped to the verifier deployment that maintains it.
This document does not define coordination of consumption across verifiers
or trust domains; where one authorization must be consumed exactly once
across several systems, that coordination belongs to the executor layer
(<xref target="executor-models"/>).</t>
      </section>
      <section anchor="reason-reporting">
        <name>Reporting refusal reasons</name>
        <t>Refusals are not interchangeable, and an integrator debugging a deployment
needs to distinguish a clock problem from a replay from a downgrade attempt.
Implementations are <bcp14>RECOMMENDED</bcp14> to return a distinguishable reason per
failed check.</t>
        <t>Reasons <bcp14>SHOULD NOT</bcp14> be returned to an untrusted caller where doing so would
reveal whether a given key is enrolled or whether a given nonce has been
seen.</t>
      </section>
    </section>
    <section anchor="enrollment">
      <name>Enrollment and Key Attestation</name>
      <t>A verifier accepts a token only if <tt>cnf.jkt</tt> names a key that completed
enrollment. Enrollment establishes, once, that the key is resident in device
secure hardware and that the party presenting it controls it.</t>
      <section anchor="challenge">
        <name>Challenge</name>
        <t>The enrollment service <bcp14>MUST</bcp14> issue a random challenge of at least 32 octets,
bound to the subject enrolling, with a bounded lifetime. Implementations <bcp14>SHOULD</bcp14>
use 300 seconds.</t>
        <t>A challenge <bcp14>MUST</bcp14> be single-use. It <bcp14>MUST</bcp14> be consumed on first presentation
whether or not enrollment subsequently succeeds, so that a failed attempt cannot
be retried against the same challenge. A challenge that is unknown, already
consumed, or expired <bcp14>MUST</bcp14> cause enrollment to fail.</t>
      </section>
      <section anchor="platform-attestation">
        <name>Platform attestation</name>
        <t>The enrolling party presents a platform attestation over the challenge. The
service <bcp14>MUST</bcp14> verify, at minimum:</t>
        <ol spacing="normal" type="1"><li>
            <t>that the attestation chains to a trusted root for the claimed platform;</t>
          </li>
          <li>
            <t>that the challenge inside the attestation equals the challenge issued;</t>
          </li>
          <li>
            <t>that the attested key is hardware-backed;</t>
          </li>
          <li>
            <t>that the attested public key equals the key being enrolled.</t>
          </li>
        </ol>
        <t>Check 4 is what prevents an attacker from presenting a genuine attestation
obtained elsewhere while enrolling a key they control. The service <bcp14>MUST</bcp14> compare
the thumbprint of the attested key with the thumbprint of the presented key and
<bcp14>MUST</bcp14> refuse on any difference.</t>
        <t>For Android Key Attestation, the security level recorded in the attestation
extension <bcp14>MUST</bcp14> indicate a trusted execution environment or a dedicated secure
element. An attestation reporting a software-only security level <bcp14>MUST</bcp14> be
refused.</t>
        <t>For Apple App Attest, the service <bcp14>MUST</bcp14> verify the attestation object's
certificate chain to the Apple root, that the nonce extension equals
<tt>SHA-256(authenticatorData || SHA-256(challenge))</tt>, and that the relying-party
identifier hash in the authenticator data equals <tt>SHA-256</tt> of the expected
application identifier.</t>
      </section>
      <section anchor="storage">
        <name>Storage</name>
        <t>On success the service records the subject, the public key, and its thumbprint
<xref target="RFC7638"/>. Verifiers look up keys by thumbprint alone.</t>
      </section>
      <section anchor="deployment-without-attestation">
        <name>Deployment without attestation</name>
        <t>A deployment may record a key without verifying a platform attestation, for
example where an enrollment service has not been configured with trusted roots.
Such a deployment does not provide the properties this document describes. Every
guarantee here reduces to the enrollment check, and a key admitted without
attestation is not known to be hardware-bound. Implementations <bcp14>SHOULD</bcp14> make this
mode impossible to enable in a production configuration.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="alg-rationale">
        <name>Signature algorithm</name>
        <t><tt>ES256</tt> is mandated rather than negotiated. The signing key is required to
be hardware-bound (<xref target="enrollment"/>), and P-256 is the curve available across
the mobile secure elements this document targets. In particular, at the time
of writing, the iOS Secure Enclave supports P-256 and does not support
Ed25519, so a specification mandating Ed25519 for this purpose could not be
satisfied by a hardware-bound key on that platform.</t>
        <t>Offering algorithm agility in the header would also reintroduce the
algorithm-substitution attacks that a fixed <tt>alg</tt> forecloses.</t>
      </section>
      <section anchor="display-trust">
        <name>The display trust boundary</name>
        <t>The <tt>dsp</tt> claim binds the octets that were rendered. It does not, and cannot,
prove that a human read them, that the rendering was legible, or that the
operating system's display path was honest. WYSIWYS holds only to the extent
that the platform's rendering and input path is intact, which is precisely
what the runtime integrity assessment behind <tt>int</tt> exists to assess. The two
claims are complementary and each is weaker alone: <tt>dsp</tt> commits to the octets
that were shown, and <tt>int</tt> speaks to the integrity of the surface that showed
them. A relying party evaluating a disclosure binding <bcp14>SHOULD</bcp14> consider both.</t>
        <t>Binding the rendered disclosure is a stronger property than requiring one. A
specification can mandate that an approver be shown a faithful rendering, but
unless a digest of the rendered octets is carried in the signature, a relying
party cannot afterward confirm the requirement was met; it can only assume it.
<tt>dsp</tt> is that digest, which makes the requirement verifiable rather than
assumed. This is the property that separates binding what the human saw from
merely requiring that they be shown it.</t>
        <t>A verifier <bcp14>MUST NOT</bcp14> interpret a valid <tt>dsp</tt> as proof of comprehension or
consent in any legal sense. It proves that the signing key signed a digest
of specific displayed octets.</t>
      </section>
      <section anchor="approval-window">
        <name>The interval between approval and execution</name>
        <t>Approval and execution are separate events, and a token that was correct at
the first remains verifiable at the second. Every check in <xref target="verify"/> is a
check on the token and on the action the verifier is about to execute. None
of them is a check on the world.</t>
        <t>That is a deliberate scope boundary. OASNT binds intent, not state. The
canonical display (<xref target="canon-display"/>) is a deterministic function of the
action: its type and its parameters, and nothing else. There is no free-text
member and no context member in which a minter, a broker or an application
could place a narrative assertion about the world. A disclosure therefore
states what is about to be done, which does not cease to be true while the
token is in flight.</t>
        <t>One case escapes that argument, and implementers should be warned of it. A
deployment may place in an action parameter a value that is a snapshot of
mutable state: an account balance, an exchange rate, an eligibility flag. It
is then part of the disclosure the human read, and is bound by <tt>adg</tt> and
<tt>dsp</tt> like any other parameter. But <xref target="verify"/> step 9 requires the verifier
to recompute the digest from its own representation of the action rather
than from a fresh reading of the underlying state, so a value that has since
changed still matches exactly and every check passes. The binding is
faithful and the fact is stale.</t>
        <t>A digest match is evidence about what was displayed and approved. It is not
evidence that the displayed value is still correct. A relying party <bcp14>MUST NOT</bcp14>
treat a verified token as a substitute for the preconditions the executing
system would otherwise enforce, and a system whose correctness depends on a
value being current <bcp14>MUST</bcp14> revalidate that value at execution. This document
defines no mechanism for carrying such a condition in the token.</t>
        <t>The width of the interval is therefore a security parameter, which is why
<xref target="verify"/> step 6 places its upper bound with the verifier. <tt>exp</tt> is chosen
by the minter, and the minter runs on the user's device, which is the
component this document trusts least (<xref target="int-trust"/>). A verifier that
accepts whatever interval a token declares has delegated the width of its
own exposure to that component. A verifier that imposes its own ceiling has
not.</t>
        <t>This document defines no revocation mechanism, which is deliberate rather
than missing. A single-use token with a short and verifier-bounded lifetime,
whose nonce is recorded only on acceptance (<xref target="reserve-commit"/>), reaches the
same place as revocation for this class of credential without placing a
status service on the execution path.</t>
      </section>
      <section anchor="int-trust">
        <name>Device-asserted integrity</name>
        <t><tt>int</tt> conveys the result of a runtime integrity assessment performed on the
device: a measurement of the execution environment, reduced to one of <tt>clean</tt>,
<tt>compromised</tt>, or <tt>unknown</tt>. It is asserted by software on the device and is
not a proof. A device whose runtime is fully compromised may defeat the
assessment and assert <tt>clean</tt>.</t>
        <t>Within that limit, the weight a relying party can place on <tt>int</tt> depends on the
assessment that produced it, and a relying party is entitled to distinguish the
two. An <tt>int</tt> value backed by a runtime integrity assessment that measures the
execution environment and can be updated as new evasion techniques appear is a
materially different input from a bare self-asserted flag with no measurement
behind it. The former raises the cost and skill required to forge <tt>clean</tt> and
records an auditable verdict; neither makes <tt>int</tt> a guarantee. This distinction
is why <tt>int</tt> carries an assessment result rather than a boolean.</t>
        <t>Relying parties <bcp14>SHOULD</bcp14> treat <tt>int</tt> as one input to a risk decision rather than
as a guarantee, <bcp14>SHOULD</bcp14> prefer platform attestation (<xref target="enrollment"/>) as the
stronger signal for admitting a key, and <bcp14>MAY</bcp14> require, as a matter of local
policy, that <tt>int</tt> be backed by a specified class of runtime assessment. A
relying party that treats <tt>int</tt> as dispositive on its own has misplaced the
trust boundary.</t>
      </section>
      <section anchor="canonicalization-ambiguity">
        <name>Canonicalization ambiguity</name>
        <t>Both hashed encodings are injective over their inputs only because of the
escaping rules in <xref target="canon"/>. An implementation that omits escaping, or that
escapes in a different order, will admit distinct actions with identical
digests, which defeats action binding entirely.</t>
        <t>The ordering requirement in <xref target="key-order"/> is a correctness requirement, not
a style preference. Two implementations that disagree will fail to
interoperate; because verification is fail-closed, they will refuse valid
tokens rather than accept invalid ones, but the deployment will be broken.</t>
      </section>
      <section anchor="verifier-side-recomputation">
        <name>Verifier-side recomputation</name>
        <t>A verifier <bcp14>MUST</bcp14> recompute every digest from its own representation of the
action and request. Using any plaintext carried alongside the token, or
reflecting values from the token into the recomputation, reduces the binding
to a self-consistency check and provides no security.</t>
      </section>
      <section anchor="compromise-of-the-enrollment-path">
        <name>Compromise of the enrollment path</name>
        <t>The security of every token reduces to the enrollment of its key. A verifier
that accepts an unattested key, or that admits a key whose attestation
chains to an untrusted root, gains nothing from the remaining machinery.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="json-web-token-claims">
        <name>JSON Web Token Claims</name>
        <t>IANA is requested to register the following in the "JSON Web Token Claims"
registry established by <xref target="RFC7519"/>.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Claim Name</th>
              <th align="left">Description</th>
              <th align="left">Change Controller</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>adg</tt></td>
              <td align="left">Action digest</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="canon-action"/> of this document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>dsp</tt></td>
              <td align="left">Disclosure digest</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="canon-display"/> of this document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>rqf</tt></td>
              <td align="left">Request fingerprint</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="canon-rqf"/> of this document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>asl</tt></td>
              <td align="left">Approval assurance level</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="asl"/> of this document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>int</tt></td>
              <td align="left">Device runtime integrity</td>
              <td align="left">IETF</td>
              <td align="left">
                <xref target="claims"/> of this document</td>
            </tr>
          </tbody>
        </table>
        <t>None of these five names appears in the registry at the time of writing.</t>
      </section>
      <section anchor="iana-asl">
        <name>OASNT Assurance Levels</name>
        <t>IANA is requested to create a new registry, "OASNT Assurance Levels", within a
new "OASNT" registry group.</t>
        <t>The registration policy is Specification Required (<xref target="RFC8126"/>).</t>
        <t>Each entry has four fields.</t>
        <ul spacing="normal">
          <li>
            <t><strong>Value.</strong> The string as it appears in the <tt>asl</tt> claim. Values are
case-sensitive and match <tt>[a-z][a-z0-9-]*</tt>.</t>
          </li>
          <li>
            <t><strong>Rank.</strong> A non-negative integer. Levels are compared by rank and a larger
rank is stronger. Ranks are unique and need not be contiguous.</t>
          </li>
          <li>
            <t><strong>Description.</strong> What the level asserts about the approval.</t>
          </li>
          <li>
            <t><strong>Reference.</strong> The specification defining the level.</t>
          </li>
        </ul>
        <t>Initial contents:</t>
        <table>
          <thead>
            <tr>
              <th align="left">Value</th>
              <th align="left">Rank</th>
              <th align="left">Description</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">
                <tt>software</tt></td>
              <td align="left">10</td>
              <td align="left">The approval was collected by software, with no hardware-backed statement about the signing key or the display path</td>
              <td align="left">
                <xref target="asl"/> of this document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>platform-key</tt></td>
              <td align="left">20</td>
              <td align="left">The signing key is hardware-bound and the platform attests to it. No statement is made about the display path</td>
              <td align="left">
                <xref target="asl"/> of this document</td>
            </tr>
            <tr>
              <td align="left">
                <tt>attested-display</tt></td>
              <td align="left">30</td>
              <td align="left">As <tt>platform-key</tt>, and the platform additionally attests to the integrity of the path that presented the disclosure</td>
              <td align="left">
                <xref target="asl"/> of this document</td>
            </tr>
          </tbody>
        </table>
        <t>The initial ranks are spaced so that a level may later be registered between
two existing ones without renumbering.</t>
        <t>Guidance for the designated expert:</t>
        <ul spacing="normal">
          <li>
            <t>A registration <bcp14>MUST</bcp14> state a rank and justify it against every existing entry.
A level that cannot be placed in this ordering does not belong in this
registry. It is a different claim and should be registered as one.</t>
          </li>
          <li>
            <t>A registration <bcp14>MUST</bcp14> state what the level asserts about the <strong>approval</strong>.
Vendor names, product names and platform names are not assurance levels; the
level names the property established, not the thing that established it.</t>
          </li>
          <li>
            <t>A registered rank <bcp14>MUST NOT</bcp14> be changed after registration. Deployments compare
against it, and a rank that moves silently changes the meaning of every
policy expressed in terms of it. A level whose meaning changes requires a new
value.</t>
          </li>
          <li>
            <t>The expert <bcp14>SHOULD</bcp14> reject a registration whose description could be satisfied
without the level below it also being satisfied, because the ordering would
then not be an ordering.</t>
          </li>
        </ul>
        <t>A total order is deliberate rather than incidental. <xref target="asl-unknown"/> requires a
verifier to refuse an assurance requirement it cannot evaluate, which is only
fail-closed if "stronger than" is decidable from the registry alone. The cost
is that genuinely incomparable properties cannot be expressed here, which is
the reason the first item of expert guidance above sends them elsewhere.</t>
      </section>
      <section anchor="adg-rationale">
        <name>On the choice of <tt>adg</tt></name>
        <t>The action digest is named <tt>adg</tt>, for action digest, rather than the more
obvious <tt>act</tt>. <tt>act</tt> is unavailable: <xref target="RFC8693"/> Section 4.1 registers it as the
"Actor" claim, a JSON object identifying the acting party in a delegation chain.</t>
        <t>The conflict would have been substantive rather than cosmetic. The registered
claim is an object and this one is a string, so a general-purpose JWT
implementation that understands <xref target="RFC8693"/> could mis-handle a token defined by
this document, and a relying party processing both could not disambiguate them.</t>
        <t>A nested object holding all three digests under one registered name was also
considered. Three top-level claims were chosen instead because <tt>rqf</tt> is
<bcp14>OPTIONAL</bcp14>, and its presence or absence is load-bearing in <xref target="verify"/>: an absent
top-level claim is unambiguous in a way that an absent member of a present
object is not.</t>
      </section>
      <section anchor="media-types">
        <name>Media Types</name>
        <t>IANA is requested to register the following in the "Media Types" registry.</t>
        <table>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Value</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">Type name</td>
              <td align="left">application</td>
            </tr>
            <tr>
              <td align="left">Subtype name</td>
              <td align="left">oasnt+jwt</td>
            </tr>
            <tr>
              <td align="left">Required parameters</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">Optional parameters</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">Encoding considerations</td>
              <td align="left">binary; a JWS in compact serialization</td>
            </tr>
            <tr>
              <td align="left">Security considerations</td>
              <td align="left">See the Security Considerations of this document</td>
            </tr>
            <tr>
              <td align="left">Interoperability considerations</td>
              <td align="left">N/A</td>
            </tr>
            <tr>
              <td align="left">Published specification</td>
              <td align="left">This document</td>
            </tr>
            <tr>
              <td align="left">Applications that use this media type</td>
              <td align="left">Applications requiring evidence that a human authorized a specific action</td>
            </tr>
            <tr>
              <td align="left">Change controller</td>
              <td align="left">IETF</td>
            </tr>
          </tbody>
        </table>
        <t>The <tt>typ</tt> header parameter value <tt>oasnt+jwt</tt> is the subtype of this media type,
following the convention <xref target="RFC9068"/> establishes with <tt>at+jwt</tt>.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC7515">
          <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="RFC7638">
          <front>
            <title>JSON Web Key (JWK) Thumbprint</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="September" year="2015"/>
            <abstract>
              <t>This specification defines a method for computing a hash value over a JSON Web Key (JWK). It defines which fields in a JWK are used in the hash computation, the method of creating a canonical form for those fields, and how to convert the resulting Unicode string into a byte sequence to be hashed. The resulting hash value can be used for identifying or selecting the key represented by the JWK that is the subject of the thumbprint.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7638"/>
          <seriesInfo name="DOI" value="10.17487/RFC7638"/>
        </reference>
        <reference anchor="RFC6234">
          <front>
            <title>US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</title>
            <author fullname="D. Eastlake 3rd" initials="D." surname="Eastlake 3rd"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="May" year="2011"/>
            <abstract>
              <t>Federal Information Processing Standard, FIPS</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6234"/>
          <seriesInfo name="DOI" value="10.17487/RFC6234"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC7519">
          <front>
            <title>JSON Web Token (JWT)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
            <date month="May" year="2015"/>
            <abstract>
              <t>JSON Web Token (JWT) is a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object that is used as the payload of a JSON Web Signature (JWS) structure or as the plaintext of a JSON Web Encryption (JWE) structure, enabling the claims to be digitally signed or integrity protected with a Message Authentication Code (MAC) and/or encrypted.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7519"/>
          <seriesInfo name="DOI" value="10.17487/RFC7519"/>
        </reference>
        <reference anchor="RFC8126">
          <front>
            <title>Guidelines for Writing an IANA Considerations Section in RFCs</title>
            <author fullname="M. Cotton" initials="M." surname="Cotton"/>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <author fullname="T. Narten" initials="T." surname="Narten"/>
            <date month="June" year="2017"/>
            <abstract>
              <t>Many protocols make use of points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t>
              <t>To make assignments in a given registry prudently, guidance describing the conditions under which new values should be assigned, as well as when and how modifications to existing values can be made, is needed. This document defines a framework for the documentation of these guidelines by specification authors, in order to assure that the provided guidance for the IANA Considerations is clear and addresses the various issues that are likely in the operation of a registry.</t>
              <t>This is the third edition of this document; it obsoletes RFC 5226.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="26"/>
          <seriesInfo name="RFC" value="8126"/>
          <seriesInfo name="DOI" value="10.17487/RFC8126"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.thallapelly-oasnt-enforce">
          <front>
            <title>OASNT-ENFORCE: Request-Bound Enforcement of Attested Action Authorization</title>
            <author fullname="Arun Thallapelly" initials="A." surname="Thallapelly">
              <organization>OmniArx</organization>
            </author>
            <date day="1" month="August" year="2026"/>
            <abstract>
              <t>   This document profiles the enforcement of OASNT tokens at the point
   of execution.  It defines the OASNT-Token HTTP field, the rules by
   which an enforcement point derives the observed request from the
   octets it will itself forward, a verification procedure for relying
   parties that hold no request-to-action mapping, uniform refusal
   behavior, and the set of refusals a conforming enforcement point is
   required to produce.  An enforcement point conforming to this profile
   makes a human approval a precondition of execution for the requests
   it fronts, without any change to the protected service.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thallapelly-oasnt-enforce-00"/>
        </reference>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC8693">
          <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="RFC9068">
          <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>
        <reference anchor="I-D.schrock-ep-authorization-receipts">
          <front>
            <title>Authorization Receipts for High-Risk Agent Actions</title>
            <author fullname="Iman Schrock" initials="I." surname="Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date day="9" month="August" year="2026"/>
            <abstract>
              <t>   This document defines the EMILIA Protocol (EP) authorization receipt,
   an evidence artifact binding an enrolled approver key to one
   canonical action before execution.  An approver-held key signs an
   Authorization Context containing the action hash, policy reference,
   shared authorization instance, per-signoff nonce, audience, and
   validity window.  A Trust Receipt carries the signed contexts,
   terminal consumption record, and Merkle inclusion material so a
   relying party can verify the recorded event offline under
   independently selected log, directory, policy, and approver trust
   inputs.

   The receipt establishes only the guarantees of the selected
   verification profile.  The mapping from an enrolled approver
   identifier to a natural person is asserted by the directory
   authority.  Offline verification does not establish current
   revocation status, global non-replay, comprehension, legality,
   safety, or execution.  Replay prevention requires an online atomic
   consumption store at the executor.  The state-machine invariants are
   machine-checked under the assumptions stated in this document.

   This revision defines the closed EP-AUTHORIZATION-BUNDLE-v1 pre-
   execution profile and its verification algorithm.  The bundle carries
   the Action Object, signed Authorization Contexts, signoffs, key
   proofs, and presentation evidence; it deliberately carries no
   terminal consumption or execution claim.  An optional, profile-
   identified authorization binding can commit the human evidence to an
   independently verified native authorization artifact without
   replacing that artifact or making this receipt format depend on its
   transport or trust model.

   A receipt is evidence, not authorization.  This document does not
   treat a local user interaction as an authorization decision.  It
   defines one evidence artifact that an authorization architecture can
   use in a human-confirmation flow: the signed Authorization Context is
   action-bound confirmation evidence an authorization server MAY
   validate and bind to the grant it issues.  The resulting Trust
   Receipt records terminal consumption and remains evidence; neither
   object makes the authorization decision.  That decision remains with
   the authorization server.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-ep-authorization-receipts-11"/>
        </reference>
        <reference anchor="I-D.schrock-ep-action-evidence-graph">
          <front>
            <title>Action Evidence Graphs and Evidence Policy Replay for High-Risk Agent Actions (EP-AEG)</title>
            <author fullname="Iman Schrock" initials="I." surname="Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date day="3" month="July" year="2026"/>
            <abstract>
              <t>   The standards landscape now produces many signed artifacts about an
   AI agent's action: workload identity credentials, delegation and
   grant tokens, call-chain transaction tokens, runtime attestation
   results, pre-execution policy permits, named-human authorization
   receipts, post-execution action records, and transparency-log
   inclusion receipts.  No specification defines how a relying party
   decides whether a collection of such artifacts is SUFFICIENT to rely
   on for a given purpose: releasing a payment, honoring a trade,
   satisfying an auditor, or paying an insurance claim.  This document
   defines three things that together fill that layer: the Action
   Evidence Graph (EP-AEG), a portable, content-addressed graph of
   references to signed artifacts about one action, whose identity is
   independent of how much of it is disclosed; Evidence Policy Replay, a
   deterministic, offline evaluation of a graph against a RELYING-PARTY-
   supplied evidence policy, yielding one of five closed verdicts
   (admissible, missing_evidence, stale, conflicted, unverifiable) with
   a replay digest that lets any third party recompute the decision; and
   the Reliance Result (EP-RELIANCE-RESULT), the verdict as a signed
   artifact, making the reliance decision itself auditable evidence.
   Six policy packs profile the mechanism for concrete irreversible
   action classes.  A verdict is evidence of sufficiency under a stated
   policy; it is not adjudication, and the graph never carries its own
   sufficiency bar.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-ep-action-evidence-graph-00"/>
        </reference>
        <reference anchor="I-D.schrock-action-evidence-boundary">
          <front>
            <title>The Action Evidence Boundary for Consequential Agent Effects</title>
            <author fullname="Iman Schrock" initials="I." surname="Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date day="2" month="August" year="2026"/>
            <abstract>
              <t>   Consequential agent actions can cross identity, transport,
   authorization, policy, and execution systems.  Each system can
   produce a valid artifact while the executor still lacks a safe rule
   for joining the artifacts to the exact effect, consuming one-time
   authority, and handling an uncertain outcome.  This document defines
   the Action Evidence Boundary (AEB), an executor-side processing model
   for that lifecycle.

   AEB requires native artifact verification, Canonical Action
   Identifier (CAID) matching, Authorization Evidence Chain (AEC)
   satisfaction, a separate local authorization decision, durable atomic
   consumption or reservation, invocation, closed effect outcomes, and
   authenticated reconciliation.  It defines no receipt or token format,
   no policy language, no universal evidence taxonomy, and no new
   registry.  Native workload credentials, message signatures, attested
   per-action tokens, permit records, authorization receipts, and status
   mechanisms retain their own semantics and verifiers.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-action-evidence-boundary-03"/>
        </reference>
        <reference anchor="I-D.rampalli-cross-org-delegation-mapping">
          <front>
            <title>A Layered Requirements Mapping for Cross-Organization Agent Delegation</title>
            <author fullname="KARTHIK RAMPALLI" initials="R." surname="Karthik">
              <organization>Glyphzero, Inc.</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   This document records a comparative mapping of two evidence layers
   for cross-organization AI agent delegation: a per-hop delegation
   chain (PEDIGREE) and a named-human authorization root (the EMILIA
   Protocol binding and evidence-graph drafts), evaluated against the
   nine requirements of draft-reece-wimse-cross-org-delegation under a
   no-shared-operator assumption.  It also records a verifier-facing
   composition model in which key possession, delegated authority, and
   pre-execution human authorization are diagnostically separate inputs
   with independent failure behavior, joined by action digest.  The
   mapping was developed on the WIMSE mailing list; corrections continue
   there.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-rampalli-cross-org-delegation-mapping-05"/>
        </reference>
        <reference anchor="I-D.nivalto-agentroa-route-authorization">
          <front>
            <title>Agent Route Origin Authorization (AgentROA): A Cryptographic Policy Enforcement Framework for AI Agent Actions</title>
            <author fullname="Joseph Michalak" initials="J." surname="Michalak">
              <organization>Nivalto, Inc.</organization>
            </author>
            <date day="15" month="April" year="2026"/>
            <abstract>
              <t>   This document specifies the Agent Route Origin Authorization
   (AgentROA) framework, a cryptographic policy enforcement model for
   governing the actions of autonomous AI agents.  AgentROA introduces
   three core protocol objects: the Agent Route Origin Authorization
   (ROA) envelope, the Agent Route Attestation (ARA) per-hop receipt,
   and the Agent Execution Receipt (AER).  Together these objects
   enable: (1) cryptographic binding of an agent's authorized action
   scope to a signed policy envelope at session initialization,
   (2) per-hop attestation across multi-agent delegation chains with
   monotonic scope-narrowing semantics (no policy envelope may be
   expanded by a downstream delegation), and (3) cryptographic receipts
   produced intrinsically by the enforcement decision at each capability
   invocation boundary.  The framework is modeled on the BGP Route
   Origin Authorization (ROA) concept from RPKI (RFC 6480) applied to
   the AI agent execution domain.

   The Border Gateway enforcement model positions a cryptographic
   enforcement process at a capability invocation boundary — external
   to the agent's execution context — reducing the risk that governance
   decisions are influenced by the governed agent by placing
   enforcement in a separate process boundary.  The Border Gateway
   model is topology-independent: it may be deployed as a protocol-
   specific proxy in front of Model Context Protocol (MCP) servers,
   as a service mesh enforcement component covering all inter-service
   calls, as a network egress gateway covering all outbound capability
   invocations regardless of protocol, or as a domain-specific
   execution boundary.  The protocol objects defined herein function
   identically across all deployment topologies.  This document
   establishes the architectural model, protocol object schemas, and
   enforcement semantics for the AgentROA framework.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-nivalto-agentroa-route-authorization-01"/>
        </reference>
        <reference anchor="I-D.mcguinness-oauth-actor-proofs">
          <front>
            <title>OAuth Actor-Signed Hop Proofs</title>
            <author fullname="Karl McGuinness" initials="K." surname="McGuinness">
              <organization>Independent</organization>
            </author>
            <date day="4" month="July" year="2026"/>
            <abstract>
              <t>   This document defines OAuth Actor-Signed Hop Proofs, an optional
   companion profile for delegated OAuth tokens that conform to the
   OAuth Actor Profile for Delegation.  It introduces the actor_proofs
   claim, a signed per-hop proof chain in which the actor added at each
   visible hop signs its own participation and the target binding it
   authorized for that hop.  Proofs are linked into a hash chain, are
   validated against actor verification keys resolved through pre-
   established trust, and optionally cross-reference sibling actor
   receipts.  This document also defines a token request parameter for
   conveying proofs at issuance, and metadata and introspection
   parameters for advertising and consuming actor-proof support.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mcguinness-oauth-actor-proofs-00"/>
        </reference>
        <reference anchor="I-D.mishra-oauth-agent-grants">
          <front>
            <title>Delegated Agent Authorization Protocol (DAAP)</title>
            <author fullname="Sanjeev Kumar" initials="S." surname="Kumar">
              <organization>Grantex</organization>
            </author>
            <date day="2" month="March" year="2026"/>
            <abstract>
              <t>   Artificial intelligence (AI) agents increasingly take autonomous
   actions -- submitting forms, initiating payments, and sending
   communications -- on behalf of human users across third-party
   services.  This document defines the Delegated Agent Authorization
   Protocol (DAAP), an open, model-neutral, framework-agnostic protocol
   that specifies: cryptographic agent identity using Decentralized
   Identifiers (DIDs); a human-consent-based grant authorization flow
   modelled on OAuth 2.0; a signed JSON Web Token (JWT) grant token
   format with agent-specific claims; a revocation model with online
   verification; a hash-chained append-only audit trail; a policy engine
   for automated authorization decisions; a multi-agent delegation model
   with cascade revocation; budget controls for spending limits; real-
   time event streaming; a credential vault for secure secret storage;
   and external policy backend integration with OPA and Cedar.  DAAP
   fills a gap unaddressed by existing OAuth 2.0 extensions: verifying
   that a specific human authorized a specific AI agent to perform a
   specific action, revoking that authorization in real time, and
   producing a tamper-evident record of what the agent did.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-mishra-oauth-agent-grants-01"/>
        </reference>
        <reference anchor="I-D.ietf-wimse-arch">
          <front>
            <title>Workload Identity in a Multi System Environment (WIMSE) Architecture</title>
            <author fullname="Joseph A. Salowey" initials="J. A." surname="Salowey">
              <organization>Palo Alto Networks</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
              <organization>University of the Bundeswehr Munich</organization>
            </author>
            <date day="6" month="July" year="2026"/>
            <abstract>
              <t>   The increasing prevalence of cloud computing and micro service
   architectures has led to the rise of complex software functions being
   built and deployed as workloads, where a workload is defined as
   software executing for a specific purpose, potentially comprising one
   or more running instances.  This document discusses an architecture
   for designing and standardizing protocols and payloads for conveying
   workload identity and security context information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-arch-08"/>
        </reference>
        <reference anchor="I-D.ni-wimse-ai-agent-identity">
          <front>
            <title>WIMSE Applicability for AI Agents</title>
            <author fullname="Ni Yuan" initials="N." surname="Yuan">
              <organization>Huawei</organization>
            </author>
            <author fullname="Peter Chunchi Liu" initials="P. C." surname="Liu">
              <organization>Huawei</organization>
            </author>
            <date day="28" month="February" year="2026"/>
            <abstract>
              <t>   This document discusses WIMSE applicability to Agentic AI, so as to
   establish independent identities and credential management mechanisms
   for AI agents.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ni-wimse-ai-agent-identity-02"/>
        </reference>
        <reference anchor="WEBAUTHN" target="https://www.w3.org/TR/webauthn-3/">
          <front>
            <title>Web Authentication: An API for accessing Public Key Credentials</title>
            <author>
              <organization>W3C</organization>
            </author>
            <date year="2026"/>
          </front>
        </reference>
        <reference anchor="PSD2-RTS" target="https://eur-lex.europa.eu/eli/reg_del/2018/389/oj">
          <front>
            <title>Commission Delegated Regulation (EU) 2018/389, regulatory technical standards for strong customer authentication and common and secure open standards of communication</title>
            <author>
              <organization>European Commission</organization>
            </author>
            <date year="2018"/>
          </front>
        </reference>
      </references>
    </references>

<section anchor="test-vectors">
      <name>Test Vectors</name>
      <t>The key, clock and nonce used below are fixed (<tt>iat</tt> = 1800000000), so every canonical string, digest and
signing input here is byte-reproducible. An implementation that agrees with this
document computes exactly these values.</t>
      <t>The signatures are not reproducible. ECDSA draws a fresh random value for each
signature, so signing an identical input again yields a different and equally valid
signature. Verify the signatures in these vectors; do not compare them octet-wise
against your own output.</t>
      <t>Backslash and line feed are shown escaped as <tt>\\</tt> and <tt>\n</tt> so the exact octets are
unambiguous on the page.</t>
      <section anchor="key">
        <name>Key</name>
        <sourcecode type="json"><![CDATA[
{
  "kty": "EC",
  "crv": "P-256",
  "x": "P7Vp3OZi4XYii2VHo4T08zkjKrKhCt-gY-oAATkXaao",
  "y": "QNEaWqPG2EI5-2AdT8oX-S4odj8TH9wj_JW2I2ILBoc"
}
]]></sourcecode>
        <t>Thumbprint (RFC 7638), used as <tt>cnf.jkt</tt>:</t>
        <artwork><![CDATA[
xcDbc2-MsRIENQynAYGtJ0Vc0xPTBdfj_1iAeI9MMFo
]]></artwork>
        <t>The private component is <tt>d</tt> = <tt>Y2j9oKoLsw3p24brNicuYCjBxv0LVUWLHSYc9Wzvy5A</tt>. It is published here so that
implementers can reproduce signatures; it <bcp14>MUST NOT</bcp14> be used for anything else.</t>
      </section>
      <section anchor="v1-canonical-action-and-adg">
        <name>V1: canonical action and <tt>adg</tt></name>
        <t>Action type <tt>payment.transfer</tt>, parameters:</t>
        <sourcecode type="json"><![CDATA[
{
  "amount": "100.00",
  "payee": "acct_9"
}
]]></sourcecode>
        <t>Canonical action string:</t>
        <artwork><![CDATA[
payment.transfer|amount=100.00&payee=acct_9
]]></artwork>
        <t><tt>adg</tt> = <tt>YlHp3M4JIWFPPZIVAwAmYOBOMfUyb2bjE6ve3AD2iaQ</tt></t>
      </section>
      <section anchor="v2-canonical-display-and-dsp">
        <name>V2: canonical display and <tt>dsp</tt></name>
        <t>Canonical display string (line feeds shown as <tt>\n</tt>):</t>
        <artwork><![CDATA[
payment.transfer\namount: 100.00\npayee: acct_9
]]></artwork>
        <t>The same string as it appears to the user:</t>
        <artwork><![CDATA[
payment.transfer
amount: 100.00
payee: acct_9
]]></artwork>
        <t><tt>dsp</tt> = <tt>uSEgOG9UC1IWGxzBalJv5cIbfxE8kxmoKF25yrRl1fs</tt></t>
      </section>
      <section anchor="v3-escaping">
        <name>V3: escaping</name>
        <t>A parameter value containing every canonical-action delimiter, demonstrating that
escaping prevents a value from impersonating a separator.</t>
        <sourcecode type="json"><![CDATA[
{
  "note": "a=b&c|d\\e"
}
]]></sourcecode>
        <t>Canonical action string:</t>
        <artwork><![CDATA[
payment.transfer|note=a\\=b\\&c\\|d\\\\e
]]></artwork>
        <t><tt>adg</tt> = <tt>3R0-FrNwSzXzvWmcFyDrQipdaJZmDUULlpX87bXParo</tt></t>
      </section>
      <section anchor="v4-request-fingerprint-and-rqf">
        <name>V4: request fingerprint and <tt>rqf</tt></name>
        <sourcecode type="json"><![CDATA[
{
  "method": "POST",
  "path": "/v1/transfers",
  "orgId": "org_acme",
  "scope": "payments:write",
  "body": "{\"amount\":\"100.00\",\"payee\":\"acct_9\"}"
}
]]></sourcecode>
        <t>SHA-256 of the body, hex:</t>
        <artwork><![CDATA[
05be0ab936cd56cf971cc8b57f7132a690d4ed3bf63b37ac3cb81d6e289f847a
]]></artwork>
        <t>Fingerprint pre-image, with <tt>&lt;NUL&gt;</tt> marking a single 0x00 octet and the trailing
32 octets being the raw body digest above:</t>
        <artwork><![CDATA[
POST<NUL>/v1/transfers<NUL>org_acme<NUL>payments:write<NUL><body-digest>
]]></artwork>
        <t><tt>rqf</tt> = <tt>1GL7CIg1JkKGaGfHgdF5_93rVx4FqfjoY0lYZ6xbjQ0</tt></t>
      </section>
      <section anchor="v5-a-complete-token-that-verifies">
        <name>V5: a complete token that verifies</name>
        <t>Protected header:</t>
        <sourcecode type="json"><![CDATA[
{"alg":"ES256","typ":"oasnt+jwt"}
]]></sourcecode>
        <t>Payload:</t>
        <sourcecode type="json"><![CDATA[
{
  "sub": "agent-1",
  "adg": "YlHp3M4JIWFPPZIVAwAmYOBOMfUyb2bjE6ve3AD2iaQ",
  "dsp": "uSEgOG9UC1IWGxzBalJv5cIbfxE8kxmoKF25yrRl1fs",
  "rqf": "1GL7CIg1JkKGaGfHgdF5_93rVx4FqfjoY0lYZ6xbjQ0",
  "int": "clean",
  "jti": "0123456789abcdef0123456789abcdef",
  "iat": 1800000000,
  "exp": 1800000060,
  "cnf": {
    "jkt": "xcDbc2-MsRIENQynAYGtJ0Vc0xPTBdfj_1iAeI9MMFo"
  }
}
]]></sourcecode>
        <t>Compact serialization:</t>
        <artwork><![CDATA[
eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hc250K2p3dCJ9.eyJzdWIiOiJhZ2VudC0
xIiwiYWRnIjoiWWxIcDNNNEpJV0ZQUFpJVkF3QW1ZT0JPTWZVeWIyYmpFNnZlM0F
EMmlhUSIsImRzcCI6InVTRWdPRzlVQzFJV0d4ekJhbEp2NWNJYmZ4RThreG1vS0Y
yNXlyUmwxZnMiLCJycWYiOiIxR0w3Q0lnMUprS0dhR2ZIZ2RGNV85M3JWeDRGcWZ
qb1kwbFlaNnhialEwIiwiaW50IjoiY2xlYW4iLCJqdGkiOiIwMTIzNDU2Nzg5YWJ
jZGVmMDEyMzQ1Njc4OWFiY2RlZiIsImlhdCI6MTgwMDAwMDAwMCwiZXhwIjoxODA
wMDAwMDYwLCJjbmYiOnsiamt0IjoieGNEYmMyLU1zUklFTlF5bkFZR3RKMFZjMHh
QVEJkZmpfMWlBZUk5TU1GbyJ9fQ.1rS6k1Yz9ZsYWpk51vTv0GDJX4VJ9vp3Qb9v
4ZNG1VjQQwvVvUpUjNao7ZA0hxmBqEOHPLv8NY5C_Jqjl-SJzA
]]></artwork>
        <t>Verified at time 1800000000 against the action of V1 and the request of V4, with the
key above enrolled, this token is accepted.</t>
      </section>
      <section anchor="v6-refusal-vectors">
        <name>V6: refusal vectors</name>
        <t>Each vector below alters exactly one thing relative to V5 and is refused. The
reasons shown are those an implementation of this document produces. The names
are not normative; the fact of refusal is.</t>
        <section anchor="r1-action-mismatch">
          <name>R1: action mismatch</name>
          <t>The token is minted for a different amount than the verifier is about to execute.</t>
          <t>Compact serialization:</t>
          <artwork><![CDATA[
eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hc250K2p3dCJ9.eyJzdWIiOiJhZ2VudC0
xIiwiYWRnIjoiZHNNUHRxVkJHYjg5MHNfWEVNUDZ3XzZ6QVg2a1lEQ0JqYlo5Y3N
HYkVYTSIsImRzcCI6InVTRWdPRzlVQzFJV0d4ekJhbEp2NWNJYmZ4RThreG1vS0Y
yNXlyUmwxZnMiLCJycWYiOiIxR0w3Q0lnMUprS0dhR2ZIZ2RGNV85M3JWeDRGcWZ
qb1kwbFlaNnhialEwIiwiaW50IjoiY2xlYW4iLCJqdGkiOiIwMTIzNDU2Nzg5YWJ
jZGVmMDEyMzQ1Njc4OWFiY2RlZiIsImlhdCI6MTgwMDAwMDAwMCwiZXhwIjoxODA
wMDAwMDYwLCJjbmYiOnsiamt0IjoieGNEYmMyLU1zUklFTlF5bkFZR3RKMFZjMHh
QVEJkZmpfMWlBZUk5TU1GbyJ9fQ.jd0B7NW38g3hBK0YceD2eGRqgd0ApCm6eU_8
QlouotpXwLtOx9H9EB3bq8Dd1XJUybHr2Bheqwj_G_Pt2LPBLg
]]></artwork>
          <t>Refused: <tt>action-mismatch</tt></t>
        </section>
        <section anchor="r2-display-mismatch">
          <name>R2: display mismatch</name>
          <t>adg binds the executing action, so action binding alone would accept. dsp carries the digest of a different disclosure, which is what the human read.</t>
          <t>Compact serialization:</t>
          <artwork><![CDATA[
eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hc250K2p3dCJ9.eyJzdWIiOiJhZ2VudC0
xIiwiYWRnIjoiWWxIcDNNNEpJV0ZQUFpJVkF3QW1ZT0JPTWZVeWIyYmpFNnZlM0F
EMmlhUSIsImRzcCI6Ilg0OEc4THhNRUZwWlR3NjduWUw5dEh0OW9SSDV5YXI5RVR
3RVNkaWtZT1UiLCJycWYiOiIxR0w3Q0lnMUprS0dhR2ZIZ2RGNV85M3JWeDRGcWZ
qb1kwbFlaNnhialEwIiwiaW50IjoiY2xlYW4iLCJqdGkiOiIwMTIzNDU2Nzg5YWJ
jZGVmMDEyMzQ1Njc4OWFiY2RlZiIsImlhdCI6MTgwMDAwMDAwMCwiZXhwIjoxODA
wMDAwMDYwLCJjbmYiOnsiamt0IjoieGNEYmMyLU1zUklFTlF5bkFZR3RKMFZjMHh
QVEJkZmpfMWlBZUk5TU1GbyJ9fQ.ybY-_yQxFfEoqxvXdRkBnhnNxLup39qmHv6T
aznUIoHKt3RTmeuIDc8ebQqMsL4dbIhFGgdI3Og-2GEf0HuVmQ
]]></artwork>
          <t>Refused: <tt>display-mismatch</tt></t>
        </section>
        <section anchor="r3-request-mismatch">
          <name>R3: request mismatch</name>
          <t>Same action, aimed at a different request path.</t>
          <t>Compact serialization:</t>
          <artwork><![CDATA[
eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hc250K2p3dCJ9.eyJzdWIiOiJhZ2VudC0
xIiwiYWRnIjoiWWxIcDNNNEpJV0ZQUFpJVkF3QW1ZT0JPTWZVeWIyYmpFNnZlM0F
EMmlhUSIsImRzcCI6InVTRWdPRzlVQzFJV0d4ekJhbEp2NWNJYmZ4RThreG1vS0Y
yNXlyUmwxZnMiLCJycWYiOiJWbDZfTV90RUJ3RXBOcExNbFo4WENDM0M3dHRCYWF
pbElEWjZPWllEZnhJIiwiaW50IjoiY2xlYW4iLCJqdGkiOiIwMTIzNDU2Nzg5YWJ
jZGVmMDEyMzQ1Njc4OWFiY2RlZiIsImlhdCI6MTgwMDAwMDAwMCwiZXhwIjoxODA
wMDAwMDYwLCJjbmYiOnsiamt0IjoieGNEYmMyLU1zUklFTlF5bkFZR3RKMFZjMHh
QVEJkZmpfMWlBZUk5TU1GbyJ9fQ.ULJRBLA8zNugzy10VkRcIyh3GrL2naYG9mD4
LMChGuwxg1dYhAHHT1NEHIYvhEASJrX-sFs0hjk-pQVWdMG_Mw
]]></artwork>
          <t>Refused: <tt>rqf-mismatch</tt></t>
        </section>
        <section anchor="r4-request-binding-absent">
          <name>R4: request binding absent</name>
          <t>The rqf claim is omitted entirely while the verifier is pinning a request. The token <bcp14>MUST</bcp14> be refused rather than accepted as action-bound only.</t>
          <t>Compact serialization:</t>
          <artwork><![CDATA[
eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hc250K2p3dCJ9.eyJzdWIiOiJhZ2VudC0
xIiwiYWRnIjoiWWxIcDNNNEpJV0ZQUFpJVkF3QW1ZT0JPTWZVeWIyYmpFNnZlM0F
EMmlhUSIsImRzcCI6InVTRWdPRzlVQzFJV0d4ekJhbEp2NWNJYmZ4RThreG1vS0Y
yNXlyUmwxZnMiLCJpbnQiOiJjbGVhbiIsImp0aSI6IjAxMjM0NTY3ODlhYmNkZWY
wMTIzNDU2Nzg5YWJjZGVmIiwiaWF0IjoxODAwMDAwMDAwLCJleHAiOjE4MDAwMDA
wNjAsImNuZiI6eyJqa3QiOiJ4Y0RiYzItTXNSSUVOUXluQVlHdEowVmMweFBUQmR
mal8xaUFlSTlNTUZvIn19.Cf08Diz2lvF-jncola2wVEwf40xC-lxnAMw6SjoewE
ekr-s0q_p1pV98VrNzgZ1Eb7MhzojNGmIRBWT65DOLqw
]]></artwork>
          <t>Refused: <tt>rqf-missing</tt></t>
        </section>
        <section anchor="r5-expired">
          <name>R5: expired</name>
          <t>Verified one second after exp.</t>
          <t>Compact serialization:</t>
          <artwork><![CDATA[
eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hc250K2p3dCJ9.eyJzdWIiOiJhZ2VudC0
xIiwiYWRnIjoiWWxIcDNNNEpJV0ZQUFpJVkF3QW1ZT0JPTWZVeWIyYmpFNnZlM0F
EMmlhUSIsImRzcCI6InVTRWdPRzlVQzFJV0d4ekJhbEp2NWNJYmZ4RThreG1vS0Y
yNXlyUmwxZnMiLCJycWYiOiIxR0w3Q0lnMUprS0dhR2ZIZ2RGNV85M3JWeDRGcWZ
qb1kwbFlaNnhialEwIiwiaW50IjoiY2xlYW4iLCJqdGkiOiIwMTIzNDU2Nzg5YWJ
jZGVmMDEyMzQ1Njc4OWFiY2RlZiIsImlhdCI6MTgwMDAwMDAwMCwiZXhwIjoxODA
wMDAwMDYwLCJjbmYiOnsiamt0IjoieGNEYmMyLU1zUklFTlF5bkFZR3RKMFZjMHh
QVEJkZmpfMWlBZUk5TU1GbyJ9fQ.5WJUcmpcgNE3GrVIMFIFxcyla40xvxn6tdUE
prKYJvEGIXy_lCPu6xS0MM7Nz6bJbeZCysc1M3_wPzeZdZ5zTA
]]></artwork>
          <t>Refused: <tt>expired</tt></t>
        </section>
        <section anchor="r6-replay">
          <name>R6: replay</name>
          <t>The jti has already been recorded by this verifier.</t>
          <t>Compact serialization:</t>
          <artwork><![CDATA[
eyJhbGciOiJFUzI1NiIsInR5cCI6Im9hc250K2p3dCJ9.eyJzdWIiOiJhZ2VudC0
xIiwiYWRnIjoiWWxIcDNNNEpJV0ZQUFpJVkF3QW1ZT0JPTWZVeWIyYmpFNnZlM0F
EMmlhUSIsImRzcCI6InVTRWdPRzlVQzFJV0d4ekJhbEp2NWNJYmZ4RThreG1vS0Y
yNXlyUmwxZnMiLCJycWYiOiIxR0w3Q0lnMUprS0dhR2ZIZ2RGNV85M3JWeDRGcWZ
qb1kwbFlaNnhialEwIiwiaW50IjoiY2xlYW4iLCJqdGkiOiIwMTIzNDU2Nzg5YWJ
jZGVmMDEyMzQ1Njc4OWFiY2RlZiIsImlhdCI6MTgwMDAwMDAwMCwiZXhwIjoxODA
wMDAwMDYwLCJjbmYiOnsiamt0IjoieGNEYmMyLU1zUklFTlF5bkFZR3RKMFZjMHh
QVEJkZmpfMWlBZUk5TU1GbyJ9fQ.oEHHulmYbnSkZEyh8MYr4N_Qim6bxJL2JtB1
6V1CarsOf12wx77w_krvPz9CWajNoXrqUyTWz8WKplhaHi4xPw
]]></artwork>
          <t>Refused: <tt>replay</tt></t>
        </section>
      </section>
    </section>
    <section numbered="false" anchor="change-log">
      <name>Change Log</name>
      <t>RFC Editor: please remove this section before publication.</t>
      <t>Since <tt>-01</tt>:</t>
      <ul spacing="normal">
        <li>
          <t>New <xref target="asl"/> defines the <tt>asl</tt> claim, the derivation of an effective level as
the lesser of the claim and the enrollment ceiling, and the requirement that
an unrecognized level be treated as no statement rather than as the weakest
registered one. New <xref target="iana-asl"/> creates the "OASNT Assurance Levels"
registry that the claim's values are drawn from, under Specification
Required, with a rank field so that "stronger than" is decidable from the
registry alone. Thresholds are deliberately not defined here; assurance
floors and staleness are relying-party policy and belong to
<xref target="I-D.thallapelly-oasnt-enforce"/>. <tt>-01</tt> carried no assurance claim at all,
so no profile could refuse on one normatively.</t>
        </li>
        <li>
          <t>New <xref target="approval-window"/> states the scope boundary between approval and
execution. It records that the canonical display is a deterministic
function of the action and carries no free-text member, so a disclosure
cannot assert a fact about the world unless that fact is an action
parameter; that a parameter holding a snapshot of mutable state is bound
but never revalidated, because <xref target="verify"/> step 9 recomputes from the
verifier's representation of the action rather than from live state; and
that a relying party <bcp14>MUST NOT</bcp14> read a digest match as a freshness check.
As published, <tt>-01</tt> warned of none of this. Raised in
executor-implementer review.</t>
        </li>
        <li>
          <t><xref target="verify"/> step 6 now bounds the token lifetime. A minter <bcp14>SHOULD</bcp14> set <tt>exp</tt>
no more than 120 seconds after <tt>iat</tt>, and a verifier <bcp14>MUST</bcp14> refuse a token
declaring a longer interval than its own configured maximum. <tt>-01</tt>
required and checked <tt>exp</tt> but bounded it nowhere, so the abstract's
"short-lived" had nothing normative behind it and the width of the
approval window was left to the least trusted component in the system.</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The request-fingerprint construction in <xref target="canon-rqf"/> was shaped by published
work on per-request, action-bound authentication for autonomous agents, and by
discussion of human-authorization binding on the WIMSE mailing list.</t>
      <t>Iman Schrock asked what happens to a token whose disclosure was true at
approval and is no longer true at execution. The scope boundary in
<xref target="approval-window"/>, the warning about parameters carrying mutable state,
and the lifetime bound in <xref target="verify"/> step 6 are all answers to that
question.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963LbSpLmfzwFViei2/aQOrpbkvv0rKyLJR1LsnW1NO6w
QKBIQgIBGgBF0Zd5ln2WfbLNa6EAUj7untmJ2J3uiO62SLBQlZWZlZcvs9rt
tlfGZWI2/bmTrbPj801/qyxNUZrI3wrLOEv9rVHZz/L4S0B/nWf3Ji3mvKDT
yc2D/mrOi7IwDQYwTJQH3bJd9oMkCYYmSSbtLCjSsr2w5IVBaXpZPtn0izLy
4mG+6Zf5qCiXFhY24OsgNwEMeGbCUR6Xkznv3kzGWR5t+v8W0JxoBi0/cCfU
8q+uzw7gvy1/kHXixMD3PZOWf/Pg+TT6FCRZCrOamMIbxjBSmYUtv8jyMjfd
Av41GeA//ubxoJue3/bjtAAqzPvn1Ro83/d5eVv5KG1+k+W9IJX5bPongzTe
yh/xCzMI4mTTD+A3/zOIHoDOQaeYD7OBl2b5AJ5/MPBG/3Rv++Xq4qr+c215
Xf65trS8Iv9cWVvRT9eXVjeqn+k/1xeX1ja9OO26Ix+0d+ant8LgQ6G+emPZ
vmR9bWNZP11YW9cRirCfZ+F92wzbNdq3cxOaeFgWsx4k5mmbhzgyaWjavTwY
9pvPNR/qZKM0CoBB5Lk8GAxh8nE7zLOiaAOd25FJTI/fPgiGwzjt6cNp/BAk
Zdam7c+zoJ1no9LUZ6zPDsLeKE5Tg4PiAziTLG8P8yzr2tUM4qKfB/oAjoqr
SKvlxqbstsfxoIC35GG/moh+GMvPcHkgZbSuq93XWxfn+8f4b99X2bsyHRI0
fC4URtoC2Xt34MNe+UEYwlxhsf67USeJQ/93M/G3c0PjBgnIIw0W5D1Tbvr9
shwWm7/+Oh6P58fL80C2X89Pfx2bDq4kbS//Sk9bjof/tJGHN/2r5W36MwJB
3fSXFpbW4M93ZztL7dPzs/qEt7MB0KdAlbDDWwIa49T0RgnriWe7F89hhMX1
X5fXN1p+zt+A8PulCfspLDLxSUKDPCpojQVsGiwwBIWQDUxO86vI4cOjPkjO
QP5ZoJYwfjY0qTNO1qVnRqn8ajZdzChvJ+ZxHv4/Gwbwf7+aJP4VpvgJuOtX
nfSv2d1TdNrFH5og9Ssq1Oi2uO61QbHi//gg8WUO7OV55/248EFPjgawLD8y
3RgY0IdF+qRD/RJVK6gvXMIQfuEfXp21O0EBhA3tVoN28sb9OOzDc31Y8xi0
JssNjPgQh8YHremzvsTBgxIeLIYmjLvANv3RIIBXIA09eXzczwrjg4Yq44GB
0UFFo/b1x0HhB0UBbGeiSufCXECf2gE9lmAZhEYHpRBEQScxfhQXYZIVuE2w
8DCfDMuM1ABufjLxedZlhiTwaPH+syuc8HU28s+M8Q8Kv/o77qXP5+X4AY0K
cwBxSEx7VIDKL2ByZTsBrRe1PGSPQQBEiKIYZ8cvM9X7cAVhlgJRS+Pvn5+/
A/b8PAKCzfOWDeIoSozn/eIfoCaJRrRIzzubwLk4KIBI8NOA3j/xzSNwYkkD
FjgK7xLTpSBK+0OTF1n65wImAbq4649jIOao9Gh3+Et/mJsC2QI+QY4YZMQk
wM88Pgw2jwoiS7NBNir4jCvgsQfjd2FZRcsL+0HaM6IqWiQkgyyKuxNYXQjH
KHwWBnk+QS1S8ZPwCGg+GClLYUGwlx7w9Ai2GmYyoIGAaPDxYN4/GxHnOfwY
ZcDEaVbKW4Tl0glzg18EYw8XBPKSsyDHJbJDmo2BHDiXETI4vAAewLML9uCq
b2B/AxkBtDxMjtSFGfLrzGNclC0ZaVSMaIeBzU3+YPJ2AeoWOKSMu7ALcPp6
3STo8U4gO7MN4ecwgRg/K5FZSexgmE4Q3vMSujGsEY0AU82ASAHMKnseOatC
jgQWSE2In3cm+KNEdVeS9UD44ElYGI6ewgOeIxATNElgdOQsOiuAmA+xGcOU
UiQt2j6g9os+7IIwCM8J6ccMhJLIdED5m/ePQaOGAVG7+jVsS9nH3wQgCzyO
aAH4J/8SfwC89tPaSnRRFOWoKYDFs7Lv94JhwcRlIfUKkF4kV+cO6AOMTEqq
b5IIn+IpgN4oeO2i2lW7+fhj4HjQJz1YCsgEMZRoHmAcEG3hHdJU1XO8wEoL
leYRWLPAJaJ2y00aAaNFHqsgZMSc5SYbWr0RACOAWOXDPE7tmDUFIrqDGKPi
FNWXBbNQjQA+iF1GwhgLSZkEoCGycSpaF8nuwftiEPNp7TylJvAFMFHYuNdx
GuEe4/e6RIcKrRofksTX5LOFMoWfDPGMy8sJUNvlBDCcgxKPBh83XLQd0AxV
PB3PMCBKErz0KWXuoTKf9w9wmE6Blh/+2jwOkywmadxEziFly7LYgSUVM+YK
mjRJPNR4Qzzm+Azhs6h6RtiBdxyPVpJccFKIBqamZYAZCiApC4lJCjPvf/0K
OgW06Pfv+DQ4C1nOew76oWhyWEdojwSBBztxVHhdtGDhM1YtmTMz+zT6KLBz
LFhIbLBHOviUgRWnwCfZGMmFJBIxU8nS2dd8NPNAJ0nh0cxjOozVxqZxrM6O
TBHm8Cq/MqtBnMqxAToiqWBecMy0/GEGumziGWDtkXAJ6Jc+qFB5M7AkzBvN
jnREpiCL2ZB4GagEtnivb3d13tsD096Ac3evNgorEPgDNw9ly+QpvBgUYjIi
IuVmkIG0OZ4gcmhoIqB74X39Kp7M9+8t0nt4HAPDolJ19BVOy+55u0k1phC8
ghQM+AIkWXAw9ANQU6QiM+SBcQxzhAHgEJ5HK+HUsNFb9OMh7vAJydcVrM7/
+kuOX5roO5gPsC+52AZw2JoucAiKgCw9iO6CEDduGODHpGqAprBI2L8BqhH4
C3QjTRZJAITF48CjiYXAvDnxnRwRrszCKwo6Yko9PmC/y0ClLg5hq1ytEA/g
Qzj9vB3ijyHbMsD7CWov/D28rKAPgwdwcYnDZGRSVDD5MTAFK6RffvH3Z3Cp
Oo8ebN5PeZkggXoMBapQ5TvSmXnJao9MXvTWI0/tXaSMf9TOuu1j//Moy0eD
mknrWMiOdLKoW/urBVsLbgQQyUMDDhRhkBawV8Azkzac8MyrhTAm+JG0G3jQ
RaAqQvJ9wDMHkQQeKKc3CYXSQ6FEFh/AmoCTohEbEaSHfsbDBhqR3KLUFWir
WSrD2ZGhLQo8V1MIPv2ObFK0iswwCSa8nxG5Np04QemGDY/isKTzUTbsp7xz
VJt8YszSVAGf6wXsHHhIYTAM5HUFfF90YzGlxJYToQDK3YPmFImw9IN/I8+B
BkLK4VGZ82Ya2S/8IaqcGqvDozkpFENGK8qeT6cumUDkGgkFSV0jH4nlIecK
bjK6bClZF/whWxFySFRCJ2dM7oHCBY8Fj3q/G8DcuqOk6TzxyY0MLTYHv7Wy
JoJyRCYnSiLZHvUp1BfpmgL4EAW3iGSBc9j4RZjhnsFHYSx2Mq4OXMUueF0x
zouiaTweSx4dVyKNQMzK2GQGA/sgRycJpp9av6QPbswIF+dVM2MdTxTT7UxM
txT/0LF3Q1BNaamWJytmH9wh0q0huMvwU3Y50F7ADYX/zQpyBXmOUQa6cMrE
FRUghzpKUUIzwfkPY1gtRSnoO3zJmJwU2lueEVOTg5DiXKPUwmEE0gA8joJV
U2Fqpz6IIWJ3KAMfomT14VgfanN4MREFVEnYVyok9Dw8kpB7x4sGhgAnZuA/
TWO0iXgvQFe6DIMD+eyr9QOiegdMAmY+tVpguQMToNFJ7IvU6JgwACuaNU8g
Vq3H756ylZgRkoi/EPuV9CWKq+M9cJDY1+Cg3XnWlvAlnTdOuCiDlwlDJJNX
cGYaoGP5iPT4/h32fatuE4QsIWLakRP5IztBtZGeNCoI5JcAUVA3WeMeOAbG
NXhIGGT+yJrmwhGWnBIUAGOw5I1CmQZC5bhsMkdVYYNXb5IWOQbuGQQcEQLZ
DFIIXotf81EHS4JVAGUKPox36UTLxFEmI4pjizRwATaL0Sf4k+/NI/qpuK3L
3qlvfvgelCavETTpkbHCoZNNOMLJTmIjVjxpDIgEyFyyCS2WA7Kie2CloUL2
tlHkKMIoKYwDUkQg2+Df8ckiOhz5Ztp6FjqT2Qd7VmaDOPTYoBzqz0CXtMnU
sQYwqzbkbhBhMO7QVIINBUWCTiBa3a5Vr3RKMwl9cdy+pTEG59ADIRRrFm2w
UmzROCdn0e4t/ZBpBcI2zeUNPd0xOigdsSKxvDN0KjP1k4mOiYE1zQzBsSo8
4GyETlyZwToSZBWOMx+4HdUAOooJKA7WJjQ5L8ZwQWSGqCnS0r6UfUGxN2lh
lQtX+LdB1Lv1u3k2IGZHaoD5wnE05RY3VPCsUqbPxRqW95MiEz0EdqPP/h9p
eFTOHGcS54diDHQqhpbN5AWxZTPSKeRW5RiT5EmSvqDxdRFiCDuKFx/00BDB
lxlnhqJQ5n0Njk3FH/D4sSZty7/NP3dvYV8xDMVnmle36GAAjo/yeuK6N456
rTsqYHHu9ECnA5nBYozgbDtj7QwKH+MUt3dlfEuxA5wvGMRIGCA57gdo1DYG
B+ISSP8K3pyBMYkMhsd5Xa4qfzIgs9JTLUK6lE+CKBugqNM0m2pGXEfZo2mt
I26VR1paIh1kS8FsQR/LKU/m3xb+uhsnxvpirq0JD6ciS934UZwq2G2rpzCg
WGcQz2EQ4gji4Mqv8MVONY5Ui/VH7kybTWg5MaxD5yGTTiwdQG+Z8L6gIJUz
I3cbSYVyMEliJKiN6FBnQeKD4hxPF+FtMSYkhJv6V6aD+aoUTgs5WdGeMv5t
+Yifn6ELaW5pF+SjN3gix+EtTLREaxK9RyDe16+aEYPTY4y8zaqRKEsBaxA1
2Aj0iHBr9NzMWLHUjv3KNKhkWcNY06aYRxZlJCG6Cb8cTYpYTT/WjZ08Gxeo
uchiCR4MGUM0MOn6Lh3yA477Fd4oLdkINvNMkqwDf4LKI37N4bAq4WgghquL
VoIBIvQ90HWBITAKJmZMezjK8WVebbkwGTxAlCTEEHhYcNCYtTWH7slQwfgm
mXzkezTcJ4+TZCj4YQLeNE7EZojY0uUTA0yOOHVCSGjCYUQXxStPxf79h00/
EGuU4koTP2X60ZoGwT1Z0mpDPWlKV4YqmuRCrzYNDlwnwRRUkUk8iB0/Ewgh
uoklYossFE3nttywGa5JwmRiLTXSw/Aituh/nCOGx5xwP7irSYZRefnWQ2ZD
LmZVQIFWOO1l1Ccz1vbdkuTHvyXsFGn21muYuZT2waPHPHJqyb7lR8lzHrkg
E6GfDT3+TuyOKgipVPjjlL1jU2oUMgW7BIQa45L8FjcqyGIqEIcB51LYgZcz
IaIdlqQD5wQ1bO8Bd5u0V/YLFl0bR6boFnpsXbLlS7ZleMCaWQd+pb+L2tWK
SiHil4p5C7wLQw4wUKHOKAcLKEfXiKlifi+aEZHF/A6mYZG3KZOTeY0ckWbP
rLxrPCvo5cbQ8VHTlWRDUEKloRVQwkZDNtZyN9DJAf/KSd4Uc3NIGVPM0qkh
rX6zjah6jtxocJViJBhvGRhkt7gY0MRSPQNwmzS8zMJ4WmEKHKe28LyzHyMJ
RqgbgAMV2OD41iL19edD0GyYu/WiCRzDkrxO4vSeN9AJHgYDYCcOCQ2BQYwa
xRL/wc9yNAsHAWYoKbkFJiqmzIBrMLaao73ghHeGiBxAHayB+lkHW1DMzLR4
mja3vFyxCOtIJxAgzqe1AygXqRE0jPuwe6JbCYq9GCWl65bO+ztmmGQTIIo9
P1UgYSUJHi8Yj4EhwZAtSZt3c3b+4PMR2mjAFxGFO6Mq+yeBSdLVnMhC3d0M
/lXBGzq/4kFzwnWSwa42TlY9uPS9FNjfzlJMpVitskPkob/5aKdoBcnt3NHF
2flci//fPz6hf5/uvr84ON3dwX+f7W+9fWv/4ckTZ/snF293qn9Vv9w+OTra
Pd7hH8Onfu0jb+5o63qO+Wvu5N35wcnx1ts5jobVIv94cpO3R9s5RI8BkzOe
MhRlYF9vv/vf/2txBWTif8ABsbS4uAEywX+sL75cQcOsb8SmFowA/omJB0x5
miCnbG+C8bdhXAYJ6lrVO2g9ADVf/BtS5m+b/l864XBx5a/yAS649qHSrPYh
0Wz6k6kfMxFnfDTjNZaatc8blK7Pd+u69rfS3fnwL/8KisH47cX1f/2rxzwC
ZB/4c5X1M8cRoUIjm43AL8VwxYtVBYOWm0cABmvqSdwTuRz/zbpcs9iayYfH
BuA3xHw2yQFALgM95WZANKxNfL9VWakGFwEnBijvBI9g9PfDeMhKGJf34sWA
WOvFC0xTF2qX4wv+rMcshT+eMvgk3++p5LX82VZjCwzpkg5UZ3w9uZk37dFj
EUX0ZjniiHNxGayRwSxHx9QJ9NkVmRQeS1ixwDOwAlid1Z5oeKCXidYHrqFV
aXhaUeE1gFk4tQ6YLGnPbrqY1mito7bCz2mqagbIYH/GSPZo0CH0AVpN1czQ
bnUi1nFhZ6+xEpizpvIpHiygj8xClty0Qn2DDIUz+WWEA9I5FC03AsOOp1rf
fxCJIbOEQyl2JlEmRhml8DVcCntb1BLvUwvd8svJkDxrNU43Pe/f//3fEYVn
Q0XN/zCf+s+Y9s+rL6a32+Mvvk2NUf3nB999+5mftwkcqBE1ZJw2/+evP/Xz
v+DP7Qa1nf/81M9/ZvI4P3b+/8V13nCGP/PzH71dJdwZ9u/5OWsvzqYVf//b
rW2BVGd0UePnfxFaigdUI+8PRrZvtzIC7gZY2lExBLn53P3xzKqfC6LFSoM7
+R/8HAXA2wcHwgl65hjrqaGMNAU3dqKLYBaMCG9BJumIEUUhGEvzng3S+gQ/
SLptTDQGFKHRuGEtRO+ASzCeqwcCimlqEgY9cjQzkjTrOFPLDEW8CywNk5OQ
KcVMcpRwtmdQWRAABwEKPDZhS2DSMNRenGP2tRYxTimGS/Zj4SyZYNWKh+Oo
ia+bBmuChc57u6TfJE8X1/BDMr3qPQLeItheLWVLGXMFmFYx7yo0S+cSv4TO
B4L/kqcmCQ2KZNLRYuOHiFlLsuweXTNElmAwt+Xo+idOuPqBQA9VWh/eQPPz
ZgCa6sk+mrEm+6rUIuGy5Wzvo12YSjzHeyKe8+NgjP/DYAxDgf09MvNnZTsC
xE9zyAOrK2DoOLXQ6oJgGBJiYHfy8ORs198HwwmoS1wPPFkynLNPn/pkr6Jj
HxcCzYWhBJM2MIMOarTbIOlp2HMyvG15NqZLEX0xivm08u8QuPl1Dn4ytzm3
e7a0ujbXmoOfwV9UqfEvd+Ny7jvL9VbF0TSP3DCUsIZ647fHLH+3NOItqhH5
FmekedNb+4bbeX8r6WHAoT8ApuPswBQKjVx3jH5ElFH1vn6Fd7U5fhwkhhKr
QMUz9V2ZhpUrCwPubu+cbbGn579rw9yITmDJ479bcJqhpx1p7hUj+fDulN7g
3Z763775Z7fEDaAwlpfaFNsDDu21gQNj8Vh7uAnP1lY08ldm4I48b/mIo19b
GeWJp69Rn3coSdkhBQUst2BM8wmK20V5TNfI8IgJxY6U/Moddi5MoG22977+
woafhM2RVYfBhGN9xLtnJ8cKF+Ww3dLqBqF7SPlqFpmVJaU3mAHnvS1ww1ib
tInlIjUxUadYMvCgWFWEAcfZJGl5DCrTLeLfYFESBuXoFbCmb7wkOJrOJ0MD
//eODL8Q//magJvfPLR2av+FX90Wo84tPFOUpDy++er5wT9JX4x49ZXKxliW
INNRe9MglAN8epAaStjCtp9pLoC//v79OQ8G5/SPBnOhxFajkqv1bCq5ICNS
Es4ZUV1G+OdMELEdCH5oBwmK5KlBUCfC6QjETuCYS+zJozhkGA9+bUcCCXlq
gRzR4cSVeCczYMcWmowBUdX19BCNTznA2eNX5RoYvw7lB+Ca4g/SETJv/Qe4
07QyHL6FXmKGzATjMF7dN8MMfF4axjwOnxoGvoox1vTD34cpbZPIW+3392ZS
S369UhEEXX93j7P3PPz9PP0h5+vh1e+O0yRqZW0ZZU12aMh1XDx6DsQfZnTS
Khjd8ZFBxnjjOBiregX5RwaTo+WW8uq3LfgHHHNgoMSFiW4JDXI7Su9TOHhu
5z12iBkwyQku1zZEzUV2darfkOwpigbmoSe1+JuO1pIoP0Z+5HjFCoojUkww
CTxCCSTMByZ5Y+DgolSBDNgaL0HOpJlaHC1ratTsTMcPpQCfPWlsFkhxVAWn
AB7EYmWDELxzO0s1imgl82hL1EOYvkaqHJt24CxL0BYqlhyALBVh16HCHhoC
lFAmoX+05Ahm5SQBPYY7iyam5DYYPBPcwHQEap32WUOfgpqkfGzh48zbHRPk
VBE5AzYGYm2PszKTn/dGGA2ew0231VGBKqM5RiPMTX/Da7OGPkFw5iRD1lBI
X39B/QMcTEosxIDqhMn9R6pL65IwohNVnEh1Ax7DI5SmgWqc3PRgXZT5kwAZ
1yc703qLLyvm5NF84oGKBOMhaLOeFK7mLQS66qZqKH9WUYyERDm8wVASdbEC
zxKdsSAFOUwMDyJ0E29pNb8umPV5wbZ80MNc8yQjVDfV2aReRTaylBWOkKI/
gIUq4jwqTIUj/YTk0OwGuB0cwfVMTKwnBsvAlOpbIYqwrdBJTLpZx0uT83Eq
Wc4ny4vZhAL3zBToY+hbAicK33W2FbnnF3/XEsZhn7Yll2WkJzXYvL9bRXOe
1QNmz0EvwaLIoPWccB7mDEyMRRoMNuJKVORzngQdFhpqoahcFUKg2F6WlR5j
iNGLRMcuy0uF6ij8CSSOcm+8tWMDyjz3e6isUg5p1TlFsjCmQRBieTwI2EPC
apBcCclPMPIdiMKUUiaQFUqEEVVh6Qa+NEeHBxKxicK+6sqVmYomoXgowk1X
XOmmldSDpQF5riK5NeSDfUrkjtUpUqatqlTRmZ3RhNgIvXZiLzIMMS0HS7vV
cJqaYbc6thf4t/BBieHyNizx1pIDIRQzyIyAptoPFPTlLg9pNuOdoFhBV0sc
U6FEdnMlH5Eb5BE+pqqFVvxZBRgEQ0gYCzozPXqWIU0cz09JqVQFc8yAheK4
sHYSNzBRpJc/QC88x/YEqfcQK7KbA9JIkaLMwH2PpEKT4eAPGvEXpuONRIMn
oBBSA2/OO8MDMC0iXEoe9/qlPdE9FQ4LRmM3pUq0dzkAUcz7pzgIZxwxKuNQ
Dc0zLLIpvDlW0BJcL4BgBRNasU0lbMEcn661ZxF70ziWGM1rw2h8is5VJCRj
jGw3dFJiDoGMUg66aBWb4GDYT0TZcgJdPZOOQJciaoA3zFU+OTMiUAr8Mf45
qhlW+lgpwQeJsjGmF8YkZy1/nI0S3DpLdg51WV/IUQZwSCJ409Nyi0LU8EWK
agIs0C9iM4kRQ3MqRCuLSfm9xt51y8COUpmpJFqkmViVYXGIwzBB4dkqZTjT
Zpx2lKuwBlmcdslFFWpZ7YTf0dhegBl/Zzk8C6xfhC2FP6ioMauUMkmGNSO4
Mu88m0LXq4U2U/O16BumWaWG4fSuzUS+yR28k5WDTTBT+XSmI4X2Z9LM23Ot
O5Xc8l4Lko1FyBp4bA2NxR5lgUD7gLBu9gsPxTwyBOaasdTaZrhaUM+BQmes
lRXNEBLaaGFpdQRujhxywkmieyX+I5vhNTaDIqgzNop/SxqvMow40eQUkb+a
YgexHMVxUwQsAcMnzkikDCyXw55oMaRRqGldBIpRB+hfqntCiVqEfcoxm+Cx
QQA+bxCkIxRCLMKoMDOxC7ELrO5tWP0mKCY+hYKLqvoisOQpyZpwKuYZr9QN
GLuBvmZs06OkmeGJYizzdPFOCg9So8axHKxBkWaOccoDSHa0UjhAV4pIOCbd
d53A9KZ6qgPtyqziItgfOya1nVEr2z3oMIhd1fUyB1kDn21SHcpMjfRKc5ap
FhmyDtX+GSKlBOkheCoSgs78jjR0qApW6yYXrQGmlEdcUUS2SkuAeq7d6lW2
RO2YdezEiaUMWvhJAmawcpIkXAgT2jEeJ9GNtceR6hWIh1AvCltWKODXXygm
9V2hABWumQKHeDy7voEg4GK0SEj5kP7QGCJmQ6oopEYey0xdPQvgEc/ouIpz
DBiGD8sHvQQH2ysufSXelupw7gagTmNkEHwRpyg0DNtiCC/Oit1V7KNDLjyS
7usvwK9t+vO7dKHgUMJTZWIBFeuC3i4JHoyml6hWmpi4px5/SBCZIjScUElg
1qG2Q5HgiJjxF+d77XUOXvhcHRMqBTz7OjLzYQ0HDayVPfzwpega4WiLawRi
A8UXlw3cn2gDT9SgpQXiMkBiQFHBGQJ+aCG1xfhTVgsFm6jubOnXDFENBmQd
2WB1CNZpEBKdQCVbkO/roIDlH6E+Qu4dAU+9g1eimh9nXhNIpi4UGe6GwGFg
aSvjVNpKk2mqbfFo9apsHBZdJs0iUaDluxpxCxteALLBLtiyNAuVgYPSFujS
TyRDZC1bQRxgiQC+sV5hV2TJAxOhqvLlDEGzrkTkT6PVEqGYqj4pBANhCjAP
zbNyMjTP/blv2ANJPrpfhA9+m9M/H/DPP7nfL9W/hz/n5+c5//SM0VzjPCDP
AEk7jqOy/4r1u52NMJINkmJgAiFRHTjv74vnnsdw8obcEOdwZREov0oMv7M+
vJUZPb9FaFQ3fsQjDZSMl4XhKM8dCYGJjXKN/N1+xGDoN/yf38SDu/3TrUIK
pboQHmKN5cXpEFPfxMpUpQQKn33gKuYaGl4wT0hmg4ykOgcJAyrLs8OkUkOE
KWWMOvIvIznQYXbq9WUUiTEaH3ygrJ6R2kSiEtCyohuGhSn7IZLcUKpO6bCq
XrcxCoZraadgmF2ckZyqY466UQsJPJ8qhcN2M4N8Btx0Rgy4agHz3pWkkOLS
pqPl98Mgzv1ntwHuRudP4W/R7XMbnKDvClN6X+mB287t8xY8G8I/4bHv4tKo
oHMaPKRy3zrbFTLiqPCqh0QbNIVLC0lUujR10xQvfU4VZr2fTEuQ3qOwrFKX
mGg1tx4n5/A4QKagopuKHBKftJq/wfVY9s6C0zVgCD1beFzYet4kKeocbhiW
cFOjYhiEpuWQtbZ5M/QDyP7bvZp62PRd/VD/fqnx/c/pBxhgEOT3DgjPUQjq
87o6A5TEPrK8I/XUlyAUqUeRZSG+/fiRXSv62JKrKqQq4RRxjp7bj5geUbw5
EVuQg9xAiNRVxloai5+kmSJBBDg7+B8WtvPqLytv9WxiUUs900zdqkeZhtdo
eeEkPIRjjTZXE7yU+JmaGLcgSk9hUGi6nVGapwnK0IPU1nY6mAw2iRWSz/kB
t2eSyhdmNFm28hlPcYsfRTM0m7RZ+IxFczZtyB/tgPA92v9Z5IMkLYBkAIPQ
v7BtRSyfEuSJ/9nJokmbR2D+5mPr1vncMkMejCs8wqz9r5aMP2evnXWJ+wzn
eirWoNiNcwJwlB9HYBcGTzqP4MLAKAjiwR1mc8xCKdxwiIgXEPn44i2zwSus
+WUjJcurVAX+HMvY2CRMTTNUwwclZuNTUCxAPTeH5bQv4WloMw1D77VnRUEh
NAmuyw6OQKN14t4IW9whz8nCSi72wlZUZgDn6ENlW5Lvg+xl1zQ/vUmERUJ6
4E7xXD2ywvrmEVs6iji3hWwtbWiFhkbUZlgHVdcB/avDmtW7RHh/8S/d5OQ7
bU0E7C+puGkIjygdvw7k4PJNdOAwzImGo8Bn2JcJsKGs1Ixzozp4omAXEH9p
rVaJ/jViYh1jE0Sws56kIXBoBRDzicQBRWI56Sdrkf9Ufozx1lxa8lFOlHsd
Ym1pnsQEVzfaO6JKtTBccJgbG+cCkZ5RLeIg8Km2yaYawNyXxnoYspZKV66f
shFUrkoqFcasJKSaBA7qahuehBIXMboKTjWs5rqxxyO1H5IAMqW8F+f9Fy/O
6LyHMedfvHAQfU/jw9BrrhRWYXpcqeT7NuLPaaxx5t/O3zrOUnWWdxHaSE/Q
axhzhMSBQcYmSdrcAM8FDuGOLuF8GdWGk2WAGOdvPqO3pSAxi1irfelgxDxv
GYdChxmBh6Ohrr3O0wJK9CtIRDDIGMcgcozRLJy0blPkxkSaGTtOIVogRT2n
3sJhBkGirf+oNLKsUnUNSZifMV0UCZYHHItRlgLMjGoACIsJ9VaIAzQhplSo
4Ac0Lsu8lJrV8ocV8INaRzewCrevt85211YuTt8+Y9AhWFzzc371qYAUnt9a
7gqIjxThABNcxQmeV0Rz0SuzN62CK5cMXsERHbLrAeXkQKUfL3eYwSaTyDBF
te0wjzWcxy7Bb4j1CKRTpewFrGO1UwdbUZnABojRZCYuZB4nySZfryREUJUP
05Qaiju/BLEjNjW2uLSg4B/aY2r8R8CjaYhfrWWsYK8bCEt8AfX2fgzB0uQs
DMOYOhPnraAhMw45EZF6FN0dBI/xAHuPueclzok4kHtOAAHIX8SVMQxCORBE
PgHlWKiRpjHtNhwbUTb+/h2HIru7P2Gjk6OaYqU4QOUyI2IRGCarw3Fg317i
vh0I+op2jpb39M7JueIuvgCxTGjbssRwRFgrlkYkNlNqXzYRKb6q+wWTWcfJ
nFJXMpoKIcx0KrZprjuTqkK/MEbLXudxLkg2OrEWl4VORtvRahAb3riBb5TG
MQJ/Zs0Z1TWnY8A5uHA40/FVTYBhJehOFs7ynlsSIyBFRmL7/g8kNS7+oORG
THTuPYFs5pKJWNs2GrGAfCd5i6fdAvECsIaY6EoMckKe3IYmgaiwoU6kGZ2x
hETaJKUKsjH7Y4oWkxY4Vv39muesgQrUyAk0hyvFWGjF4MoWmbHELK+WdtCd
3hupk+NgR9MpaXGPceQlhnv+BFlcz2eaefwaCNShi3WDGjRpvFjoQUNpRShm
GOZnLY7yHz+xQH4FpvV6YBKSpCwuKXcQOpRVRVrWTQjGJOLTZD9Qx/QSHz1B
czLuSjofbUITWfuXO4dGjVIOHNfyUh6JNiC8obEeqDTwknbxcUk9OGs9aLBC
nLVAM0WZBEzdae8bi/L4dao1yCDzajUWAkfg3j/AUoxcy2wzUnyGwa8Es01M
D04bNEbZnt+k2HJZwqYawuxXFRx6CGHCPqFEHXU4x15hJMXse2JupRh1cNHs
dCKkVwP+7CdUdkoNTNkZwXNsrSDGBdfbBgYs6FX1MHyLMTMJhiom8MM8FXge
rYyNLIE2eLYYg8RD5TQobKdJS03UPw+EPziltyvAXciFvMInd1eAkHGkMNBB
9qCVgVYwqMi16RkBJz4wshQ78httuj1CvFrPsEeRDSeaLIsMZoClILB020VJ
A2nsliilQOI7IR+2mU0Kjv5SSMEGYpzkItbKS2aZnNtY4uXoTZ5PNQaVgirM
rzntk1jLux2UuGlS1QfMazZNeiUeHLpn9YYfnCp12oK5QW9PBi6khy338S2k
9LU2o0alq21LRC0zEG3Z7C5HoEsSXUXq2NZT5IEVJMENXwz5RFCNgbbtQQuG
q0GlpTv361TXDrOzpjPq9VjNVVvgpWTJNVCxmIfMUBNxA14+ay3fyl+2HZZ2
bZ2fyshN+7NSbmdbn9L7pOtnQJcBYBYNmBdrN5BzSSqYFFU5O2v6UuRPOFnb
JHBjGNnrKMMVA7NTGN3D4D4QF76j4zLwezHmGrh2uTLy2UCqPcLCiOKP9pWn
WteFXCLN0UfcctLeX39xfLpaGETrflW9ZXImVN4jZ+KCCpdo3UavGrQG+pyq
056qz/Ztq3nbfd5rNp1vNO4gJCyf51ovmGHOJ9Hwzy/+NgJhDTAfq4LpomI+
FqmABfkI3gAsFOqv6EhAhBUcQf7ykjiELc+9JcPWxPDg3MWFk1n0GMJg4q5h
92i2gY2V//7ywoJjYm85k1AToqrWqOBWrm6AXeWAhGtyesovNUecSTDqFLbX
RzEKyXeqWlJTH9zERLb3Matgj1mcLFMXJcpQKZ00av1qBRoiEExRS08qT+dO
cQKqCtEQAYNLnNlKwpb39Z3AQF0kh7vFFU5KaEFpsxk/qnwAZ+po5df4gyMH
2HYSfTJ0Fzcp6lR1EXZGpOY5BWPzVfSpy45tVYsWCVqWMp9XGBCyQ1VUc/pu
ueOLV994lkqwXmE8qDEpCQ3EhXM1DRoz8PDKrIedIhjnTfgn40ZVF8FGbNMJ
vjIjRemYTKSUHTEN1BCp7Z1FwGCDf9aQYCEl7n6qvuHaH5Rzabzs7pTU6TKG
dSpYUqNIlY+aeq5q9SFRFU8cPQo+ZBzgVmgDIXT2YG+30ijP4ilVy/ZyITeo
CSbOArTEuXNpYXvxiXJKuf+Ow062/zmQ5yHOs5RvnCB4mO3WIy08TCIIza20
xkYVBjcAke+WxBmk6xtTVcSMRuxksUPQZPi/slRd5ZTUTPEvx0H/XHghZqm6
vDbpOMUalcdGmXGOCT7nKtowc3q3ktt5VuvCtxOUAdWmypdWUJ4/v200gKpV
VrjdIBGSZLen1uIvwtE1uCavuLUBucchFSh77mUz1bBSkQvDBHgqnaSseYui
Rj+35YicL5JnttJZdQit+NdzitrmJfmBKVYNAFPAlyKoluP1nguY1E5l/9rG
x6563XItZHR1xOMLrDjhT3jXma9maVxKvAOPB3gUauoinXU0cyfFkuNGTsRO
Ov1XmhUOzDPtbm0naC106Sgpgm2R3s2yIenlJTkerzcKsEufMQxqgvdyE5vM
ibrSL8kYVLwpqYtI0CJ6pZTL/OLcM7SWkXH1xjRPBuEkMRcX3oDyd3ihABcJ
UFKPTFVKJA7t7ViWaLai3teLHLGNFp4u/FVRLxMHptDS86+/1CvKPU+TE5Sy
SSNSNW6QJzW9rMTuRlHVF982FioUpYzWkze1+KlUA9OV69IlZArzx1BCdcUF
t6SleCm3CxOzURRfc6elpybQOZXOSaMkyFvuVRledVUGS118csaUM2DUwvH9
4NRzVEXzluPkO283WlpdXdxgn9Z2pBPPjmiHhJGnxDzALrbS/SwkgI1AROuX
LzTphsTNJPeoQoeX1+AJRaI43UuAFZt0UWAsD12BlBsLnKKcvv1p28KnGTZb
SnkGm4qYlZVMFsZ2qeW2wHvO+1Vn9XqvCWCvOqpB8FcUSeTADWMQahgJvDKC
ZZIbitauz5GO32Sqtjy+Qq10my9SbTjmrFvuGaDtMjCEgCEg8lWz3D7iyR0k
6LORm/1nC+lg3IK07adIoNx+Km08FATLh0NJHRytEyN79efCr7fs4Gw+jUx9
uEtq521RohiZiwssmbNYlR8WhndMH3srcySQsLlsoNIT0gAFUTlVU4L6XQsW
zoOmHqen5RJX2SsK4ln1yFvlVVtFOCQB+9EcQBgIaMTPV3OWQ7QY5d1AcdL4
Y7wRrI837jTrIPT6Iw4fTDdJEe0Zirqjwow/vpBLaxak7MdWRwpMFFWYwDBg
Rl5dsjHUKJpROM/eZEWNJqduGbE7T4VF3ihN6OqhKbRKvX0uxY9rCQK3IFCp
5Mm1E9J+GKN1oDaqLKHiYNzbJwaIQZHuOxzkKyhSik61A7gKqptVmC+5+qo5
onPfVQ2RQmPqhTHaAsehc2nT8EV1H0MdmFUE3JLIGxiu2rYbowI2qQjerPlz
qpWkCSPWixByhhcZFHxnkFxgCk/0xfTUSxI4WIG+AHZORQxBKr65dMGycu4e
glqRr3kYbOukzUorlJjbnuRcRIRyj9p4tnYBYuUQwIHdSEHCqmc/Sth4oTHf
T6bteJ2ArQRVuaJObuHiKAOXKhbuButqKYyhaBmO8wKhnAJ4FC+Pv8jc0sSg
6k310zm5Y0L2VsUIgV8beJzlCQN7n7hcxzitj7gwnc+cmDJsXJFFNUccGJgG
oc5qNCIvckod8EpQe8EFHawh15SR3sQuLWrPV3DilqaDnbvvzh3cWTc3po1o
M086H/Dj9uYj+dT2olRgGSqITp7dc1iI9ZP6Kh6bHdx3P6Cb7hhqVFXaVDdV
MnERc19rw8KFwZ5zIVpt6/ASBtg01RvWbgoNltzwA3SFDIcAyr6TtLDJFjRv
Urn3hzGpaozkvZHW+zl9b9EPAk0gZZigBOnuR7pVClR4w7Ph1buFBQ5uN7AX
QShHFWkwhLGpQeNgxHd50eI5exQScs/vBEmQMhTYtkhEnSifwKr0Ggi8HBX1
iKdZGr0Ci9O3T3S8sRA5tgmp2jzixleit5P4nhPMDKe1S5r3X4/KWnNHzMVt
uC2YKyn0KFjuglPkoPrDxHfVAM+B+0nQvostCWgZDmqUkl982hM5xZJ2yE+F
0dg9Rq7ajaTSm9pfOI1ZSPM56ogvQWxenuTZM9kivLAxGYGDA7o7YEsXSy/g
2ie9opDYe6w6s1Llge1mLrYqO4GeqVWDlZWVbAti6cW4HFHA0+aPnmIeA0Ft
xaP2iae0XlX3aGOQLtyvcHJCaDLILZ/sE1SXK0oLCT0i9Cm5HJLml3Lz+gp6
KJ0FOHKoSCGJpUm+UJYvFcCle7dy/TKE6naeqh05rcfWJsuFOXZhTeQEbjbh
35W/7KHKcib9DIIqAmYlxLG9x/2J1xSVNV+g8Mj+4P2RoYlCWHWaE+mZFzgU
mm9IutQTRJvVzMJ5gqN6sn9vvWbMs33om+4u91jkFMazWrOg51NZdU9zP9OQ
J7UJFPBEkmfvKeDDQEkLRPBQB8BCRU9lVZ6IJjmdz4/lgkTVH04vCI9rN2df
fpyiMnrI1KtWxnCo4xz3rt6ha3e4YYXTBktgZVKMhDeY++4dTu1mSqclbQQ4
OumAlthyzhT0QmirWTfvtNxuoNIRnY/ewl2YDQ7Yi0Cc675tizj4ITlCdPKO
ChtJE/6pTD90LDXoR3cu2MYtlSv29ZeKV7TbldsryG1O9kPn014E7deqdLEV
wwDYciSOgo2fzohttyQAZ6+Kx4YF0lnL+1FnLX+6s5YGu5UqUjPMZ6dn2+Fk
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
9nUWznlykaLTGekZSJSPJUzA2NqZwJYeS9fAx3CnEy61j4rTg93j95N06/pN
ebhwGS48vjt/HXXvPi3GW+Zg4+hoL9Px0QiNH6jUzCJlYuzciNJ0e710t5H9
nr0txsvDpZVOfhyHo+vtu9ePDwtvLy+u3u6fXYcbV18eJqtbFlMwtCqSZEk8
e68GOAyD1LK5y06Er3b9NudOiImD9uTUzuLmdGdhYgm0S8EuEaQsaq/bYUAe
3jy3yjQ52K3V8bTZ5INggMhE3LXFhYX5hQXeRhjDGPwwCMPy04bdpakmyKxl
ZFOab/7Gg//GI/+JBv2NR+Th2BJH6if7w+WjlcODq713724OLrfGW4Prk9cn
R92LSWepc7e79mCWt3aW4uD9LVNkaXNGM1giCcbl3ZnqlxJBfWbFrVAgPncg
ff7EKj6mvIxNn9fxMaWFbPruSkjBoQExM07rNPx84iVe/R3ejFdwwgGINTrb
7Z282bjYXjy4evP45XWQHD6shged7uPu+v3jIPt9b2l1kp8mi91CiLW8aTO6
aMQ2z0KnIXjjFGmrt2MIoYKp3sgMqLVuYJucVnlmp0Pxz/UlbjAjaFPmut86
fwq/RR8/mn+U83Ck34KPH3/rfPz4p/DjRxwMhmuw3fLpQnsvPx6fffnw5eFq
EO5NdvL38TAKDm8GOxcXb5Phh/WXnQ/vgjwTSq5szuyTSoyHBnlzRdzdlFTp
ydm5ClfZx09+fVj8VSdc8FdZ3jugp+Efn4JwYPhjAqnjx7LOYhNzI/IlttXE
775+FGH+OLf5UaT541zrIwszfcjs9HHuuyWr9kWV0Cc1QsX+m0LXhdWOWQg6
G8trYbS6FnY3Xi6G4Xpn9WX35eLyUrC2sRCtmGi5011b7iy/DMLlsLO+GK2Z
pfWN7vrKy4BfsudQClikHQ/gZJIA9+1fji/e/vWWehELexAWT9rAagMdjorl
AUECPduIQSI1FC8IxjR9a/BgWECWgbSn99RITp8ooemPOnnpo784XUv/KuxD
nhewz+Kbty+3D3qLh/e/vwnedPd70d7qp43l/PJxZe9z9y67Xkiub9YeO3fv
F4R9VjcJoSCdMJ0aCwntgDn4rnG/8T9wKfE77kY4pevBwCXpAt+7bC8y94Ao
4Gd/hwLm34Eywt/9HbqIfwe0o8Pm50nHv4v5kCKUFX9yV8b4ycLi0vLK6trL
9Y2gE4Lz3/xbfh7gzyubmT40j0PnwzX+EAwN+PArNbSaA4sD3/F3WBvYt/+7
VVqz3Drt9z057HfehPFJfLh38eVg8Tg+KA7S09Vw+2DtYLDRD5dWF35fGi5H
24cb8/Dwl+jqAB/u3yxdjqLtBe/xIB7H11en6cFdFl9dPR6EO8fHx7vDw8uF
m/cXe/D/93vL768Wb84XDt+dX91cmquDyfVguHec3iRHC3ve7tEg6V+cwWsH
p1/otenl+elV9O70S3L5/sseDATSfQ/T3B0uHV8dH14PblZOMVTxZvHhbOHa
mxx/SCYXg/HjTXoUv90+nIRX1zDFg8fThfHy+4UkPboY5mcLUf906ebgZun0
zfHl+urR8uGV2Tl9E17deJ87i/fjzl4SHKd9INDuGJcUXK0u4JKulx6T66sV
HPhz9OYeBx4fnR98Od65WDr+0lu9vjr07m7eXA6OdnYnR1/eLx7fhSsnV3vw
w9PkBqkJy4tgWUfnvfHRzhb/d3sc33zoj+EFjyc7W558cT2Gt9x1BjB9cIeD
QUkzMG+Od68HR5O3F4tfLu6TvfNkb7Vzv3dzunz6+9Hezd3Rft97f7l7eH8z
GHaPrpLXNxf3q+cXi286k8ON7vv5xfxs7X7x+svGTXF9NbxfXXw4f1h4s3P4
YeXycONhuPy+s/Hgrdwcv1m8vHv/fvxw+XAxvLg7DrKXN1sL/cfB68+7J/vv
3j6sH1+vbn86/HyXtM8Ov2wxb10qzD/gzpsOc9e6sgS25Ohy0WpSPcPw05WW
xahTz3GOp2qTjxb7wtX97dLBTwzTtU3bFupBHVpKbPNf6r4mZAu7d+SyiZub
hDPMYCFdrmr1itsZ1tNuU2KrkZ+VceS74aNOBTzE6pYiD8q9eOp62gbKfHEE
VXkgHFAWE+uda6eLm0rCQVxQ8pytPUsRgulHU3cz8VlcBYZ/WML2X6kqbvaP
jy/2Tx8v7w/3r+96q0f7x92r3cvji52b5Q9fbtbeX/aWgsVk9/3C4efrJFu9
Xj729q/vL6/P/6kq/q+pirto4fXL46vl9d5y//XvC9eh2Vkyb04/96KFreH2
YM1cfFr33ifZKCuHH8Zvy5PHjf2N3dfLnc/rO9Hih0M4pffzpdd98xnc6zef
3pVLb9+9fttjVXHK8rRJiQjsuamcfCs8Ds6UekkVk4Nl4NTe2+IgkQYO49dB
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
JJXuwcB2C2kxNgouggXR/pBh9X8AIkxTmj/MAAA=

-->

</rfc>
