<?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 3.2.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-araut-oauth-transaction-tokens-for-agents-02" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title>Transaction Tokens For Agents</title>
    <seriesInfo name="Internet-Draft" value="draft-araut-oauth-transaction-tokens-for-agents-02"/>
    <author fullname="ASHAY RAUT">
      <organization/>
      <address>
        <email>asharaut@amazon.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="22"/>
    <keyword>next generation</keyword>
    <keyword>unicorn</keyword>
    <keyword>sparkling distributed ledger</keyword>
    <abstract>
      <?line 36?>

<t>This document specifies an extension to the to support agent context propagation within Transaction Tokens for agent-based workloads. The extension defines the use of the <tt>act</tt> field to identify the agent performing the action, and leverages the existing <tt>sub</tt> field (as defined in the base Transaction Tokens specification) to represent the principal. The <tt>sub</tt> field is populated according to the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, based on the 'subject_token' provided in the token request. For autonomous agents operating independently, the <tt>sub</tt> field represents the agent itself. These mechanisms enable services within the call graph to make more granular access control decisions, thereby enhancing security.  This document specifies an extension to OAuth Transaction Tokens <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> to support agent context propagation within Transaction Tokens for agent-based workloads. The extension defines
the <tt>agentic_ctx</tt> claim, a structured JWT claim that carries chain-level metadata required for multi-agent flow integrity and MAY contain additional deployment-specific agent context. The extension addresses two deployment patterns: single-agent flows where one agent acts on behalf of a user within a transaction, and multi-agent flows where multiple agents collaborate across a call chain.  In multi-agent scenarios, the Transaction Token is replaced at each agent transition by the Transaction Token Service, updating the <tt>agentic_ctx</tt> claim while preserving the immutable identity context (<tt>sub</tt> and <tt>act</tt> claims) established at transaction
initiation. This specification leverages the existing <tt>act</tt> claim as defined in <eref target="https://datatracker.ietf.org/doc/html/rfc8693">RFC8693</eref> and the  <tt>sub</tt> claim as defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.  It does not define new token types or grant types; it operates entirely within the existing Transaction Token issuance and replacement mechanisms defined by the base specification.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ashayraut.github.io/oauth-transactiontokens-for-agents/draft-oauth-transaction-tokens-for-agents.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-araut-oauth-transaction-tokens-for-agents/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ashayraut/oauth-transactiontokens-for-agents"/>.</t>
    </note>
  </front>
  <middle>
    <?line 42?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Traditional zero trust authorization systems face new challenges when
applied to AI agent workloads.  Unlike conventional web services,
AI agents possess capabilities for autonomous operation, behavioral
adaptation, and dynamic integration with various data sources.  These
characteristics may lead to decisions that extend beyond their
initial operational boundaries.</t>
      <t>Transaction Tokens (Txn-Tokens) are short-lived, signed JSON Web
Tokens [RFC7519] that convey identity and authorization context.
However, the current Txn-Token format lacks sufficient context for
services within the call chain to implement fine-grained access
control policies for agent-based workflows.  Specifically, it does
not provide adequate information about the AI agent's chain-level
context, limiting transaction traceability and authorization
granularity in multi-agent deployments.</t>
      <t>This document defines the <tt>agentic_ctx</tt> claim, a structured extension
within a Transaction Token that carries chain-level metadata for
multi-agent flow integrity.  It also specifies how the existing <tt>act</tt>
claim (defined in [RFC8693]) and <tt>sub</tt> claim (defined in
<eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>) are used in agent-based transaction flows.</t>
      <t>The extension introduces a two-layer model for agent transaction
context:</t>
      <ul spacing="normal">
        <li>
          <t>Identity Layer: The <tt>sub</tt> claim (representing the subject of the
transaction) and the <tt>act</tt> claim (representing the agent that
obtained the original access token) are immutable throughout the
transaction lifetime.  These claims are populated per the rules
defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref> and <eref target="https://datatracker.ietf.org/doc/html/rfc8693">RFC8693</eref> respectively.</t>
        </li>
        <li>
          <t>Context Layer: The <tt>agentic_ctx</tt> claim carries chain-level
metadata required for multi-agent flow integrity (hop tracking,
current and originating agent identifiers) and MAY contain
additional deployment-specific agent context.  The internal
structure beyond the normative fields defined in this specification
is not prescribed; deployments MAY include additional context such
as operational posture, provenance, assurance levels, or identity
information as required by their trust domain policies.</t>
        </li>
      </ul>
      <t>To support richer context population, the TTS SHOULD have access to
an Agent Registry or equivalent mechanism that enables it to
distinguish agent callers from non-agent workload callers and to
source agent metadata within the trust domain.  When the TTS identifies a caller as an agent,
it applies agent-specific token issuance rules as defined in this
specification.  When the caller is not identified as an agent, the
TTS follows the base specification rules without modification.
Deployments without an Agent Registry MAY still populate
<tt>agentic_ctx</tt> using information derivable from the token exchange
flow itself (e.g., <tt>current_actor</tt> from <tt>client_id</tt>, <tt>hop_count</tt>
from replacement count).</t>
      <t>This extension leverages the existing Txn-Token infrastructure to
enable secure propagation of AI agent context throughout the
service graph.</t>
      <section anchor="conventions-and-terminology">
        <name>Conventions and Terminology</name>
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <eref target="https://datatracker.ietf.org/doc/html/rfc2119">RFC2119</eref> <eref target="https://datatracker.ietf.org/doc/html/rfc8174">RFC8174</eref> when, and only when, they appear in all capitals, as shown here.</t>
      </section>
    </section>
    <section anchor="terminology">
      <name>Terminology</name>
      <t>Agentic-AI: AI Agentic applications are software applications that utilize
Large Language Models (LLM)s and plans, reasons,and takes actions independently
to achieve complex, multi-step goals with minimal human oversight.</t>
      <t>Workload:
An independent computational unit that can autonomously receive and process
invocations, and can generate invocations of other workloads.
Examples of workloads include containerized microservices,
monolithic services and infrastructure services such as managed databases.</t>
      <t>Trust Domain:
A collection of systems, applications, or workloads that share a
common security policy. In practice this may include a virtually or
physically separated network, which contains two or more workloads.
The workloads within a Trust Domain may be invoked only through published
interfaces.</t>
      <t>Call Chain:
A sequence of synchronous invocations that results from the invocation of an external endpoint.</t>
      <t>External Endpoint:
A published interface to a Trust Domain that results in the invocation
of a workload within the Trust Domain. This is the first service in the
call chain where request starts.</t>
      <t>Transaction Token (Txn-Token):
A signed JWT with a short lifetime, providing immutable information about the user or workload,
certain parameters of the call, and specific contextual attributes of the call.
The Txn-Token is used to authorize subsequent calls in the call chain.</t>
      <t>Transaction Token Service (Txn-Token Service):
A special service within the Trust Domain that issues Txn-Tokens to requesting
workloads. Each Trust Domain using Txn-Tokens MUST have exactly one logical
Txn-Token Service.</t>
      <t>Agent Registry:
A service or data store accessible to the Transaction Token Service
that maintains a registry of known agent identities.  The TTS MAY
use the Agent Registry to determine whether a requesting workload
is an agent and to source metadata for <tt>agentic_ctx</tt> population.
The presence of an Agent Registry is RECOMMENDED but not required.</t>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol overview</name>
      <section anchor="transaction-flow">
        <name>Transaction Flow</name>
        <t>This section describes the process by which an agent application
   obtains a Transaction Token, either acting autonomously or on behalf
   of a principal. The external endpoint requests a Txn-Token following
   the procedures defined in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>, augmented with additional
   context for agent identity and, when applicable, principal identity.</t>
      </section>
      <section anchor="agent-application-transaction-flows">
        <name>Agent Application Transaction Flows</name>
        <t>The Transaction Token creation process varies depending on the
   presence of a principal.</t>
        <section anchor="subject-initiated-flow">
          <name>Subject-Initiated Flow</name>
          <t>When a human subject initiates the workflow, the following steps
occur:</t>
          <ol spacing="normal" type="1"><li>
              <t>The subject invokes the agent application to perform a task.</t>
            </li>
            <li>
              <t>The agent application calls an external endpoint.  The external
endpoint returns an OAuth challenge.</t>
            </li>
            <li>
              <t>The agent application authenticates using an OAuth 2.0
Authorization Code flow <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref> access token.  The access token
contains <tt>sub</tt> and <tt>client_id</tt> claims as per [RFC9068].  If the
access token represents a delegated flow (human delegating to
agent), it MAY contain an <tt>act</tt> claim per [RFC8693].</t>
            </li>
            <li>
              <t>The external endpoint submits the received access token along with
its subject token to the Txn-Token Service.  Subject token
requirements are specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
            </li>
            <li>
              <t>The Txn-Token Service validates the access token.</t>
            </li>
            <li>
              <t>The Txn-Token Service populates the Txn-Token's <tt>sub</tt> claim
following the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.  The <tt>sub</tt>
claim is determined based on the <tt>subject_token</tt> provided in the
request.</t>
            </li>
            <li>
              <t>If the access token contains an <tt>act</tt> claim, the Txn-Token Service
copies the <tt>act</tt> claim value to the Txn-Token's <tt>act</tt> field.  The
value is copied as-is without modification.</t>
            </li>
            <li>
              <t>If the TTS has access to an Agent Registry or equivalent mechanism,
it performs a lookup using the <tt>client_id</tt> from the access token.
If the <tt>client_id</tt> resolves to a registered agent, the TTS
populates the <tt>agentic_ctx</tt> claim. This is the case when agent is within trust domain and
user start request using agent within trust domain. If no Agent Registry is
available, the TTS MAY still populate <tt>agentic_ctx</tt> using
information derivable from the token exchange (e.g., <tt>client_id</tt>
as <tt>current_actor</tt>).</t>
            </li>
            <li>
              <t>The Txn-Token Service issues the Txn-Token to the requesting
   workload.</t>
            </li>
          </ol>
          <artwork type="ascii-art"><![CDATA[
+--------+     +-------+     +----------+     +-----+     +----------+
| Human  |     |  3P   |     | External |     | TTS |     |  Agent   |
| Subject|     | Agent |     | Endpoint |     |     |     | Registry |
+---+----+     +---+---+     +----+-----+     +--+--+     +----+-----+
    |              |               |              |              |
    | 1. Invoke    |               |              |              |
    |  task        |               |              |              |
    |------------->|               |              |              |
    |              |               |              |              |
    |              | 2. Call with   |              |              |
    |              |  access_token |              |              |
    |              |  (sub, act)   |              |              |
    |              |-------------->|              |              |
    |              |               |              |              |
    |              |               | 3. Request   |              |
    |              |               |  Txn-Token   |              |
    |              |               |  (access_token + subject_token)
    |              |               |------------->|              |
    |              |               |              |              |
    |              |               |              | 4. Lookup    |
    |              |               |              |  client_id   |
    |              |               |              |............->|
    |              |               |              |              |
    |              |               |              |  agent=true  |
    |              |               |              |<.............|
    |              |               |              |              |
    |              |               |              | 5. Issue     |
    |              |               |              |  Txn-Token:  |
    |              |               |              |  sub=user    |
    |              |               |              |  act={agent} |
    |              |               |              |  agentic_ctx |
    |              |               |              |              |
    |              |               | 6. Txn-Token |              |
    |              |               |<-------------|              |
    |              |               |              |              |


Legend:
- `-->` Solid: Primary request/response flow
- `...>` Dotted: Registry lookup (optional, per §3.7)
]]></artwork>
        </section>
        <section anchor="autonomous-flow">
          <name>Autonomous Flow</name>
          <t>When the agent application operates autonomously, the following
steps occur:</t>
          <ol spacing="normal" type="1"><li>
              <t>The agent application initiates a task based on an event or
scheduled assignment.</t>
            </li>
            <li>
              <t>The agent application calls an external endpoint.  The OAuth
challenge flow starts.</t>
            </li>
            <li>
              <t>The agent application authenticates using an OAuth 2.0 Client
Credentials Grant <eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>.</t>
            </li>
            <li>
              <t>The agent application uses the access token to call the external
endpoint.</t>
            </li>
            <li>
              <t>The external endpoint submits the received access token along with
its subject token to the Txn-Token Service.  Subject token
requirements are specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.</t>
            </li>
            <li>
              <t>The Txn-Token Service validates the access token.</t>
            </li>
            <li>
              <t>The Txn-Token Service populates the Txn-Token's <tt>sub</tt> claim
following the rules specified in <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">OAUTH-TXN-TOKENS</eref>.  For
autonomous agents, the <tt>sub</tt> claim is determined based on the
<tt>subject_token</tt> provided in the request, which typically
represents the agent's own identity.</t>
            </li>
            <li>
              <t>If the access token contains an <tt>act</tt> claim, the Txn-Token Service
copies it to the Txn-Token.  For Client Credentials Grant flows,
the access token typically does not contain an <tt>act</tt> claim, and
therefore the Txn-Token MUST NOT contain an <tt>act</tt> claim.</t>
            </li>
            <li>
              <t>If the TTS has access to an Agent Registry, it performs a lookup
and populates <tt>agentic_ctx</tt> if the caller is identified as an
agent.  If no Agent Registry is available, the TTS MAY still
populate <tt>agentic_ctx</tt> using information derivable from the token
exchange.</t>
            </li>
          </ol>
          <artwork type="ascii-art"><![CDATA[
+-------+     +----------+     +-----+     +----------+
|  1P   |     | External |     | TTS |     |  Agent   |
| Agent |     | Endpoint |     |     |     | Registry |
+---+---+     +----+-----+     +--+--+     +----+-----+
    |               |              |              |
    | 1. Event/     |              |              |
    |  schedule     |              |              |
    |  triggers     |              |              |
    |  task         |              |              |
    |               |              |              |
    | 2. Client Credentials Grant  |              |
    |  (obtains access_token)      |              |
    |----------------------------->|              |
    |<-----------------------------|              |
    |               |              |              |
    | 3. Call with  |              |              |
    |  access_token |              |              |
    |  (no act)     |              |              |
    |-------------->|              |              |
    |               |              |              |
    |               | 4. Request   |              |
    |               |  Txn-Token   |              |
    |               |  (access_token + subject_token)
    |               |------------->|              |
    |               |              |              |
    |               |              | 5. Lookup    |
    |               |              |  client_id   |
    |               |              |............->|
    |               |              |              |
    |               |              |  agent=true  |
    |               |              |<.............|
    |               |              |              |
    |               |              | 6. Issue     |
    |               |              |  Txn-Token:  |
    |               |              |  sub=agent   |
    |               |              |  (no act)    |
    |               |              |  agentic_ctx |
    |               |              |              |
    |               | 7. Txn-Token |              |
    |               |<-------------|              |
    |               |              |              |
]]></artwork>
          <t>Note: In autonomous flows, <tt>act</tt> is absent (no human delegation).
The <tt>originator</tt> in <tt>agentic_ctx</tt> is set from <tt>client_id</tt>.</t>
        </section>
      </section>
      <section anchor="replacement-tokens">
        <name>Replacement tokens</name>
        <t>Txn-Token Service provides capability to get a replacement Txn-Token as defined in the <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html#name-creating-replacement-txn-to">OAUTH-TXN-TOKENS.replacement flow</eref>. This specification
extends the replacement flow with agent-specific behavior.</t>
        <t>When a workload identified as an agent receives a Transaction Token
and intends to invoke a downstream workload, it SHOULD request a
replacement Txn-Token from the TTS before making the downstream call.
This ensures that <tt>agentic_ctx</tt> accurately reflects the current
executing agent and that chain integrity metadata is maintained.</t>
        <t>If a deployment enforces chain integrity policies based on
<tt>hop_count</tt> or <tt>min_assurance_level</tt>, then agents MUST request
replacement before downstream invocation.  Failure to replace results
in stale chain metadata that does not reflect the actual execution
path.</t>
        <section anchor="replacement-when-caller-is-identified-as-an-agent">
          <name>Replacement When Caller is Identified as an Agent</name>
          <t>When the workload requesting a replacement Txn-Token is identified as
an agent (per Section 3.7), the following rules apply in addition to
the base specification replacement rules:</t>
          <ul spacing="normal">
            <li>
              <t>The <tt>sub</tt>, <tt>txn</tt>, and <tt>aud</tt> claims MUST NOT be modified (per base
specification).</t>
            </li>
            <li>
              <t>The <tt>act</tt> claim, if present, MUST NOT be modified.  The <tt>act</tt>
claim is immutable throughout the entire transaction lifetime.</t>
            </li>
            <li>
              <t>The <tt>scope</tt> claim can only be attenuated (per base specification).</t>
            </li>
            <li>
              <t>The <tt>req_wl</tt> claim MUST be updated by appending the current
requesting workload's identifier, using the comma (,) character as
separator per the base specification.</t>
            </li>
            <li>
              <t>The <tt>agentic_ctx</tt> claim MUST be updated as follows:  </t>
              <ul spacing="normal">
                <li>
                  <t>The <tt>current_actor</tt> field MUST be set to the identifier of the
new requesting agent.</t>
                </li>
                <li>
                  <t>The <tt>chain_metadata.hop_count</tt> MUST be incremented by one.</t>
                </li>
                <li>
                  <t>If <tt>chain_metadata.min_assurance_level</tt> is present, it MUST be
recalculated.  The value MUST be the minimum of the existing
<tt>min_assurance_level</tt> and the new agent's assurance level
(monotonic attenuation).</t>
                </li>
                <li>
                  <t>Any deployment-specific fields within <tt>agentic_ctx</tt> MAY be
updated according to the trust domain's policies.</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="replacement-when-caller-is-not-identified-as-an-agent">
          <name>Replacement When Caller is Not Identified as an Agent</name>
          <t>When the workload requesting a replacement Txn-Token is NOT identified
as an agent, the TTS MUST follow the base specification
[OAUTH-TXN-TOKENS] replacement rules without modification.  The
<tt>agentic_ctx</tt> claim, if present in the incoming Txn-Token, MUST be
carried forward without modification.  The <tt>act</tt> claim, if present,
MUST NOT be modified. This means, even if agents are anywhere in the call chain, 
the internal workloads receiving a Txn-Token now gets 
claims in Txn-Token that inform if one or more agents were involved in the call chain
and they can do additional authorization checks.</t>
        </section>
        <section anchor="token-state-transitions">
          <name>3.4.3. Token State Transitions</name>
          <artwork type="ascii-art"><![CDATA[
       INITIAL ISSUANCE                 REPLACEMENT (hop 2)
       ================                 ===================

+------------------+                    +------------------+
| sub: user        |  --- immutable --> | sub: user        |
| act: {3P}        |  --- immutable --> | act: {3P}        |
| txn: abc-123     |  --- immutable --> | txn: abc-123     |
| aud: trust-dom   |  --- immutable --> | aud: trust-dom   |
| scope: billing   |  --- attenuate -> | scope: billing   |
| req_wl: apigw    |  --- append ----> | req_wl: apigw,1P |
+------------------+                    +------------------+
| agentic_ctx:     |                    | agentic_ctx:     |
|  current: 3P     |  --- update ----> |  current: 1P     |
|  originator: 3P  |  --- immutable -> |  originator: 3P  |
|  hop_count: 1    |  --- increment -> |  hop_count: 2    |
|  min_assur: (opt)|  --- attenuate -> |  min_assur: (opt)|
+------------------+                    +------------------+
]]></artwork>
        </section>
      </section>
      <section anchor="txn-token-format">
        <name>Txn-Token Format</name>
        <t>No changes to the JWT header from the base specification: <tt>typ</tt> MUST
be <tt>txntoken+jwt</tt>, with a signing key identifier such as <tt>kid</tt>.</t>
        <t>The Txn-Token body augments the base claim set with the <tt>act</tt> field
(when present in the input access token) and the <tt>agentic_ctx</tt> claim
for agent context.  Existing claims like <tt>txn</tt>, <tt>sub</tt>, <tt>aud</tt>, <tt>iss</tt>,
<tt>iat</tt>, <tt>exp</tt>, <tt>scope</tt>, <tt>tctx</tt>, and <tt>req_wl</tt> retain identical
semantics, population rules, and immutability guarantees as defined
in [OAUTH-TXN-TOKENS].</t>
        <t>In this example, the agent is a 3rd-party agent not part of the trust
domain.  It hits the API Gateway in the trust domain, and the API
Gateway requests a Txn-Token from the Txn-Token Service using the
access token received from the 3P agent and its own subject token (to
authenticate with the Txn-Token Service).  The requesting workload is
the API Gateway.  The agent is identified by the <tt>act</tt> claim copied
from the access token issued to the 3P agent to act on behalf of the
user.</t>
        <sourcecode type="json"><![CDATA[
{
  "iat": 1697059200,
  "aud": "trust-domain.example",
  "exp": 1697059500,
  "txn": "c2dc3992-2d65-483a-93b5-2dd9f02c276e",
  "sub": "user:alice@example.com",
  "scope": "trade.stocks",
  "req_wl": "apigateway.trust-domain.example",
  "act": {
    "sub": "agent-identity-1"
  },
  "tctx": {
    "action": "BUY",
    "ticker": "MSFT",
    "quantity": "100"
  },
  "agentic_ctx": {
    "current_actor": "agent-identity-1",
    "originator": "agent-identity-1",
    "chain_metadata": {
      "hop_count": 1
    }
  }
}
]]></sourcecode>
      </section>
      <section anchor="agentic-context">
        <name>Agentic Context</name>
        <t>The Txn-Token MAY contain an <tt>agentic_ctx</tt> claim.  Txn-Tokens are
increasingly used in environments where transactions are executed by
or with the assistance of autonomous or semi-autonomous agents (for
example, Large Language Model (LLM)-based agents, workflow
orchestrators, and policy-driven automation components).  In such
deployments, relying exclusively on subject identity and generic
transaction parameters is insufficient to make robust authorization
decisions.  Additional information about the agent chain and its
operational context is often required.</t>
        <t>The <tt>agentic_ctx</tt> claim provides a container for agent-specific
context within the Transaction Token.  This specification defines a
minimal set of normative fields required for multi-agent flow
integrity.  Deployments MAY include additional fields within
<tt>agentic_ctx</tt> as required by their trust domain policies.</t>
        <t>The depth of context available within <tt>agentic_ctx</tt> differs between
external and internal agents.  For external agents entering the trust
domain, the TTS populates the normative fields based on information
available from the token exchange (e.g., <tt>act.sub</tt> or <tt>client_id</tt>)
and assigns context commensurate with the trust domain's policy for
unverified external actors.  For internal agents within the trust
domain, the TTS MAY additionally populate deployment-specific fields
from verified internal sources (Agent Registry, hardware attestation,
transport-layer identity).  This asymmetry reflects the reality that
the trust domain does not own or control external agents and
therefore cannot verify their operational posture to the same degree.</t>
        <section anchor="normative-fields">
          <name>Normative Fields</name>
          <t>The following fields within <tt>agentic_ctx</tt> are defined by this
specification:</t>
          <dl>
            <dt>current_actor:</dt>
            <dd>
              <t>REQUIRED.  A string identifying the agent currently executing the
request.  The value is the agent's identifier as determined by the
TTS (e.g., from Agent Registry lookup, <tt>client_id</tt>, or <tt>act.sub</tt>).
This field is updated during replacement flows when the new caller
is identified as an agent.</t>
            </dd>
            <dt>originator:</dt>
            <dd>
              <t>REQUIRED.  A string identifying the agent that initiated the
transaction chain.  This value is set when the initial Txn-Token
is issued and MUST NOT be modified during replacement flows.  For
single-agent flows, <tt>originator</tt> and <tt>current_actor</tt> have the
same value.  The <tt>originator</tt> field exists to support
authorization policy evaluation in scenarios where the <tt>act</tt> claim
is absent (e.g., autonomous agent flows using Client Credentials
Grant where no delegation occurs).  In flows where <tt>act</tt> is
present, the <tt>originator</tt> value will typically match <tt>act.sub</tt>.
This field ensures that the chain origin is always available
within <tt>agentic_ctx</tt> regardless of whether the transaction
involves human delegation.</t>
            </dd>
            <dt>chain_metadata:</dt>
            <dd>
              <t>REQUIRED.  A JSON object containing chain-level integrity
metadata.  The following sub-fields are defined:
</t>
              <dl>
                <dt>hop_count:</dt>
                <dd>
                  <t>REQUIRED.  An integer representing the number of agent
transitions in the current chain.  Set to 1 at initial
issuance.  Incremented by 1 at each replacement where the
caller is identified as an agent.</t>
                </dd>
                <dt>min_assurance_level:</dt>
                <dd>
                  <t>OPTIONAL.  A string representing the minimum assurance level
across all agents in the chain.  When present, the TTS MUST
set this to the minimum of the existing value and the new
agent's assurance level during each replacement flow (monotonic
attenuation).  This field is only meaningful in deployments
that define an ordered set of assurance levels and maintain an
Agent Registry or equivalent source from which agent assurance
levels can be determined.  This specification does not define a
fixed enumeration of assurance level values.  Deployments MUST
define their own ordered set and comparison function.  Non-
normative examples include: "unverified", "low", "medium",
"high".</t>
                </dd>
              </dl>
            </dd>
          </dl>
        </section>
        <section anchor="deployment-specific-fields">
          <name>Deployment-Specific Fields</name>
          <t>Beyond the normative fields defined in Section 3.6.1, deployments
MAY include additional fields within <tt>agentic_ctx</tt> to carry
context specific to their trust domain.  This specification does
not prescribe the structure or semantics of these additional fields.</t>
          <t>Examples of deployment-specific context that MAY be included:</t>
          <ul spacing="normal">
            <li>
              <t>Operational posture: Hardware attestation status (e.g., TEE type),
runtime integrity measurements, security tier classification.</t>
            </li>
            <li>
              <t>Provenance: Cryptographic hashes of the agent's behavioral
configuration (system prompt, model parameters), software version
identifiers, source code references.</t>
            </li>
            <li>
              <t>Identity metadata: Workload identity details (e.g., SPIFFE SVID),
execution node information, deployment environment identifiers.</t>
            </li>
            <li>
              <t>Risk signals: Real-time risk scores, anomaly detection flags,
behavioral drift indicators.</t>
            </li>
          </ul>
          <t>The TTS is responsible for populating deployment-specific fields
using verified sources appropriate to the trust domain's security
requirements.  The TTS MUST NOT rely on self-reported data from the
agent for any field that influences authorization decisions.</t>
          <t>In deployments without an Agent Registry, the TTS MUST NOT populate
fields that require external verification (such as
<tt>min_assurance_level</tt> or deployment-specific posture fields) without
a verified source.</t>
          <section anchor="example-with-deployment-specific-context">
            <name>Example with Deployment-Specific Context</name>
            <t>The following is a non-normative example showing <tt>agentic_ctx</tt> with
deployment-specific posture and provenance fields in addition to the
normative fields:</t>
            <sourcecode type="json"><![CDATA[
{
  "agentic_ctx": {
    "current_actor": "spiffe://prod.acme.com/billing-agent",
    "originator": "3p-assistant-ext-99",
    "chain_metadata": {
      "hop_count": 2,
      "min_assurance_level": "low"
    },
    "posture": {
      "tee": "aws-nitro-enclave",
      "assurance": "high",
      "boot_gold": true
    },
    "prov": {
      "manifest_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb924...",
      "model_id": "llama-3.1-70b-v1",
      "version": "2.4.1"
    },
    "identity": {
      "workload_id": "spiffe://prod.acme.com/billing-agent",
      "origin_node": "node-77-east-1"
    }
  }
}
]]></sourcecode>
            <t>Note: The <tt>posture</tt>, <tt>prov</tt>, and <tt>identity</tt> fields shown above are
deployment-specific examples.  Their structure and semantics are
determined by the trust domain's policies and are not defined by
this specification.</t>
          </section>
        </section>
        <section anchor="implementation-guidance">
          <name>Implementation Guidance</name>
          <t>The following guidance applies to implementations using
deployment-specific fields within <tt>agentic_ctx</tt>:</t>
          <ul spacing="normal">
            <li>
              <t>Resource Servers receiving a Txn-Token with <tt>agentic_ctx</tt> SHOULD
evaluate the normative fields (<tt>current_actor</tt>, <tt>originator</tt>,
<tt>chain_metadata</tt>) for chain integrity decisions.</t>
            </li>
            <li>
              <t>Resource Servers MAY evaluate deployment-specific fields against
local policy to make fine-grained authorization decisions.</t>
            </li>
            <li>
              <t>If a Resource Server does not recognize a deployment-specific
field, it MUST ignore that field and MUST NOT reject the token
solely on that basis.</t>
            </li>
            <li>
              <t>The TTS SHOULD populate deployment-specific fields through
verified sources such as: hardware attestation documents verified
against manufacturer roots of trust, out-of-band registry lookups
using the agent's authenticated <tt>client_id</tt>, and transport-layer
identity (e.g., mTLS certificates or SPIFFE SVIDs).</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="agent-identification">
        <name>Agent Identification</name>
        <t>The Transaction Token Service needs to determine whether a requesting
workload is an agent in order to apply the appropriate token issuance
and replacement rules defined in this specification.</t>
        <section anchor="identification-mechanisms">
          <name>Identification Mechanisms</name>
          <t>The TTS SHOULD have access to an Agent Registry or equivalent
mechanism to identify agent callers.  When an Agent Registry is
available, the TTS uses it to determine whether agent-specific token
issuance rules apply and to source metadata for <tt>agentic_ctx</tt>
population.</t>
          <t>When the TTS receives a Txn-Token request or replacement request and
has access to an Agent Registry, it SHOULD perform the following
determination:</t>
          <ol spacing="normal" type="1"><li>
              <t>Extract the <tt>client_id</tt> from the presented access token.</t>
            </li>
            <li>
              <t>Query the Agent Registry to determine if the <tt>client_id</tt>
corresponds to a registered agent.</t>
            </li>
            <li>
              <t>If the <tt>client_id</tt> resolves to a registered agent:  </t>
              <ul spacing="normal">
                <li>
                  <t>The TTS SHOULD apply the agent-specific token issuance rules
defined in this specification.</t>
                </li>
                <li>
                  <t>The TTS SHOULD populate the <tt>agentic_ctx</tt> claim with at minimum
the normative fields defined in Section 3.6.1.</t>
                </li>
                <li>
                  <t>If the access token contains an <tt>act</tt> claim, the TTS MUST copy
it to the Txn-Token without modification.</t>
                </li>
              </ul>
            </li>
            <li>
              <t>If the <tt>client_id</tt> does NOT resolve to a registered agent:  </t>
              <ul spacing="normal">
                <li>
                  <t>The TTS SHOULD follow the base specification [OAUTH-TXN-TOKENS]
rules without modification.</t>
                </li>
                <li>
                  <t>The TTS SHOULD NOT populate an <tt>agentic_ctx</tt> claim.</t>
                </li>
              </ul>
            </li>
          </ol>
          <t>In deployments without an Agent Registry, the TTS MAY use alternative
mechanisms to identify agents, such as:</t>
          <ul spacing="normal">
            <li>
              <t>The presence of an <tt>act</tt> claim in the access token (indicating
delegation to an agent).</t>
            </li>
            <li>
              <t>Convention-based <tt>client_id</tt> patterns.</t>
            </li>
            <li>
              <t>Out-of-band configuration or policy rules.</t>
            </li>
          </ul>
          <t>The specific mechanism for agent identification is deployment-defined.
This specification defines the behavior once the determination is
made, not the mechanism itself.</t>
        </section>
        <section anchor="registry-contents">
          <name>Registry Contents</name>
          <t>When an Agent Registry is used, it SHOULD contain, at minimum, the
following information for each registered agent:</t>
          <ul spacing="normal">
            <li>
              <t><tt>client_id</tt>: The OAuth 2.0 client identifier for the agent.</t>
            </li>
            <li>
              <t><tt>agent_name</tt>: A human-readable name for the agent.</t>
            </li>
          </ul>
          <t>If the deployment uses <tt>min_assurance_level</tt>, the registry SHOULD
also contain:</t>
          <ul spacing="normal">
            <li>
              <t><tt>assurance_level</tt>: The assurance level assigned to this agent,
used for <tt>min_assurance_level</tt> calculation during replacement flows.</t>
            </li>
          </ul>
          <t>Additional registry contents are deployment-specific and MAY include
fields such as expected posture, manifest hashes, or behavioral
configuration references.</t>
          <t>The implementation of the Agent Registry is out of scope for this
specification.  Deployments MAY use existing service registries,
dedicated agent catalogs, or policy engines to fulfill this role.</t>
        </section>
      </section>
    </section>
    <section anchor="multi-agent-flows">
      <name>Multi-Agent Flows</name>
      <t>In complex agentic workflows, a transaction often originates from a
3rd-party (3P) agent and propagates through one or more 1st-party
(1P) agents within the local trust domain.  To maintain Zero Trust
integrity, this specification uses the <tt>agentic_ctx</tt> claim to track
the chain of agents involved in the transaction.  This ensures that
downstream Resource Servers can evaluate the chain integrity and
overall assurance level, rather than relying solely on the identity
of the immediate caller.</t>
      <section anchor="external-vs-internal-agents">
        <name>External vs. Internal Agents</name>
        <t>The <tt>agentic_ctx</tt> differentiates between two categories of agents
through the normative <tt>current_actor</tt> and <tt>originator</tt> fields:</t>
        <dl>
          <dt>External Agents (3P):</dt>
          <dd>
            <t>Agents that are not owned or controlled by the trust domain.  They
enter the trust domain through an external endpoint.  Because their
hardware and software are outside local control, the TTS has
limited ability to verify their operational posture.  Their
identity is typically captured via the <tt>act</tt> claim (from the access
token) and reflected in the <tt>originator</tt> field.  Deployment-
specific fields for external agents are typically sparse or marked
as "unverified".</t>
          </dd>
          <dt>Internal Agents (1P):</dt>
          <dd>
            <t>Agents that operate within the trust domain and are owned or
controlled by the trust domain operator.  The TTS has full ability
to verify their operational posture through internal mechanisms
(Agent Registry, hardware attestation, transport-layer identity).
Their identity is reflected in the <tt>current_actor</tt> field during
replacement flows.  Deployment-specific fields for internal agents
can be richly populated from verified sources.</t>
          </dd>
        </dl>
        <t>This distinction is not a protocol-level differentiation — both
external and internal agents are identified through the same
mechanisms (Section 3.7).  The distinction affects the <em>depth</em> of
context the TTS can populate within <tt>agentic_ctx</tt>.</t>
        <artwork type="ascii-art"><![CDATA[
+================================================================+
|                      TRUST DOMAIN                               |
|                                                                |
|  +------------------+         +---------------------------+    |
|  | TTS              |         | Agent Registry            |    |
|  |                  |<------->| - client_id               |    |
|  |                  |         | - agent_name              |    |
|  |                  |         | - assurance_level (opt)   |    |
|  +--------+---------+         +---------------------------+    |
|           |                                                    |
|           | Issues Txn-Token                                   |
|           |                                                    |
|  +--------v-----------------------------------------+          |
|  | agentic_ctx                                      |          |
|  |                                                  |          |
|  | For EXTERNAL (3P) agent:        For INTERNAL (1P) agent:   |
|  | +-----------------------+       +------------------------+ |
|  | | current_actor: 3P-id  |       | current_actor: 1P-id   | |
|  | | originator: 3P-id     |       | originator: 3P-id      | |
|  | | chain_metadata:       |       | chain_metadata:        | |
|  | |   hop_count: 1        |       |   hop_count: 2         | |
|  | |                       |       |   min_assurance: "low"  | |
|  | | (sparse — no verified |       |                        | |
|  | |  posture available)   |       | posture: {verified}    | |
|  | +-----------------------+       | prov: {verified}       | |
|  |                                 | identity: {verified}   | |
|  |                                 +------------------------+ |
|  +----------------------------------------------------------+ |
|                                                                |
+================================================================+
]]></artwork>
        <t>Note: External agents get normative fields only (TTS cannot verify
their posture).  Internal agents get normative + deployment-specific
fields populated from verified sources.</t>
      </section>
      <section anchor="monotonic-attenuation-of-trust">
        <name>Monotonic Attenuation of Trust</name>
        <t>A chain's security posture is only as strong as its weakest link.
When <tt>min_assurance_level</tt> is used, the TTS MUST calculate it during
every token replacement flow.  If a "high" assurance internal agent
is triggered by a "low" assurance 3P originator, the transaction's
overall assurance level remains "low".  This prevents Identity
Laundering, where unverified external agents bypass security
guardrails by proxying requests through internal services.</t>
        <t>The Transaction Token Service (TTS) determines the
<tt>min_assurance_level</tt> by comparing the existing value with the
assurance level of the new requesting agent (as recorded in the
Agent Registry) and selecting the minimum.</t>
        <section anchor="delegation-via-replacement-flow">
          <name>Delegation via Replacement Flow</name>
          <t>When an internal agent (the "Delegatee") requires a Transaction Token
to continue a chain initiated by another actor (the "Delegator"), it
SHOULD follow the replacement flow procedures defined in
[OAUTH-TXN-TOKENS] with the following modifications:</t>
          <ul spacing="normal">
            <li>
              <t>Subject Immutability: The <tt>txn</tt>, <tt>sub</tt>, and <tt>aud</tt> claims MUST be
copied from the subject_token to the new Transaction Token without
modification.</t>
            </li>
            <li>
              <t>Actor Immutability: The <tt>act</tt> claim, if present, MUST be copied
without modification.  The <tt>act</tt> claim represents the original
agent delegation and MUST NOT change throughout the transaction
lifetime.</t>
            </li>
            <li>
              <t>Current Actor Update: The <tt>current_actor</tt> field MUST be set to
the Delegatee's identifier.</t>
            </li>
            <li>
              <t>Chain Metadata Update: The TTS MUST increment <tt>hop_count</tt> and,
if <tt>min_assurance_level</tt> is present, recalculate it.</t>
            </li>
            <li>
              <t>Workload Tracking: The TTS MUST append the Delegatee's workload
identifier to the <tt>req_wl</tt> claim.</t>
            </li>
            <li>
              <t>Originator Preservation: The <tt>originator</tt> field MUST NOT be
modified.</t>
            </li>
          </ul>
          <t>If a deployment enforces chain integrity policies, internal agents
MUST request replacement before downstream invocation to ensure
accurate chain metadata.</t>
        </section>
        <section anchor="multi-agent-example">
          <name>Multi-Agent Example</name>
          <t>The following example illustrates a multi-agent flow where a
3rd-party agent ("3p-assistant-ext-99") initiates a transaction on
behalf of a user, and the request is subsequently handled by an
internal 1st-party agent ("1p-billing-svc-v2") within the trust
domain.</t>
          <t>Flow description:</t>
          <ol spacing="normal" type="1"><li>
              <t>The 3P agent ("3p-assistant-ext-99") obtains an access token via
OAuth 2.0 Authorization Code flow on behalf of the user.  The
access token contains an <tt>act</tt> claim identifying the agent:
<tt>{"sub": "3p-assistant-ext-99"}</tt>.</t>
            </li>
            <li>
              <t>The 3P agent calls the trust domain's API Gateway with this access
token.</t>
            </li>
            <li>
              <t>The API Gateway submits the access token and its own subject token
to the TTS, requesting a Txn-Token.</t>
            </li>
            <li>
              <t>The TTS validates the access token, identifies the caller as an
agent (via Agent Registry lookup or alternative mechanism), and
issues the initial Txn-Token with:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>sub</tt> populated from the <tt>subject_token</tt> (the user)</t>
                </li>
                <li>
                  <t><tt>act</tt> copied from the access token: <tt>{"sub": "3p-assistant-ext-99"}</tt></t>
                </li>
                <li>
                  <t><tt>agentic_ctx.current_actor</tt> set to "3p-assistant-ext-99"</t>
                </li>
                <li>
                  <t><tt>agentic_ctx.originator</tt> set to "3p-assistant-ext-99"</t>
                </li>
                <li>
                  <t><tt>agentic_ctx.chain_metadata.hop_count</tt> set to 1</t>
                </li>
                <li>
                  <t><tt>req_wl</tt> set to the API Gateway's identifier</t>
                </li>
              </ul>
            </li>
            <li>
              <t>The API Gateway forwards the Txn-Token to an internal agent
("1p-billing-svc-v2").</t>
            </li>
            <li>
              <t>The internal agent needs to call a downstream Resource Server.  It
requests a replacement Txn-Token from the TTS, presenting the
existing Txn-Token as the <tt>subject_token</tt>.</t>
            </li>
            <li>
              <t>The TTS identifies "1p-billing-svc-v2" as an agent.  It issues a
replacement Txn-Token with:
              </t>
              <ul spacing="normal">
                <li>
                  <t><tt>sub</tt>, <tt>txn</tt>, <tt>aud</tt> unchanged</t>
                </li>
                <li>
                  <t><tt>act</tt> unchanged: <tt>{"sub": "3p-assistant-ext-99"}</tt></t>
                </li>
                <li>
                  <t><tt>agentic_ctx.current_actor</tt> updated to "1p-billing-svc-v2"</t>
                </li>
                <li>
                  <t><tt>agentic_ctx.originator</tt> unchanged: "3p-assistant-ext-99"</t>
                </li>
                <li>
                  <t><tt>agentic_ctx.chain_metadata.hop_count</tt> incremented to 2</t>
                </li>
                <li>
                  <t><tt>req_wl</tt> appended with the internal agent's identifier</t>
                </li>
              </ul>
            </li>
          </ol>
          <artwork type="ascii-art"><![CDATA[
+-------+    +---------+    +-------+    +-----+    +----------+    +----------+
|  3P   |    |   API   |    |  1P   |    | TTS |    |  Agent   |    | Resource |
| Agent |    | Gateway |    | Agent |    |     |    | Registry |    |  Server  |
+---+---+    +----+----+    +---+---+    +--+--+    +----+-----+    +----+-----+
    |              |             |           |            |               |
    | 1. access_token            |           |            |               |
    |  (sub=user,  |             |           |            |               |
    |   act={3P})  |             |           |            |               |
    |------------->|             |           |            |               |
    |              |             |           |            |               |
    |              | 2. Request Txn-Token    |            |               |
    |              |  (access_token +        |            |               |
    |              |   subject_token)        |            |               |
    |              |----------------------->|            |               |
    |              |             |           |            |               |
    |              |             |           | 3. Lookup  |               |
    |              |             |           |  client_id |               |
    |              |             |           |...........>|               |
    |              |             |           |  agent=3P  |               |
    |              |             |           |<...........|               |
    |              |             |           |            |               |
    |              |             |           | 4. Issue Txn-Token (hop 1) |
    |              |             |           |  sub=user                  |
    |              |             |           |  act={3P}                  |
    |              |             |           |  agentic_ctx:              |
    |              |             |           |    current_actor=3P        |
    |              |             |           |    originator=3P           |
    |              |             |           |    hop_count=1             |
    |              |             |           |            |               |
    |              | 5. Txn-Token|           |            |               |
    |              |<-----------|-----------||            |               |
    |              |             |           |            |               |
    |              | 6. Forward  |           |            |               |
    |              |  Txn-Token  |           |            |               |
    |              |------------>|           |            |               |
    |              |             |           |            |               |
    |              |             | 7. Request Replacement  |               |
    |              |             |  (Txn-Token as          |               |
    |              |             |   subject_token)        |               |
    |              |             |---------->|            |               |
    |              |             |           |            |               |
    |              |             |           | 8. Lookup  |               |
    |              |             |           |  client_id |               |
    |              |             |           |...........>|               |
    |              |             |           |  agent=1P  |               |
    |              |             |           |<...........|               |
    |              |             |           |            |               |
    |              |             |           | 9. Issue Replacement       |
    |              |             |           |  (hop 2)                   |
    |              |             |           |  sub=user (unchanged)      |
    |              |             |           |  act={3P} (unchanged)      |
    |              |             |           |  agentic_ctx:              |
    |              |             |           |    current_actor=1P        |
    |              |             |           |    originator=3P           |
    |              |             |           |    hop_count=2             |
    |              |             |           |            |               |
    |              |             | 10. Replacement        |               |
    |              |             |  Txn-Token |           |               |
    |              |             |<----------|           |               |
    |              |             |           |            |               |
    |              |             | 11. Call with Txn-Token |               |
    |              |             |---------------------------------------->|
    |              |             |           |            |               |
    |              |             |           |            |    12. Validate|
    |              |             |           |            |    Txn-Token:  |
    |              |             |           |            |    - sub=user  |
    |              |             |           |            |    - act={3P}  |
    |              |             |           |            |    - hop=2     |
    |              |             |           |            |    - orig=3P   |
    |              |             |           |            |    - cur=1P    |
    |              |             |           |            |               |
]]></artwork>
          <t>Legend:
- <tt>--&gt;</tt> Solid: Primary request/response flow
- <tt>...&gt;</tt> Dotted: Agent Registry lookup (optional, per §3.7)
- 
The following is the Txn-Token at the final hop (after step 7),
showing only normative fields:</t>
          <sourcecode type="json"><![CDATA[
{
  "iat": 1712850000,
  "aud": "trust-domain.example",
  "exp": 1712850300,
  "txn": "abc-123-xyz",
  "sub": "user_8821@example.com",
  "iss": "https://txn-svc.trust-domain.example",
  "scope": "billing.process",
  "req_wl": "apigateway.trust-domain.example,1p-billing-svc-v2.trust-domain.example",
  "act": {
    "sub": "3p-assistant-ext-99"
  },
  "agentic_ctx": {
    "current_actor": "1p-billing-svc-v2",
    "originator": "3p-assistant-ext-99",
    "chain_metadata": {
      "hop_count": 2
    }
  }
}
]]></sourcecode>
          <t>Note: The <tt>act</tt> claim value <tt>{"sub": "3p-assistant-ext-99"}</tt> is
identical to what was set at hop 1.  It represents the original
agent delegation and is never modified during replacement flows.
The <tt>originator</tt> field within <tt>agentic_ctx</tt> mirrors this value for
convenience in authorization policy evaluation.</t>
          <t>The following is a non-normative example of the same token in a
deployment that uses <tt>min_assurance_level</tt> and deployment-specific
posture fields:</t>
          <sourcecode type="json"><![CDATA[
{
  "iat": 1712850000,
  "aud": "trust-domain.example",
  "exp": 1712850300,
  "txn": "abc-123-xyz",
  "sub": "user_8821@example.com",
  "iss": "https://txn-svc.trust-domain.example",
  "scope": "billing.process",
  "req_wl": "apigateway.trust-domain.example,1p-billing-svc-v2.trust-domain.example",
  "act": {
    "sub": "3p-assistant-ext-99"
  },
  "agentic_ctx": {
    "current_actor": "1p-billing-svc-v2",
    "originator": "3p-assistant-ext-99",
    "chain_metadata": {
      "hop_count": 2,
      "min_assurance_level": "low"
    },
    "posture": {
      "tee": "aws-nitro-enclave",
      "assurance": "high"
    },
    "prov": {
      "manifest_hash": "sha256:4455aabb..."
    }
  }
}
]]></sourcecode>
        </section>
        <section anchor="loop-prevention">
          <name>Loop Prevention</name>
          <t>To prevent infinite recursion in autonomous agentic loops, the TTS
MUST track the <tt>hop_count</tt> within <tt>chain_metadata</tt> and enforce a
maximum depth.  If the <tt>hop_count</tt> exceeds a deployment-defined
threshold, the replacement request MUST be rejected.</t>
          <t>Implementations MAY include additional chain tracking fields within
<tt>agentic_ctx</tt> (such as a path of agent identifiers) but such fields
are not defined by this specification.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>All the security considerations mentioned in [OAUTH-TXN-TOKENS]
apply.</t>
      <section anchor="token-replay-protection">
        <name>Token Replay Protection</name>
        <t>Implementations MUST enforce strict token lifetime validation.  The
short-lived nature of Transaction Tokens helps mitigate replay
attacks, but implementations SHOULD also consider:</t>
        <ul spacing="normal">
          <li>
            <t>Implementing token tracking mechanisms within trust domains</t>
          </li>
          <li>
            <t>Validating token usage context</t>
          </li>
        </ul>
        <section anchor="actor-identity-security">
          <name>Actor Identity Security</name>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST validate <tt>act</tt> claims in tokens.</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST verify the authenticity of actor context
before token issuance.</t>
            </li>
            <li>
              <t>During replacement flow, the Txn-Token Service MUST NOT modify the
<tt>act</tt> field in the incoming Txn-Token.  The immutability of <tt>act</tt>
ensures that the original agent delegation is always visible and
cannot be overwritten, preventing identity laundering attacks.</t>
            </li>
          </ul>
        </section>
        <section anchor="subject-context-protection">
          <name>Subject Context Protection</name>
          <ul spacing="normal">
            <li>
              <t>Systems MUST prevent unauthorized modifications to the <tt>sub</tt> claim
during token propagation.  Txn-Tokens are cryptographically signed
to ensure integrity.</t>
            </li>
            <li>
              <t>During replacement flow, the Txn-Token Service MUST NOT modify the
<tt>sub</tt> claim in the incoming Txn-Token.</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST follow the subject population rules
defined in [OAUTH-TXN-TOKENS] to ensure proper subject
representation.</t>
            </li>
          </ul>
        </section>
        <section anchor="transaction-chain-integrity">
          <name>Transaction Chain Integrity</name>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST maintain cryptographic integrity of the token
chain.</t>
            </li>
            <li>
              <t>Services MUST validate tokens at trust domain boundaries.</t>
            </li>
            <li>
              <t>Systems MUST implement protection against token tampering during
service-to-service communication.</t>
            </li>
          </ul>
        </section>
        <section anchor="ai-agent-specific-controls">
          <name>AI Agent Specific Controls</name>
          <ul spacing="normal">
            <li>
              <t>Implementations MUST enforce scope boundaries for AI agent
operations.</t>
            </li>
            <li>
              <t>Systems SHOULD implement behavioral monitoring for AI agent
activities by logging <tt>act</tt>, <tt>sub</tt>, and <tt>agentic_ctx</tt> claims in
audit logs.</t>
            </li>
            <li>
              <t>Systems MUST maintain audit trails of AI agent activities.</t>
            </li>
          </ul>
        </section>
        <section anchor="token-transformation-security">
          <name>Token Transformation Security</name>
          <ul spacing="normal">
            <li>
              <t>The Txn-Token Service MUST validate all claims during access token
to Txn-Token conversion.</t>
            </li>
            <li>
              <t>Implementations MUST verify signatures and formats of all tokens.</t>
            </li>
            <li>
              <t>Systems MUST prevent unauthorized manipulation during token
transformation.</t>
            </li>
            <li>
              <t>The Txn-Token Service MUST ensure that the <tt>act</tt> field accurately
represents the actor identity from the access token.</t>
            </li>
          </ul>
        </section>
        <section anchor="replacement-token-considerations">
          <name>Replacement Token Considerations</name>
          <ul spacing="normal">
            <li>
              <t>Systems MUST verify the authenticity and validity of original
tokens before replacement.</t>
            </li>
            <li>
              <t>Systems MUST implement controls to prevent unauthorized replacement
requests.</t>
            </li>
            <li>
              <t>The immutability of <tt>act</tt>, <tt>sub</tt>, and <tt>originator</tt> during
replacement ensures consistent identity context throughout the
transaction lifecycle.</t>
            </li>
          </ul>
        </section>
        <section anchor="infrastructure-security">
          <name>Infrastructure Security</name>
          <ul spacing="normal">
            <li>
              <t>All component communications MUST use secure channels.</t>
            </li>
            <li>
              <t>Implementations MUST enforce strong authentication of the
Authorization Server.</t>
            </li>
            <li>
              <t>Systems MUST implement regular rotation of cryptographic keys.</t>
            </li>
            <li>
              <t>Trust domain boundaries MUST be clearly defined and enforced.</t>
            </li>
          </ul>
        </section>
        <section anchor="prevention-of-identity-laundering">
          <name>Prevention of Identity Laundering</name>
          <ul spacing="normal">
            <li>
              <t>When <tt>min_assurance_level</tt> is used, implementations MUST enforce
Monotonic Attenuation.</t>
            </li>
            <li>
              <t>The TTS MUST NOT allow a replacement token to have a higher
<tt>min_assurance_level</tt> than the incoming subject token, even if the
current actor has a higher assurance level.</t>
            </li>
            <li>
              <t>This prevents a low-trust 3rd-party originator from "laundering"
its identity through a high-trust internal agent to bypass security
guardrails at the Resource Server.</t>
            </li>
            <li>
              <t>The immutability of the <tt>act</tt> claim and <tt>originator</tt> field provides
an additional safeguard: the original delegating agent identity is
always preserved and visible to downstream Resource Servers
regardless of how many replacement hops occur.</t>
            </li>
          </ul>
        </section>
        <section anchor="integrity-of-the-agent-registry">
          <name>Integrity of the Agent Registry</name>
          <ul spacing="normal">
            <li>
              <t>When an Agent Registry is used, the security of the agent
identification mechanism (Section 3.7) relies on the integrity of
the registry.</t>
            </li>
            <li>
              <t>If an attacker can add entries to the registry, they can cause the
TTS to treat arbitrary workloads as agents, triggering agent-
specific token issuance rules inappropriately.</t>
            </li>
            <li>
              <t>If an attacker can modify entries, they can alter the assurance
level assigned to an agent, undermining the monotonic attenuation
guarantee.</t>
            </li>
            <li>
              <t>Access to the Agent Registry MUST be restricted to authorized
deployment pipelines and protected with strong integrity controls.</t>
            </li>
            <li>
              <t>The Agent Registry SHOULD support audit logging of all
modifications.</t>
            </li>
            <li>
              <t>Implementations SHOULD use cryptographic signatures or content-
addressable storage to detect unauthorized modifications.</t>
            </li>
          </ul>
        </section>
        <section anchor="agent-identification-mechanism-security">
          <name>Agent Identification Mechanism Security</name>
          <ul spacing="normal">
            <li>
              <t>When the TTS relies on <tt>client_id</tt> lookup in the Agent Registry to
determine whether a caller is an agent, a compromised <tt>client_id</tt>
could lead to incorrect agent classification.</t>
            </li>
            <li>
              <t>Mitigations include:
              </t>
              <ul spacing="normal">
                <li>
                  <t>Binding <tt>client_id</tt> to transport-layer identity (e.g., mTLS
certificate or SPIFFE SVID).</t>
                </li>
                <li>
                  <t>Requiring additional verification before accepting agent
classification.</t>
                </li>
                <li>
                  <t>Implementing rate limiting and anomaly detection on registry
lookups.</t>
                </li>
              </ul>
            </li>
          </ul>
        </section>
        <section anchor="deployment-specific-field-security">
          <name>Deployment-Specific Field Security</name>
          <ul spacing="normal">
            <li>
              <t>When deployments include additional fields within <tt>agentic_ctx</tt>
(such as posture or provenance), the TTS MUST NOT rely on
self-reported data from the agent for any field that influences
authorization decisions.</t>
            </li>
            <li>
              <t>Hardware-backed fields (e.g., TEE attestation) SHOULD be derived
from cryptographic attestation documents verified against the
hardware manufacturer's root of trust.</t>
            </li>
            <li>
              <t>Software-related fields (e.g., manifest hashes) SHOULD be
retrieved via out-of-band registry lookups rather than agent
self-assertion.</t>
            </li>
          </ul>
        </section>
        <section anchor="loop-detection-and-recursion-limits">
          <name>Loop Detection and Recursion Limits</name>
          <ul spacing="normal">
            <li>
              <t>The <tt>hop_count</tt> within <tt>chain_metadata</tt> is REQUIRED to prevent
resource exhaustion in autonomous agentic workflows.</t>
            </li>
            <li>
              <t>The TTS SHOULD enforce a maximum <tt>hop_count</tt> to prevent resource
exhaustion attacks.  If the count exceeds a defined threshold, the
replacement request MUST be rejected.</t>
            </li>
          </ul>
        </section>
        <section anchor="data-leakage-in-context-propagation">
          <name>Data Leakage in Context Propagation</name>
          <ul spacing="normal">
            <li>
              <t>The <tt>agentic_ctx</tt> may contain deployment-specific fields with
sensitive internal information.</t>
            </li>
            <li>
              <t>When a Txn-Token egresses the trust domain (e.g., a 1st-party
agent calling an external 3rd-party service), the TTS MUST strip
deployment-specific internal fields from the token to prevent
infrastructure leakage.</t>
            </li>
            <li>
              <t>Only the normative fields and the minimum necessary context should
be egressed from the trust domain.</t>
            </li>
          </ul>
        </section>
        <section anchor="stale-chain-metadata">
          <name>Stale Chain Metadata</name>
          <ul spacing="normal">
            <li>
              <t>If agents propagate incoming Txn-Tokens without requesting
replacement, the <tt>agentic_ctx</tt> will contain stale metadata that
does not reflect the actual execution path.</t>
            </li>
            <li>
              <t>Deployments that rely on <tt>hop_count</tt> or <tt>min_assurance_level</tt> for
authorization decisions MUST enforce mandatory replacement for
agents (see Section 3.4).</t>
            </li>
            <li>
              <t>Resource Servers SHOULD be aware that in deployments without
mandatory replacement, <tt>hop_count</tt> represents a lower bound on
the actual number of agent transitions.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="references">
      <name>References</name>
      <section anchor="normative-references">
        <name>Normative References</name>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc2119">RFC2119</eref>
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <eref target="https://www.rfc-editor.org/rfc/rfc2119">https://www.rfc-editor.org/rfc/rfc2119</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc8174">RFC8174</eref>
     Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, https://www.rfc-editor.org/rfc/rfc8174</t>
        <t><eref target="https://tools.ietf.org/html/rfc6749">RFC6749</eref>
    Hardt, D., Ed., "The OAuth 2.0 Authorization Framework", RFC 6749, DOI 10.17487/RFC6749, October 2012, <eref target="https://www.rfc-editor.org/rfc/rfc6749">https://www.rfc-editor.org/rfc/rfc6749</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc7519">RFC7519</eref>
    Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, May 2015, <eref target="https://www.rfc-editor.org/rfc/rfc7519">https://www.rfc-editor.org/rfc/rfc7519</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc7515">RFC7515</eref>
    Jones, M., Bradley, J., and N. Sakimura, "JSON Web Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, May 2015, <eref target="https://www.rfc-editor.org/rfc/rfc7515">https://www.rfc-editor.org/rfc/rfc7515</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc8693">RFC8693</eref>
    Jones, M., Nadalin, A., Campbell, B., Ed., Bradley, J., and C. Mortimore, "OAuth 2.0 Token Exchange", RFC 8693, DOI 10.17487/RFC8693, January 2020, <eref target="https://www.rfc-editor.org/rfc/rfc8693">https://www.rfc-editor.org/rfc/rfc8693</eref>.</t>
        <t><eref target="https://tools.ietf.org/html/rfc9068">RFC9068</eref>
    Bertocci, V., "JSON Web Token (JWT) Profile for OAuth 2.0 Access Tokens", RFC 9068, DOI 10.17487/RFC9068, October 2021, <eref target="https://www.rfc-editor.org/rfc/rfc9068">https://www.rfc-editor.org/rfc/rfc9068</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/html/rfc9396">RFC9396</eref>
    T. Lodderstedt, J. Richer, B. Campbell, "OAuth 2.0 Rich Authorization Requests", RFC 9396, DOI 10.17487/RFC9396, May 2023, <eref target="https://www.rfc-editor.org/rfc/rfc9396">https://www.rfc-editor.org/rfc/rfc9396</eref>.</t>
        <t><eref target="https://datatracker.ietf.org/doc/draft-tulshibagwale-oauth-transaction-tokens">OAUTH-TXN-TOKENS</eref>
     Atul Tulshibagwale, George Fletcher, Pieter Kasselman, "OAuth Transaction Tokens", <eref target="https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html">https://drafts.oauth.net/oauth-transaction-tokens/draft-ietf-oauth-transaction-tokens.html</eref></t>
      </section>
    </section>
  </middle>
  <back>
    <?line 1248?>

<section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>name: Dr. Chunchi (Peter) Liu 
email: Liuchunchi(Peter) &lt;liuchunchi=40huawei.com@dmarc.ietf.org&gt;</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>name: Atul Tulshibagwale
org: SGNL
email: atul@sgnl.ai</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+1963bbRpbufzxFLeVHxJikTclXTierFVtOlPZtLKUzc3r1
skAQJNECAQ4ASmbi9DoPcd5h3mMe5TzJ2be64UJJlDuZMzP6kZgkqlC1a9e+
1d5fDQaDoEqqNB6rvbMizMowqpI8U2f5RZyV6mVeqKN5nFXlXhCFVTzPi81Y
JdksD4JpHmXhEhpOi3BWDcIiXFeDHP6zGFS2p0FFPQ1meTEIqafBg4OgXE+W
SVnC79VmBV2cHJ+9VOoLFaZlDiNJsmm8iuE/WbXXV3vxNKnyIglT/HBy9C38
D8a1d/L+7OVekK2Xk7gYB1MY3jiI8qyE163LsaqKdRxcjtUogH6LOByro/fH
R/DhKi8u5kW+Xo3VT9+pn+BTks3Vd/hNcBFv4OfpOFADlcUfKwVDjosQZ4Jf
rbMkygv6Z7kKi4sUW06TsiqSybqKpyqNp/O4CC7jbA2j+UIp8yL8wJP13whf
L8MkHauzb1/gh7CIFvwBGifVYj0BgoTlItwgge83CNyg7x40TIEYZQUNF1W1
Ksf375sOhtznMMlv0NV9XtobLOpwUS3TvSDAJ/MCyQejUGq2TlNmkqPT74/+
Vb0/+vGMfoh5zjgsHNUfw2X4c54No3wZBFleLIHil0DAAFnNfhoOh0EwGAxU
OAGSw1iC4GyRlApYcb2EYcCixFEyS+JShZmC5YNBIjdXuaoWMf6vXK9WeVEp
GrUCbqlwkVdFvgrntMrqCuiTwAZobgYYCbcbTMIS1hr5KM3DaTlUZ9C7fd00
niUZjAHfuS5jlc/on+fQ3bmC0aVTHEqC7J3MNvQbj2cVFzhdZA76kl7fh7kg
Y10CH86l1/gj8Bw+dg47Sfe5H5by6ilsUXoOB9o2FaFTRFPu4WiKeFXEJQ4C
262KJIuSVZjy1Ny3ALlX+WqNHDaFEcJ2mNJ4mcTFOo1N9zyOv7yFRf9+cPYv
bwZnb/90/Ob0r/uaK4m9yiHx1zCLW7hbOE0YMYmrWSc3Egv2+ooXJ2cCfAkj
/1scVR/omS9xpS+B8IZA9DVM/t/WsF+GJO+g+zzLl/m65FUpVb4iEQCzdART
uunzqjq0MUQsnUVNqjJOZ0RIWIxlHC3CLCmXpYqzcJLGqoyLyyQCqgnnYcso
TFMQHeFqgYRdhhfQMC9i/CoD0hdI+LgsiYGLPIVljxJkvZLGVMSTDfQO74lw
0GUcrYuk2gyVuulueXsENG5jnN92MX/rHRvwNsUWSfQhqj6eqygNkyVsQQUC
Zx1V6wK6+eGnM/4eiB3CmMKiQCLCwibZADdqCstchaCRQmKtBBvhWJbrtEpY
YqpZml8BP4FOxbWhPf4aJCROELpR4RSUHgwtxMVdpfkGV2yg961PjfpsoC2w
YYmy4ip3mqtVWFVxkYFyLIEx0tgZCrAfMg7sG823QMoSt9EkXoTpDIVYiNKs
0PQOlbNsLKTq89Od0verNNYbKsrTNJzksKlQyBU5cHLIPE80BEY9ybzOygg2
S5HkzN/NpUapBJsvDSMUSpWKw2gh06BBEinVZNPR+pS3YF+tV1Pe6B2MAPNJ
UhSPMe1aeTBZLtcV7WWW6bCcmk/3WTwgcVj8UzdlT4G4gRZJueABO6QEnQfD
JdYe8ob1pHWnJrDdK18R/OX9y+dPHz87dLYqcCbqz4u4GOI2HObF/D6Ihfu4
6+4Xswgf79Go8R0i41r7/k3lATJGBfIL5p7llYwD7LQrkeNoX5VoG6KcrPjj
P4EAFgkeo8ytYDemG1fYGhK2sVW5BikaEymEwWgnOWJcU0O4i1Sut2JisyyT
6TSNA7DxTlBoT9e82gG81Wz1n+MiR8O1rBRbUsnPvOjlpqxieNkMBkAThten
aZwhG8Aey4JwtUpR4YLEPDoR1nfEnfoxSxPQIsCXl0gDettVPDHapx/oZqjf
UXjANg1X4SRJYXCxyFKrGkUn4s5HAXGZwG5OA5B5qyq0AmG6AesPxBXLOSuu
1SXuZuiGZGSZrwsYAukn2FhBhEZhBJIK1yUqQf9tgOtDmpzRdCx7SegB7eNN
zsyaFLJ/UjtE+PckX2fTEMX0kChe1xT7Zx+zAf+7h96CKoH41SAFu3PaB2k5
xxX+4fTtG/VTPAm0MoSN9eTR6NlfRQ8gbTdWBiAB/FXU8jr4Pr/CXczSDLRz
gctlhqDY5gUrPrqA3b+eASclrvaD34NOs4FEKBmYSxC5xK3IoAOgP/Epmw6B
Nh1WeYq9tytLEuKwLqean1M0exLegwHuQTGoQOeAokN5bix2VERAdjYoNXN9
6anJQCbUV2myTFjwOmuDIipmDmyhZqCNIfw18fWF1Xm03p7V41rn1+t6o1UD
o/aaYuJ6MwBXrFv7s1xD59exyRbwRFPCByyF99vkO0tsV1g7jwW/rajmXbQu
eYguX7krzPyFK+TaL4nIRzRM0YQZpOEG7I5lPgWSGjb1dKYwEviIXwEt9Q58
he3GjgsjVDF2utbg4iWIp4YeqtO5VYSujm12IqMCXsAO8knF+w1/AqadJyiH
xG4nSjGJrPFQLYp8PV/IlqkNAnbILK6SZaylpFgS1Id1yEDkWT8Mu/jddDUR
bWfTAygLGwHd/nQzpEV9LrLPXdMWA61lFyIZbm2P7y/yFQkgDNX0sQstpnFe
sp609OLlsTefxEXZqxvz2Pp29jxNDwdTQANsbiSSo+qUCZSw+1nz/uuGI3aT
sOGEjBsVySSe/pMrKmnM4PinaxLoZsBa7ZTraEFzKT3dCuYCjqxPugDs9Awt
6RAsp4JMJ1qDkkJ2WjXSUFw9Udp1YTMqKcQMmuZLVGdaS6GssD5hkUTgX1in
kLcBWR9k6J+dqtPv3/746oUCCyW2my8Af5fCmup9PMfo3QZHhyO4DFPPvBMr
gzz1EhUfNJ6yPF6D8a7XDW2xAlRokS+BwNnAt7/M7yRH8oDtHWlrONPR4+7U
gRl+WsSZmZBhNO0zAQFC8uCpv34Ag2RjUOIXlskq36blWE09aJSUgW+9Ou+X
1wkXmZFMvQGQ8MKRzsDLQx+w3SqW1+OsUeKBcHcM5hcOU+onmmuG7ApLkaZG
AAa+SFiXHLSxnDYFo/KSpC2tlQ0BxR9xxedxwHKAYjZqPx7Oh311Llv/A4i5
vDjnpudRijbZh2R6Dk+AtPgQgY0JCpp+dX0F+r6n7RCr5jocOWsGwsCL0O58
4BwTMorwCzcIAprL2P16P9QUiliMHFeC4QRffIFSVfwB5s6zGMOPeZrPN6yV
L8CixYh4qfZe/3h6hhF4/L9685b+/f74n388eX/8Av99+v3Rq1fmH/oJ3oD2
X7bl87evXx+/ecGN4VtV+wqWd4/diL23785O3r45erVnRJsx50KiDIhFlpcg
2ipmyKmWcdjm2+fv1Ogh6aODEVjsN9dH+HiPFdnoycPbKDJ4vEfOGU8iz9Dt
pI+wGhvcpHFYkHWEVnu4SqoQ5SQMHZyPq0xh6GSI/qK3KEfM4IOjkzGuuHzk
Lc/bh22CMp9VV/gP7xcSZ2vYM8nPcfAqLOYxKFSQZcA46jXaV+AKvXr1usfc
ADyMIcUiDkuMLZL4Ci9QaETcnRcPDWAZwmiRAFsDC6Lz8bEvKhac15Wa5zA/
dv9gOskSVMdivYRtDVqjABdrAY5R8JPIzHFwlLndU4/rSuucdZZU2uzOHL8U
SFzEUYw6kSZQ5OTsJNllLiTgxcBWcrSDjGN+xX2UYwjVcZ6D448hzoZ+NF8b
RSlKHgTLz8Br4O0WuXWqlzCuFAV7ZOO8+P7a1ja/oYpFDgCywJJMyT9G2clu
K2qFF6QVgDwURYsjvfslQtD31pu0rh0yEQyPXIA6YDIvlxhZkOgwq1hwRU5A
26L7jaKCthq638YqUJdJUa3RD4Sug9ViU7JXCP2swoJsULAf8ZV9DJbBbIQ+
HIxEowsD2Q51UcrYITpelp0tDWHCC3URy1YS6aZWa4mjBSQAMEKC1HqOu+r5
QmhVYoQflR5RKougbYbxB3fpiTpgGQHHllY92CcoBMqBcjTLwCqYrnJ4J7zs
WH93LN/hO83AlBkYSqra1Ly3iv637wwo7GoMCcdGcDuROGHCmmSWFPCLlvb8
eOCEBjgmK2ceoEDDomqNijhBkR7RUKIgP53xJg45SGI8k74EA0jn2pBoazyA
AskOb/aDKC4o8I1cBDYRmktyboZD511rLBnRcGv0qCo5fPWeZ7ZyVGnJvijS
X4II5PUxX7AFZ8jvRKLbyCLRYoc8+ismEw4SBqYXoGPNeOHRGIOR2+gTn8XR
0gAdAyeEd4wxba8HNm+ctqSZydSNP8KQcY9mYIDnc9yjQWO4Q9EmxqLincLD
hsXh4FyF+5VN54Tc1Hx7FD2gieEAedujz6WN7Jm6yFC1uT4TRhfF40GrEbR+
gIemFDXy7T0K/1WkDGPkYpLToUMuw05BYg1SsbolyuiFZGoepPUfmH3Yv2eh
0bQ+4RWOwaKABckq1o4Mae53RV7lIKdJxV0m8RUZXS7pXoK5GaA/xJF+kefa
dinlNJa0GLpGLFLt1KystzGHsi1G1VdxwvSK2Gt1VSZQwhz0UD8odGpnwA2x
p+lOr3NCl2j0I+ti/EIPfgpK7nc8NwDpsZ6jtRhPRXQZ55Y8extW9TmToo59
Mto0qWEH9C1pzINDWljmkCO7KI2lLmWt2/ZPBHYWfdTrfUkBa8U2EC4aH2pj
Dx5rOkuFw/hCnXI4a3DCJ0kwa2YzcuRCsbp0zEuOm4TXdNSXPWizmgotuDLI
IzAWxkEwYp6wXaBedg+9HcbEvSeJDRjOC8sLGOUBd9B8mAVxq5pVHh8iFRxW
BDOKXBg5ujbHI/Cuw653Ic/Q9qfZszQ1PRwMH+ArjrwA/nMwkTlShA7B4ycP
HU+iyvO0tK6AdgPwoZ4X95OJuF9pLqTd6xwZWh/ThPtKivHh6589ePz0rxg6
NkFLt0s3GSEEHkrjOXECjX6fWUC+5fwN6gBp1KMIv3cYnXmhTz0AiuwBgR92
SQhK85JkCDHLp/4gwzRHsQ17kmJCVWl4Sk70RNk0VJfSTG4JKJKXowbkAv1+
aShAlUdMlcbQYVunydRsOI8zguBxVysd4ih9gnxZuqFtJIPds/8pEnKE22mQ
xObEQujBa1U+9VN2zr2UnfN6yo5eaczXCYInQ2F/n63MXvI5t9/OTLz7Vok5
FLKsDmu1jhtciES3yVw8Q+yEn05K7g2jEIOkK8QVPDVDR7NngSE0PYUWa6Mj
PtnnbaMFLG71NM8v1isRZzQfR4oYt8ZnO6WliPcwiI88vYx5RGLFxRijtYE+
HDvpI487WwLzvosSYTiQ1SrrW3uM6UZ9QQZi5+QskJ9ivBYR1hxmbbYk0mZ5
02QjIXcZJikrck39ZiRRtUQS62Hra4OJNoBoiCrx81pIEeXF6EHX1hcnwedd
nXBnfQXoWdu/GN37+9//Dm+KkmQAhAvuDeTvHqZfqnutn2pfNH8MPqnvSXOo
T/Qb/PfwnbKfjB+sv0Dimkd5NeCf0I1Ib/0b/2S60QrENHX+a1bzE03qnj/S
e/64axO51/ZjYHs3f7WP1/z8SboYYfQETaHduyAD6U6jGLh/3+w4ii3P7NYF
GHwUkSHze9dhsNBixbBjF/ugXfroBPV2HMVgK31/M3rWP4OR+15k486jsMJl
5y72vSW6pzxd3rtRJ9vp+5sRtPYRbNxXrFh3H4XRArt2MXT+gDS/Fy1Y736N
BRY7dvEHdybD320iYKKfoG69Qxd204x37gI2yddk4+w+ChBoX/9Cy/LrnRaV
7Z3fcJuhv2PEzk5d/METGP8IeREEr2IgznQcDNQ5yKRzdZqDCzdW74pkGRYb
bYTdx6wVLEAiJxsfBuaGp1/kFXjeY2u5iIm+n684CNUnl/o//v1w+KSHdhtH
cY5stqUTvmmPsZgEVzeuV4vhBBTDUbUYTrMvGxDicI11zzAsg8fFePQDlCmj
RTwF/xIdHTwcQM/7TrEdiryQN6bDNxyuMGcUO4dy1HOSvdj3c/Bg8FE8jPyO
8oRvF8uxAY/mMNZli1ePpjodKVQd4SsbLPifEIoXQukMhmwNoTz5LxhCeck7
rlGb5NYgXRdZwQ6uCa5oSabPbqvNio93mTma1U1AOzzPccLgTz9zRIZyrvyn
mB6ypVv2M2WV9vUBhL8V9YRsFUF7kLOvgw94aBLP8AzMH6nOguloD5R4dpsA
T781ikNrjnkMhnP9sERiTzw5L6uek2WCuhwnbguJbI2HuLGdtpDIjeIhJOsk
JNIdmbh9KEKNdos93C3Y8BmiCzcPJxyjur1/izZGKd+mTVUk8zmeuN+mjROn
2MUUvGEbjBt07fPO9+ybg1DHG+1te89g21+HE/qHrY0+Iw0OvdjJDWm9S6xk
P8t1aOSG77l7NGRH3nl423jHLgGO3SIau4QwPs8OenRtkGKXqMQuYYjPJBGu
DTTsEln4PGN7fG3sYJdgQUd0IDTa62Zt3I18K1pv8/93pNuT23r4u7j0146N
vOo3eYVgI27CqBiLYrqhNTQhFASkoH9Inmc9Tgs619UfmAueZHWTDLN4qkaO
OCeIvHfSwtnCD5ppWdoodwowKfdpDt2GXma5bdqEfmi4KEO3Jc76H+mzfIGo
HwPOaMnmA+fVg+ojPtlrq20OuJxTe7v+cCVzxy9p0LWnQ5PcYnIl28sTtBPd
miQVcGqujCGXvBZMnwAnB8zAOFzajEU02CWlXZ9KhkH76hhzGE3SCXsTy/BC
O5hO7zp3EQsFspKypiidzuexEEM4YJFTtvMMk4BLt5IUyBhHa6c4ievXMFma
EkBtlZNJhqM0X87Yo9S1kxkljRjkgBjN/EjXVTk9mPJR7WkGTi0EnlqfgyP6
wVQDfaBqoHPyNDJdb0yulNDQo6CQyqGPzYxFJxD8Fi6M0MyiE2kDGGNZhWAF
83jNPIkKxvUT4ombSOmkQjqYxyqsFpJP5W5bYrPnxuE6qXMZORdOrM7wo5Om
2LWL6w5cYLh2HwOEp5IdiGHCen6WFPOsVikVw+oEN8zr6aq/cYZArbl40iRr
gEyErXreF/CCtc1BMq7vJJakBhgtjRBfQ5FBD19maDt2HWxwXiWg0G/tcui0
8TJHukompbq/vWzSmVyUr2JbL5hxOjm8GNExsjVlSZnZdE8F1vPDVar7oQlA
H4QgwWVsWODBeXvu3lSqLWH1S2fli76TvIFZ+qHa7/eUqYpHxkAac8I9bDFd
9NkKPWAo36yVrI85LHXN1pjSFAfStF7+RFg3ujEqOwnQ2Bk4hbTwh3gFLvfP
OU7svgF36Qe9S4eOBNGvSbKI45JM2zyLTQ8gq+odtMkcQi7S/IYJbtyzjBHU
QphGXEUrjMfZPHoAOEEqW1kvdaK5LtmSLlolnakdRiLokFmtOFLa72OxCNgl
WM0jnCgsx/M8yjattaNS/ClpMP5CYyDHzNGscx21yU2d+bJ0iy2vkX5gUH12
CYhSwErBoF5ayPEpXBTm1Q7Obyl3b0q89tQsTudqhQawIsuWasAO9dLw+4az
uBaZSo2vwmK65W2dgjFoF4xkICxjqs7CExlsIsqUinuyDRd5NAoa+iqonNJi
p/CG7SJeG7seGRAY7M5SBSL7EWjJ5iBRCQNFAHEEWGygC3xkNFc8ikvMI5s2
hxPI7tiQHJ7mbtVxDTpjEUcXmiMPhw+HeBTEVnOFsckzA/MDY/UDjOIDnLw5
OTs5eqVOTk9/PHrz/FjV/94fv3t19Pz49fGbMy7/Pujptl/X/hpt6w/AXxDc
GzT+7jVaKi+saZ4LPqHjN1b6XFicGvjJUX+DwTeq7TloDPw0Vr8cvvv1msbN
56Ax6P0xOELRYHRwuK1x8zl883o6ZokyAImy5c2N53DOqJvHCpweglY0jY1q
VjzlxmPQlhUyDGiVzK+cUbMeVhSLUbXH+qN3Etq9w0I5kmKsydX8a3sOg9ii
XcecSWdGzcLajNo+Nnpn21pPlJs3SU1tG49hW6NkoUt3jbWilbbOYwfmvUbT
jekQu9e+Ss3H7kZpORl3BNBLOntAx17x8UKpVRpWqS3icAq7wnhfTS0xBht3
s2IrIwAJixYvebH3/nZVgemr69ySeYZ8dmHgfcjI0cWa5xfs4PunjpN8utF1
J04RPJteaDVR5zbhmNR4sE9ZsQ0ls8ICeB87xGCSNPRUYAtZLKLEsa4vF0FO
cFBi4Wt7H418+F9Sluf94DwJkQTn8ccVPUJWMzoF+CLxCrQNXMR0BMa0wVqz
Ml6G+E/QT7aqipUuNxUW5eDGfB1iQD/24AiC1nNW9E2lBDzmsty+kxKB8Rt1
WEwHYBpj9Q59SYgXmDwsZhvJnMCgK5xUaqFP2I/enajvgH+vqOS1YRv1DdXh
wUA/2F4HZVz+RnjHGPdBrV5DTvdNU9iq1n/HIeJRq3+4v49gFk7ug2WqZnGi
mBot3gcmRtemr4tUNFkdv1SAztw0ec53D1qzyzl9eao3ppkUVYtXPsIgEgU1
2ZAPCf9WgiH3CyjhPeDFPZBTj589efDo2cGDB3i6uwfsCl/uGR2C6ylMsUcP
AOvaVo+kFbA8tooOptHhs2cHg4Pp40eDh08Pw8Gzw8kj+Dh9NntwEB08eSy9
AMWxAY5rHIJlHP9RXoJwtfIIbg4eC4icYVnlYKzwT7xF8DdUOELc7iEDSeDZ
X8jw0G/mmJc+Yx+MEOH3V54L7EX7OLu82OLbH/+VusNHEoQowC9fn74809/+
2zqkzvD70YMHtkdHmtiOPQewdUTSrVU0257ynTXzGvjFKBtcNvryVxxZ8KuR
/RrvQOCA6kK3UbXUUojgVsyCtRyQxgsJEXNjEKvi7DIp8kwgSMiYdsIKbGZz
rIh2RJAXduthNlRZhbo8zwHNA50RL8EqbUDM7iNAmBFobcAMjMsgGFo6+UNX
68HrwUBGTGQgvUhYrucfTIsEHQR85VKj0C1XYKpDBz1G2iRcHwcHCBEf0g0K
iPhjlIK4QhQm3Kim3s+FuCMYhSQK3KiLU8SNsiNzMOw0nm2RTxowh4FB94OB
HVlXoL2GXDTcQipFUEIGLi6RLutMsDK8EphfKc3tComY0HtocR0cZDxtPGi8
Mb+4uxZN1ni7fthNw8+FgQbBQFsgnzXRnLZCVQUueNyL6zGcvCBBzbm9HfwS
BqzjFbA6jFmTwaSQtEchwG2dIS9M4uoqjjnMT+6njrfzB2JqSe6xj/AGwchP
oYNirga3QQE/vatBTpMK5XBTYAd+XQkPrOyQ0qwwpm3PdXrkwnL+Y2nogVE7
it97KrktzLIhaMB1dgmzI+1qJ47CVpOjRqQGWFSDGMgGdvnTjc3i6Q4hsf42
IzHvFHxOtV9PWVqExZQxZirEm2foLRYEK4LPJNw+LS16ekOE5QbIUxW10wsQ
wnzUhQh6dXrZoD0aQXlhoK/rjIJpWzZnKwozbENz0pzdgl2mjZMSpBYQaF7E
sYQa3hg2esk04h1gA+/bom9IGg8etg6uNQ4CT7eOgzHGIRhTCWUgAr9RmpWA
xftYg9IWVtee+FR+iaQbykz8xD3Hkwn9pMGN7gU5STYA8UYteYyT1Po+FhbB
Kshm6VFpIS26QY/XUcjpmmZWP+ZjPFsTMuXUNspsbWa3mVCy4+DejoISwdJl
8lUTd1EjUtMkDB3Jf9Pj1ICzxq7Qw2XDl9AA245Muihg8z2bMN19//iZq8T9
+DwBgMhMiKFp1DrQ6LbmNaEwdulgrUumqRN9E1EVY086SdyCcmv7yHcKhAj6
PJ25qG75yJKzS9RM9MI+ONeLX5HlznE8Z7JrI8bFG9eH+ZS9qEP+VX32vJhX
WPVp00Jhs4NTbxi4zr/eoSzFMsn84G5puinY905OJbZvlQ0FzKKYpugmIayU
oJmw2LO4pkhDjp6WjXQE4Hvfkm7yPiEW52y0iT1DIQAHotbYEfguc4DCzOLA
P6wnA5F0jlDjYyIbIcJPtSHIWTFMrYGXyje3kIk8l5MxvfcSDS/mHp2ZrXjK
R04jZfauPkLR2IbEEt6B0cjAwrvbzTCutO9OpHVPrVrOefTUNVCdK3kaE9fH
SO3HQBoQPzUqTZNh4cBBemytj0SkBzqSQ54VrdZxbCUbwDmg0iNoP6bS8qpB
RYaUMKdXuhf3DKuuBOjIFQ8woMPZGrnQBSLVrECH9Qzyjse0xZSqz8VeriOM
8g0EksQgqc9Kba+jF0wg0m0CrcMBF923dCJvwEOKSeyoyg4TvwZQH0ovs+Qj
GnjA92KAtEyDF6WsG/V2caVPMWWufLIQtB24dyCWS4RXXmeRHDK9ybOBPo41
Jk2sge3EYcAoh7FEEYIRFhb/t4ynyXop7ju66cl8sccIkl844xxomHBjK317
M7Bam9jweDjqe5xwE3emJlmp3KYoNsZJcwBQW5yb7jUMPKxcNhANZB/78hzk
lJ1VtgyRwOEsfGCb8W3hOsNKDmz1lKeck/G2abGO1fctxjcmvVSgW0Xbnh0f
0yUIPVq5AkR0soy99J8Q1Zk4/QYJsEKTEHQ4ODV+IsE7A/A7Bi29WVU5YYnC
HBZhubAIbFqAODcDKAK4mSXztbD+PgMWose9XIEcY3RvGzjo9S2EJeFDija0
OMt9vX0jROUBgx+2Qcbgf185IOBGO6qf/NSwCo/TQVikhl6n705evjxWp38+
ecEkM9lAwL5TD8uu72dHmWCRO0AeyPukvKATBLBnsAYwTAe0DAV9H4GXQgEb
4MWUBhRraPRwzkUslopqClsTdd4UlyUvtD9OuMClkvJDQmnDmIGOvOMdZd1O
H9texuvTzl64QnjZAu3ijjQBzS+BWzXmIrlpm7fQ4aM4nWEqIJiYAm1pvO5A
rEGMtGQbfUmWHC+nBN1Y1mxSGyuiIwEXx7oTMriWQYCDM9DBIlIEj5FmZJ1L
Jk+kWZcPfoL2jA9Ezmsht3Y1+T09PcggrNNeBOsXSgQHBxDaxKwXBLXGGp2C
IAx1Q9ITsizfJeBKTCoe3DZmwVKVza+lr59nRstYl/LjeiD/ZvHlcoURo/H9
+/DS6TCMlhRrvy/nvewPtcecD1cDHX6tBkCbwbNntws7Hxgt17K4+AbUiRya
ln6FSG6HVUynAeFVOQD7tMgHwMApuGVWhZqO8TnSp+anSZ5XH+Z5iocbdImh
9zJYBfdNoIGSGYj/DyiBiXSL8ODR43F8OHkQPXx48OzpLBpFo4fPwtlk9jB6
+uzZ49nk2cHD4XBo30iyF7x3ml4aLsPB4XA0ePJgMrgc2adECuNDB8OHw5FP
BS1T3cHp8yXp+haratb1AwpebIz/Hzx5MgCVVQ30u93DAU7uJh9XVgRPK5Fe
+rRSD/FcMzDjLIeTHOGCi7h1C2gbiQVbUjgmAEGSGhuAO6gFUbpSq/g6E/Jo
KydEFDRh+yUOdaIvc2ER9N06mZJ9Wtv6c/neQMC798AIzi1jGd0yk4wNkfex
qFw8U8SIbnvWEAksX8RwpjTpVA4ixO1W4X4tmuHHO4g5asl+5z1SG/XEZFc9
tI0cDS0zlC3ECOdYSUbeaZpHYapjIfocw79bp1NDfUV5imF9HG4ucpTPM4Sl
DduGE5D/ACOyuYtgUnBZaliJwvQiTUX8N53bbKowyzwVXUytJiFISpsj6tyX
cINosU6+xX4b1oNoyHFriNiAt5emIYWcmNKIfb2ehbTFClWAMGS7EjdSX+V4
yexsMOELubw4JLmNNnPWeLHO8fjUD1WS6+tHq62NiZeAsFm4PHt1qhCfmDcl
XzHm2Iplz4X/1PmQkofIBloniHAWx1xrsB3ZNnCO6m0tQyLeH52lU+o3Tdyz
3NwrH4L6NWacBbn12hAtf7xZqdfm/jNrgbZetXEdlF3gXLXh3Ikq8W2+N0PH
PNoweIOW6mVCYeC68RaqttyJEdTvxCBa3hQ3OHBxgwPvsg632MRIR10tkhf+
Wugikmwa3KRYXO9UgVatXD1gFJE+ZcBS4o90ZS7HQdsgASWkVMOXYECPf17H
BXPXNkzmpIEhyH5fwZ7JtANJkIE9bg1A6CWpOwzo7ISWta7df+JFVTq3QOt7
jIzsSMOS7LFKx99MVOsWwRD96ttDKmgfJ8pXGx0dbUIpdIFTPmxdD1JWrFto
YW63LlvztVtSvXRm/pZ7Ylrf43p1XUkgO7mMYDEgMnmYklOIyxc490A2xBcG
KEQNGhVbgxR3c6gkyust8b64+lJk4Jx9sFhgvN6h3I8lN7lIjoi7cPriV3ry
raNC/ZgMxQzIuiGiS3TB7B8rqutI2WYVCX3EWAzC1VLQ1p4HQewgEQ4wTCLe
Tp78QjG/DKcg4dFQooi2GYncrqwrFUQqkWOM4cOgU3FQpo8rSGU79Z0dy3cZ
OY61k4eCJJBIeIP9v1Iu9ccW24igiPgX9/gV+zLyitaIefYDVlFC+yM++xkU
MaggjO7g9/VWgWxYJy5FirC7AM8aUGKd0w2EQgeZRr0hT6YetOb8B53kl5T6
LioyyCSDpT1YoqtuiCW6zkODwEkGMoOOZJHlRKrlUjW5hk2CqTrCo9N24494
xRxemqcvMNPOtIQz6SzbiWH6m8ULOCJRfD9Lx0KbjIdiBq8hwZxBWcSWS7fq
OT0oeczJjb6kQWiR4FUz03gqNq42nqowzec8C32Am8150+Vqtk5ndPSJy1WA
X0AXFrymNCMes+DVn2T6Nh+dwG6vBu37t0BLnpV22GK5RiUMbEru/uG7npPV
qq+wio074VWRjMDXp3bB/ki385Jf2CWrh/Nzew70v/BGXbo1w2ZM9Vt0vIXu
atPkyNZ411PgHPmaipt6eYtDEH224B4bB045a8MrjQhizXGQ624tWod4mQQd
D/q7sK+AM/kQOcxMCp/r8tkLqgPhzmSJZzv4Mra12ZExUDqXJSLaygfiirIt
d47zu+jMHldS0rzowh/kyHlO9xgYigV6qX1TqJ7HQDGbRroCKlMzviPJngSm
osNv+UzOrY6uALUx78tkDKXtwRmO75CphEZw0XjAMGgHgN23cRTKxSUJuZHW
9cU4kbmOC8+O1lWJl+Yy98q4rKGx4AJPuhMXt7OFALguj0kHqTwvFg+CTX5D
FK74YtvLJGykce/XErgpF8aWG0i2luX05up4gosOHOtRg1lLch/d4WaGWMKO
L1kGhMWFxAZK72iS7LcaD4xaeEBgEbvuVjRROM0jcky1hU2ky7xwDjrQWwNx
muqVYrLdIOlMGMok2llrEru4WbpdPYDhpNtx7gq+3eWF5iq21veyMuZUsmZ+
0ovusNCsma5IZOWzc7yy08lGlGqHevzIXNpM+i7SpiVuZ7zthC/VkQQWV/jg
c//3f/8fNcmrxdYsU7561+Z4uBIJc6Zcw37frbuXZXcHFsL7dQ7jV5Qa+xXI
usAe6zKXIAGMW9IWYh02kNFaqgpv9UcgaW1/Z+/RNXzx9vXRyZv2J8zfp64+
bv5HXWyt/Gr50X+KumBIN79r5181S6v+lHTRHJ1Gm/nmEziTLhrSzbtw/jVQ
1nTfvQvfTObqOa8Li+e/Mzlb3n2Lv3oXJ7WbzHboYtdRmOlebpl3F+vpFXHh
j2726kYXtx99owvM9T7+l7Pj92+OXjm28lg/hr+fvNG/j9zfpYeutdcz7uSN
e7qHT8rPSVaH7wa4Hz6ZUdd+H/Hv2FT34FecDmQ72R7af3d7qKU21ijW9bvb
Q7PE1e+hWdva7GHbquH/PZ9WDoe9LvbFmkGtlOVW0X2qddbyFjsMcwyvY93u
5QWfbErQL7r7X70ermOJT3S2X2/u9nDd3ydjYdR6uXEP17HlNpF2zd+9z6PD
PoM2ds6pj2smMIJ7NaLClCW5L8aDrWMI2KSUZef852293Ws9UJR3XG+JgUP4
2iCTHNmsTnTo2LPGy2gXflKQ4Vmd7InXGoNdjSfFJRWzXsV4lTBeH5pdDDlO
1x4iMrE6P66t4VowhCfGKl6ovbHXn3lW61AOYDnZwvGdfcsQb44UOFRB8ZFN
bRscvnPEV7/u8n9ZdvnnMKQlxeupQx0aWBUEqV6ahLXgVbjOplTs1JcE5dby
IF7pyWYFr7G5WFhKPS0oqQ0GD/v644ZjalKj3PA59NXDw+tOKpEPe/awh+zd
jgyoyUZnocpZbC3lWFdEBXUKSVSiDTBI7VOZGiLX2LvAfJOvJxkZdCuyn2s9
1LmqJoCO/q+LbOPekJjVmELtY1d70jqO93o6Q6wdRq7iKGqSYXq1CeHoIhNk
qowvmSYF6veeF3t0AV/QPDVp5Fy33q3ZhnxjStBsLNs9SJEDCg0Hf+LU5ktG
jYcT0A4INrGo3U4NuweXqo+fcH2bjKYT4qCX2mkUjO2IKNUysq2IYpNYl6Yr
dUP4nTrMuWz1lDMUkPTOKYyXcCEFgzVMslo1h49H9lwqG3h2P1Jl1PjGoFsU
Z4BnDV96RV3yBmK+1/rw2n2FEaUW8sPF7sOrTymONOuWy4baDnwW8C6/2qTb
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

-->

</rfc>
