<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 4.0.2) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-curtis-myterms-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="MCNP">MyTerms Contract Negotiation Protocol (MCNP): Human and machine-readable agreements</title>

    <author fullname="Benjamin Curtis">
      <organization>MyTerms</organization>
      <address>
        <email>ietf@nowsci.com</email>
      </address>
    </author>

    <date year="2026" month="May" day="20"/>

    <area>AREA</area>
    <workgroup>WG Working Group</workgroup>
    <keyword>ethics</keyword> <keyword>automation</keyword> <keyword>machine translation</keyword> <keyword>contractual agreements</keyword>

    <abstract>


<?line 58?>

<t>This document covers the technical requirements of Verifiable Contractual Agreements (VCAs) between individuals and the entities that engage on a network as defined in IEEE7012. It describes how individuals, acting as first parties, can proffer their privacy requirements as contractual terms and arrive at agreements recorded and kept by both sides. This includes the hosting format for contracts, negotiation of contracts, signing of contracts, and auditing of contracts.</t>



    </abstract>

    <note title="About This Document" removeInRFC="true">
      <t>
        The latest revision of this draft can be found at <eref target="https://codeberg.org/myterms/ietf/src/branch/main/draft-curtis-myterms-01.xml"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-curtis-myterms/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        WG Working Group mailing list (<eref target="mailto:WG@example.com"/>),
        which is archived at <eref target="https://example.com/WG"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://codeberg.org/myterms/ietf"/>.</t>
    </note>


  </front>

  <middle>


<?line 62?>

<section anchor="introduction"><name>Introduction</name>

<section anchor="purposes-of-myterms"><name>Purposes of MyTerms</name>

<t>The purpose of the <xref target="IEEE7012"/> standard, otherwise known as MyTerms, is to provide individuals with means to proffer their own terms respecting personal privacy in ways that can be read, acknowledged and agreed to by machines operated by others in the networked world. In a more formal sense, the purpose of the standard is to enable individuals to operate as first parties in agreements with others, mostly organizations, operating as second parties.</t>

<t>In this methodology, agreements shall be chosen from a registry of standard-form agreements in a roster kept by an independent and neutral non-business entity. Computing devices and software performing as agents for both first and second parties shall engage using the protocol defined in this document. The first party shall point to a preferred agreement, or a set of agreements, from which the second party shall accept one. Party-to-party negotiations over agreements in any of these contracts or other agreements are outside the scope of this standard. If both parties agree, the chosen contract or agreement shall be signed electronically by both parties' agents, and a matching record shall be kept in a way that can be retrieved, audited, or disputed, by either side if necessary, at some later time.</t>

</section>
<section anchor="definitions"><name>Definitions</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 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>

<t>A "PERSON AGENT" is defined as any system, such as a web browser, mobile application, AI/MCP agent, or any other tooling, that negotiates MyTerms agreements on behalf of a consuming party, otherwise known as the first party in <xref target="IEEE7012"/>. An "ENTITY AGENT" is defined as any system, such as a web server, operating system, AI/MCP agent, or any other tooling, that negotiates MyTerms agreements on behalf of a providing party, otherwise known as the second party in <xref target="IEEE7012"/>.</t>

</section>
</section>
<section anchor="hosting-agreements"><name>Hosting agreements</name>

<section anchor="agreement-types"><name>Agreement types</name>

<t>There are three types of agreements in MyTerms:</t>

<t><list style="symbols">
  <t><strong>Relationship agreements:</strong> Agreements that pertain to the overall relationship between the PERSON and the ENTITY, such as for service delivery or data portability.</t>
  <t><strong>Personal Data Contribution agreements:</strong> Agreements that pertain to one-time data use or exchange.</t>
  <t><strong>Legal agreements:</strong> Agreements that contain the legal language enforcing the Relationship and Personal Data Contribution agreements.</t>
</list></t>

<t>Depending on the interaction type between the PERSON AGENT and ENTITY AGENT, a specific type, or set of a type, of agreements MAY be signed.</t>

</section>
<section anchor="agreement-levels-and-codes"><name>Agreement levels and codes</name>

<t>Every agreement MUST have an associated code that represents the agreement. Each relationship agreement's code MUST represent the level of restriction on the agreement.</t>

<t>Restriction levels SHOULD move linearly from most restrictive on data use to least restrictive on data use, meaning the fewer characters in the code represent more restrictions on data use. An example of this would be:</t>

<texttable>
      <ttcol align='left'>Code</ttcol>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Meaning</ttcol>
      <c>SD-BASE</c>
      <c>1</c>
      <c>Allows service delivery</c>
      <c>SD-BASE-A</c>
      <c>2</c>
      <c>Allows service delivery and analytics</c>
      <c>SD-BASE-AT</c>
      <c>3</c>
      <c>Allows service delivery, analytics, and tracking</c>
      <c>SD-BASE-ATP</c>
      <c>4</c>
      <c>Allows service delivery, analytics, tracking, and profiling</c>
      <c>SD-BASE-ATP3</c>
      <c>5</c>
      <c>Allows service delivery, analytics, tracking, profiling, and 3rd-party sharing</c>
</texttable>

<t>This structure simplifies the machine negotiation when multiple agreements are in play.</t>

</section>
<section anchor="ensuring-tamper-proof-agreements"><name>Ensuring tamper-proof agreements</name>

<t>To ensure hosted agreements are tamper-proof they are built as Verifiable Contractual Agreements (VCAs), meaning that when a party signs an agreement, there is proof that the content of the agreement has not been altered since the signature took place. Agreements MUST be hosted in Markdown (MD) format with a hash of the content in the URL.</t>

<t>Agreements MUST also be hosted in a web-browser friendly format, for instance using Markdown to HTML conversion tools. Web-browser friendly versions MUST contain links to the raw Markdown versions and MUST contain links to the machine-readable versions.</t>

<t>URL formats for web-browser friendly HTML agreements SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/<first letter of type>/<code>
]]></artwork></figure>

<t>URL formats for Markdown agreements SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/<first letter of type>/<code>/<hash>.md
]]></artwork></figure>

<t>URL formats for machine-readable agreements SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/<first letter of type>/<code>/<hash>.json
]]></artwork></figure>

<t>Web-browser friendly HTML agreements MUST be generated directly from their markdown counterparts, and MUST include links to:</t>

<t><list style="symbols">
  <t>The hashed markdown version</t>
  <t>The HTML legal agreement, if it is not the legal agreement</t>
  <t>The hashed markdown legal agreement, if it is not the legal agreement</t>
  <t>Any vocabulary definitions used in the agreement, such as the <xref target="DPV"/></t>
  <t>The machine-readable JSON version</t>
</list></t>

</section>
<section anchor="machine-readable-agreements"><name>Machine readable agreements</name>

<t>Machine readable agreements MUST be JSON. The format of the JSON MUST be:</t>

<figure><artwork><![CDATA[
{
  "version": <machine-readable agreement version>,
  "references": [
    "<link to hashed agreements>"
  ],
  "agreementId": "<UUID representing this agreement>",
  "created": <epoch time>,
  "ids": [
    "<optional DID id>"
  ],
  "permitted": [
    "<purpose>"
  ],
  "prohibited": [
    "<prohibition>"
  ],
  "validRoles": [
    "<role>"
  ]
}
]]></artwork></figure>

<t>Machine readable agreements MUST support signing via DIDs as per the <xref target="DID"/> W3C recommendation. DID ids within the <spanx style="verb">ids</spanx> array of the agreement MAY include the ENTITY AGENT's DID id, and if it is included they MUST sign the agreement before it is considered valid.</t>

<t>Multiple human-readable (hashed markdown) agreements MAY be grouped into the <spanx style="verb">references</spanx> block, and SHOULD include a vocabulary set such as the <xref target="DPV"/>, the primary agreement, and an overlapping legal agreement.</t>

<t>The <spanx style="verb">permitted</spanx> array MUST contain a representation of any expressly allowed actions within the agreement content. The <spanx style="verb">prohibited</spanx> array MUST contain a representation of any expressly prohibited actions within the agreement content. The <spanx style="verb">validRoles</spanx> array MUST contain a list of roles or parties as defined within the agreement content, such as that of entity, user, and/or third-party.</t>

<t>Machine readable agreements MAY be signed by multiple PERSON AGENTs, however agreement UUIDs MUST be unique per unique JSON record.</t>

</section>
<section anchor="retrieving-available-agreements"><name>Retrieving available agreements</name>

<t>When a PERSON AGENT or ENTITY AGENT wishes to retrieve a list of codes and their corresponding agreements from the agreement hosting entity, a publicly-accessible API endpoint SHOULD be provided for accessing this information.</t>

<t>The URL format for the API endpoint to set preferences MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/agreements
]]></artwork></figure>

<t>Retrieving agreements MUST be completed via a GET, and the response MUST be in the format of:</t>

<figure><artwork><![CDATA[
{
  "agreements": [
    {
      "type": "<relationship|personal_data_contribution|legal>",
      "agreements": [
        "title": "<agreement title>",
        "code": "<agreement code>",
        "url": "<url to human readable HTML agreement>",
        "jsonUrl": "<url to machine-readable agreement>",
      ]
    }
  ]
}
]]></artwork></figure>

<t>When an agreement is rotated out for a new version, the hashed markdown and machine-readable JSON versions of that agreement MUST continue to remain available for previous lookups, and the agreement MUST be removed from the endpoint results.</t>

</section>
<section anchor="configuring-agreement-preferences"><name>Configuring agreement preferences</name>

<t>A user with a role of PERSON AGENT MUST be able to select a set of individual agreements they would agree to during the negotiation. When a PERSON AGENT wishes to set the code that represents the preferences that have been selected by the user, an API endpoint SHOULD be provided for saving this information.</t>

<t>The URL format for the API endpoint to set preferences MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/prefs
]]></artwork></figure>

<t>Setting or updating agreement preferences SHOULD be completed via a JSON POST, and the POST body SHOULD be in the format of:</t>

<figure><artwork><![CDATA[
{
  "agreements": [
    "<agreement code>"
  ]
}
]]></artwork></figure>

<t>Multiple agreement codes can be included, and the system should associate those selections to the appropriate agreements. Additional information MAY be included in the JSON content.</t>

<t>Authentication MUST be used for this endpoint, and SHOULD follow standard best-practices for web authentication.</t>

</section>
<section anchor="retrieving-agreement-preferences"><name>Retrieving agreement preferences</name>

<t>When a PERSON AGENT wishes to retrieve the codes that represents the preferences that have been selected from the agreement hosting entity, an API endpoint MUST be provided for accessing this information.</t>

<t>The URL format for the API endpoint to set preferences MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/prefs
]]></artwork></figure>

<t>Retrieving agreement preferences MUST be completed via a GET. The response MUST be in the format of:</t>

<figure><artwork><![CDATA[
{
  "agreements": [
    "<agreement code>"
  ]
}
]]></artwork></figure>

<t>Authentication MUST be used for this endpoint, and SHOULD follow standard best-practices for web authentication.</t>

</section>
</section>
<section anchor="agreement-negotiation-mechanisms"><name>Agreement negotiation mechanisms</name>

<section anchor="client-preference-delivery"><name>Client preference delivery</name>

<section anchor="on-demand-proposal-of-agreements"><name>On-demand proposal of agreements</name>

<t>In this method, the PERSON AGENT to ENTITY AGENT negotiation occurs via the exchange of data over HTTP/S, where the ENTITY AGENT delivers an endpoint location to the PERSON AGENT, and the user must take an action before terms are delivered. This eliminates any sources of pervasive monitoring as clients can ignore the request from an ENTITY AGENT. This method SHOULD be used for interactions such as signing Terms of Use, or agreeing to actions in a website or application.</t>

<t>First, the ENTITY AGENT hosts a URL containing a JSON of the details of what agreements they support. The JSON format SHOULD be:</t>

<figure><artwork><![CDATA[
{
  "endpoint": "https://<domain>.<tld>/api/v1/myterms/put",
  "agreements": [
    {
      "type": "<relationship|personal_data_contribution>",
      "required": <boolean>,
      "url": "<url of machine-readable JSON agreement>"
    }
  ]
}
]]></artwork></figure>

<t>Any required agreements in the array MUST be accepted by the PERSON AGENT before they can proceed. The JSON record MAY contain additional data and information by use by the providing system. The endpoint variable MUST represent the location that signed agreements can be submitted to the ENTITY AGENT from the PERSON AGENT.</t>

<t>Next, the PERSON AGENT MUST validate that the URLs of all agreements from the ENTITY AGENT are from the same hosted subdomain as the subdomain of the configured PERSON AGENT. If they do not match, the negotiation MUST be rejected and the user MUST be informed of the discrepancy.</t>

<t>Lastly, the PERSON AGENT retrieves the machine-readable JSON agreements to begin the negotiation with the ENTITY AGENT.</t>

</section>
<section anchor="continuous-proposal-of-agreement"><name>Continuous proposal of agreement</name>

<t>In this method, the PERSON AGENT to ENTITY AGENT negotiation occurs also over HTTP/S via the exchange of HTTP headers, but this time on every request. This method SHOULD be leveraged for interactions that do not have the capabilities or process abilities to support on-demand agreement delivery, such as for up-front cookie preference negotiation in browsers.</t>

<t>First, when a PERSON AGENT makes a request to a particular web page or service endpoint that is MyTerms enabled, the ENTITY AGENT will return a response HTTP header of a MyTerms request endpoint that MUST reference a JSON file of the same format as On-demand proposal of agreements:</t>

<figure><artwork><![CDATA[
X-MyTerms-Agreements: <entity agreement endpoint url>
]]></artwork></figure>

<t>When encountering a MyTerms response header request, a PERSON AGENT MUST alert the user to the request for them to allow or deny, unless the user has previously approved that PERSON AGENT to accept all MyTerms requests from that domain. A system MUST NOT allow users to accept all MyTerms requests for all domains. This alert MUST contain full host name contained within the header, including domain, top level domain, and subdomain if one exists.</t>

<t>From here, the PERSON AGENT SHOULD follow the same pattern as if it had retrieved the JSON in the On-demand proposal of agreements flow.</t>

</section>
</section>
<section anchor="mitigating-pervasive-monitoring"><name>Mitigating Pervasive Monitoring</name>

<t>As per <xref target="RFC7258"/>, to mitigate Pervasive Monitoring (PM) and thus decrease the ability of entities to leverage MyTerms user preferences for fingerprinting, PERSON AGENTS MUST NOT deliver information beyond the signed agreements unless tied to another flow outside of this standard that properly notifies that user of a data exchange. An acceptable example would be including an OIDC login with the signing of a Terms of Use, where the OIDC flow provides an indication of what data is being exchanged.</t>

</section>
<section anchor="agreement-negotiation-algorithm"><name>Agreement negotiation algorithm</name>

<t>Once the PERSON AGENT receives the acceptable agreement selections from the ENTITY AGENT, it is the PERSON AGENT's job to handle the negotiation. At this point the PERSON AGENT should compare it's acceptable agreements with those of the ENTITY AGENT, and confirm that the user has allowed the agreements required by the ENTITY AGENT.</t>

<t>If the PERSON AGENT provides terms that are less restrictive than the ENTITY AGENT requires, the PERSON AGENT MAY sign a less restrictive agreement.</t>

<t>The following chart demonstrates how these negotiations MUST occur. In these examples the same codes from above are used.</t>

<texttable>
      <ttcol align='left'>PERSON provides</ttcol>
      <ttcol align='left'>AGENT requires</ttcol>
      <ttcol align='left'>AGENT supports</ttcol>
      <ttcol align='left'>Result</ttcol>
      <c>SD-BASE</c>
      <c>SD-BASE</c>
      <c>&#160;</c>
      <c>Proceed to signing and delivery of SD-BASE</c>
      <c>SD-BASE</c>
      <c>SD-BASE</c>
      <c>SD-BASE-A</c>
      <c>Proceed to signing and delivery of SD-BASE</c>
      <c>SD-BASE-A</c>
      <c>SD-BASE</c>
      <c>SD-BASE-A</c>
      <c>Proceed to signing and delivery of SD-BASE</c>
      <c>SD-BASE,SD-BASE-A</c>
      <c>SD-BASE</c>
      <c>SD-BASE-A</c>
      <c>Proceed to signing and delivery of SD-BASE-A</c>
      <c>SD-BASE</c>
      <c>SD-BASE-A</c>
      <c>&#160;</c>
      <c>Use must be notified they must sign SD-BASE-A to continue</c>
</texttable>

<section anchor="requiring-multiple-agreements"><name>Requiring multiple agreements</name>

<t>If an entity requires multiple agreements to be signed, the PERSON AGENT follows the same pattern as above, and SHOULD alert the user that certain agreements must be signed before proceeding. In any displays offering up the ability to select these agreements, the PERSON AGENT MUST NOT pre-check any options unless the user has already set these options in their default preferences.</t>

</section>
</section>
</section>
<section anchor="signing-agreements"><name>Signing agreements</name>

<section anchor="levels-of-attestation"><name>Levels of attestation</name>

<t>When PERSON AGENTs sign agreements, there are 3 levels of attestation, one of which MUST be attested to for the agreement to be valid. The 3 levels are:</t>

<texttable>
      <ttcol align='left'>Level</ttcol>
      <ttcol align='left'>Title</ttcol>
      <c>1</c>
      <c>Server trusted remote attestation</c>
      <c>2</c>
      <c>Cryptographic attestation</c>
      <c>3</c>
      <c>Auditable cryptographic attestation</c>
</texttable>

<t>As the level increases, the security and verifiability of the attestation increases.</t>

<section anchor="level-1-server-trusted-remote-attestation"><name>Level 1: Server trusted remote attestation</name>

<t>In this level, ENTITY AGENTs MUST give PERSON AGENTs a checkbox that when checked, represents the signing of an agreement. ENTITY AGENTs MUST default the checkbox to unchecked.</t>

<t>Under this level of attestation, PERSON AGENTs are trusting that ENTITY AGENTs will act honestly and transparently around storing and abiding by their preferences, with no third-party auditing.</t>

</section>
<section anchor="level-2-cryptographic-attestation"><name>Level 2: Cryptographic attestation</name>

<t>In this level, ENTITY AGENTs MUST give PERSON AGENTs a method of cryptographically signing an agreement. Agreements MUST be signed utilizing a private key that represents the PERSON AGENT. This private key SHOULD be fully controlled by the end user, and not available to the ENTITY AGENT in any way. This private key MAY be owned by the ENTITY AGENT or an agent, if that ENTITY AGENT or agent was given a capability delegation from the user, and that delegation MUST be cryptographically signed and provided via a DID.</t>

<t>Signing an agreement MUST occur using an EdDSA JWT and a private key associated with any public key in the verification method of the signing DID. For example, if the signing DID document is represented by the following FedID enabled DID:</t>

<figure><artwork><![CDATA[
{
  "@context": [
    "https://www.w3.org/ns/did/v1",
    "https://didspec.myterms.info/v2/ctx.jsonld"
  ],
  "capabilityDelegation": [
    {
      "id": "did:myterms:fedid.myterms.info:GDj...",
      "type": "myterms",
      "archiveServers": [ "https://archive.myterms.info" ]
    }
  ],
  "created": "2025-10-30T16:00:14Z",
  "deactivated": false,
  "id": "did:myterms:fedid.myterms.info:iuK...",
  "recoveryHash": "d0a634b07cea22a9e3865eb5598e0486636bb772976bf93d",
  "service": [
    {
      "id": "did:myterms:fedid.myterms.info:5c7...",
      "serviceEndpoint": "https://fedid.myterms.info",
      "type": "login"
    }
  ],
  "shortName": "person@fedid.myterms.info",
  "updated": "2025-10-30T16:00:14Z",
  "verificationMethod": [
    {
      "controller": "did:myterms:fedid.myterms.info:iuK...",
      "created": "2025-10-30T16:00:14Z",
      "deactivated": null,
      "id": "#55b72a71d2431bd5eb10b347f1b272da",
      "key": "9ud_btCMlYQRHkTyyKMNtC48avmC60fCZhWNIbOsNi0",
      "type": "device"
    }
  ],
  "version": "2.0"
}
]]></artwork></figure>

<t>Then the private key associated with the public key <spanx style="verb">9ud_btCMlYQRHkTyyKMNtC48avmC60fCZhWNIbOsNi0</spanx> should be utilized. As this DID document also contains a capability delegation that MUST be of type <spanx style="verb">myterms</spanx>, any keys in the verification method array of that DID document may sign on behalf of the user.</t>

<t>The agreement MUST be signed via JWS following <xref target="RFC7515"/> after following <xref target="RFC8785"/> for canonicalization to deterministically sort by recursively ordering the keys alphanumerically and sorting any arrays alphanumerically. The resulting JSON data MUST be submitted via POST to the entity endpoint for submitting signed agreements. The format for the posted data MUST match the provided example, where the public key provided is the public key paired with the private key that was used to sign from the verification method array.</t>

<figure><artwork><![CDATA[
{
  "agreement": {
    "agreement": {
      "version": 1,
      "references": [
        "https://<url>/a/74d...33d"
      ],
      "agreementId": "1df77ef2-e3c6-4f2b-859d-379cb9874d78",
      "created": 1760621627589,
      "ids": [
        "did:myterms:fedid.myterms.info:YTc..."
      ],
      "permitted": [
        "service-analytics",
        "service-delivery"
      ],
      "prohibited": [
        "profiling",
        "third-party-analytics",
        "third-party-sharing",
        "tracking"
      ],
      "validRoles": [
        "entity",
        "third-party",
        "user"
      ]
    },
    "signature": {
      "version": 1,
      "id": "did:myterms:fedid.myterms.info:iuK...",
      "signedOn": 1761841201,
      "type": "JWS/JCS",
      "jws": "eyJ...ICg"
    }
  },
  "publicKey": "9ud_btCMlYQRHkTyyKMNtC48avmC60fCZhWNIbOsNi0"
}
]]></artwork></figure>

<t>Under this level of attestation, PERSON AGENTs are trusting that ENTITY AGENTs will act honestly and transparently around storing and abiding by their preferences, with no third-party auditing, but gain the security of a referenced cryptographic signature.</t>

</section>
<section anchor="level-3-auditable-cryptographic-attestation"><name>Level 3: Auditable cryptographic attestation</name>

<t>In this level, the same signing method MUST be used for agreements, however an additional zero-knowledge audit record MUST be provided. This allows a third-party to validate that the agreement was appropriately signed without having any knowledge of what the agreement contains.</t>

<t>After the agreement is signed, an audit record MUST be generated from the top-level agreement object, which consists of the original agreement and it's signature. This object MUST be deterministically sorted, and a SHA256 digest MUST be created. The format of the audit record MUST include:</t>

<t><list style="symbols">
  <t>A context of keys used in the audit record</t>
  <t>A reference to the agreement ID that was signed</t>
  <t>A zero-knowledge representation of the signed agreement</t>
  <t>When the audit record was created</t>
</list></t>

<t>Under this level of attestation, PERSON AGENTs are trusting that ENTITY AGENTs will act honestly and transparently around storing and abiding by their preferences, with the security of a referenced cryptographic signature and a third-party that can audit that signature was performed without modification to the agreement.</t>

</section>
</section>
<section anchor="retrieving-signed-agreements"><name>Retrieving signed agreements</name>

<t>For services that store signed agreements on behalf of PERSON AGENTs and ENTITY AGENTs, an API endpoint SHOULD be provided for retrieving signed agreements. The URL format for the API endpoint to retrieve signed agreements MAY be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/api/v1/myterms/agreements/signed
]]></artwork></figure>

<t>The formatted response MUST contain the level of attestation used (server trusted or cryptographic with a DID), and the contents of the machine-readable agreement. Retrieving signed agreements MUST be completed via a GET, and the response MUST be in the format of:</t>

<figure><artwork><![CDATA[
{
  "signed_agreements": [
    {
      "agreement": {
        "version": <machine-readable agreement version>,
        "references": [
          "<link to hashed agreements>"
        ],
        "agreementId": "<UUID representing this agreement>",
        "created": <epoch time>,
        "ids": [
          "<optional DID id>"
        ],
        "permitted": [
          "<purpose>"
        ],
        "prohibited": [
          "<prohibition>"
        ],
        "validRoles": [
          "<role>"
        ]
      },
      "signature_type": "cryptographic",
      "signatures": [
        {
          "version": 1,
          "id": "did:myterms:fedid.myterms.info:iuK...",
          "signedOn": 1761841201,
          "type": "JWS/JCS",
          "jws": "eyJ...ICg"
        }
      ]
    },
    {
      "agreement": {
        "version": <machine-readable agreement version>,
        "references": [
          "<link to hashed agreements>"
        ],
        "agreementId": "<UUID representing this agreement>",
        "created": <epoch time>,
        "ids": [
          "<optional DID id>"
        ],
        "permitted": [
          "<purpose>"
        ],
        "prohibited": [
          "<prohibition>"
        ],
        "validRoles": [
          "<role>"
        ]
      },
      "signature_type": "server-trusted"
    }    
  ]
}
]]></artwork></figure>

<t>Server trusted signed agreements will not contain a <spanx style="verb">signature</spanx> key, as these agreements were signed using standard server trusted check boxes.</t>

</section>
</section>
<section anchor="discovery-and-standard-response"><name>Discovery and standard response</name>

<section anchor="capability-discovery"><name>Capability discovery</name>

<t>Per <xref target="RFC8615"/>, all endpoints SHOULD be discoverable via a "/.well-known/" entry. The URL format for this MUST be:</t>

<figure><artwork><![CDATA[
https://<domain>.<tld>/.well-known/myterms-configuration
]]></artwork></figure>

<t>The response MUST be JSON in the format of:</t>

<figure><artwork><![CDATA[
{
  "methods": [
    "continuous",
    "on-demand"
  ],
  "get_agreement_endpoint": "https://.../agreements",
  "get_agreement_prefs_endpoint": "https://.../prefs",
  "get_agreement_signed_endpoint": "https://.../signed",
  "post_agreement_prefs_endpoint": "https://.../prefs",
}
]]></artwork></figure>

<t>Endpoint and method definitions are OPTIONAL based on what the system supports.</t>

</section>
<section anchor="standard-responses-to-api-requests"><name>Standard responses to API requests</name>

<t>The following standard responses SHOULD be used on all API requests.</t>

<texttable>
      <ttcol align='left'>HTTP Response Code</ttcol>
      <ttcol align='left'>Description</ttcol>
      <c>200</c>
      <c>Success when retrieving or setting any data</c>
      <c>401</c>
      <c>The user is not authenticated (invalid or missing token)</c>
      <c>403</c>
      <c>The user is authenticated but not allowed to perform the action</c>
      <c>404</c>
      <c>The requested user or agreements record doesn't exist</c>
      <c>500</c>
      <c>Unknown general internal server error</c>
      <c>502</c>
      <c>Bad gateway</c>
      <c>503</c>
      <c>Service unavailable</c>
      <c>504</c>
      <c>Gateway timeout</c>
</texttable>

</section>
</section>
<section anchor="IANA"><name>IANA Considerations</name>

<t>This memo includes no request to IANA.</t>

</section>
<section anchor="Security"><name>Security Considerations</name>

<t>This document should not affect the security of the Internet.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC8615">
  <front>
    <title>Well-Known Uniform Resource Identifiers (URIs)</title>
    <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
    <date month="May" year="2019"/>
    <abstract>
      <t>This memo defines a path prefix for "well-known locations", "/.well-known/", in selected Uniform Resource Identifier (URI) schemes.</t>
      <t>In doing so, it obsoletes RFC 5785 and updates the URI schemes defined in RFC 7230 to reserve that space. It also updates RFC 7595 to track URI schemes that support well-known URIs in their registry.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8615"/>
  <seriesInfo name="DOI" value="10.17487/RFC8615"/>
</reference>

<reference anchor="DPV" target="https://w3c.github.io/dpv/2.3/dpv/">
  <front>
    <title>Data Privacy Vocabulary</title>
    <author >
      <organization>W3C</organization>
    </author>
    <date year="2026"/>
  </front>
</reference>
<reference anchor="DID" target="https://www.w3.org/TR/did-1.0/">
  <front>
    <title>Decentralized Identifiers (DIDs) v1.0 - Core architecture, data model, and representations</title>
    <author >
      <organization>W3C</organization>
    </author>
    <date year="2022"/>
  </front>
</reference>


<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <date month="March" year="1997"/>
    <abstract>
      <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="2119"/>
  <seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="RFC8174">
  <front>
    <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
    <author fullname="B. Leiba" initials="B." surname="Leiba"/>
    <date month="May" year="2017"/>
    <abstract>
      <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="14"/>
  <seriesInfo name="RFC" value="8174"/>
  <seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
<reference anchor="RFC7515">
  <front>
    <title>JSON Web Signature (JWS)</title>
    <author fullname="M. Jones" initials="M." surname="Jones"/>
    <author fullname="J. Bradley" initials="J." surname="Bradley"/>
    <author fullname="N. Sakimura" initials="N." surname="Sakimura"/>
    <date month="May" year="2015"/>
    <abstract>
      <t>JSON Web Signature (JWS) represents content secured with digital signatures or Message Authentication Codes (MACs) using JSON-based data structures. Cryptographic algorithms and identifiers for use with this specification are described in the separate JSON Web Algorithms (JWA) specification and an IANA registry defined by that specification. Related encryption capabilities are described in the separate JSON Web Encryption (JWE) specification.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7515"/>
  <seriesInfo name="DOI" value="10.17487/RFC7515"/>
</reference>
<reference anchor="RFC8785">
  <front>
    <title>JSON Canonicalization Scheme (JCS)</title>
    <author fullname="A. Rundgren" initials="A." surname="Rundgren"/>
    <author fullname="B. Jordan" initials="B." surname="Jordan"/>
    <author fullname="S. Erdtman" initials="S." surname="Erdtman"/>
    <date month="June" year="2020"/>
    <abstract>
      <t>Cryptographic operations like hashing and signing need the data to be expressed in an invariant format so that the operations are reliably repeatable. One way to address this is to create a canonical representation of the data. Canonicalization also permits data to be exchanged in its original form on the "wire" while cryptographic operations performed on the canonicalized counterpart of the data in the producer and consumer endpoints generate consistent results.</t>
      <t>This document describes the JSON Canonicalization Scheme (JCS). This specification defines how to create a canonical representation of JSON data by building on the strict serialization methods for JSON primitives defined by ECMAScript, constraining JSON data to the Internet JSON (I-JSON) subset, and by using deterministic property sorting.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8785"/>
  <seriesInfo name="DOI" value="10.17487/RFC8785"/>
</reference>



    </references>

    <references title='Informative References' anchor="sec-informative-references">

<reference anchor="IEEE7012" target="https://ieeexplore.ieee.org/servlet/opac?punumber=11170391">
  <front>
    <title>IEEE 7012 - Machine Readable Personal Privacy Terms</title>
    <author >
      <organization>IEEE</organization>
    </author>
    <date year="2025"/>
  </front>
</reference>


<reference anchor="RFC7258">
  <front>
    <title>Pervasive Monitoring Is an Attack</title>
    <author fullname="S. Farrell" initials="S." surname="Farrell"/>
    <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
    <date month="May" year="2014"/>
    <abstract>
      <t>Pervasive monitoring is a technical attack that should be mitigated in the design of IETF protocols, where possible.</t>
    </abstract>
  </front>
  <seriesInfo name="BCP" value="188"/>
  <seriesInfo name="RFC" value="7258"/>
  <seriesInfo name="DOI" value="10.17487/RFC7258"/>
</reference>



    </references>

</references>


<?line 567?>



  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA+1dWXcbx5V+x6+ogR9s+WAhuItHozFNUhYdUWJIyhpnTo5V
6C4AbTa6kV4AwYLy23OX2nqBRCn2yeTM5MEiumu7VXf57lKdfr/fKaIiViei
e7W+U9k8F2dpUmQyKMRLNU2LSBZRmojrLC3SII3FN1dnL68fnYjn5VwmQiah
mMtgFiWqnykZynGshJxmSs1VUuTdjhyPM7XE0aFbtxPIAgbN1iciSiZppxOm
QSLnMHuYyUnRD8qsiPL+fF3gSvo7o05ejudRnsMSivUC2l1e3D3rJOV8rLKT
TgijnXSCNMlVkpf5iSiyUnVgtr2OhNWciNObi9POKs3up1laLk7Emx/EG/gV
JVPxAz7p3Ks1vA5POqIvVDGLghz/kmWRzolu/KXpg8Flksf2caC3qZSxR3Fn
qZISFiWEnRL+5rVXpxYwcBRjg+/UOzlfxGoQpHN4LLNgdiJmRbHIT4ZD792Q
xoIVqLxwDYI0VLAb00GaTYd654aRKibDPAuGY1h0MBvCVMlwyx4P3s1jGDdT
i/QBo3Y6sDuzNMMtg15CTMo45jP8XiW/ynmUiDOagt5Cd5lEv9GunQjNYvRG
Mfk45ndJusqDiOjvJGmGe7+kTbx5dnZ8ODrAP8+vfzqhjppfz2UhgS2jpQzW
4qc0kOMyltmam8hsqrw9Wu0Fg2lUzMrxIEqH4WI53B3s0b/U3FIE/+vjkuFU
9s7oJ7GY2N3ZPcQlXJ5Xl6AChUwQR7+pUFyG8COaRCrLxTfQNH8klqPBDox4
lmaKjjUqFDBMpno4rhRz2OS4R0IEu58pYOOCdipvp2K1Gqz26ETuboZhFPZh
+IdTsNvpoNB5u3t5cXFxtDParRCFDwU+hYGuNOvfGNG+BuLSBDjebLw7z/pq
I6XUu0UMpA/wT1p2rrJlrIphupDBfy1KluP/HI1GRzt7j0fbKMEVVUk5YNY4
2j04PukMBoNOp98HsR3nJJGdzt0sygXolhJlEiR1iWdSzECGVTBLogAIyNTf
yihjoRXpRPykMjg7IvLMk+xTK9nim5/OTuFMx6pYKZWAAgujZRRCo5xOEIdH
BigihXPJAn5N5VQJ0J5SJNALxF9IWJeawJ6GMIA9gIG4LOB5HmTRGHrP0pU/
PHBIUKDigM6TKMsLsZAZTtMTAejgRZZOJirDBUQZ/OKDqdAHHX11RdJMi5YZ
NAfeLDwVBl0D0ImwQmxxrxaFGK/FOC1mIo9gkQNB2xslQVyGivd1lua0QmYv
/MdOCKtMPEMCW+29yaNpgv2qT2llZRgV9Vf6oOdRGMaq0/lKXMKLNCwDUsqd
r74S12W2SHNFR2q0DbCDEgt+gc9xwe/fm73/8EHkBcwos7AngEiVrSJodw86
KcGN06P0BNBcpLjbcCyqcvwrUC1irsA86BbeeeAovN8g3wvFB7kwYmROC3hh
Jdeab/BQx0qgPcWjx5XEKpzqA6GDCnEiOBVtm4BcGBKkI8SHRAQeEFGqOQ9e
wT9xCKyG/DhHlUSnFQu0nqCSiuYumY3RtKuE5MMnHZ7qqRvciQvwuIo2iZfW
g+nzIl5XrAM85ZE0p+fAhUCuHgxO/hLpgYXMwVCnYRqn03XPnyCfyTjGjQuA
G0FAJ1k6B0ozNY1AL6yRJkNPHyn3++JSRQaLgnMzHC9JxtVCJajYae8TVaK6
F0ma9Mdljjufs9CvB6A25ouSVh+qZRQolrA8nRQrQCN45jirpg4UA86LgkKS
xTtHHSp0a6q0KsEpp3xQBo952qTwtR5KqfIOZK1HWqQREAPHJmEMBXyaqdDt
BJxBBm9yVeB2uQ3q8W6uACHNmDPcKs3IMghw59JEDcQ1Pu8XaZ8beAoAWBW0
cX3vk7VmOeA9K+24FmIYvzVuZVoWqIl4IQFwDXcG6s0BA5dPeGPNPtIQzOSa
P8w8RLKZwHERqibYGhWDzGYpGQ3gWKMJ9bBf64PUOgvksUCBnGod6kYjpiIu
AzmviXmRRWqpUNZR5+EfsKIwyoGb8AdMqSLaBiI6msB2AnflAHZ6qLnzdK4I
FYLKieZqQHrwHNkiYixB+g+QLiqAMAco/vr2rtvjf8XLV/T3zcWfX1/eXJzj
37fPT1+8sH+YFrfPX71+ce7+cj3PXl1dXbw8587wVNQeXZ3+3OUN6r66vrt8
9fL0RbfBr3SwqNRQvwAtwJyozshesl0kHv/+7FqM9kF9/wfY/93R6DGob/5x
PDrahx+rmUp4sjSB8+KfsHsgz4uFkhkdApxJIBdRwcYVhQzVNGwx7t6p6F5f
3Ny+eilOf7h4eddF5WekDCUXeDVfg6aYg/kqQRzwmVipsRhnAGNVhtptHKEf
tFjEwDZ4CD1xejm8grUTu7CUJVpTA9VpDDzTY7YwsqKs6fHZP0WeAaaakHwi
D+cl6RQStFYDVtT0AGyAb/0G4jQRXSD08u7nz6UY8RwS7BS3affHkMvG99Pk
VrRTnV7EDc81XvEcN5Qai/bIY2PJIeiOugZe8eOqasTx9cpPOp1vxbff3ij2
EvNZtPAannz7rQ8niXrYt0KiKKS0blSNyJyZP4IBnNhAM6bBm3xq7lTQnOCZ
gPWBA4wB2qHdy9jbWKQwFzAmGitapwXz5EoR6o3GJaG0B68atH0ftQ5PUSJ0
yIR6F8xkMlU8zQs1rbjIbSOiLpYasMTUPoYBSrR5Cn2WwNi96t7CNjyICDjz
czLkBCh5GtIykpAjHWvbPpM40DS+fPTQQgKUA38hoK7E4MZmmicVHgEV6GzK
oMZrMWh/7USg2w1sd0EH54wSaeqZRKSOPJ6nQURgD5vzBlr/kQXAdh2IC4CI
VYayL7/OeQQa3o6gDwHWhETAM9hR3ia9c27wTufGe63p0OZhDswsQNBB54Ie
JviAqM8NuCTXyPINMFOs5PYGPULYhg8magWqBNgMj9BDu0SPI4VgrkdC7o9I
mk/HVyyCWKVlDCga/OPO5gwG27xAqjZXPPems7k9739/enuxGW1O4xgUfkPg
XJv+6WZ3WysGDMC46yIKcr/P3WZvW6ee68E2DgHMfWVd0P96s/+gAUxnHgrd
lihujLW3OfjMwexAPO4ewG0LEzMan/1zOJSSoiEgFnAEGDlh5jUBN99tRDsu
5mVcRItKhJF0M5z9IpZrlqsLsIgZsQkcrMr6sJyKLMLs6MnkODG6rT785eEq
HRk6wNNxGcUFKtmHRgp8hgUJJQqkQcygCHISZoe8C7I1sDFmYllolgZNlRTG
J3NaYQaLSVLwVVBryRjEAGgBDyHQyBjmkLS/YHHvcYcCZHlPKaHYj+0uoB2T
2X2IdvSbq/NHxpknx03ibDOzBrMkLXSvb14gbqqNDOAqrQ5PoKGvYRKohAg0
MuoGmqdH1itKEMIHxtWxCwLt8Pzu6gXOjMEcUtqAI/KBeNM2pG6jV2KsCzDl
fW5sbSZXbnjbHjl2e59GqNv0A/JhEzQlbIdbSSUaPHbTupJAL+s13vN0Avrn
73//e8dE056EKcZwnw6eFHH4dPiEAV2sCoT9eCpgdOAxqr+n1LGxHkvrHz39
8AmyytPBPGxfyEfyBX/sgn4FoMBLauWZ+tkY8QAIq2MrYQRuXWGsGcd35mZb
g7QkvwXkWytnGkCHySwfEUZEhwzXpELXX7OSfkuLiavIqYe+X1SgikCxd1jJ
ttgy9JeMcwp4fWmj6uwOsD+JpjM05+MNakAoh9fOr3/68EGvp3HiPyK4MgSj
0jaB5hae6HQ+8tIeEo6oQx6GY2ghNJNupFnofUeIrp68eyKebOdHs8SnPexC
0RIFuimHXv9DAenuEzxW1A56y93KnnahxV+po314GULP7pPXry/PHUZhAxF5
bs/TLnULYEHAdbhEtUgx7gI4m5cShf4a0gWeC0JgGDcKvZnBjM2jggcxrXWI
z2+VpbNoHNWa6YdIvmu6lHEU3qRxZQ8y+M1tOh9Yvj55Ynm5QHfExn+XkcTV
U6R6wbFT5KHLc/Do3+ydUThlDv1DQgMDTSkHFTUnvoXfbzGgLddNU4n420ii
c5wYzgMK5uFYaq1s6PYhQwBeNiy3NvJYTRBjchd0x6OQ7DDtFJiFK4NZZpgw
dUz2TU1IH7W4C5RCJFnT9uet48G3YhynwT2vWatNQ6H0JRf9khbR1PHeLJpL
39XQgayEXNFYLhZ4OjXtMBAcUnpr2cvse8VyylpSi1wi0CrqHT7NQY1KxJUo
NRqbe6fpNlhjDRbut45Xv3BON8DnTOv4fsu0cZSTzkFZoMCljTu6UMrH5vHV
J2svDiv3UNtmdCrDFOUiMnB68Akx8z1OShUYRvR9W7BUMziCSkRWoH5ymrVM
or+VFL42f5JO5QAnQ+4bDmFSQGUpo7ihwd8w9q141UCNL4WwOyAPhLRMRNTb
VvKLTdgjwuRShumUlD16j2xjmX2YrGM9ZkMBg5fjOAridR9D1nke4XJPry+h
RcjhcQdDdLonJOSimxuFbbOpoJFYIhzUofa4jsq4QByK48KJsT6nj6MbuYiG
y5FNw3s7S9rW3/6mZQTFCaeO/I5KVoofLu56NoDEm5gr23oL7HpfsWNO+b+n
/8I7xFtk3PxIw8bkuX5Bl/uXwAvObEinsKWjAVoG54ExK00juxOlZ64v2krg
j1ojgn5+mzKLqQn8SxabClis6FTRX6Uj4sbX1c7bMYPr+Vf694NvF1kOPAiO
RiNLC0KXaclcg8nilYEerKbrgK617MYHVbkwHmQtiIRnECWlYjmbk/KyIouz
A28uo7TMRQxOY7nIHa/URqLUBQZ5Qid0ltGBr0Dd5KwewEueRFN2yt0gnhBg
zB3VnHE1UYkiARV9YSallZIgYWbGJatcVtKXArLdHNOhp9gz1PGBWSXEAJ5k
i5ZyWgmnsRGmtpibL9X0ngJ25JzzWlkPY1Oj0x+kdXK5/JerHOyutc0t+FgU
RgV7sAhlsfVUPXrqOohY9frVraeJ8JcYp+H60z7gNmXUlP4KJm0Ej7RV0Xk4
A/fckjiXgckhYh8TdoV3mCLnMyVZ0+gM0FKWAqKiZLiLPYvTMIw0QvfOz1ho
CzM1tbQ3Bn2AZJTwEGQ20J2MVc41dxBbmNOuoMFJivDK5fDHKi/6Cwp54+no
GAUV3LgJmga9XWA/LivWghuByb9YYh5i0GtyZPbof6Pt9gTpU5v8MQvOsPSf
td4fF5h/Aed5SRE/+DtXmE+K8jln6c7iqLpVNiKNr78Sr5J+CKaNY9rg68pY
1CLA1VKSXjPlA4ddAaeVCqYgKLOczoJsnk524RyUWaD6hud3d9fD2x5GfbOm
y2kWTCFgy2Hgz/EMWp/4K3JaiQzlvARcXMh7Tghx+kV7orq4K7O7okJdsQU/
51FCqVZK6aZlFnA2E3DaUuaYcJmnSVSkma5SCWinWUWCI5FqUrC2DI5UV9gk
FdL0XLyzni63bOPl3XLr9Jg4ACeAYUWvc86q0amR1KbWXzOR5By8OGrj8uzA
RM8wEthrbjlqDcxbo5xrv42oZIWrIwahgucxrWA1q1bFEZLQcQsWP+qoZc0S
6oucOVlEjg9UD2XR7f3eWNtD2boqkIJK4xRgluTgVgMgwwa0A0wP6DbxLQYN
zRS1FDmpcOc5I5CjeiEHiioCaJgZN10XOQaKObnigJIOtm64M7QkiRTO8Swu
TISZRj2fKyZgQ89jW2lcyoyTPG3ZUSupyCTax/bo1ZCCitcxPmIkusKQ1rL5
hAMDv1TvihaVRMugOARjEJ0dAnbmgoQ4bvWDK1OiVrBvcjm3yRlYKfOlraCw
D1zKh0A8NK6sFwut6JTClKLJVAHVq4Nrz2X4le16RZ05+4WHhb6QFscoD2Dn
ZRJguOOFxKLBlq0xcKOSPtzGtzlXGU1teaSXZET3o75pAzYqZ+w4oWfUalV+
H6NCOTPPgLRaGXwlZkAdlVKCjPO8VIYBQylKL2sdvU0dY64+k9M2nUyspU+T
ABkdv1xw7Uikw1sojzks2D5EfKSjuqk1wA5fuKSxX6xSLvrAjwQ/0vvIR4SV
3YGz0uma3Gn4VQsEnYNJzCkKyBaK6xwxFBdgNJRgx4KKsl2hjEN4SHjk6pC4
3DVssSWriIp0ijLjkKOGYd7BcCmIGckspzqVViyGYG2JJlHs6m9RRLWFgR37
FLDRtue/+3revkvJYhKB4LJ3JHY1oPCfegEKWA3nstg+OiI0mZpCTVSvfgY6
+auywgm4ybka4MAAe07nQ1gRi5RUguHOJEa+sj0xyW1iEvGafawlBeVhT+ri
pUtQURfWtt5qROJtVGzglxkPzxRC6rXgvPknh0PgAS94MFMUz2RXYsN4P4bU
rMBbMuZxNRzMO9rTviCVENOwwHrpQtfimCdUI2y1czTBEixQD1FO4ZZnSCVi
zhb9U0Xnlr8WEpOmpPk59zGToatKdT6pXuunmFBMYHR2I69AM0w5QnBtEeaV
RZiAFzjb8/69vsxBaYlUzLmfau0lvrm+eqTNR4nBdcyT5ayldHmbDZ9rvWSU
nT1F4izf1cLTnMDgWHcaUU6uV9m7W8cjWpFVgYVapyZo0AADhqMjxgEy4TLI
CbG9rmSu1y8zo+IGK6yegi6mPAYe0+pJvxDKsdV2WM7ELEtmz1Q2mYomj7sA
nry6PD8DHINm0Jo97zaGrEFx58dQR1q89q9zXSlvHEWDnWlxQNOY8LtZZaP6
zdfzMp7CGRezeafzypSx1Cx9oCJj6D1avfptF5ZpxUA9naqrD/11Ln5Nx5zK
TcJYNcODp9rOGg1eW5oOE6GzTjVJWF3XtsLc7Ld3z6JWXUiFgAC3srnDeVYZ
mqRZJSaSO9it0W0NwjBKq67Ynh+7jBwuzhAb5HmlCg/eJE0jqGfM27AqgHLK
lcrmYH71IOfrkSBkEazmQ6AAPihe5Cr0TaiCbgVUrhCQMBJkouss3ELze+40
G0ee2EsdYzkiUoeOKEy9MSu2u7Cp0WUfaFiDD24ori02nU2//r/Gk+0PvCpC
8+/mmh0cglFaDJEPXBXvRJi2zd6u3vBLhoFuv89Avd9nQGjcIBGebUARceAD
dJnWiDo5T0+J4WxznMckOzYM4W/oYHHilkJCEhGKxhBKskzQVnPI1xRY07dw
P3O0x4eehSU+rATL6kiJyqF1gbU3pyHcJHTZP9ZuMdDE97rA/8aLIzHeJaNb
aEhtuagYR5c7Ybnxb/m0e51o9sBa9oOZCu65kn+hS4Fa0JqM0fNam4QJarmF
Ddxw+jZUE4ly5JlgCv/dGsaoluW/4MJiNEsFXn7mO9gMVivZbK10qgTpAv49
U59cHaZH+IlsFt5tssEJasHsasLBXgKSGIBLPChqYAeHmbBymIuG7zBPibpi
gyI/2tzSdQm8pU5DY/qsUP5ioNXu5ixbL4p0mskFrKj2dm9zineEyKIE29sh
sKI4BSFHsPsEkfT55gr0JnkCwIRLXcxqcRMR6sZynbUfTJSJ0Yn4JDHOI6Zl
9CrWQ+vwKVqE6hFKQWw2Tt8JVzdLj1DYahkEH7F4Bz9om8swHbmzdooUeFiP
jkWcSagyb9ENZqmtFTERboCt8q3OS34iXjGbAZPRjUddtJ3kCBISepKBswWQ
3kRd0Wsec1yKTXlUgao9hg8JOlS2FsTelq0c0u6J2MpLX3w4OpKANRn+2HQ5
zul1/yhaKo61EisLYLvf2Mukm7AF31NryxVVg07kbPldXGQD/a01X+4DPewA
EXi7rpaGghsu8d0WntPXEldy3TKdzt2lq6QdcfGNJ3P9KZo0mYOD26hMVqAz
casRLdkwC1ZcYokEyaAFsm797Mi6JjZX1HooOt5mE2KcRzq/PAd+uW05NA9g
6UJsjPKH57en4sc3d/quo78f3p0UzuHDznGVDb3WriMrm8AkdQwj+YKMaxLP
6A4RoTm9eZUG7s4gVk8YNnEH4RDlMxVCcx3H4c83uOj8d5RkfVe4dFjLhxaS
HD+0MFyOdAzdtoGneAdooCP3A3QHh8vdYVC8o0LjOHRVk+5Uz+2JNcP6EVWH
wrgnesyTCVj2sDLDyQ/nvw4GAxfQN7kA3cirp8HPTSwVa2lKIri163eVkbt+
vUqt/rSLn1zoj3b6ezt3o8OTnZ2T0f5fOE8RKgwbLnXDiYzBWew8lJio/JMh
povhfMSBz2U+o6478nBvf7xzFCi5uysfq73jwwM1Pjh4fKx29o8PD/cOx+Oj
o93HR4fjyeO9kEfRMb0v3NyD4KiyuXq0i5Y0TrN380zIu+7WdhXcxKx4CagQ
W3DO5rstg3WpvuJTJ+AL1RXJVJN6qw2zzzsV7vwAPqCGVV5IQA/3qtv/1cHB
+GhXHo3C3f290TiE8xztjPf2jyaj8e7RbijdWKA1sMfjMvxlXJxdxT//+eb5
/d16/aerl8XZ/rFczs8OdyZnf5m9eXk5fpW/jHaa+8/X8OsH4Cq/u7uDna5J
Xd3N9NW/j6k1eu/U2tvPWN5bEyDAXCjZPcxmEU6L8qpWoySAjhPmW42CCyGP
lbnxIN7qk3zbIxUMi8w/pny9amkYrLKIuWTTUb2Ca4yQ9t2bJWHa2qCB+fHN
raeK+ZL20cHo4MMHISd4TaP+8vjoGF/Sx0Nkwlfu9cchqGxLIWlREuWFMW2Y
bBijs4bJE9Bo9EmJUNnyLqJfxouZTICqTHfjzzJkXLmUrHkXmu1sjQV6gNCU
gqAU1LLE2vwe0ksVTBpJaC/SRtipjotbU8KxHiSsXF0w/saCc3NuSsqteblL
/DyBMZMuQOcxqG2mA17+K0nRIsfWdfyFsISS9tphdyhkKycN2spNQNBYD7U8
qojjyMtSN25aVGwvZqifDuXwaD8ETbW3F3ZNyWWznJTvXIzCydGRmuz21V5w
2N+f7I77xwePw/7e0eNg/PgYBjo6btN4o6PDncPd0eHu0cHxY0+b1Rb2CY36
812AGrWxyOb1DN/s9O3tSr8Y1bw0cZOWUZvXOcxzvpfpD+c5Ee3z+Q30Bc7K
a33ts7mMlqsi9JxFY8sUlXpdINUOy0pcYzB7s/FTjPS5KMSOrsJXCR//6Hh/
tLszahgX0G7DH89uXbdfV0hoV61/hNEuz6bO7nzgWzYke3/6fLtmLNS/u2/K
qeqpueZvwxCUbbCDhLW4hj3rimu7dyIeEAhpOLk2Ime8Ca29GrVtfgjJXpCo
FJj8prK0bz/NxETampRaAaJNDlJYUFZ2B7Rrs6jD2VXUwl5dqfPncKexYnzG
1cFk7e1qTAqmOpaBFFhVSga4+jrKbUgTSW0jyF2FtMagSBd9Zkc3UjrGIo+e
DqnRpai8yA1+AF4CXOyXaXOhDiZM3GnzlvFIdv52CGBqdqW4fX66e3AowmiK
WWbnE5M6b7se2KRSl+OCo9gXp0K7iNicsETl6qPXlxq7VL4pCLYEArKyRpU3
mXrUmKh5d6ktowg93xiwWlk/Dq5p/TfSFl+iC/RxV+TIfFKJt8QWZnH7Fd8r
1NVFRnbmaeiATP3MGpXQDdDW6TxzZSQ6f4bEtyWBKyi6tvW1z4vkD74ZkH1k
ccztDyhqtrXazUX/U3eThprPjXel18GxYr9uufrtlyarstB9k1fjzegkVJhD
3x0BJ+aRK5bVdfRW92y/tzP46FH/AbepeI5fPlbo2QaYv+jusu64BVd/+h5z
Ddt98Z1m3Xn7zWaL25orbLvl3FxXO6Su33tu6dcOmttuQjc7b4G6lbvRupf+
60MFbZKO+sUgywpbd5sNq5O896drwcB6Pz8fB9tJt2JharEND9PLdkxMG9AG
7P+f8f9PMz5r+L7W8Np/wv/4Jea1tGNTUxNSwfSOu5z91s71FmFcTxc559Wq
HOUMN+c8bDFWzfRwGnycvtNZ6/Mo59g1R5ZML2MN+M6KF8MzzTuda1P8hh+5
xuI3/tYnG2f/Ap3pwx+dIcvTHQ5WKo4JPibDLoacsvUWqx9ZA/ZxY+6PaD4Q
bgq/2aOy1rxh6/wawVaDx76Wd/sosCXVJrliC4dd7mSqCmcjf2m7UQGqxYMd
3ZZedOlqa19629ZNW+ht/fg1d8RQ3WdPqDnapBf4Vi87pP7nVhCam+9mirFE
MEQfxNL+nbmlqIuUGLbe1pmQilYQ+pkC1nrxVYNt8/rlnZQ/nOkPgnVUVPR8
Y7iBPpl2Tl/sXOiaBa5+2N3Z2dyWdAmPU/oeeOWv59l4LAY8ocf+zmhzZwpL
9LdqvCtjiAmjhDQQDkD/LwF0T+heJY+o+16le7UrhiJoQFNNlxr/QJcW6sXv
7+xv7lzlsgp19WXlm7Ta/wpTlSdfF1yMC30PgOTXCX+Ykj3nmCvtE/roMukU
lWVpRm13N9/LUGDZ60qu6ckeFYxgiXqZ2Fw1vdnf/MDtyICAK7Ohj2GfvjzF
ewr0CRJdKff+K3z6QX9yba7mqftwd5L6dfLYDs4Tq3CMN9YYy7z5UP/Eus5t
0I5OJrq2qOLW4e9LIl6ha0Xf8R7L4L7T+Qd8O0DGhGIAAA==

-->

</rfc>

