<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.43 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-martinez-itp-agent-mandates-00" category="exp" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.35.0 -->
  <front>
    <title abbrev="ITP Agent Mandates">Invoice Trust Protocol (ITP): Agent Mandates</title>
    <seriesInfo name="Internet-Draft" value="draft-martinez-itp-agent-mandates-00"/>
    <author initials="C." surname="Martínez García-Villarrubia" fullname="Carlos Martínez García-Villarrubia" asciiSurname="Martinez Garcia-Villarrubia" asciiFullname="Carlos Martinez Garcia-Villarrubia">
      <organization>BeeL. (Honey Solutions, S.L.)</organization>
      <address>
        <postal>
          <city>Tarragona</city>
          <country>Spain</country>
        </postal>
        <email>carlos@martinezgv.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="28"/>
    <keyword>electronic invoicing</keyword>
    <keyword>software agents</keyword>
    <keyword>delegation</keyword>
    <keyword>SD-JWT</keyword>
    <abstract>
      <?line 66?>

<t>This document lets a business authorize a software agent to issue,
accept, reject, or dispute invoices, and to report payments, through
the Invoice Trust Protocol (ITP), within limits that the business sets.
An authorization is a mandate: a Selective Disclosure JSON Web Token
(SD-JWT) credential issued by the
business to a key held by the agent and enforced by a named ITP node
that records each use.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-martinez-itp-agent-mandates/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        DISPATCH Working Group mailing list (<eref target="mailto:dispatch@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/dispatch/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/dispatch/"/>.
      </t>
    </note>
  </front>
  <middle>
    <?line 76?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Some purchasing and accounts-payable software lets automated agents
send invoices and status messages.  A counterparty that receives one
needs to know which business the agent acts for and whether the action
is within the agent's authority.  The business that deployed the
agent needs its limits enforced even when the agent misbehaves, for example because text in an invoice it processed changed its behavior.</t>
      <t>The core of the Invoice Trust Protocol (ITP) <xref target="I-D.martinez-itp-core"/> defines the "agent" signer
role and the "agent" member of the envelope core but leaves their
content to this document.  This document defines:</t>
      <ul spacing="normal">
        <li>
          <t>the mandate, an SD-JWT VC <xref target="I-D.ietf-oauth-sd-jwt-vc"/> that binds an
agent key to a participant and to a set of permitted actions and
limits (<xref target="mandate"/>);</t>
        </li>
        <li>
          <t>how an agent signs envelopes and status messages and proves
possession of its key for each one (<xref target="use"/>);</t>
        </li>
        <li>
          <t>enforcement of limits by a single node, which prevents the same
budget from being spent through several nodes (<xref target="enforcement"/>);</t>
        </li>
        <li>
          <t>attenuated delegation from one agent to another (<xref target="delegation"/>);
and</t>
        </li>
        <li>
          <t>approval by a person above a threshold (<xref target="approval"/>).</t>
        </li>
      </ul>
      <t>Payment through HTTP-based payment protocols, which raises anti-money-laundering, sanctions-screening, and payee-verification questions, is out of scope.</t>
      <t>OAuth 2.0 Rich Authorization Requests <xref target="RFC9396"/> can express limits
such as amounts, and OAuth 2.0 Token Exchange <xref target="RFC8693"/> can record
a chain of delegation.  Both describe what an authorization server
grants to a client for access to a resource.  A mandate is instead
issued by a participant with its own keys, presented to counterparties
that do not share an authorization server with it, and enforced by a
node that records each use.  The Agent Payments Protocol <xref target="AP2"/> also
uses mandates, as verifiable digital credentials, for payments by
agents; ITP mandates cover invoices and their statuses and do not give
access to payment instruments.  Frameworks for agent identity such as
<xref target="I-D.ietf-wimse-aims"/> identify an agent as a workload and
authenticate it to services; how an agent authenticates to its
enforcing node is outside this document, and the key bound by a
mandate can be one that such a framework manages.  A mandate states
which business the agent acts for and within which limits, which a
workload identity does not.</t>
      <section anchor="the-experiment">
        <name>The Experiment</name>
        <t>This document is Experimental.  The experiment is whether at least two
independent implementations of ITP nodes enforce mandates issued by
each other's participants, using the mandate in <xref target="example-claims"/>, and
whether the limits defined here are enough for the purchasing and
accounts-payable uses that implementers report.</t>
        <t>Results will be reported on the mailing list where this document is
discussed and in later revisions of it.  The experiment ends 24 months
after publication, together with that of <xref target="I-D.martinez-itp-core"/>.</t>
      </section>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>Terms defined in <xref target="I-D.martinez-itp-core"/> and
<xref target="I-D.martinez-itp-lifecycle"/> are used with the same meaning.  In
addition:</t>
      <dl>
        <dt>Principal:</dt>
        <dd>
          <t>The participant that issues a mandate.</t>
        </dd>
        <dt>Agent:</dt>
        <dd>
          <t>Software that holds the private key bound by a mandate and acts for
the principal.</t>
        </dd>
        <dt>Enforcing node:</dt>
        <dd>
          <t>The ITP node named in the mandate that checks and records every use
of it.</t>
        </dd>
      </dl>
    </section>
    <section anchor="mandate">
      <name>Mandates</name>
      <t>A mandate is an SD-JWT VC <xref target="I-D.ietf-oauth-sd-jwt-vc"/>, with "typ"
"dc+sd-jwt", whose issuer-signed JWT is signed with a key from the
principal's accepted Participant Document (<xref target="I-D.martinez-itp-core"/>, "Trust and Keys") that is not listed in "delegates".  An
operator that holds only delegated keys therefore cannot authorize an
agent on its own.  This is the issuer key discovery mechanism for
mandates in the sense of Section 2.5 of <xref target="I-D.ietf-oauth-sd-jwt-vc"/>;
JWT VC Issuer Metadata is not used.  The claims are:</t>
      <dl>
        <dt>iss (required):</dt>
        <dd>
          <t>The principal's PID in URN form ("urn:ietf:params:itp:pid:...").</t>
        </dd>
        <dt>sub (required):</dt>
        <dd>
          <t>An identifier of the agent chosen by the principal, unique among
its mandates.  It <bcp14>SHOULD NOT</bcp14> identify a natural person.</t>
        </dd>
        <dt>vct (required):</dt>
        <dd>
          <t>"urn:ietf:params:itp:mandate".</t>
        </dd>
        <dt>cnf (required):</dt>
        <dd>
          <t>The agent's public key, as a "jwk" confirmation method <xref target="RFC7800"/>.
The JWK contains "alg".</t>
        </dd>
        <dt>aud (required):</dt>
        <dd>
          <t>The Node Document URL of the enforcing node.  Counterparties and
other relying parties process the mandate without being named in
"aud"; for mandates, this overrides the rejection rule of
<xref section="4.1.3" sectionFormat="of" target="RFC7519"/>.  That node <bcp14>MUST</bcp14> be
listed in "senders" of the principal's Participant Document, <bcp14>MUST</bcp14>
have a key listed in "delegates" of the principal's Participant
Document with that node as "node", and <bcp14>MUST</bcp14> be the
node through which the principal signs status messages, so that the
principal's chain of status messages does not fork.</t>
        </dd>
        <dt>iat, nbf, exp (required):</dt>
        <dd>
          <t>As in <xref target="RFC7519"/>.  Mandates <bcp14>SHOULD NOT</bcp14> be valid for more than 30
days.</t>
        </dd>
        <dt>status (required):</dt>
        <dd>
          <t>A reference to a status list entry <xref target="I-D.ietf-oauth-status-list"/>,
so that the principal can revoke the mandate at once.  The Status
List Token is a JWT signed with a key of the principal that is not
listed in "delegates", or with a key listed in "kids" of the
principal's "senders" entry for the enforcing node.  For a delegated
mandate, the enforcing node provides the status list entry.</t>
        </dd>
        <dt>actions (required):</dt>
        <dd>
          <t>An array of values from the ITP Mandate Actions registry
(<xref target="iana-actions"/>); the initial values are in <xref target="actions-table"/>.</t>
        </dd>
        <dt>limits (required):</dt>
        <dd>
          <t>An object with "currency" and any of: "per_document" (maximum
amount of one document or payment), "per_period" (maximum total
within "period", which is then required), "period" (a duration of whole days or weeks in the "duration"
grammar of <xref section="A" sectionFormat="of" target="RFC3339"/>, for example "P30D" or "P1W"), "counterparties"
(an array of PIDs the agent may deal with; a counterparty matches
when a PID verified for its accepted Participant Document equals an
entry), "document_types"
(values of the ITP Document Types registry), and "approval_above"
(an amount above which every action needs approval by a person,
<xref target="approval"/>).  Amounts are "amount" values as defined in
<xref target="I-D.martinez-itp-core"/>.  Limits are compared with, and
reservations made for, the absolute value of the amount of an
action, so that a negative total, as in some credit notes, never
increases the remaining budget.</t>
        </dd>
        <dt>max_delegation (optional):</dt>
        <dd>
          <t>The number of further delegations allowed (<xref target="delegation"/>).  The
default is 0.</t>
        </dd>
        <dt>software (optional):</dt>
        <dd>
          <t>An object that describes the software in which the agent runs, as
stated by the principal: "software_id" and "software_version", with
the meanings given to these names in <xref section="2" sectionFormat="of" target="RFC7591"/>, and
"provider", the name of the organization that supplies the software.
It lets the principal and the enforcing node find and revoke every
mandate held by a given product or version, for example after a
vulnerability in it becomes known.  It is not evidence that the
agent runs that software: relying parties <bcp14>MUST NOT</bcp14> base trust
decisions on it.  The model or other components that the software
uses change more often than mandates and are not described here; a
deployment that needs them records them in its own logs.</t>
        </dd>
      </dl>
      <t>Claims not registered in the "JSON Web Token Claims" registry, such
as "actions", "limits", "max_delegation", "software", "principal",
and "parent",
are private claim names (<xref section="4.3" sectionFormat="of" target="RFC7519"/>) whose meaning is
given by this document for the "vct" values
"urn:ietf:params:itp:mandate" and
"urn:ietf:params:itp:mandate-delegated" only.</t>
      <table anchor="actions-table">
        <name>Initial mandate actions</name>
        <thead>
          <tr>
            <th align="left">Action</th>
            <th align="left">Permits</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">issue</td>
            <td align="left">Issuing envelopes of the document types in "limits"</td>
          </tr>
          <tr>
            <td align="left">accept</td>
            <td align="left">Status "accepted"</td>
          </tr>
          <tr>
            <td align="left">reject</td>
            <td align="left">Status "rejected"</td>
          </tr>
          <tr>
            <td align="left">dispute</td>
            <td align="left">Status "disputed"</td>
          </tr>
          <tr>
            <td align="left">pay</td>
            <td align="left">Status "payment-sent"</td>
          </tr>
        </tbody>
      </table>
      <t>None of these actions gives access to a payment account.  The "pay"
action lets an agent report a payment it has made by other means, and
reserves the amount against its limits.</t>
      <t>Claims other than "iss", "vct", "cnf", "aud", the time claims, and
"status" <bcp14>MAY</bcp14> be selectively disclosable, so that a principal can avoid
showing all its limits to every counterparty.  A counterparty sees the
disclosures that the agent presents and relies on the enforcing node
for the rest.  Because the presentation in the "agent" member (<xref target="use"/>) is the one
that counterparties receive, the principal, or for a delegated mandate
the agent that issued it, gives the enforcing node the mandate with
all its disclosures, by means outside this document.</t>
    </section>
    <section anchor="use">
      <name>Using a Mandate</name>
      <t>An agent signs an envelope or status message with a signature whose
protected header has "itp_role" "agent", "crit" including "itp_role",
"alg", "typ", and "kid" set to the JWK SHA-256 Thumbprint
<xref target="RFC7638"/> of the key in "cnf".
The payload then contains:</t>
      <sourcecode type="json"><![CDATA[
{
  "agent": {
    "mandate": "<SD-JWT with selected disclosures and KB-JWT>",
    "enforced_by": "https://node.example.com/itp",
    "use": "01a18210-0000-7000-8000-000000000001"
  }
}
]]></sourcecode>
      <t>"use" is a UUIDv7 chosen by the agent for this use.  The enforcing node
rejects it if its timestamp differs from the node's clock by more than
300 seconds, and keeps used values for at least 600 seconds to reject
reuse.  The Key Binding JWT (<xref target="RFC9901"/>) of the presented SD-JWT has "aud" set to
the enforcing node and "nonce" set to a value that the enforcing node issued to the agent
and accepts only once, so it proves freshness; how the agent obtains
the nonce, like how it authenticates to the node, is outside this
document.  The Key Binding JWT otherwise follows <xref section="4.3" sectionFormat="of" target="RFC9901"/>.  Its "sd_hash" covers the presented SD-JWT.  The agent
signature, made with the same key, covers the payload that contains
the presentation, and so binds the presentation to the action.</t>
      <t>Status messages signed by an agent use the General JSON
Serialization, so that they can carry the agent signature and the
signatures added by the enforcing node.</t>
      <t>The agent sets every member of the envelope core, including "id",
"issuer_node", and "transparency_salt", or of the status message,
including "seq" and "prev", before it signs.  The enforcing node, as
the principal's issuing node, refuses with "mandateInvalid" a payload
in which they do not meet <xref target="I-D.martinez-itp-core"/>, for example a
status message that does not continue the principal's chain.</t>
      <t>An "agent" signature is never accepted in place of an issuer
signature (<xref target="I-D.martinez-itp-core"/>).  For issuance, the enforcing
node adds a "delegated-issuer" signature after it has checked the
mandate, so the envelope still has an issuer-level signature, and an
"operator-seal" signature that records the use.  For status messages
it adds the same two signatures.</t>
    </section>
    <section anchor="enforcement">
      <name>Enforcement</name>
      <t>Only the enforcing node named in "aud" can authorize a use of a
mandate.  Before it signs or forwards anything for the agent, it <bcp14>MUST</bcp14>:</t>
      <ol spacing="normal" type="1"><li>
          <t>verify the mandate signature against a key of the principal's
accepted Participant Document that is not listed in "delegates" or, for a delegated mandate, against the
"cnf" key of its parent, recursively up to a mandate signed by the
principal, and check the validity period and status of each
mandate in the chain;</t>
        </li>
        <li>
          <t>verify the Key Binding JWT and its nonce, and the agent signature,
and check "use";</t>
        </li>
        <li>
          <t>check that the principal (the "iss" of the root mandate) is the
"issuer" of the envelope or the "by" of the status message, that
the principal has the signer role that
<xref target="I-D.martinez-itp-lifecycle"/> gives for the status, that the action
is in "actions", and that the document and counterparty meet
"limits", for every mandate in the chain; the
counterparty is the "recipient" for "issue" and, for status
messages, whichever of "seller" and "buyer" is not the principal;</t>
        </li>
        <li>
          <t>refuse the action with "mandateInvalid" if the currency of its
amount (the envelope "currency", or the "currency" of the status
message, which defaults to it) differs
from "limits.currency", and otherwise atomically reserve the amount
against "per_period" of every mandate in the chain; a principal
that acts in several currencies issues one mandate per currency;
and</t>
        </li>
        <li>
          <t>if the amount exceeds "approval_above", hold the action until an
approval is received (<xref target="approval"/>), answering with status 202 as
for asynchronous results in <xref target="I-D.martinez-itp-core"/>.</t>
        </li>
      </ol>
      <t>The enforcing node also holds for approval an "accept" or "pay"
action on an envelope signed with a recently bound key
(<xref target="I-D.martinez-itp-core"/>), or from an issuer that is not in
"limits.counterparties" and has not issued an envelope to the
principal before, whatever the amount.</t>
      <t>The enforcing node keeps a tamper-evident record of each use, with
its "use" identifier, the "sub" and "cnf" key thumbprint of each
mandate in the chain, the principal, the action, the digest of the
envelope or status message, the decision, its reason and time, any
approval, and the "software" claim if present, for at least as long
as the principal retains the documents concerned.  This is the record
that lets the principal and auditors establish which agent did what,
in line with the audit records that agent identity frameworks such as
<xref target="I-D.ietf-wimse-aims"/> require.  A request whose
envelope core or status message payload, with the "agent" member
removed, equals that of a recorded use is a retry, which the agent sends with
a new "use" value and nonce: the node returns
the result of the recorded use and reserves nothing more.  A request
with the envelope or status message "id" of a recorded use and a payload that, with the "agent" member removed, differs from that of the recorded use is refused
with "mandateInvalid".  The enforcing node's
"operator-seal" signature covers the payload, and so the "agent"
member and the "use" identifier.</t>
      <t>Reservations are kept per mandate, envelope, and use.  "issue"
reserves the "total_with_tax" of the envelope and is released when the state of
the envelope (<xref target="I-D.martinez-itp-lifecycle"/>) shows delivery
"technical-rejected", fiscal "clearance-rejected", cancellation
"cancelled", or acceptance "rejected" or "deemed-rejected".  "accept"
reserves the "amount" of the "accepted" message or, if it has none,
the "total_with_tax" of the envelope, and is released when acceptance becomes
"rejected" or "deemed-rejected", which includes the case in which the
"accepted" message is void (<xref target="I-D.martinez-itp-lifecycle"/>).  "pay"
reserves the amount of the "payment-sent" message and is released only
by a "payment-failed" that refers to it and is signed by the principal
or by a bridge; a "payment-failed" signed by the payee does not
release it.  "reject" and "dispute" reserve nothing.  A "pay" reservation for an
envelope on which the same mandate holds an "accept" reservation
reduces that "accept" reservation by the amount paid, so that accepting
and paying one invoice is counted once.  A reservation is
never released because time has passed, since a payment may already
have been made.  "per_period" is a window that ends at the time of the
reservation, and a reservation counts toward the period in which the
use occurred.  A reservation is held while none of its release
conditions holds in the current state, and is held again if the state
changes so that none holds.</t>
      <t>A counterparty node that receives an envelope or status message with
an "agent" member <bcp14>MUST</bcp14> reject it with "mandateInvalid" unless: it
carries an "operator-seal" made with a key listed in "kids" of the
principal's "senders" entry for "enforced_by"; that node is the "aud" of the mandate; the root
mandate's "iss" (or "principal") is the URN of the envelope's
"issuer" or of the status message's "by"; the agent signature
verifies with the key in "cnf"; the root mandate verifies with a key
of the principal's accepted Participant Document that is not listed in
"delegates", each delegated mandate verifies with the "cnf" key of its
parent, and every mandate in the chain was valid at the signing time;
and the action is among the disclosed
"actions".</t>
      <t>Because each mandate has a single enforcing node, the same budget
cannot be spent twice by sending through two nodes.  A principal that
wants an agent to work through several nodes issues one mandate per
node, each with its own limits.</t>
    </section>
    <section anchor="delegation">
      <name>Delegation</name>
      <t>An agent whose mandate has "max_delegation" greater than 0 can issue
a mandate to another agent, signed with the key in its own "cnf".  A
delegated mandate has "vct" "urn:ietf:params:itp:mandate-delegated",
"iss" set to "urn:ietf:params:oauth:jwk-thumbprint:sha-256:" followed
by the thumbprint of the parent's "cnf" key <xref target="RFC9278"/>, and a
"principal" claim with the principal's PID in URN form.  It has the
same "principal" and "aud" as its parent, "actions" and "limits" that
are equal to or narrower than the parent's, an "exp" no later than the
parent's, and "max_delegation" lower than the parent's.  A limit that
is absent from the delegated mandate is inherited from the parent.</t>
      <t>The delegated mandate carries its parent, with all its disclosures, in
a "parent" claim that is never selectively disclosable, so that the
enforcing node can check that the limits are narrower.  The enforcing
node checks the whole chain and counts every use against every
mandate in it, and <bcp14>SHOULD</bcp14> refuse chains longer than five mandates.</t>
    </section>
    <section anchor="approval">
      <name>Approval by a Person</name>
      <t>When "approval_above" is exceeded, or when the principal's policy at
the enforcing node requires it, the node asks the principal for
approval.  An approval is a JWS in the Flattened JSON Serialization with "typ" "itp-approval+jws", signed
with a key of a natural person whom the principal has authorized and
registered with the enforcing node; how that registration is done is
local configuration.  Its payload contains "mandate_sub", "action",
"envelope_digest" (or the status message digest), "amount",
"currency", and "iat".  The principal can instead approve through a
verifiable presentation, for example with <xref target="OPENID4VP"/>, whose
transaction data (Appendix B.3.3 of <xref target="OPENID4VP"/>) carries the same
members, so that the presentation is bound to the action.  The enforcing
node keeps the approval with the record of the use.  ITP status
messages are never treated as approvals.  The enforcing node shows the
approver the action as stated in the signed envelope core or status
message, and the document, and not a description written by the
agent, since an agent manipulated by content it processed can
describe an action misleadingly.</t>
    </section>
    <section anchor="implementation-status">
      <name>Implementation Status</name>
      <t>Note to the RFC Editor: please remove this section before
publication, as described in <xref target="RFC7942"/>.</t>
      <t>Organization: BeeL. (Honey Solutions, S.L.).  Description: support for
this document in the reference implementation listed in
<xref target="I-D.martinez-itp-core"/>.  Maturity: in development.  License:
Apache License 2.0 (intended).  Contact: the author.</t>
      <t>No independent implementation is known at the time of writing.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The security considerations of <xref target="I-D.martinez-itp-core"/> and
<xref target="I-D.martinez-itp-lifecycle"/> apply.</t>
      <t>A mandate limits what a compromised agent can do.  Text in invoices,
reason fields, and attachments is written by counterparties and can
try to change an agent's behavior.  Because enforcement happens at
the node, outside the agent, such text cannot raise the agent's
limits; a manipulated agent can still act within its limits.  For example, it can split an amount into several
documents or payments below "per_document" and "approval_above",
which only "per_period" bounds, and it can reject or dispute any
envelope, since these actions reserve nothing.  Principals that need
tighter control use "counterparties", short validity periods, or a
lower "approval_above", and enforcing nodes <bcp14>MAY</bcp14> limit the rate of
actions per mandate.</t>
      <t>Mandates are signed only with keys that the principal holds, so an
operator cannot issue mandates to itself.  The enforcing node is
nevertheless trusted with the limits: a compromised enforcing node can
approve any action that the principal's "delegated-issuer" key can
sign.  Principals review the uses it records and monitor the
transparency logs where its envelopes are registered.</t>
      <t>Revocation takes effect when relying parties refresh the status list.
Enforcing nodes <bcp14>SHOULD</bcp14> check the status of every mandate in the chain
at each use, using a Status List Token no older than five minutes, and
an enforcing node that provides the status list applies a revocation
as soon as it records it; counterparties rely on
the enforcing node for timely revocation.</t>
      <t>The Key Binding JWT names the enforcing node and contains a nonce issued by that node, and the agent signature covers the payload that contains it, which prevents replay of either.  The reservation is atomic, so concurrent
requests cannot exceed "per_period", and it is released only by a signed status, so the amount of a payment already made cannot be reused.</t>
      <t>Selective disclosure hides limits from counterparties, so a
counterparty cannot check them itself and depends on the
"operator-seal" of the enforcing node.  Counterparties that do not
trust that node can refuse envelopes signed by agents.</t>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>A mandate reveals the principal's PID and, through disclosed claims,
part of its purchasing policy.  A disclosed "software" claim reveals
which product the principal uses; principals can keep it undisclosed
to counterparties, since only the enforcing node needs it.  The enforcing node learns every action
of the agent, which it needs to enforce limits.  A delegated mandate carries
its parent with all its disclosures, so a counterparty that receives
it sees every limit of the parent.  Approvals identify
the person who approved, and are kept only by the enforcing node and
the principal.</t>
    </section>
    <section anchor="internationalization-considerations">
      <name>Internationalization Considerations</name>
      <t>Mandates and approvals contain no human-readable text.  Amounts and currencies follow <xref target="I-D.martinez-itp-core"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="media-type">
        <name>Media Type</name>
        <t>IANA is requested to register the following media type in the "Media
Types" registry, following <xref target="RFC6838"/>:</t>
        <dl>
          <dt>Type name:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt>Subtype name:</dt>
          <dd>
            <t>itp-approval+jws</t>
          </dd>
          <dt>Required parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Optional parameters:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Encoding considerations:</dt>
          <dd>
            <t>binary; JWS JSON Serialization, which is UTF-8 JSON</t>
          </dd>
          <dt>Security considerations:</dt>
          <dd>
            <t>Signed JSON without active content.  Integrity and origin come from
the JWS signature, checked as described in <xref target="approval"/>.  See the
Security Considerations of this document.</t>
          </dd>
          <dt>Interoperability considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Published specification:</dt>
          <dd>
            <t>This document</t>
          </dd>
          <dt>Applications that use this media type:</dt>
          <dd>
            <t>Implementations of ITP agent mandates</t>
          </dd>
          <dt>Fragment identifier considerations:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Additional information:</dt>
          <dd>
            <t>Deprecated alias names: N/A; Magic number(s): N/A; File
extension(s): N/A; Macintosh file type code(s): N/A</t>
          </dd>
          <dt>Person and email address to contact for further information:</dt>
          <dd>
            <t>IETF (iesg@ietf.org)</t>
          </dd>
          <dt>Intended usage:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt>Restrictions on usage:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt>Author:</dt>
          <dd>
            <t>Carlos Martinez Garcia-Villarrubia</t>
          </dd>
          <dt>Change controller:</dt>
          <dd>
            <t>IETF</t>
          </dd>
        </dl>
      </section>
      <section anchor="itp-urn-values">
        <name>ITP URN Values</name>
        <t>IANA is requested to register "mandate" ("Credential type of ITP agent
mandates") and "mandate-delegated" ("Credential type of delegated ITP
agent mandates") in the ITP URN Values registry, with this document as
the reference.</t>
      </section>
      <section anchor="itp-error-types">
        <name>ITP Error Types</name>
        <t>IANA is requested to register "mandateInvalid", with HTTP status 403,
the description "Agent mandate missing, invalid, or exceeded", and
this document as the reference, in the ITP Error Types registry.</t>
      </section>
      <section anchor="itp-signer-roles">
        <name>ITP Signer Roles</name>
        <t>IANA is requested to add this document as a reference for the value
"agent" in the ITP Signer Roles registry created by
<xref target="I-D.martinez-itp-core"/>.</t>
      </section>
      <section anchor="iana-actions">
        <name>ITP Mandate Actions</name>
        <t>IANA is requested to create the "ITP Mandate Actions" registry in the
"Invoice Trust Protocol (ITP)" registry group, with the "Specification
Required" policy <xref target="RFC8126"/>.  Each entry has a name, a description
of what it permits, and a reference.  The initial entries are those of
<xref target="actions-table"/>.  Designated experts check that a new action says
exactly which statuses or envelope members it permits, that it cannot
be read as granting access to a payment account, and that its
specification has Security Considerations.</t>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.martinez-itp-core">
          <front>
            <title>Invoice Trust Protocol (ITP): Discovery, Delivery, and Verification of Electronic Invoices</title>
            <author initials="C." surname="Martínez García-Villarrubia" fullname="Carlos Martínez García-Villarrubia">
              <organization/>
            </author>
            <date year="2026" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-martinez-itp-core-00"/>
        </reference>
        <reference anchor="I-D.martinez-itp-lifecycle">
          <front>
            <title>Invoice Trust Protocol (ITP): Lifecycle Status and Payment Information</title>
            <author initials="C." surname="Martínez García-Villarrubia" fullname="Carlos Martínez García-Villarrubia">
              <organization/>
            </author>
            <date year="2026" month="October"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-martinez-itp-lifecycle-00"/>
        </reference>
        <reference anchor="I-D.ietf-oauth-sd-jwt-vc">
          <front>
            <title>SD-JWT-based Verifiable Digital Credentials (SD-JWT VC)</title>
            <author fullname="Oliver Terbu" initials="O." surname="Terbu">
              <organization>MATTR</organization>
            </author>
            <author fullname="Daniel Fett" initials="D." surname="Fett">
              <organization>Authlete Inc.</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <date day="27" month="October" year="2026"/>
            <abstract>
              <t>   This specification describes data formats as well as validation and
   processing rules to express Verifiable Digital Credentials with JSON
   payloads with and without selective disclosure based on the SD-JWT
   format.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-sd-jwt-vc-22"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC7800">
          <front>
            <title>Proof-of-Possession Key Semantics for JSON Web Tokens (JWTs)</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <date month="April" year="2016"/>
            <abstract>
              <t>This specification describes how to declare in a JSON Web Token (JWT) that the presenter of the JWT possesses a particular proof-of- possession key and how the recipient can cryptographically confirm proof of possession of the key by the presenter. Being able to prove possession of a key is also sometimes described as the presenter being a holder-of-key.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7800"/>
          <seriesInfo name="DOI" value="10.17487/RFC7800"/>
        </reference>
        <reference anchor="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="I-D.ietf-oauth-status-list">
          <front>
            <title>Token Status List (TSL)</title>
            <author fullname="Tobias Looker" initials="T." surname="Looker">
              <organization>MATTR</organization>
            </author>
            <author fullname="Paul Bastian" initials="P." surname="Bastian">
              <organization>Bundesdruckerei</organization>
            </author>
            <author fullname="Christian Bormann" initials="C." surname="Bormann">
              <organization>SPRIND</organization>
            </author>
            <date day="21" month="June" year="2026"/>
            <abstract>
              <t>   This specification defines a status mechanism called Token Status
   List (TSL), data structures and processing rules for representing the
   status of tokens secured by JSON Object Signing and Encryption (JOSE)
   or CBOR Object Signing and Encryption (COSE), such as JWT, SD-JWT,
   CBOR Web Token, and ISO mdoc.  It also defines an extension point and
   a registry for future status mechanisms.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-oauth-status-list-21"/>
        </reference>
        <reference anchor="RFC3339">
          <front>
            <title>Date and Time on the Internet: Timestamps</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="C. Newman" initials="C." surname="Newman"/>
            <date month="July" year="2002"/>
            <abstract>
              <t>This document defines a date and time format for use in Internet protocols that is a profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3339"/>
          <seriesInfo name="DOI" value="10.17487/RFC3339"/>
        </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="RFC9901">
          <front>
            <title>Selective Disclosure for JSON Web Tokens</title>
            <author fullname="D. Fett" initials="D." surname="Fett"/>
            <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="November" year="2025"/>
            <abstract>
              <t>This specification defines a mechanism for the selective disclosure
of individual elements of a JSON data structure used as the payload
of a JSON Web Signature (JWS). The primary use case is the selective
disclosure of JSON Web Token (JWT) claims.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9901"/>
          <seriesInfo name="DOI" value="10.17487/RFC9901"/>
        </reference>
        <reference anchor="RFC9278">
          <front>
            <title>JWK Thumbprint URI</title>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="K. Yasuda" initials="K." surname="Yasuda"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This specification registers a kind of URI that represents a JSON Web Key (JWK) Thumbprint value. JWK Thumbprints are defined in RFC 7638. This enables JWK Thumbprints to be used, for instance, as key identifiers in contexts requiring URIs.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9278"/>
          <seriesInfo name="DOI" value="10.17487/RFC9278"/>
        </reference>
        <reference anchor="RFC6838">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <author fullname="T. Hansen" initials="T." surname="Hansen"/>
            <date month="January" year="2013"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in HTTP, MIME, and other Internet protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="13"/>
          <seriesInfo name="RFC" value="6838"/>
          <seriesInfo name="DOI" value="10.17487/RFC6838"/>
        </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>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="OPENID4VP" target="https://openid.net/specs/openid-4-verifiable-presentations-1_0.html">
          <front>
            <title>OpenID for Verifiable Presentations 1.0</title>
            <author>
              <organization>OpenID Foundation</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="AP2" target="https://ap2-protocol.org/ap2/specification/">
          <front>
            <title>Agent Payments Protocol (AP2)</title>
            <author>
              <organization>Google LLC</organization>
            </author>
            <date year="2025"/>
          </front>
        </reference>
        <reference anchor="RFC9396">
          <front>
            <title>OAuth 2.0 Rich Authorization Requests</title>
            <author fullname="T. Lodderstedt" initials="T." surname="Lodderstedt"/>
            <author fullname="J. Richer" initials="J." surname="Richer"/>
            <author fullname="B. Campbell" initials="B." surname="Campbell"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>This document specifies a new parameter authorization_details that is used to carry fine-grained authorization data in OAuth messages.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9396"/>
          <seriesInfo name="DOI" value="10.17487/RFC9396"/>
        </reference>
        <reference anchor="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="I-D.ietf-wimse-aims">
          <front>
            <title>AI Identity Management System</title>
            <author fullname="Pieter Kasselman" initials="P." surname="Kasselman">
              <organization>Defakto Security</organization>
            </author>
            <author fullname="Jeff Lombardo" initials="J." surname="Lombardo">
              <organization>AWS</organization>
            </author>
            <author fullname="Yaroslav Rosomakho" initials="Y." surname="Rosomakho">
              <organization>Zscaler</organization>
            </author>
            <author fullname="Brian Campbell" initials="B." surname="Campbell">
              <organization>Ping Identity</organization>
            </author>
            <author fullname="Nick Steele" initials="N." surname="Steele">
              <organization>OpenAI</organization>
            </author>
            <author fullname="Aaron Parecki" initials="A." surname="Parecki">
              <organization>Okta</organization>
            </author>
            <date day="15" month="September" year="2026"/>
            <abstract>
              <t>   This document proposes best practices for authentication and
   authorization of AI agent interactions.  It leverages existing
   standards such as the Workload Identity in Multi-System Environments
   (WIMSE) architecture and OAuth 2.0 family of specifications.  Rather
   than defining new protocols, this document describes how existing and
   widely deployed standards can be applied or extended to establish
   agent authentication and authorization.  By doing so, it aims to
   provide a framework within which to use existing standards, identify
   gaps and guide future standardization efforts for agent
   authentication and authorization.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-wimse-aims-00"/>
        </reference>
        <reference anchor="RFC7591">
          <front>
            <title>OAuth 2.0 Dynamic Client Registration Protocol</title>
            <author fullname="J. Richer" initials="J." role="editor" surname="Richer"/>
            <author fullname="M. Jones" initials="M." surname="Jones"/>
            <author fullname="J. Bradley" initials="J." surname="Bradley"/>
            <author fullname="M. Machulak" initials="M." surname="Machulak"/>
            <author fullname="P. Hunt" initials="P." surname="Hunt"/>
            <date month="July" year="2015"/>
            <abstract>
              <t>This specification defines mechanisms for dynamically registering OAuth 2.0 clients with authorization servers. Registration requests send a set of desired client metadata values to the authorization server. The resulting registration responses return a client identifier to use at the authorization server and the client metadata values registered for the client. The client can then use this registration information to communicate with the authorization server using the OAuth 2.0 protocol. This specification also defines a set of common client metadata fields and values for clients to use during registration.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7591"/>
          <seriesInfo name="DOI" value="10.17487/RFC7591"/>
        </reference>
        <reference anchor="RFC7942">
          <front>
            <title>Improving Awareness of Running Code: The Implementation Status Section</title>
            <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
            <author fullname="A. Farrel" initials="A." surname="Farrel"/>
            <date month="July" year="2016"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. This will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 628?>

<section anchor="worked-example">
      <name>Worked Example</name>
      <t>This appendix is informative.  It follows one use of the mandate in
<xref target="example-claims"/>.</t>
      <ol spacing="normal" type="1"><li>
          <t>A business registered for VAT in the United Kingdom deploys an
accounts-payable agent.  In its node's administration interface it
creates the agent's key pair, or registers a key that the agent
software generated, and signs a mandate for it with a key of its
Participant Document that is not listed in "delegates".  The mandate allows "accept", "reject", and
"dispute", up to 5000.00 GBP per document and 40000.00 GBP in 30
days, for one supplier, with approval by a person above 2500.00
GBP.  The business's node is the enforcing node.</t>
        </li>
        <li>
          <t>The supplier delivers an envelope with an invoice of 3000.00 GBP
to that node (<xref target="I-D.martinez-itp-core"/>).</t>
        </li>
        <li>
          <t>The agent reads the invoice and decides to accept it.  It obtains a
nonce from the enforcing node, creates the "accepted" status
message with the "agent" member (<xref target="use"/>), and signs it with its
key.</t>
        </li>
        <li>
          <t>The enforcing node runs the checks in <xref target="enforcement"/>.  The
mandate is valid, the action is allowed, the supplier is in
"counterparties", and 3000.00 GBP fits both limits, so the node
reserves the amount.  Because it exceeds "approval_above", the node
answers with status 202 and asks an authorized person to approve,
showing the signed status message and the invoice.</t>
        </li>
        <li>
          <t>After the approval (<xref target="approval"/>), the node adds its
"delegated-issuer" and "operator-seal" signatures, records the
use, and sends the status message to the supplier's node.</t>
        </li>
        <li>
          <t>The supplier's node checks the "agent" member as described at the
end of <xref target="enforcement"/> and counts the status message as an
acceptance by the business (<xref target="I-D.martinez-itp-lifecycle"/>).</t>
        </li>
      </ol>
      <t>Had the invoice contained text that led the agent to accept 50000.00
GBP, step 4 would have refused the action, because the limits are
checked by the node and not by the agent.</t>
    </section>
    <section anchor="example-claims">
      <name>Example Mandate Claims</name>
      <sourcecode type="json"><![CDATA[
{
  "iss": "urn:ietf:params:itp:pid:tax:GB:vat:000000000",
  "sub": "ap-agent-3",
  "vct": "urn:ietf:params:itp:mandate",
  "cnf": {"jwk": {"kty": "OKP", "crv": "Ed25519", "alg": "Ed25519",
                  "x": "<agent public key>"}},
  "aud": "https://node.example.com/itp",
  "iat": 1793180000, "nbf": 1793180000, "exp": 1795772000,
  "status": {"status_list": {"idx": 412,
    "uri": "https://node.example.com/itp/status/1"}},
  "actions": ["accept", "reject", "dispute"],
  "software": {"software_id": "4NRB1-0XZABZI9E6-5SM3R",
               "software_version": "2.1",
               "provider": "Example AP Ltd"},
  "limits": {"currency": "GBP", "per_document": "5000.00",
             "per_period": "40000.00", "period": "P30D",
             "approval_above": "2500.00",
             "counterparties": ["eas:0088:0000000000000"]}
}
]]></sourcecode>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The author used AI-based tools while drafting and reviewing this
document.  The author checked all text and references and is
responsible for the content.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9V963IbOZbmfzwFJh2xJc+QtCTbVTbd0z3yrUrdvmgtVdf2
THQ4wEyQRCmZyAaQktkq9bPsC8xL7LzYxrkAiUxSsnf+bUV0W0xmIoGDg3P5
zoXT6VQEE2o9l8Vpc2VNqeWF63yQZ84GW9paHpxenD2cy5OVboJ8r5pKBe0L
oRYLp6/gsYuznS9LFfTKuu1c6i+tqGzZqI2ey8qpZZhulAum0X+fmtBOFTw5
3fCT08ND4bvFxnhvbBO2rZ7L0zcXb0XTbRbazQXcNZfHh8ffT48Op8fPRGkb
rxvf+bkMrtPiai4fi0u9vbaumgs5lbrWZXC2MaU0uEDTrOC6t8twrZyWOAMP
lypd65UKxjbw6fz19I+/XIgr3XR6LqRcOdu1c1m8Pj0/O7l49VMhpKQZFr9Y
d2malfwRboHrG2XquSwq41sVyvW/GR2WM+tW8J1y5Xoui3UIrZ8/egS3wiVz
pWfxtkdw4dHC2WuvH8VBHhVCdWFtHSxLSCnlsqtrImzxSrnaevleufBf/9no
v8sflSv/6z/V9M+mrpVz3cKoAh9SvjTm7d4nTXzQ7HnONCYYVXt4ZEaXfOd4
kG997/ngiXvfZ91KNebvuB1zWbzU+t1MHvxkG72V57bu4LqfyPPZu9lDeqI0
YTuXF8o5tbKNomu2awLw4XmrTIOXNG1Oiev+t8iMq6tZaTdCNNZtVDBXuOWn
09ezAbeW1uEXUn7boXltfGmvtNtO5GtdG/pLNZX8s3ZmaUpcnbRL+abnUh7R
M9niluN/U2kaP5evZvfvNN8tJRH7W5gDHxmcLtpi7Yz2plnaOIXTJmjX6DB9
DYd575kGKsFJ3kPA2ix1uS3r/ycqvosPyfOgQueRgmdquwGhc9osacts8/8v
xRJZerKBLJhaWMzUV9Nfr8P0qpwLYeJyiUM/nr35cPr6yZ/PhvT82Orm9LVc
Wsecpha1lmdOe90EpJWXR7PD/QSzbjWXPMJb24FkRpGYL/cpvU65lQ5zGWWZ
bXVjqlmjwyPf6tLzhemT6VWaxbTNZzE9+nw4W4dNLaQ8OTseroK0Cm+0z9ji
5Oz44T1z/9HaVa3lu3evvmXSqj2etjw0Cd/2GKefDugjIabTqVQLH5wqgxAX
a+NlZcsOObDWwUslF503jfae52T+rqUaaRkZrDTed3oiVFnqNkyk07/qMkyk
dRIEfRc0qyntSVIEK51urQuyZUJMZFg7263WIqy1vO/oTOS1CWvTyNpsTPAy
rFWQ8FCaq9fBz8RJkyZNEsnAglgpz6WS56hFzZVGiVZb3zkt/3j+8YP8RS/k
hb3UjTgghflQlk5XugFlQYut5GILbxXprcFKJS/1Vq51Hb9lCsGSNfB4Sc8p
PJGVBCujsZUWuAanS+sqL7Uq17LzekY7tDFVVWshHsCZc7bqSuRccW43Wrad
K9fKg56Gl6gSdYOftmqLpyNtFe1nF+xGBV1F+8DrpkpbgyN4EkYb7b1aaT+T
8oT0jXatcmEr41S1udJe2kaLRusKl3/Z2Gt5vTblut+LjAhl8Hh44TXXax3W
2tHXtCDj48amZ75LfBe2Mykv8k3GeVS6re1WV7gT9BqaDTAG80civL7SDbw4
e4HcGL/Qa3UFjAlz01/Upq21XOhSdV7LoL8EaRqpmkgmaYJsnS2197qS5Vo1
K13h+3AgY90MzpKWoDBAC36Nn+XNzV6VfHsrK72ExeIQBU64kN6sGu2Es7Wm
o5R9t9FgUMaX6uZK17blmSw6ONSwUvjSODAyAx/fkB99JHQuCngWcyH+Gcfl
IwQnme1J+edXvIp9Av72ljZrYZoKmAzMRSQ+HBY8NcBZpjSt4rOCF70OsJJW
u40JyLMlyXjVVELG3T24ueH53N4+fAFTXNtrmBm9AqjlEyX2sjhea5290l5I
2VrvNRrq8HJ4A8wSWQOOpW00vLLz6XXMXkgpu4zTwkMOx7LWeMInfC5aB1wY
aEu92mgh5aKrVjrIpbMbudBwlH2LG0MCUXp9pZ2qcRxccPbKOAsVgm46PNq9
wU9DwpSToFaNxXN3cHPT34eDSKQrDNUCMVRNa2i187aRamGvQPSHtdN+besK
Roh33t4+nAkRbZc47Z8uLs6mCwWnhIW8jBrJR3I4ZTzuQDDTDVjB01p1TaWd
aVYT6VVDWz71pdO6wYu4W2qrNatfNjf/1mnP1rPx0na4Gb60LYjRjyddWMvj
2aH8BG89GaiFTxqf9fLm5g+f3r56/vj597e3slQNuHkORA3tqfBduZbKS7VB
GUtT6YdGhSHffCGRwKM9+/75Yx6NxLtQIDMMcle/AzMpX9qwlpX2pTMLLa/h
wKixBvPaXWknVk4hC8EpKWsDlEW5WpZJDzntbedKjfKbDwgQxjQ+aFWJXocN
Tx9IYOR6e90A5/uJZNNG47HMVIHRnvRWZWVjg/RrNAn2zzkOPNnVhQL4Wu7X
gCTz7zKZbm5Ozo5vb6WqvRUdMFJ0uSewT715JiuzMkHVmRZneR/ND7nYkv7w
L1Arx4EkejpDFYnik6UIX2ISrMyVFv02RLYHojuUpaBP3zq10dfWXbI2xMUZ
nFbYSmYycXPzhyRPr83G66kyG397y3cut72MA5aUMGBtVYWnGHYA7ipx1/Hg
wzbACl4M5WN+J84ZGJ22BwQRbg2dJ29wlzLFMEn6B0TkAoxq2tDIb8D1C40C
CLeX1iaXkQBA5WRkxIeArtqLbzQjyGCgm+mYRtGiRCJJIm5ltYeNmgnx4AGy
1psvrXYGVjM2gI3PvlQ1s6JOl+CGaMUoVK0+yHBthWkq3eqmwnvAmNj07old
JpsvGSY9r6VDKUjXwNjf+fx8+ons0NjL9DCYJzc3bLhMy5r4BDdH5GYWaybS
5pVcazitDswEFNdAUrhtaFGKHYsSeR63My1OO8/m/EyIT9p3dQBbrq5h9+kL
XUnb8KxNDYPXxgcgoBtxlTReVMaXHdpXCu1TWaugnXT6yvhIRxN2t0SDgXH8
RG5sE9ZeqCU81XaLmrXERAa7IoqgPMJl2OXdFhgwinxlG9DZ0faQr4GCBj+T
pQfsf42Cq3j/8/lFMaF/5YeP+PenN//z59NPb17D3+c/nbx7l/4QfMf5Tx9/
fve6/6t/8tXH9+/ffHhND3/4eCEHl0Tx/uQvBZ3D4uPZxenHDyfvCokmdE5S
2OZgYTcMSm+n0Z7yIuobJPLLV2f/538fPZE3N//06e2r46Oj57e3/OHZ0Q9P
bm/ReKa32abe8sew1luh2lYrh5ZyXctStSBuSQz7NegS2OiZEP/8H0CZv87l
7xZle/Tk93wBFjy4GGk2uIg0272y8zARcc+lPa9J1BxcH1F6ON+Tvww+R7pn
F3/3h9o0Wk6Pnv3h90KIC+02/cHD43qXxQ9Hbs+3CUqBWxwewiqyMNmRcqMV
GEgzgGaEqipk0LkQZ840IDzquZjjecnVPZ1jEDuZbzwTAjUuPHAe/Ue8Eww/
ksWtM1cge4aSP4kk8kVJUAOiTE/QPGZCvBkomDixKBnZOTbNQMrhBMq1Li/p
FCZbAfBHIIiQLBbgzEbUXt48iO6BEANL6JudF8IbZBG2bSGKqvwX+q4ARWO9
JvK5KfpllYQBjZf8CZ8kVABtcXBTEyHAu0XARAPw12/K63hsD+7kk4ksyJUE
SvxJb33xMO4lGiIgXImEBRuZ2hegZhthW+1UQGGfdhRPc7yxQrsPpur0EjzH
UjUwZoYANexrA6hCtmJ0Gg2xB9EE111FtFhuNJjGxm+QK3qtR/sMAQ/0l881
Gv3yePa0l837t+aF4P07pfe910FVKqhIBjgmrCVIL8LhAbzRe3ng9N8643T1
MB2MbGPOTl/DxH7+9AEmu5EHReeaOcxi3iqnNn5uQjtvTTWfzWYFuD++W4zG
PGmisWZ6p5wIVwLnNBEkSi+eyK4xf+s0uBgQ0EHqRkLByQ6yF2SZJSgbFTpw
EclbmwlxVYbRbPYugMcuZkKUzXIPTSIMQ0oUNnRC9mbx6/VlIUvbLA0D1XKj
w9pWrDF+eHZ4CPqTqP/HX/4E9wZlGi8LVa/gjaqr9rzxA0iAdAR+/vSuhzNy
oTGT8tXAF2FYgNxbp+st3Bm/Y8BmIFDgbIKfSC53lDlCykJ1VfECDaLen0CF
CnzsTMWIDKGcsHLX1cC6Qsqbm8i+T2ZHs8cwdyDGU9ClyIkqkIxDrbfQCGSk
swpwnHa+iEsecOQeCTHBYYSUgGCxnNl79L8yoJA9xXvDCOepvCzgD7YyeNoo
yKRkz438fTK7B29h+GUEuEyktwm1Bcglm1TyjccgTTTdYVsuZ0IYFSayWSwn
YP+ND54nJftPOemTRshO0ELLK1Wbivbakppr5GMIV1Rq6+FY0zxGL5BOL7XT
TakZq6K70KbVEJuDt4/lFt4zhXtubydC5lTISEZQwZW91ANuBUO1KaNHTCEj
IeU7eCMhDwhvgzzc1T3j3c91xZADe5ZB9D4bI7vp0lSJpUb717MwkSF6FTuH
9y14cL3OwfAyw4q79yM8l87dDrFBljA2uCOBIXCKBLhSNVg5UQ2jtcE8IU/4
aadXxge3FRJ0r1GNmvLAAJGRZqOIcRwOTCPkNb5vGsBJQschApTjGdkFiA02
KsrOARttCzKZGpjqXBatdp+j9V7Ig436YjbdBjA6xJ5gPeBVJwO/RzIeTuhp
8Ils1T8rgw0KAlLsMhd8Q3SXSXED6/FsJ+kWeaBk1bkU1r1eA/YM5wNZROvL
pMSLeF+BuQVqs1GOlPhJCz6x+SJP4DOczMePHz8HSyaH3Yuzx4evCxi2ODv6
pYBJDBEnGPdAZdt6dvo6Rwc2CgwZVeMyXwA+lscuNpBygDAvhgEUqnmCiTQJ
Adix+40y/bdO1QxjI/fBJONGfIbcCZokM0gMAFyc9UNcwE2J2R6y/xbR1M+I
taaF0oYT/kpbRRYvMRyHO/ZhthNURzlGK+UJQZfItgUNXSRWzl0UfPYupxjE
DvI2DFPaTascy5sJa2GADN0Vgx4bVWkgLp1stfCQ6KDptcksSnxN8YGS3PUo
IpVsECm90sTHaISYRnqIgQGoZ0BdoaJugDxgOjWl08onXb1RBvwjRttnQmzU
l88ZVn5gW/hX1ckSofQcmNOyc2hW9Ld78HPtta52kHSS0KBA9FJ1NYrZQ1Ak
0ZMavqgXCBzQIoecJV18JmFcPae7rkH/GhRJQLN9bE3OZREH+GwqkjD9lSvt
AEspyL1hJ42dSI9IZkOhIe3JI2OlmsxzIMwfUMM+P4p4k5QFi2pX0HbDk3GT
8+yXiAi2bW1GqwWj8ZQj0EO1FfHGkXZYmqZinxD1Jh6QXqOkgKziZbUURQUx
w1QYSiHCjSAX4qqrG+3UwtQAHxpwdyA0aIEaEO1syChnd0PDwtEm6I2bfrN4
xbzI+Y6NGnEQCTETyPvyAbmojJhX02NeG1vpGuZP5i6cQdtwXIktivgiIQmy
47DEhqKSAaOgqunBR9Q/TuNCelgInMAXSAoKtXKER8U4a1jrTXLF8YNJPqGs
7QpMqFfkesHAJPO06937Yhhwl3RzkaTjBFFjAWYoq1hAwki3wl/DUwxX4sLh
78Q6xUQg+4OoagJ8cj2Igb4h8/hBbsEP7feH7PDzIQGgkvgJD16Ot0Wrp7gq
k3wV9zpgeHruu2OaTKUC3fWZEL+x3SJ/k2cYJPXyN/HbdDrF/4nfyAuXv6F3
DBPuw6B8INOEUW2hbceUhZFYEcrfYoZSETUjfU3+T/Y1XYhfx8yP/nu+wt+3
apt9x+bL1KPF85u4mcsHA5uKEmj+tThlAywZxswVt0J8AJuIlubTF3jm/SA4
FuMyjG3zmYIpFGxIcrpEjJJwrkr/pAlyrVizLbZ8CoEvKCooSP+xXIsqfAXe
b8hSE/qzYRmlV40sjEfGBtYB86dZwj/gkpJADWYT0Qx6V0H2cCHfn/wFPBof
01pqAl9q64F+uTIdehvqyppKAEyLoH9d59kTwbK9kRtSu1khXtNiRZVSaTJZ
RFTkQGKE71Duc1BgKNBFPD9Oe9idlzEZA5VBn2iVZMgw/SHF5yMaBUkqBB8O
EQPOYpmMQRjrKMCUQWLMbaJfTQ+dVhjXJDbbo53GmIOIFM5INQEuQv7ZH2pD
TPNnCsokr+XmASxTYKJTluwAgeuY+WHdyJGOHh3cCpiRJpkmIDKPZ1eutaq0
Q/YuTGg/Q6JJEUkMDOlMgBBDWXcVzKe/aSIQ2ZkQVMpW7SVYHpDKQbYEIkHn
P51Mj59+Ly/W3WYBdA+CnfXvHz+7vY3SCbxOEElwBGaCoOstBvTQU4l40lyI
f/zjH/JXbxtxg/ANTnUubzAzrogidi6L3zHii0SgcwIJExnLIp76Em76fTGh
52Ow+vNiW2QpzujHssUAWbaPTGjjI53H1x0eqaNnx0eH08PDw8PpD/B/z+D/
Dvv/jsDOvxW3sAQh8EFy5H/++fT11Q8joJC2mU6H8VmEfHR+SBBDFpQ0lMQC
UsMHtWllZZZLCNglRxieAOSltuUlsmHEQcTjw0PpdWmbipMdLrVuPQUfojtt
s+jn9/39lOEHsxBO9/P8k97Kl6ZBxoGNOKB9f/788AjOa8IpYsYB7xcyI4hA
5iSx55ghtzWAkSR+U+xjJDm0E9jG08ucicQVnEWn28CwOIyIspPyvq4QQ9B+
DWFpCqb3O2MXyJGCyIoP1uZS411mT7A9kn8yjrGLQTLWLt1QX1wbD34V+CFe
7jNbiKxoogIyU31eK78uKKXB76U0v45IkWTEhBTdMN6EUHA+VDqbKGibnhK5
yCY+8paTwXYketwLXMpMiPMRDMjY1iJLf4ia4UfdYJoUGJTiXDujavY1BoDj
FnVeqZzLz1QvD9nH6Ffvpaqq3r0aIVkUAeZBwGjQHOu4MxNvMhCeFYhNCpd8
znDWIjjVeLRWy+1nr+pAgBwPOBTqE5GN6PXf2NWDXLNiIhcUxTGsH/ZKDHQk
xwCxYbORbnB6iX4E4VYsVE8bxE8LMo1g/0Xuqm5jYsxG63A3oDDyvsRIZXGS
EeO/wFqm6bQcTxeh4xmqwzxXknYVPDTYmR7cMY1sa1Vqwhw4YtXv+j3Bt4cM
X8IjCg/5gC8on0lVFYZJkgkxpTfkkyI/k21JDG1yJmuCQr0d8o8PkFUBt6cp
T2t9pWuZHVZCEkURI31Tr1Wdv3eQawXjk4B+u2MteAFSq6r6dEXIcOlH8miX
vMkyIG8e5MmJQnwEEbpH9KYQL4n1Mksbg0BGR6HAlEqERuCAjdlIu1YOc0q3
AGqukuOF+z+Bm8GrngtxNCOcbzswx7KtYON8P17+HaAsX8EFvxp+lYCA3WFX
TtIECDUgoyfOBRQ4Oa5wDMvOebLuu5a0XL6cPjFdytymBaZAFsOV4akFSIMg
3jwt1i4x/Q4ezxKM4CE8YC+EOB7QcqyaMGMn+Kj/ImQzErNoKPVzQsPnhRCP
Z2mSO4GRAzT1wTuK++MsiBaaZDT2kXjxqI3Fb3TLF9viDkmKL4Yxhu+GE4d3
Y/K1xOTreOdX0jXIL4iMSa+bZK5RGetQDDngPcpBpOP7+lweINoA1NYa59GD
IihNSQ3t28FIpsEo7CoVTpemNSg9YRgiJSoUGtfHyFMWzkN5j9LVLkEB1TUQ
H3XQotvC33wuBkR9IcSTGauVjBR3KBhD2xXjJXwskIvIvT4Y7HQfWJmkXe9j
LYO9z9YSgyEM3XJC5MNoM8OdaDYzqWfZSzApKlllKtiNKVVdbxkK1xkSgJPm
4z6I1cDRu2fbMr+dOFRxNiQA4ZwjzjMyMZsQKzTSeC1ghTznF3wChXg6i9Rl
UuovJYJ745DEBNNF8r3qmmBqguz7GIRJnvU4SxzI5K8xu5t9MDp9x4fHhGST
fPTbplw729gORqJ0wvuyptgIGzsEtbec34KjxumpJgJZFGjKYR/bDNznYSQV
FtWEOiY8XeqtuMdIIBgBuCWp6oGOMI1IbDQMcSEvgcTB28hHyWdFNnKfR8QW
3gSTxvEY9nu5nzTkxykJDqF2U8Kto0kQNQAoYQ4OgDxn3zQltJDVU/huwUc9
aayQ3PqkTPYx9A7s0vMV/V2ZlfYhxpnvxjT4bgbKJ6h9IPSDm1mh6wuMh0mK
yAK9VurBYgaBzTL6I5Ohb6u8rCEnR41jEk5TVksupCFtvCmhPrIaJUZxEQAy
wh0BDtVVJljnJTjsi9r4mFpBKrQyFW40GP0S0wyTX4ZPZoYdyIdhdvmyzz3/
aqI5R4IR63NUI8Fg0bCwaBdjYldg0s9siNAJpzf2SleTGEyNebiKJ68rtAAR
CHEaowDj8JfHXF/C02Sjr5k/yeEHMqL9MU8uNozTOfZISagkMyJ/J2GTjN5C
sQwcGoBEcjqItLB7kDbw7fYsCrd44C3fSSeZ6DQCbdT+uaPgBXVaib1KdK/r
952/x1PY9e+TA59NV/B006kaiQrKCu8DwhB7uYTIAuijZAFHUtIbyCVh82OI
pxcYAv4MS/wc1JddMw9NUKAFHF1d9TV/GCiFRK3B7fuEeGbBPcQMZgiOU627
KIIu1w2o92mKeEzk0vhS1bIoa60cuIX5lyVcqGuqOS74E35jo0sK1/IQCqim
SuuNrvqBgCKsukYkibF8JkUWqYnsCN4HgoGsWho9Ed9Czcl+cmaT5oCo+Mrk
U6YJYhU88RJinTlkIPZM3XgJIYqvbhSQB7X5vvBLpMww0BRfMV4jQH8CQ8bp
gaUysGXRe8bziPZhfHjgfmW2mnUUfF44U60gmro75uhRKG9LiIfgSVH0l4nM
OpcjakWyMlliobBCWuSpGFw2k6nSPK2AsshjyBztptxUysYRTlddGQM8++5I
gDXRvlWmyuJPeD8gJVzLB6IIzNRUYevZN6liztvJYHDjBYE5abtSuS4Ex4C/
WwXlIxMowSx1FriD/CBVO62qrcCkyYXWDcKbyDyZMY7K59o0FSK8iotL2BvD
97Bhks2MsZfBZKl8RgYLUAVtL/ncA65HwKNE27zas15KYbheGywnpSgnmTlI
AKjlpYR/zzsXDS009gMJvnSScTD0QKLhj98LShHwaaPwTTgewGpDf3FQtEe1
4F8PPAnVjFUcZj1wJNmEO5y/rqm193NpggDglrJ95Vht9SD1/RmLX8tXHER8
XmS5sNFHRsiK5QlP9UUCJKKtC4MjWHGATkZKREhRScgtH8la0MUJu7gD7IVx
eV47qIrgXDbfWxR5EK2fZDrnwweQbmJPrvB/A/oSg1xSdCh2YC+5O98x8CUi
8IV1o3d6x/IaCj4xlzfmv5gVZmnAUX0hEgxVplYQkGLPfgbG/3QlEvgyEyIG
nXHmSSxi7jvXdY8h9CREKcVMcN0EhOSpnvsahNtii7YrFfFR5jRgqlgSiCd/
mKUrrlWTpyIEi6WedxSH7/f5Bc0PVzIo8E1pCA+gk0/MhLt5kCW0ZeFlzn7J
SDHOvpErp7FSDzMZDhHWxSmJHqTMitAZpc297Ixl4yQp/ivlidjlH5wEJtl8
Y+4MBVtShHDnKUzVnv96fTntvdi5XyuIV88LjrbpSrB+G7q6pLsdVUz0jMwx
zuMfnnGanFQiEwjseabl31OGQtlmDEYK5LV8IEojBeGk/AA0TnxNt8QcH+Qv
LAEFNwzoYZ1slHP2Ou5hviRs+FDoL20hG8slmfEmkd9U7TJGvX9IZHicDk0G
zuXCY5A7hqd3Nx2B0rV2Bi6m+2hIxjt2H4p6IycLybx92RimESoli/EGJSmH
psdXs2wIsxjALhh4HMLbdZ9IGwk/9tIonsSVb/AM5V+T2EtocFYIl8BFyoPM
xGWsv+cSCMZecSSCN+IeLSHTNhUegXw4GWQYn1FXiJsHCdwT4hdwC8aQIRCM
4ESwxiBdPPpiOZu3tjblVqqwL7DPOITH2Sd3XvnLMXgCVWXx9VjrNoAkoTbi
POqMtzU2zIB6PUg/HESLs3I/TG6ZxlH+5ddrUGUkrsSwvGJcggWbtNkTREhB
rorzxFI+ZAYp5MuPKQYqJk+6ZBNWaDN7UVtwPLEUa8Xp9xzzjyhDX3rFe/oZ
YLskF0AqRhPkM6FuZLbsWh8MykHOO7ucE1GMYPDCqBCxhmGmGXef4H3pS4eU
yHo1DNMF8sgwkujmJrUHw9pMRKQwWs66HQsAD1K9wcvZY0qIGDz4MAmEqLUZ
xBhWJ43SzTxDv8Mshb3nlSBWvCsyYdrhHmftg69QIMDxiL4xDUgFAnRRr1ZY
esfD7Q/kM1aB7ZCIyHmPJSzHpmTxWHVJuvcORE8khDXaT8PeD1gWytnCLZ0d
B716ov8nkoZHL6xJRRqNabs6Jq3HRkTDxkqqSdXp+CQtYGN8rRVYT5gC+0Ce
DjosxMIo8cGGCJRDJox8g5jqXLbkShOwRllUnvNmCEUXg3YBWBORlchTU5cf
nj85xqjDx0E7R+zm+D+ahW9f3NHScSbl655Yc0x/h8RSkFyjJggNc0osMxt2
ksjM7PvKNN6DTMIGkqaRlcY95qyid6aEgtu5OGlVudbxM3ayOYAuAU2lq4dY
ZdkEVYY5I8wgvmZAX3l3nws4KJgdP3aXgTsAnYCNO4dANmDSr2wDeU8kuLij
go9floMv7+3V8E21822LfNNXgrMCpn47mEjv7Mb42CINxVZl4axxJ7DUyE5w
jGFpdB0T5FQIqlxTCAD6g/SnodwpVkUWB58T2upQcn48Id9lzcT69Ne809Qa
Gi4AlBpESElkfQZZyoBAlB+bmLE3gh2X+ju+81yn9oLyCNK57FdPOSeKS9bY
MGfPgZJGWD5jvgU+0daGuhcR/GMabECDjoroYySD9ju6ttfjurd9ZVET7gyD
uXkDwAZFM+8DT4RxhawNIYSBemST5NIwXXwXSUsdFHxf+SCCWa0Dll5AU74a
7a5xrdoEpLEL42wLT6ivIJt4N8jad0iKUt1jbne0k7V0DGPHOWc4+kyIVOkK
+oMFPPXrAAXExf076RWI86DyU1mTAOYaqiRItSLUJ0jXy/06KOJzYa1rTLqH
WpbcxCHumY8O3K61HHUYFkayBtidOjhbu2lWl5Tphxldw02ENjL6OupezJKN
MTMg/cY2hvojsF3BWXhYzsIda6ivYGoq53RW2YLRjivLfcmCuoRWP8sl1nxS
heWw7sdpzCfNjS2Q7rNRl4xUuNxn8WQZO3cCIwKQyxTN7TiFnNMqs+rhxkpb
V0P73zRd4I6dAsG9UV67CncX5iou7FJYlEXEgOCpt2SGZEQ34cVuZj5m3u5z
BzCTxmw0plbEkdntG+ciUUnPnkHIbWKjWFGscNDXkyG/O/OXvpr5it7KqOef
021NVavaAADCp2cE9VLuCJ5EiCITgitc7FLHJ5KcqoEETKJvHMiI3QhREsQM
JA7hZYWXfV0MAeQEqPYoFiZyA3v3jVN7p1mukQ1YnaJXPtxTEi1iACLz2Imj
NyxWqKcaWhexRGQnSPmNXSGyDnUC5VCG55KKWJJujYc5yzDGfnBorJxBpVi5
a6v0dgTsMWmIXQQHk6eir5PQxljEA9BJSGl+ffctcooRIemf2UlY4PeKyGpU
2TgU7SDlXvSfkYfQQQFm6Zoe/9xp8BdVpL0rjZObre7XAxAJbfygXjmCy2ye
cEQwVRPa1BQtGRgnd4M5ogdz7sFyvB2XgQ/CFpDiitVLNE1SsgMwDyYRna7U
dEVwJId9/ejScnw8Rbjj8dsvg4Yp1zPu8atdo6hCOCISY7brNXxT9Q5hlD0g
y9fdRjVTOMZUO6e/hLz8G8RfnylGqOZXuqCdnnw42ZnIgwfyva6MwpJ2IfAe
lD4orDQ3eibNiDSgV2FOBT4HhYepjAuHElgdnxeA9s8Qkvr9M6gSmgu8k3qb
izkpHNYz4rxbhPzLMYwDKpr6HEgEfjX0sIMbPzw6EeIjF2jv++5NU1rUL0PP
BL5fmEa57QvEmXZhpazRws8Xb6fPqE5BnO/3dLD3FneUgqFisxpFcpdd5hn1
YV/hAJiB6MzKQMxxo1EGc1k3zChLEI+p5rvebZ+rN5PyXMc+L3f4anRMhmVq
yL8oqrloenddSMezDlObQCHlXcmp9j4bUoiTfmNZnFPCqPEZD8Fzp/ubLSbM
AY+MEG+dWm36rChsznTHJE+4jRogiH1Hfvj6tW6dLslTqg0kVICpgY+9kO/V
ypTcPuDAP+Srb00NtNRfgm4gUa3/5r0qwUXya7mEAC9ybmkrHe8QgvFW9Ayg
gSIk5TuuZy3JQUfDKDYqGM0Wfm1EHhjtV+lHOx7SVjWUO6RWSEFoeAdM+Un7
4Aw7F5DmGW8gqnB7+sEvCtzxsxdCvCLXlv2kWrs4IZQesEEQ3fgz1Uh/RYKk
Wj55ULzqG7IjwfLdTs3FiocxHLFTRL13hF7VnF6ciSHnQOSWBNVw0pmkYgdn
0HoxZpwxkDNLy37jnHXUC+Rb1x0D4vwm6LAcje4nh48pnydH4/jHBqLaxF+g
gR7KhsZBPzSi82Q+ivHshzDUJCdBtoBEg35555Qq/8nWd65PVdUOtdBhiKBX
zJrHrD4RMweyKeQvSXOAhiCMLd6DjqWJjpsA3TwYNP65Y+70DtJbe0bp9RdP
V9z7cyDZ7fiLPHlK4HkuH5PeKmLQJDboPP4ehfYb8PUol4GC1SCYJkOUVmAT
H0WIK3UO6DNXIp+SRRfbHcGIhl3dgHFguxS7XY8Q30RFA/48NGYNPg95Uaom
e/Jebb3QX1QZsJcoKMfUVBkYM2LSDMwPZht4+uRBCPROFGo0bI6NXu7dFf9Z
bQU29s4pjGS7Q+HxLzIsVHkJJhH8QpKu5BsOT9w8uMYLU8bDbrmlsIqhCAxc
pl86oWBurN+EWA5XPYVBb1+x29t3hvVMJ3135CyMhL+OcnIRD8nPDUZJ/2Sa
VWU33MTDx4z9cW9fPGBoVHAJD1YGq2pjmizyBBp+qfCXELCMBE9C1oTpO+qZ
3yrjUMLE2XkOlw3bAsAQqc/NCms4QzSjuaA9UYM6NI06m3EZyH+vKCv2U4nN
JGgzYkrbJKXbxfY2fcrdhMuvnh4eHs4OD+WPL88QhxsU6jw5zL413FkOW2dR
ZAt2nXvguBiPvrv9/vFTHAyG+PHl2egHMb7zgySlnTLV4xneHt8W01mHaVs0
g/63LuxSPu5XgFUnNnOg76uRxGKuvjYWjif3BuWxyccvCT2ysdkI+pKnqZQa
W88wPpNC/ePEm5wDs/TRnfKeO/OsU8eInO1M3w0fxrjUoNyezPY5utzeJ0Xp
qSN3/isNqStUnsXASniUl0QZJpxOFHcLRQcVBo4xZphxtklyib8/Ab8mEBui
+77SHIbYkx2bRRnMffU/+TBUyuN3C3lAkfhLn/8UAPhZxMkhucpYAhi7jmSx
yFHAOQJwzDYzrFc6WUaHMh2XcaVRnylQ0e/B0OndwYnRPrwrAd5P8jpZGAFh
VGQSHQvYx+XKdrB1fC5nQnw/PIHxwGaZHSO2HPhnqaMUJKJSIGzAYXkqyJ5Z
qUzop8RtwiWSGvlqfrUQP6nBbkTIAWwiCDJxXUsOmfZH+ykLQ/Hjy7OJ9EG3
8om8tl1dUf9Srl3IzsOkT+wd5MqI6MHyChKmi0hlVtdP9cmsn6OJxj13bh6M
9Oq4jwgkit3RNxca/wb1Zf7jy/mVCvPUzgMbgGBN1BxOD/8Q5GO6DHlqX+nD
i/dB4thc3mCHXfj3MmDjkY9/OqP+K1fw6U11/PTp0XNM4qhXgyvpZ9/6/4ov
2P6E+/CkXr6/L6gTKSaNfUtvE0ztmMujH54/PoJWJocTWTSL5fgS5Ijhpac/
/HAMl5Aq1KYIVkR/fgaNjJ9NBfN7cnQc+6c487XpPKIxHh2lJbDhPZf/sU99
J739V5pMhFFxOlmXvLksnnz49PJoevi//v3k5b+fPn/z/fTp+fvHn3bputtL
by6L49nRnjtTUzzYJ2bHkzP5LlQFzZ5T8mA2KZtmLosfX+KeD8Kic1mwzTF+
UR4MgHUcxttSK885d9gcPzgS9LCOp/tfMVI/QG2t/Pzw8Nmz+WH+X/HX1Nbm
gTwpIR+g1hUiL17czAkd0dW/FktVe13cciMNVBjUYubklH8+KFhbe85+x98Z
jD93RpE80h+7TVN4rIR21TUJKXqS/RzPSfGQxt+CsQ92cPQ7I8wm/i+jh2dd
UnYAAA==

-->

</rfc>
