<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.39 (Ruby 4.0.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-thallapelly-oasnt-enforce-00" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.0 -->
  <front>
    <title abbrev="OASNT-ENFORCE">OASNT-ENFORCE: Request-Bound Enforcement of Attested Action Authorization</title>
    <seriesInfo name="Internet-Draft" value="draft-thallapelly-oasnt-enforce-00"/>
    <author initials="A." surname="Thallapelly" fullname="Arun Thallapelly">
      <organization>OmniArx</organization>
      <address>
        <email>arun@advitlabs.com</email>
      </address>
    </author>
    <date year="2026" month="August" day="01"/>
    <area>Security</area>
    <keyword>attestation</keyword>
    <keyword>authorization</keyword>
    <keyword>enforcement</keyword>
    <keyword>proxy</keyword>
    <keyword>agent</keyword>
    <abstract>

<t>This document profiles the enforcement of OASNT tokens at the point of
execution. It defines the OASNT-Token HTTP field, the rules by which an
enforcement point derives the observed request from the octets it will
itself forward, a verification procedure for relying parties that hold no
request-to-action mapping, uniform refusal behavior, and the set of
refusals a conforming enforcement point is required to produce. An
enforcement point conforming to this profile makes a human approval a
precondition of execution for the requests it fronts, without any change
to the protected service.</t>
    </abstract>
  </front>
  <middle>

<section anchor="introduction">
      <name>Introduction</name>
      <t><xref target="I-D.thallapelly-oasnt"/> (hereafter "the core document") defines a token
in which a hardware-bound device key attests that a specific human
authorized one specific action, optionally bound to one concrete HTTP
request through the <tt>rqf</tt> claim. The core document also states where such
a token counts: at the party that verifies it against the request it is
about to perform.</t>
      <t>This document specifies that party. Without it, the token gates only a
cooperating caller: an agent may obtain a token for one request and issue
another, or issue a request with no token at all, and nothing positioned
at the transport observes the difference. An enforcement point conforming
to this profile closes that gap for every request it fronts, and does so
without modifying the protected service, which continues to receive
ordinary HTTP.</t>
      <t>The profile deliberately specifies behavior, not placement. A conforming
enforcement point is typically a reverse proxy in front of an unmodified
origin, but the same rules apply to an in-process interceptor inside the
service itself.</t>
      <t>This profile is written from a running implementation, whose adversarial
corpus exercises every refusal <xref target="required-refusals"/> lists.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>

<t>"The core document" refers to <xref target="I-D.thallapelly-oasnt"/>. The claim names
<tt>adg</tt>, <tt>dsp</tt>, <tt>rqf</tt>, and <tt>jti</tt>, and the terms "canonical action" and
"request fingerprint", have the meanings the core document gives them.</t>
      <t><strong>Enforcement point:</strong> the party that verifies a token against the request
it is itself about to perform or forward.</t>
      <t><strong>Presenter:</strong> the party transmitting the request and token to the
enforcement point. The presenter is untrusted.</t>
      <t><strong>Observed request:</strong> the request as the enforcement point will actually
execute it, derived under <xref target="observation"/>. Never anything the presenter
asserts about the request.</t>
      <t><strong>Upstream:</strong> the protected service the enforcement point fronts.</t>
    </section>
    <section anchor="field">
      <name>The OASNT-Token Field</name>
      <t>The token travels in a dedicated HTTP field:</t>
      <sourcecode type="abnf"><![CDATA[
OASNT-Token    = b64part "." b64part "." b64part
b64part        = 1*base64url-char
base64url-char = ALPHA / DIGIT / "-" / "_"
]]></sourcecode>
      <t>The value is the compact JWS serialization the core document defines,
unmodified; the segment alphabet is the URL-safe alphabet of <xref target="RFC4648"/>
without padding.</t>
      <t>A dedicated field is used rather than the Authorization field of
<xref target="RFC9110"/> because the upstream commonly consumes Authorization for its
own credential, and this profile's promise is that the upstream changes
nothing. The enforcement point removes the OASNT-Token field before
forwarding (<xref target="forwarding"/>), so the two never collide.</t>
      <t>A request <bcp14>MUST</bcp14> carry at most one OASNT-Token field with a single value. A
request carrying more than one, or a value that does not match the syntax
above, <bcp14>MUST</bcp14> be refused. A request carrying none <bcp14>MUST</bcp14> be refused
(<tt>no-token</tt>); there is no anonymous path through an enforcement point.</t>
    </section>
    <section anchor="observation">
      <name>Observation</name>
      <t>The observed request is derived exclusively from what the enforcement
point will itself execute:</t>
      <ul spacing="normal">
        <li>
          <t><strong>Method and target:</strong> the method and request target the enforcement
point will use upstream, as octets. These are the same octets it
received, but their authority comes from the enforcement point's intent
to forward them, not from the presenter having sent them.</t>
        </li>
        <li>
          <t><strong>Tenant and privilege:</strong> the <tt>orgId</tt> and <tt>scope</tt> inputs to the request
fingerprint are not inferable from HTTP. Configuration <bcp14>MUST</bcp14> bind them to
request targets. A target no configuration entry names <bcp14>MUST</bcp14> be refused
(<tt>no-route</tt>): a target nobody declared is not an open path.
Misconfiguration is fail-closed by construction, because a wrong tenant
or privilege recomputes to a different fingerprint and refuses as a
mismatch.</t>
        </li>
        <li>
          <t><strong>Body:</strong> the enforcement point <bcp14>MUST</bcp14> buffer the body it will forward, up
to a configured cap, and compute the body digest over exactly those raw
octets. A body exceeding the cap <bcp14>MUST</bcp14> be refused and <bcp14>MUST NOT</bcp14> be
forwarded unverified. There is no compliant configuration in which
oversized requests bypass verification.</t>
        </li>
      </ul>
      <t>The request fingerprint is then recomputed from these observed values as
the core document specifies. Nothing the presenter declares participates
in the derivation at any point.</t>
    </section>
    <section anchor="verification">
      <name>Verification</name>
      <t>An enforcement point <bcp14>MUST</bcp14> apply the core document's verification
procedure to the presented token, with the observed request of
<xref target="observation"/> as the expected request. Because an enforcement point
always authorizes a concrete request, the core document's request-binding
rule applies in full: a token without <tt>rqf</tt> <bcp14>MUST</bcp14> be refused, and absence
is never a downgrade.</t>
      <section anchor="transport-bound">
        <name>Transport-bound verification</name>
        <t>The core verification procedure recomputes the action and display digests
from the relying party's own representation of the action. An enforcement
point positioned at the transport typically holds no request-to-action
mapping and cannot form that representation. This profile therefore
defines the following modification, and only this modification:</t>
        <t>In place of the action-binding and intent-binding recomputation steps, an
enforcement point that holds no request-to-action mapping <bcp14>MUST</bcp14> require
<tt>adg</tt> and <tt>dsp</tt> to be present as non-empty strings covered by the
verified signature. Every other step of the core procedure applies
unchanged.</t>
        <t>The result is <strong>transport-bound verification</strong>: the token is proven to
originate from the enrolled key, to be fresh, unconsumed, and bound to
exactly the observed request, while the action and display digests are
carried at signature strength rather than recomputed. A deployment that
requires action recomputation places it at a party that holds the
mapping, such as an executor-side processing model in the style of
<xref target="I-D.schrock-action-evidence-boundary"/> performing identifier matching
under <xref target="I-D.thallapelly-oasnt-caid"/>; matching there restores recomputation strength to
the carried digests. An enforcement point <bcp14>MUST NOT</bcp14> represent
transport-bound verification as full verification.</t>
      </section>
      <section anchor="replay-scope">
        <name>Replay scope</name>
        <t>The consumed-<tt>jti</tt> set is scoped to the enforcement deployment that
maintains it, consistent with the core document's scoping of nonce
consumption. Coordinating consumption across deployments or trust domains
is out of scope here, as it is there.</t>
      </section>
    </section>
    <section anchor="refusal">
      <name>Refusal Behavior</name>
      <t>On the wire, every refusal <bcp14>MUST</bcp14> be indistinguishable from every other:
the same status code and an identical body, carrying no indication of
which check failed. The distinct refusal cause <bcp14>MUST</bcp14> be available to the
operator, and <bcp14>MUST NOT</bcp14> be available to the presenter. Refusal causes
reveal enrollment state and nonce state, which is reconnaissance an
untrusted presenter is not owed.</t>
      <t>A failure of the upstream after an allow decision is an availability
outcome, not an authorization outcome. It <bcp14>MUST</bcp14> be distinguishable from a
refusal (for example, 502 rather than 403) and <bcp14>MUST NOT</bcp14> be folded into
the uniform refusal, because masking availability as refusal corrupts the
operator's signal in both directions.</t>
    </section>
    <section anchor="forwarding">
      <name>Forwarding</name>
      <t>Only a request whose token passed verification in full is forwarded, and
what is forwarded is exactly the observed octets the fingerprint was
computed over: same method, same target, same body. The OASNT-Token field
<bcp14>MUST</bcp14> be removed before forwarding; every other field is passed through
unmodified.</t>
      <t>Because the fingerprinted octets and the forwarded octets are the same
buffer, there is no window at this hop between what was verified and what
executes. What the upstream does beyond those octets, such as
dereferencing an identifier the body names, is outside the binding and
belongs to the action layer.</t>
    </section>
    <section anchor="required-refusals">
      <name>Required Refusals</name>
      <t>A conforming enforcement point <bcp14>MUST</bcp14> refuse, without forwarding, in each
of the following situations. The labels are descriptive, for operator
logs; nothing on the wire distinguishes them (<xref target="refusal"/>).</t>
      <table>
        <thead>
          <tr>
            <th align="left">Situation</th>
            <th align="left">Label</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">body altered relative to the fingerprinted request</td>
            <td align="left">
              <tt>rqf-mismatch</tt></td>
          </tr>
          <tr>
            <td align="left">target altered relative to the fingerprinted request</td>
            <td align="left">
              <tt>rqf-mismatch</tt></td>
          </tr>
          <tr>
            <td align="left">token already consumed by a previously executed request</td>
            <td align="left">
              <tt>replay</tt></td>
          </tr>
          <tr>
            <td align="left">no token presented</td>
            <td align="left">
              <tt>no-token</tt></td>
          </tr>
          <tr>
            <td align="left">tenant or privilege configuration disagrees with the binding</td>
            <td align="left">
              <tt>rqf-mismatch</tt></td>
          </tr>
          <tr>
            <td align="left">body exceeding the configured cap</td>
            <td align="left">
              <tt>body-too-large</tt></td>
          </tr>
          <tr>
            <td align="left">target named by no configuration entry</td>
            <td align="left">
              <tt>no-route</tt></td>
          </tr>
          <tr>
            <td align="left">more than one OASNT-Token field, or a syntactically invalid one</td>
            <td align="left">
              <tt>no-token</tt></td>
          </tr>
        </tbody>
      </table>
      <t>The reference implementation exercises each of these against a live
enforcement point over HTTP, together with a check that all refusal
responses are octet-identical on the wire; see <xref target="impl-status"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="sec-boundary">
        <name>The boundary of the guarantee</name>
        <t>An enforcement point protects exactly the requests that pass through it.
A service reachable around it is not protected, and no property of this
profile survives such a path. Deployments <bcp14>MUST</bcp14> ensure the upstream
accepts requests only from its enforcement point, by network isolation,
mutual authentication, or equivalent means. With that condition in place,
skipping the authorization ceremony is not a bypass; it is the refused
path.</t>
      </section>
      <section anchor="transport-bound-verification-is-not-action-verification">
        <name>Transport-bound verification is not action verification</name>
        <t><xref target="transport-bound"/> trades action recomputation for deployability at the
transport. The carried <tt>adg</tt> and <tt>dsp</tt> are exactly as strong as the
signature over them: they prove what the device signed, not what the
upstream will do. The composition intended by this profile is that
recomputation happens where the mapping lives, at the approval broker
that derives the display from the request, and at the executor that
matches identifiers per <xref target="I-D.thallapelly-oasnt-caid"/>. An enforcement point is one layer
of that composition, not the whole of it.</t>
      </section>
      <section anchor="inherited-limits">
        <name>Inherited limits</name>
        <t>The core document's limits pass through unchanged. A compromised device
may still assert a clean integrity verdict. A valid display digest proves
which octets were shown, not that they were understood. Nothing in this
profile strengthens either claim.</t>
      </section>
      <section anchor="the-body-cap">
        <name>The body cap</name>
        <t>Refusing oversized bodies is the fail-closed arm of a real trade: it
makes the enforcement point a hard dependency for large uploads. The
alternative, forwarding unverified above a threshold, silently exempts
the largest requests from the strongest control, which is the wrong shape
for a security boundary. Deployments with large-body endpoints <bcp14>SHOULD</bcp14>
raise the cap for those targets explicitly rather than exempt them.</t>
      </section>
      <section anchor="operator-logs">
        <name>Operator logs</name>
        <t>Refusal causes are operator-only (<xref target="refusal"/>) precisely because they
reveal enrollment and nonce state. The log that carries them <bcp14>SHOULD</bcp14> be
protected as security telemetry, and log entries need carry no token
material beyond the cause label.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA is requested to register the following entry in the "Hypertext
Transfer Protocol (HTTP) Field Name Registry" defined by <xref target="RFC9110"/>:</t>
      <dl>
        <dt>Field name:</dt>
        <dd>
          <t>OASNT-Token</t>
        </dd>
        <dt>Status:</dt>
        <dd>
          <t>permanent</t>
        </dd>
        <dt>Reference:</dt>
        <dd>
          <t>this document, <xref target="field"/></t>
        </dd>
      </dl>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.thallapelly-oasnt">
          <front>
            <title>OASNT: Attested Action Authorization Tokens</title>
            <author fullname="Arun Thallapelly" initials="A." surname="Thallapelly">
              <organization>OmniArx</organization>
            </author>
            <date day="24" month="July" year="2026"/>
            <abstract>
              <t>   This document defines the OASNT token, a compact JWS-based credential
   in which a hardware-bound device key attests that a specific human,
   on a device whose runtime integrity was assessed, authorized one
   specific action whose human-readable disclosure is cryptographically
   bound to the token (What You See Is What You Sign).  Tokens are
   single-use, short-lived, and may additionally be bound to one
   concrete HTTP request.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thallapelly-oasnt-01"/>
        </reference>
        <reference anchor="RFC9110">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="I-D.schrock-action-evidence-boundary">
          <front>
            <title>The Action Evidence Boundary for Consequential Agent Effects</title>
            <author fullname="Iman Schrock" initials="I." surname="Schrock">
              <organization>EMILIA Protocol, Inc.</organization>
            </author>
            <date day="28" month="July" year="2026"/>
            <abstract>
              <t>   Consequential agent actions can cross identity, transport,
   authorization, policy, and execution systems.  Each system can
   produce a valid artifact while the executor still lacks a safe rule
   for joining the artifacts to the exact effect, consuming one-time
   authority, and handling an uncertain outcome.  This document defines
   the Action Evidence Boundary (AEB), an executor-side processing model
   for that lifecycle.

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

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-schrock-action-evidence-boundary-02"/>
        </reference>
        <reference anchor="I-D.thallapelly-oasnt-caid">
          <front>
            <title>OASNT-CAID: Canonical Action Identifier Derivation and the Named-Human Binding</title>
            <author fullname="Arun Thallapelly" initials="A." surname="Thallapelly">
              <organization>OmniArx</organization>
            </author>
            <date day="24" month="July" year="2026"/>
            <abstract>
              <t>   This document profiles OASNT tokens for consumption by executor-side
   processing models.  It fixes one normative derivation of a Canonical
   Action Identifier (CAID) from the OASNT action digest, so that every
   executor checks the same derivation rather than each integration
   defining its own, and it specifies the semantics of the token's
   named-human binding, including a subject-to-enrollment check whose
   absence this profile makes a refusal.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thallapelly-oasnt-caid-00"/>
        </reference>
      </references>
    </references>

<section anchor="impl-status">
      <name>Implementation Status</name>
      <t>This section records the implementation this profile was written from; it
is not a conformance statement.</t>
      <t>A reverse-proxy enforcement point and its verification core exist and run
in front of an unmodified HTTP origin. The verification core delegates
every cryptographic decision to the same verifier the core document's
test vectors were generated from. An adversarial corpus drives a live
enforcement point over real HTTP through every situation
<xref target="required-refusals"/> lists, asserting each is refused, that nothing
refused reaches the upstream, and that all refusal responses are
octet-identical on the wire. The corpus and the list are cross-checked
mechanically, so a refusal cannot be documented without being exercised
or exercised without being documented.</t>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The executor-side framing that this profile composes with, in particular
the discussion of admissibility conditions on the WIMSE mailing list,
sharpened the boundary between transport-bound and action-recomputed
verification.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA61b25bbRnZ9r6+oUA+2epEdyVEcmxrPpHVx3FmSWpHkeM2a
NWu6CBTJGoEABgV0i2m3vyXfki/LPpfChaQ0eYgf7CYJ1OVc9tlnV3mxWJg2
tIVf2tnVxfs3HxYv3/x49e75y6V95//W+dgunlVdmduX5bpqMr/zZWurtb1o
W/zmc3uRtaEq7UXXbqsm/JejTzPjVqvG3xyOOTN5lZVuh8nyxq3bRbt1ReFq
XxT7ReVi2S68TLN49MhkrvWbqtkvbWxzE+pmadumi+03jx59/+gb4xrvMMF7
n3VNaPcz89Hvb6smX9o/OV4cL2Vu3Xhlc+uHfcxt3VSf9nhkg09/NnilzP/i
iqrEAvc+mjpgsLbK5jZWTdv4dcRf+x398Wcj4y6NXdhQxqW9OLcfhu0Ya63s
9KLpysNfqmbjSl3S0l7tynDRfKIf/M6FYmkd3vlXl9/AMW4Vz7NqZ8qq2eH5
G48Z7eXixfmR7eiHdz8+//7x40f655Nvn3y3NIF2PH03Ztumyj4uHDtv4W9C
7ktYfUWudjD55+ZYZC7kS7NA1NC/LFbXNhjFmA/bEC3c23GEwLDrUPho260f
m5xCh0PCttVHX0brWn6krgL/aPwn+JMWdW4vW5v7dSh1FImkD/Sa/enDh7d2
HXyRz/m3pqO5Vnt7uw3Z1rrSjOeUwXPfwAIyVrWKvrlB9DYS43bdVDv5JWt9
G21o7W0oChPa6Iu1xVi3rsFkzt5gmHXI2HW0zcznXePpCQxW7EO5sbVr2sAz
YXfbqshtWRmdadFWanW7c3WNx+e2KwN5CO+vu+gKu/JbdxOqBtMh8WhV0bNx
9AFYzWYVe5WmO94qPEHThQY7bCtaZd5l/txenLLLaCQ825Ib1XtY4UdPk227
nSstlttUN1ifM3Xj8VoeeB9wae81tgN7RLbLloRxyxapcxuQMV2LXe1ttnXl
xhue0dOErc8ITsgvAWuV8NqFPC+8MQ/sZdnyLmgSY+7uTkbn/b39euuBC+vW
N3ZGI2cVnJPCcvawjygnAYjkSDFjt/AwvKxZgCdpIRaoYgVP1KHOxtpnFANi
F5MABqsHcgy/ipvntqrpv1jq3srI2DQ9CAtmjW89R3OKD8zRVN1my2a5bv62
vrZZ4cKOwOVgNxaRUFnCOeznlvZtY5dtjW4ND3cw+7JPMUTlXrYgMezZOW7j
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

-->

</rfc>
