<?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.31 (Ruby 3.2.3) -->
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-moccia-dkim2-deployment-profile-01" category="info" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.32.0 -->
  <front>
    <title abbrev="DKIM2 Deployment Profile">A Deployment Profile for DKIM2 via Milter Interface</title>
    <seriesInfo name="Internet-Draft" value="draft-moccia-dkim2-deployment-profile-01"/>
    <author initials="V." surname="Moccia" fullname="Vittorio Moccia">
      <organization>ITB.it</organization>
      <address>
        <email>v.moccia@itb.it</email>
      </address>
    </author>
    <date year="2026" month="April" day="05"/>
    <area>Applications and Real-Time</area>
    <workgroup>DKIM Working Group</workgroup>
    <keyword>DKIM2</keyword>
    <keyword>milter</keyword>
    <keyword>email authentication</keyword>
    <keyword>deployment profile</keyword>
    <abstract>
      <?line 105?>

<t>This document defines a deployment profile for DomainKeys Identified Mail v2 (DKIM2) that is implementable via the existing milter interface without modifications to Mail Transfer Agent (MTA) core software. It identifies a mandatory core profile (DKIM2-core) covering envelope binding, chain of custody, header accountability, replay prevention and DSN authentication and an optional extended profile (DKIM2-extended) covering body recipes and Message-Instance headers. The separation is motivated by deployment realism: the core profile addresses the primary threat models identified in the DKIM2 motivation document and is deployable incrementally across heterogeneous infrastructure, including small operators, universities and research institutions, using the same milter-based deployment model that has proven effective for DKIM1 and ARC.</t>
    </abstract>
  </front>
  <middle>
    <?line 109?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>DomainKeys Identified Mail v2 (DKIM2) addresses significant limitations of DKIM1 <xref target="RFC6376"/> and the experimental ARC protocol <xref target="RFC8617"/>, including DKIM replay attacks, backscatter from unauthorized use of envelope senders and the absence of cryptographic binding between message signatures and SMTP envelope parameters.</t>
      <t>The core technical contribution of DKIM2 - binding the MAIL FROM and RCPT TO values of each SMTP transaction to the message signature at every hop - is a genuine improvement over both DKIM1 and ARC and is sufficient to address the primary threat models identified in <xref target="I-D.ietf-dkim-dkim2-motivation"/>.</t>
      <t>However, the current specification also includes a body recipe mechanism that allows intermediaries to describe modifications made to the message body in sufficient detail to reconstruct previous versions. This mechanism introduces significant architectural complexity: it requires stateful milter implementations with persistent shared storage, JSON parsing in the delivery critical path and software modifications across the entire ecosystem of intermediaries. The body recipe mechanism also raises data protection concerns under GDPR and equivalent frameworks that have not yet been addressed in the specification.</t>
      <t>This document proposes a structured separation of DKIM2 functionality into two profiles:</t>
      <ul spacing="normal">
        <li>
          <t>DKIM2-core: a mandatory profile implementing envelope binding, chain of custody, header accountability, replay prevention and DSN authentication. DKIM2-core is fully implementable via the milter interface without MTA core modifications, using header formats already familiar to the ecosystem through ARC deployment. Critically, DKIM2-core requires no persistent state between SMTP sessions - all information needed for signing and verification is available within the current session and the message headers themselves. State management is only required for body recipe generation, which belongs exclusively to DKIM2-extended.</t>
        </li>
        <li>
          <t>DKIM2-extended: an optional profile adding body recipe generation and verification via Message-Instance headers and JSON-encoded recipes. DKIM2-extended may require stateful milter implementations or MTA core integration and is appropriate for operators who require full body accountability and are willing to accept the associated architectural cost.</t>
        </li>
      </ul>
      <t>This separation is consistent with the DKIM working group charter <xref target="DKIM-CHARTER"/>, which states that "the working group will prefer a result that is incremental to the deployed ecosystem" and that "proposed solutions are expected to be robust in terms of interoperability and scalability".</t>
      <t>The approach taken in this document is explicitly constructive: it does not propose to replace DKIM2 but to define a deployment path that allows the ecosystem to adopt the core benefits of DKIM2 incrementally, without requiring simultaneous changes to every node in the delivery chain.</t>
      <section anchor="relationship-to-dkim2-specifications">
        <name>Relationship to DKIM2 Specifications</name>
        <t>This document is a deployment profile, not a competing specification. It references and depends on <xref target="I-D.ietf-dkim-dkim2-spec"/> and <xref target="I-D.ietf-dkim-dkim2-header"/> for the underlying mechanisms. Where this document proposes alternative encoding formats - specifically for envelope binding fields - these are offered as contributions to the ongoing design discussion in the working group.</t>
      </section>
      <section anchor="motivation">
        <name>Motivation</name>
        <t>The Internet email infrastructure is not composed solely of large providers with dedicated engineering teams. A substantial portion of email is handled by operators of all sizes outside the largest commercial providers: small ISPs, universities and research institutions, regional hosting providers, non-profit organizations and small businesses. What these operators have in common is not small scale per se - a university may handle millions of messages per day - but limited engineering resources dedicated to mail infrastructure. Their administrators depend on the milter interface for incremental deployment of new authentication features precisely because it allows them to adopt new protocols without modifying MTA core software, waiting for upstream vendor releases or dedicating engineering cycles to core system changes. Every authentication protocol that has achieved broad adoption - SPF, DKIM1, DMARC and to a limited extent ARC - has been deployable via this model. DKIM2 as currently specified breaks this pattern.</t>
        <t>Furthermore, the body recipe mechanism encounters a fundamental operational obstacle: the nodes most likely to make substantial body modifications - security gateways, DLP systems, URL rewriting proxies, antivirus engines - are precisely the nodes least likely to implement recipe generation. These nodes will systematically produce null recipes, which provide no additional accountability over incremental body hash chaining. The overhead of the recipe infrastructure is therefore paid by the entire ecosystem while the benefit accrues only to the minority of cases where all intermediaries cooperate fully.</t>
        <t>The pragmatic approach to body integrity documented in <xref target="RFC6376"/> Appendix B - using relaxed canonicalization to tolerate common benign transformations rather than requiring intermediaries to declare or reconstruct them - has proven effective in practice and has contributed to the broad adoption of DKIM1. It should be noted however that relaxed canonicalization does not address all categories of involuntary body transformation: base64 line-width re-encoding, for example, breaks both simple and relaxed canonicalization equally. DKIM2-core preserves the relaxed canonicalization approach for body integrity while adding the cryptographic envelope binding and header accountability that DKIM1 lacks. The body recipe mechanism of DKIM2-extended represents a deliberate departure from this model toward deterministic reconstruction - a departure whose operational cost and deployment implications are addressed in Section 4.</t>
      </section>
      <section anchor="design-philosophy">
        <name>Design Philosophy</name>
        <t>This document is guided by three principles that reflect the deployment realities described in Section 1.2.</t>
        <t>Additive, not transformative - every mechanism defined in DKIM2-core adds new header fields or new signed content to existing messages. Nothing in DKIM2-core requires existing software to change its core behavior. A legacy node that does not implement DKIM2 passes DKIM2 headers through without interpreting them, exactly as it handles any unrecognized header field today. This is the same property that allowed SPF, DKIM1, DMARC and ARC to be deployed incrementally across a heterogeneous ecosystem without flag-day transitions.</t>
        <t>Milter-first - the milter interface is the deployment mechanism that has enabled incremental adoption of every successful email authentication protocol. DKIM2-core is designed so that every mandatory feature is implementable as a milter without MTA core modifications. This is not a constraint imposed from outside - it is a deliberate architectural choice that maximizes the probability of adoption across the full range of operators described in Section 1.2, from large providers to small ISPs and universities.</t>
        <t>Stateless by design - DKIM2-core requires no persistent state between SMTP sessions. All information needed for signing and verification is available within the current session and the message headers themselves. This eliminates the need for shared storage between milter instances, reduces operational complexity and removes a category of failure modes that stateful implementations introduce. State management is only required for body recipe generation, which belongs exclusively to DKIM2-extended.</t>
        <t>These three principles together define the boundary between DKIM2-core and DKIM2-extended. Any mechanism that requires MTA core modifications, persistent inter-session state, or content parsing beyond what the milter interface provides belongs in DKIM2-extended. Any mechanism that can be implemented additively, via milter and statelessly belongs in DKIM2-core.</t>
      </section>
    </section>
    <section anchor="terminology-and-definitions">
      <name>Terminology and 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 <xref target="RFC2119"/>.</t>
      <t>This document uses terminology from <xref target="RFC5598"/> (Internet Mail Architecture) and inherits definitions from <xref target="I-D.ietf-dkim-dkim2-spec"/>. The following additional terms are defined for use in this document.</t>
      <dl>
        <dt>DKIM2-core:</dt>
        <dd>
          <t>The mandatory deployment profile defined in this document. DKIM2-core implements envelope binding, chain of custody, header accountability, replay prevention and DSN authentication. It is fully implementable via the milter interface without MTA core modifications and requires no persistent state between SMTP sessions.</t>
        </dd>
        <dt>DKIM2-extended:</dt>
        <dd>
          <t>The optional deployment profile defined in this document. DKIM2-extended adds body recipe generation and verification via Message-Instance headers and JSON-encoded recipes. It may require stateful milter implementations with persistent shared storage or MTA core integration.</t>
        </dd>
        <dt>Milter-capable node:</dt>
        <dd>
          <t>An MTA deployment that implements DKIM2-core functionality via the milter interface. A milter-capable node requires no modifications to the MTA core software.</t>
        </dd>
        <dt>Legacy node:</dt>
        <dd>
          <t>A node in the delivery chain that does not implement DKIM2 in any form. Legacy nodes pass DKIM2 headers through the delivery chain without interpreting them, exactly as they handle unrecognized header fields today.</t>
        </dd>
        <dt>Transparent relay:</dt>
        <dd>
          <t>A node that adds only trace headers (Received:, Return-Path:) and makes no other modifications to the message. Transparent relays do not need to participate in DKIM2 signing or verification. Note however that in practice many nominally transparent relays introduce involuntary body transformations - base64 re-encoding at different line widths, MIME reassembly by antivirus engines, whitespace normalization - that affect body hash values.</t>
        </dd>
        <dt>Reviser:</dt>
        <dd>
          <t>A node that makes intentional modifications to message headers or body. A Reviser MUST declare its modifications using DKIM2-Mod headers (DKIM2-core) or Message-Instance recipes (DKIM2-extended) and MUST add a new DKIM2 signature covering the modified message.</t>
        </dd>
        <dt>Inbound milter:</dt>
        <dd>
          <t>The milter instance responsible for verifying incoming DKIM2 signatures during the SMTP session. The inbound milter operates at EndOfBody and has access to the complete envelope state accumulated during the session via MailFromRequest and RcptToRequest callbacks.</t>
        </dd>
        <dt>Outbound milter:</dt>
        <dd>
          <t>The milter instance responsible for generating DKIM2-Mod headers and adding DKIM2 signatures to outgoing messages. The outbound milter is positioned last in the milter chain, after all other milters that may modify the message and signs the final state of the message.</t>
        </dd>
        <dt>DKIM2-Mod header:</dt>
        <dd>
          <t>A signed header field added by a Reviser to declare a modification made to an existing header field. DKIM2-Mod headers carry an instance index (i=) aligned with the DKIM2-Signature hop number, a sequence index (seq=) for multiple modifications to the same field at the same hop and an optional frame index (fr=) to split values longer than 998 characters per <xref target="RFC5322"/>.</t>
        </dd>
        <dt>Envelope binding:</dt>
        <dd>
          <t>The cryptographic binding of SMTP MAIL FROM and RCPT TO values to the DKIM2 signature at each hop, implemented via DKIM2-Sig-mf and DKIM2-Sig-rt header fields. Envelope binding prevents DKIM replay attacks by making it impossible to reuse a valid signature for a different recipient without breaking the chain.</t>
        </dd>
        <dt>Chain of custody:</dt>
        <dd>
          <t>The verifiable record of all entities that have handled a message, established by the sequence of DKIM2 signatures and envelope bindings from originator to final recipient. Each hop in the chain signs the current state of the message and references the previous hop's signature.</t>
        </dd>
        <dt>Null recipe:</dt>
        <dd>
          <t>A Message-Instance declaration that a modification was made to the message body but that the previous state cannot be reconstructed. Null recipes are only relevant in DKIM2-extended. In DKIM2-core, body modifications are declared implicitly through a changed bh= value with attribution to the signing hop.</t>
        </dd>
        <dt>Relaxed domain match:</dt>
        <dd>
          <t>The algorithm defined in <xref target="I-D.ietf-dkim-dkim2-spec"/> Section 11.3 for matching the signing domain (d=) against the MAIL FROM domain, allowing subaddress schemes used for bounce handling. Labels are removed from the left side of the MAIL FROM domain until a match is found or no labels remain.</t>
        </dd>
      </dl>
      <t>This document inherits definitions from <xref target="I-D.ietf-dkim-dkim2-spec"/> and <xref target="I-D.ietf-dkim-dkim2-header"/>. Where terms are used without definition in this document, the definitions in those documents apply.</t>
    </section>
    <section anchor="dkim2-core-mandatory-profile">
      <name>DKIM2-core: Mandatory Profile</name>
      <t>DKIM2-core is the mandatory deployment profile. All nodes that wish to participate in DKIM2 MUST implement DKIM2-core. Nodes that implement only DKIM2-core are fully interoperable with nodes that implement DKIM2-extended.</t>
      <t>The milter interface is an integration point, not a replacement for MTA functionality. DKIM2-core uses the milter interface to observe, verify and sign messages as they flow through the MTA's normal processing pipeline. Functions that belong to the MTA - transaction management, BCC splitting, queue handling, routing - remain with the MTA. The milter does not substitute for these functions and is not designed to do so. This separation of concerns is what makes milter-based deployment non-invasive and compatible with existing MTA infrastructure.</t>
      <section anchor="envelope-binding">
        <name>Envelope Binding</name>
        <t>Envelope binding is the primary technical contribution of DKIM2 over DKIM1 and ARC. By cryptographically binding the SMTP MAIL FROM and RCPT TO values to the message signature at every hop, DKIM2-core makes it impossible to replay a valid signature for a different recipient or sender without breaking the chain.</t>
        <t>Envelope binding is implemented via two new signed header fields: DKIM2-Sig-mf (carrying the MAIL FROM value) and DKIM2-Sig-rt (carrying the RCPT TO values). These fields use the indexed header pattern already deployed at scale in ARC, where ARC-Seal, ARC-Message-Signature and ARC-Authentication-Results use i= instance numbers to build a verifiable chain across multiple hops. Every milter that implements ARC already parses and generates headers with i= indexing. DKIM2-Sig-mf and DKIM2-Sig-rt are a natural extension of this existing pattern, requiring no new parsing infrastructure.</t>
        <section anchor="envelope-binding-format">
          <name>Envelope Binding Format</name>
          <t>The DKIM2-Sig-mf field carries exactly one address - the SMTP MAIL FROM value. The DKIM2-Sig-rt field carries one or more RCPT TO values, using one header per address.</t>
          <t>Both fields use the i= instance indexing convention already established by ARC <xref target="RFC8617"/>, where ARC-Seal, ARC-Message-Signature and ARC-Authentication-Results use the same i= numbering to build a verifiable chain across multiple hops. Implementers familiar with ARC will recognize this pattern immediately. Major email providers including Google and Microsoft implement ARC natively in their infrastructure and ARC milter implementations are deployed across the ecosystem. DKIM2-Sig-mf and DKIM2-Sig-rt extend this existing pattern to carry envelope values, requiring no new parsing concepts beyond what ARC implementations already handle.</t>
          <artwork><![CDATA[
DKIM2-Sig-mf: i=1; addr=bounce@mailchimp.com
DKIM2-Sig-rt: i=1; v=1; addr=dest1@esempio.com
DKIM2-Sig-rt: i=1; v=2; addr=dest2@esempio.com
DKIM2-Sig-rt: i=1; v=3; addr="john;doe"@rare.com
]]></artwork>
          <t>One header per address, including recipients with quoted local parts. The v= tag provides a sequence number that distinguishes multiple DKIM2-Sig-rt headers at the same hop. DKIM2-Sig-mf always carries exactly one address and does not require v=.</t>
          <t>This format handles all RFC5321 local part cases including quoted local parts containing special characters - within a single header value there is no separator ambiguity regardless of the characters present in the local part. The format copies exactly the ARC instance indexing pattern, requires no new parsing logic beyond what ARC implementations already provide and produces output directly inspectable in mail logs and headers without decoding tools.</t>
          <t>The design avoids the parsing complexity that arises when envelope addresses with display names, quoted local parts, or multiple addresses are embedded in more complex header formats. DKIM2-Sig-rt carries only the bare RFC5321 addr-spec - the envelope address without display name - one per header. This is the natural format for SMTP envelope values, which by definition do not carry display names. It avoids the parsing complexity of RFC5322 address-list syntax, which includes display names, group syntax and other constructs that are irrelevant for envelope binding purposes.</t>
          <t>This format could produce more bytes than the JSON+base64 encoding currently specified in <xref target="I-D.ietf-dkim-dkim2-spec"/> for messages with very many recipients. For the common case of messages with a small number of recipients - which represents the substantial majority of real-world email traffic - the size difference is negligible or absent. It remains directly human-readable without decoding tools, has a parsing complexity of O(1) per header rather than O(n) on the full recipient list and allows individual recipient membership verification without deserializing the complete list.</t>
          <t>It is worth noting that quoted local parts containing special characters such as semicolons are permitted by <xref target="RFC5321"/> but are not observed in practice in real-world email infrastructure. The format handles them correctly without any special-casing.</t>
        </section>
        <section anchor="relationship-to-existing-fromto-headers">
          <name>Relationship to Existing From:/To: Headers</name>
          <t>The DKIM2-Sig-mf and DKIM2-Sig-rt fields carry the SMTP envelope values, which may differ significantly from the RFC5322 From:, To: and Cc: header fields. This distinction is particularly important in two scenarios:</t>
          <t>Programmatic and bulk email - the envelope sender is typically a bounce handling address such as bounce-12345@mail.mailchimp.com and the envelope recipients are individual subscriber addresses that may not appear in the message headers at all. Using RFC5322 headers to infer envelope values would fail for this common case.</t>
          <t>Group syntax and empty groups - RFC5322 permits constructs such as To: Empty Group:; where the To: header carries no actual recipient addresses. The envelope RCPT TO values are the only reliable source of recipient information in these cases.</t>
          <t>Using existing RFC5322 headers to infer envelope values, as has been proposed in some alternatives, would require parsers to handle these edge cases correctly and would fail for programmatic email where no correspondence between envelope and headers exists. DKIM2-Sig-mf and DKIM2-Sig-rt carry the envelope values explicitly and independently of the IMF headers, eliminating this ambiguity.</t>
          <t>It is also worth noting that the support for multiple rt= values - rather than a single recipient per message - was motivated by a specific operational requirement from a large mailbox provider whose anti-fraud system relies on verifying consistency between envelope recipients and To:/Cc: header fields to detect messages fraudulently presented as sent to multiple recipients but actually sent to only one. This use case requires that all RCPT TO values for a given SMTP transaction be visible in the signed envelope binding.</t>
        </section>
        <section anchor="relaxed-domain-match">
          <name>Relaxed Domain Match</name>
          <t>The relaxed domain match algorithm defined in <xref target="I-D.ietf-dkim-dkim2-spec"/> Section 11.3 is retained unchanged. The signing domain (d=) must match the domain of the DKIM2-Sig-mf address via relaxed domain match, allowing subaddress schemes used for bounce handling such as bounce-12345@mail.mailchimp.com to match d=mailchimp.com.</t>
        </section>
        <section anchor="bcc-recipients">
          <name>BCC Recipients</name>
          <t>BCC recipients require separate SMTP transactions - one per BCC recipient - to prevent disclosure of BCC addresses to other recipients, consistent with <xref target="RFC5322"/> Section 3.6.3. This is already best practice for correct BCC semantics independent of DKIM2. The DKIM2-Sig-rt field for each separate transaction carries only the address of that specific BCC recipient.</t>
          <t>Operators that need to communicate BCC status from the MUA to the signing system MAY use a submission-phase header convention such as X-BCC: which the outbound milter reads and strips before external transmission. This allows the milter to identify which RCPT TO addresses are BCC and generate separate transactions accordingly, without requiring MTA core modifications.</t>
          <t>Including multiple BCC recipients in a single SMTP transaction with all addresses listed in DKIM2-Sig-rt would reveal BCC recipient addresses in the signed headers, which are visible to all recipients of the message and to any archiving system that receives it. This directly violates the privacy requirement of BCC as defined in <xref target="RFC5322"/> Section 3.6.3 and MUST NOT be done.</t>
          <t>It should be noted that the current DKIM2 specification mandates that BCC recipients MUST NOT be revealed to other recipients but provides no mechanism by which the signing system can distinguish BCC recipients from To: and Cc: recipients at the SMTP level. The SMTP envelope does not carry the BCC distinction explicitly - all recipients appear as RCPT TO regardless of their role. BCC recipients can only be identified by comparing the RCPT TO list against the To: and Cc: header fields, which requires content parsing that MTAs traditionally avoid. The X-BCC submission header convention described above addresses this gap for deployments where the MUA and MTA can be configured to cooperate. The working group should consider defining a normative mechanism for this purpose.</t>
        </section>
        <section anchor="formal-syntax">
          <name>Formal Syntax</name>
          <t>The following ABNF defines the header fields introduced by this document. Rules are imported from <xref target="RFC5234"/> and <xref target="RFC5321"/> as noted.</t>
          <sourcecode type="abnf"><![CDATA[
; DKIM2-Sig-mf header field
; Carries exactly one SMTP MAIL FROM address
dkim2-sig-mf     = "DKIM2-Sig-mf:" SP dkim2-mf-params CRLF
dkim2-mf-params  = dkim2-hop-index ";" SP dkim2-addr

; DKIM2-Sig-rt header field
; Carries exactly one SMTP RCPT TO address per header
; Multiple recipients use multiple headers with incrementing v=
dkim2-sig-rt     = "DKIM2-Sig-rt:" SP dkim2-rt-params CRLF
dkim2-rt-params  = dkim2-hop-index ";" SP
                   dkim2-rcpt-index ";" SP
                   dkim2-addr

; DKIM2-Mod header field
; Declares a modification made to an existing header field
dkim2-mod        = "DKIM2-Mod:" SP dkim2-mod-params CRLF
dkim2-mod-params = dkim2-hop-index ";" SP
                   dkim2-mod-seq ";" SP
                   dkim2-field-tag
                   [ ";" SP dkim2-fr-tag ]
                   ";" SP dkim2-mod-value

dkim2-field-tag  = "field=" header-field-name
dkim2-fr-tag     = "fr=" 1*DIGIT
                 ; OPTIONAL - absent when value fits in single header

dkim2-mod-value  = *(VCHAR / WSP)
dkim2-del-tag    = "del=" dkim2-mod-value
                 ; MUST appear last in header
dkim2-new-tag    = "new=" dkim2-mod-value
                 ; MUST appear last in header

; del= and new= MUST be on separate header lines
; Presence rules per complete operation:
;   del= only  -> removal
;   new= only  -> addition
;   del= + new= -> modification

; DKIM2-Intended-MailFrom header field
; Internal interoperability header between list manager and MTA
; MUST be removed before external transmission
; Note: intentionally not using X- prefix per [RFC6648]
dkim2-intended-mf = "DKIM2-Intended-MailFrom:" SP addr-spec CRLF

; Shared index rules
dkim2-hop-index  = "i=" 1*DIGIT
                 ; hop sequence number, starts at 1
dkim2-rcpt-index = "v=" 1*DIGIT
                 ; recipient sequence number for DKIM2-Sig-rt
                 ; starts at 1, increments per recipient at same hop
dkim2-mod-seq    = "seq=" 1*DIGIT
                 ; modification sequence number for DKIM2-Mod

; Address rule
dkim2-addr       = "addr=" addr-spec
                 ; addr-spec as defined in [RFC5321] Section 4.1.2
                 ; including quoted local parts

; Header field name
header-field-name = 1*( ALPHA / DIGIT / "-" )
                 ; as defined in [RFC5322] Section 2.2

; Supporting rules
tag-list         = tag-spec *( ";" tag-spec ) [ ";" ]
tag-spec         = tag-name "=" tag-value
tag-name         = ALPHA *( ALPHA / DIGIT / "_" )
tag-value        = *( %x21-3A / %x3C-7E )
                 ; printable ASCII except semicolon

domain-name      = sub-domain *("." sub-domain)
sub-domain       = 1*( ALPHA / DIGIT / "-" )
selector-name    = 1*( ALPHA / DIGIT / "-" / "_" )
base64string     = 1*( ALPHA / DIGIT / "+" / "/" / "=" )
                 ; standard base64 alphabet per [RFC4648]

; Core rules imported from [RFC5234]
ALPHA            = %x41-5A / %x61-7A
DIGIT            = %x30-39
SP               = %x20
CRLF             = %x0D %x0A
VCHAR            = %x21-7E
WSP              = SP / %x09
]]></sourcecode>
        </section>
        <section anchor="dkim2-signature-envelope-tags">
          <name>DKIM2-Signature Envelope Tags</name>
          <sourcecode type="abnf"><![CDATA[
; DKIM2-Signature envelope tags
; These tags appear within the DKIM2-Signature header field
; as defined in [I-D.ietf-dkim-dkim2-spec]

dkim2-sig-tag-i  = %x69 "=" 1*DIGIT
                 ; i= hop sequence number
                 ; MUST start at 1 and increment by 1 at each signing hop
                 ; gaps in sequence MUST be treated as making the message unsigned

dkim2-sig-tag-v  = %x76 "=" 1*DIGIT
                 ; v= value sequence number
                 ; used in DKIM2-Sig-rt to distinguish
                 ; multiple recipients at the same hop
                 ; MUST start at 1 and increment by 1

dkim2-sig-tag-d  = %x64 "=" domain-name
                 ; d= signing domain

dkim2-sig-tag-s  = %x73 "=" selector-name
                 ; s= selector

dkim2-sig-tag-bh = %x62 %x68 "=" base64string
                 ; bh= body hash

dkim2-sig-tag-b  = %x62 "=" base64string
                 ; b= signature value

; Tag-value list structure
tag-list         = tag-spec *( ";" tag-spec ) [ ";" ]
tag-spec         = tag-name "=" tag-value
tag-name         = ALPHA *( ALPHA / DIGIT / "_" )
tag-value        = *( %x21-3A / %x3C-7E )
]]></sourcecode>
        </section>
      </section>
      <section anchor="chain-of-custody">
        <name>Chain of Custody</name>
        <t>Each hop in the delivery chain MUST add a DKIM2-Signature header field signing the current state of the message. The chain of custody is established by the sequence of signatures and envelope bindings from originator to final recipient.</t>
        <section anchor="signature-content">
          <name>Signature Content</name>
          <t>The DKIM2-Signature at each hop covers:</t>
          <ul spacing="normal">
            <li>
              <t>All DKIM2-Sig-mf and DKIM2-Sig-rt headers with the current i= value</t>
            </li>
            <li>
              <t>All DKIM2-Mod headers with i= values less than or equal to the current hop</t>
            </li>
            <li>
              <t>All previous DKIM2-Signature headers</t>
            </li>
            <li>
              <t>The incomplete current DKIM2-Signature header with the signature value absent</t>
            </li>
          </ul>
        </section>
        <section anchor="body-hash">
          <name>Body Hash</name>
          <t>Each hop MUST calculate and include a body hash (bh=) of the current message body using the canonicalization algorithm specified in the signature. The bh= value changes whenever the body is modified, providing implicit notification that a modification occurred and attribution of that modification to the signing hop.</t>
          <t>No body recipe or reconstruction is required or expected in DKIM2-core. The change in bh= value between hops, combined with the identity of the signing domain at the modifying hop, provides sufficient accountability for delivery decisions.</t>
        </section>
        <section anchor="sequence-numbering">
          <name>Sequence Numbering</name>
          <t>DKIM2-Signature headers are numbered sequentially starting at i=1. Gaps in the sequence MUST be treated as making the message unsigned. The maximum sequence number is 50 as defined in <xref target="I-D.ietf-dkim-dkim2-header"/>.</t>
        </section>
        <section anchor="signed-header-set">
          <name>Signed Header Set</name>
          <t>The DKIM2 signature at each hop covers a specific set of header fields. The signed header set MUST include:</t>
          <ul spacing="normal">
            <li>
              <t>All DKIM2-Sig-mf headers with i= value equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Sig-rt headers with i= value equal to the current hop</t>
            </li>
            <li>
              <t>All DKIM2-Mod headers with i= value less than or equal to the current hop. DKIM2-Mod headers are subject to the same canonicalization rules as other signed headers per <xref target="RFC6376"/> Section 3.4. The del= and new= values are canonicalized as header field values - line endings are normalized and folding whitespace is handled per the canonicalization algorithm specified in the signature.</t>
            </li>
            <li>
              <t>All previous DKIM2-Signature headers with i= value less than the current hop</t>
            </li>
            <li>
              <t>The incomplete current DKIM2-Signature header with the b= value set to empty or a placeholder as defined in <xref target="I-D.ietf-dkim-dkim2-spec"/></t>
            </li>
          </ul>
          <t>The signed header set does NOT include Received: headers, Return-Path:, or other trace headers added during transport. These headers are explicitly excluded because they are added by every relay and their inclusion would make signatures fragile in a way that provides no security benefit.</t>
          <t>Header fields not listed above MAY be included in the signed header set at the discretion of the signer. Signers SHOULD include headers that have security relevance for the message - From:, To:, Subject:, Date: - and SHOULD declare their inclusion or exclusion consistently across all messages.</t>
          <t>The b= value is calculated over the signed header set using the canonicalization algorithm specified in the signature, following the same procedure defined in <xref target="RFC6376"/> Section 3.7 with the modifications for DKIM2 header ordering defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>.</t>
          <t>Implementations MUST NOT assume that header fields arrive in a specific order. The signed header set is identified by field name and instance index (i=, seq=), not by physical position in the message. Intermediate MTA software may reorder header fields during transit without affecting chain of custody verification, since canonical ordering is established through the i= and seq= index values embedded in DKIM2-Sig-mf, DKIM2-Sig-rt and DKIM2-Mod headers. Implementations MUST use these index values, not header field position, to reconstruct the chain of custody.</t>
          <t>This approach differs deliberately from the sorting requirement in <xref target="I-D.ietf-dkim-dkim2-spec"/>, which mandates alphabetical ordering of header field names and bottom-up ordering for duplicates before computing the header hash - an O(N log N) operation that is both computationally more expensive than the O(N) index-based approach and fragile in the presence of intermediaries that reorder headers during transit.</t>
        </section>
      </section>
      <section anchor="header-accountability">
        <name>Header Accountability</name>
        <t>When a Reviser modifies, removes, or adds a header field, it MUST declare the change by adding one or more DKIM2-Mod headers before signing. These headers MUST be included in the signed header set of the modifying hop and all subsequent hops, making the declaration cryptographically bound to the chain.</t>
        <section anchor="modification-cases">
          <name>Modification Cases</name>
          <t>Modification - header existed and its value was changed. del= and new= on separate headers with same i= and seq=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="Original subject text"
DKIM2-Mod: i=2; seq=1; field=Subject; new="Modified subject text"
]]></artwork>
          <t>Removal - header existed and was removed. Only del=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="Removed subject text"
]]></artwork>
          <t>Addition - header did not exist and was added. Only new=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=List-Id; new=<lista@esempio.com>
]]></artwork>
          <t>Note that new= is technically redundant for additions since the added value is already visible in the message headers. It is declared explicitly to provide an unambiguous cryptographic binding between the modification declaration and the hop signature, particularly in cases where multiple headers of the same type exist in the message.</t>
        </section>
        <section anchor="multiple-modifications">
          <name>Multiple Modifications</name>
          <t>Multiple instances of the same field, each with its own seq=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=X-EVALUATION; del="pippo"
DKIM2-Mod: i=2; seq=1; field=X-EVALUATION; new="paperino"
DKIM2-Mod: i=2; seq=2; field=X-EVALUATION; del="pluto"
DKIM2-Mod: i=2; seq=2; field=X-EVALUATION; new="paperone"
]]></artwork>
          <t>Successive hops use their own i=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="Value before hop 2"
DKIM2-Mod: i=2; seq=1; field=Subject; new="Value after hop 2"
DKIM2-Mod: i=3; seq=1; field=Subject; del="Value after hop 2"
DKIM2-Mod: i=3; seq=1; field=Subject; new="Value after hop 3"
]]></artwork>
          <t>The del= and new= tags MUST appear last in the DKIM2-Mod header field value. All other tags (i=, seq=, field=, fr=) MUST precede them.</t>
        </section>
        <section anchor="long-values">
          <name>Long Values</name>
          <t>For values that exceed practical inline length, implementations MAY use the optional fr= tag to split across multiple headers with incrementing fr= values. fr= is independent for del= and new=:</t>
          <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=1; del="first part..."
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=2; del="...second part..."
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; fr=3; del="...third part"
DKIM2-Mod: i=2; seq=1; field=X-Microsoft-Antispam; new="new value"
]]></artwork>
          <t>fr= absent means value is complete in that single header. When fr= is present, headers with same i=, seq=, field= and same tag type (del= or new=) are concatenated in fr= order.</t>
          <t>Implementations that do not support fr= MUST treat a fragmented declaration as a null declaration for that field.</t>
          <t>Fragments MUST be concatenated without any intervening whitespace or separators. The reconstructed value is the exact concatenation of the fragment values in fr= order.</t>
        </section>
        <section anchor="relationship-to-existing-conventions">
          <name>Relationship to Existing Conventions</name>
          <t>DKIM2-Mod headers formalize and cryptographically bind the informal X-Original- convention already widely deployed in the ecosystem. Systems using X-Original-From, X-Original-Subject and similar headers preserve previous header values across intermediary modifications - the same semantic goal as the del= tag in DKIM2-Mod. The key difference is that DKIM2-Mod declarations are included in the signed header set and cryptographically bound to the chain of custody, making them verifiable rather than merely informational.</t>
          <t>This pattern is already practiced informally in the ecosystem - for example, Google Groups preserves the original sender address in an X-Original-Sender header alongside its own Sender: field. DKIM2-Mod formalizes this existing convention by making the declaration cryptographically signed and part of the verifiable chain of custody, rather than an informational annotation with no authentication binding.</t>
          <t>This approach has precedent in <xref target="I-D.chuang-mailing-list-modifications"/>, which proposed X-Prior- headers and Content-Footer headers as ARC extensions for the same purpose, declaring mailing list modifications in human-readable form without JSON encoding. DKIM2-Mod formalizes and generalizes this approach within the DKIM2 chain of custody framework.</t>
        </section>
        <section anchor="header-order-and-multiple-instances">
          <name>Header Order and Multiple Instances</name>
          <t>DKIM2-core signatures cover a defined set of header fields. The mandatory signed header set is specified in Section 3.2.4. Signers MAY additionally include security-relevant header fields such as From:, Subject: and Reply-To: by declaring them in the signature.</t>
          <t>When multiple header fields with the same name exist, their relative physical order in the message may be altered by intermediate systems - milters, antivirus scanners and content filters routinely reconstruct messages in ways that can reorder header fields with identical names. If the signed header set includes such fields and their order changes, any existing signature covering the original order will no longer validate.</t>
          <t>DKIM2-core addresses this through DKIM2-Mod declarations. When a hop adds a new instance of an existing header field, it declares the addition via DKIM2-Mod with an explicit i= hop index and seq= sequence number. A verifier encountering multiple instances of the same header field uses the DKIM2-Mod declarations to determine which instance was present at each hop, rather than relying on physical header position.</t>
          <t>This eliminates the need for any canonical ordering of header field names - the chain of custody established by i= and seq= indexes provides unambiguous attribution without sorting and without relying on physical header position, consistent with the stateless milter model described in Section 1.3.</t>
          <t>For example, consider a message with a single Reply-To: header from the originator. A mailing list at hop 2 adds a second Reply-To: for the list address and declares the addition via DKIM2-Mod: i=2; seq=1; field=Reply-To; new=lista@esempio.com. If a subsequent intermediary reorders the two Reply-To: headers, the verifier can determine the intended ordering: the Reply-To: without a corresponding DKIM2-Mod entry is the original, and the Reply-To: declared in DKIM2-Mod with i=2 is the addition. The index values provide unambiguous attribution without requiring physical reordering.</t>
          <t>This approach differs from the DKIM2 base specification <xref target="I-D.ietf-dkim-dkim2-spec"/>, which mandates alphabetical ordering of header field names and bottom-up ordering for duplicate names before computing the header hash. Such sorting adds implementation burden and imposes O(N log N) processing cost that is unnecessary when canonical ordering is established through explicit index values.</t>
        </section>
      </section>
      <section anchor="replay-prevention">
        <name>Replay Prevention</name>
        <t>Replay prevention is a direct consequence of envelope binding. Since DKIM2-Sig-mf and DKIM2-Sig-rt are cryptographically signed at every hop and contain the actual SMTP envelope values, it is impossible to reuse a valid signature for a different recipient without breaking the chain. An attacker who attempts to replay a message to a recipient not listed in DKIM2-Sig-rt will produce a mismatch between the signed rt= value and the actual RCPT TO of the new transaction, which MUST be rejected by a conformant verifier.</t>
        <t>Mailing list redistribution is not a replay attack. When a mailing list receives a message and redistributes it to subscribers, it adds its own DKIM2 signature with its own mf= and rt= values, explicitly declaring the redistribution. The chain of custody shows the original sender, the mailing list and the final recipient as distinct entities in the chain.</t>
      </section>
      <section anchor="dsn-and-bounce-authentication">
        <name>DSN and Bounce Authentication</name>
        <t>DKIM2-core provides the infrastructure for authenticated Delivery Status Notifications (DSNs) that prevent backscatter to innocent sender domains.</t>
        <section anchor="verification-during-smtp-session">
          <name>Verification During SMTP Session</name>
          <t>DKIM2-core verification is performed during the SMTP session at two distinct points:</t>
          <t>During RCPT TO - the inbound milter MAY perform local policy checks based on the envelope sender and recipient, for example checking against local allowlists or denylists. No DKIM2-specific verification is possible at this stage because the message headers, including DKIM2 signatures, have not yet been received.</t>
          <t>At EndOfBody - full signature verification is performed when the complete message and accumulated envelope state are available. The inbound milter verifies the DKIM2 signature chain, the envelope binding in DKIM2-Sig-mf and DKIM2-Sig-rt and the consistency of DKIM2-Mod declarations with the signed header set. The milter then returns one of the following to instruct the MTA:</t>
          <ul spacing="normal">
            <li>
              <t>SMFIS_CONTINUE - the message is correctly signed and the chain is valid; the MTA proceeds with delivery</t>
            </li>
            <li>
              <t>SMFIS_REJECT - the signature is invalid, the chain is broken, or the envelope binding does not match; the MTA issues a 5xx rejection to the connected peer</t>
            </li>
            <li>
              <t>SMFIS_TEMPFAIL - a transient error occurred, for example a DNS timeout during key lookup; the MTA issues a 4xx temporary failure to the connected peer</t>
            </li>
          </ul>
          <t>When the milter returns SMFIS_REJECT, the MTA issues a 5xx rejection directed at the connected peer - the system currently delivering the message over the active SMTP connection. This rejection is never directed at the original envelope sender. This is the fundamental mechanism that prevents backscatter: no DSN is ever generated toward an address that was not the source of the current SMTP session.</t>
        </section>
        <section anchor="reject-propagation-and-backscatter-prevention">
          <name>Reject Propagation and Backscatter Prevention</name>
          <t>When a DKIM2-core node rejects a message with 5xx during the SMTP session, the connected peer - the previous hop in the delivery chain - receives the rejection and is responsible for propagating it back toward the original sender. Each hop manages its own rejection toward its direct peer. The rejection propagates back along the authenticated chain hop by hop without generating backscatter at any point.</t>
          <t>A node that accepts a message with an invalid or missing DKIM2 signature and subsequently generates a DSN to the original envelope sender violates a MUST NOT in the protocol and produces backscatter. During the transition period, nodes MAY accept messages with invalid or missing DKIM2 signatures as a matter of local policy while adoption is incomplete. Nodes that do so MUST NOT generate DSNs to the original envelope sender - they MUST either discard silently or generate DSNs only to the connected peer.</t>
        </section>
        <section anchor="authenticated-dsn-generation">
          <name>Authenticated DSN Generation</name>
          <t>A node that has accepted a DKIM2-signed message and needs to generate a DSN does not need to possess a signing key aligned with the rt= value of the incoming signature. It needs only to sign the DSN with a key authorized for its own domain and direct it to the connected peer that delivered the original message. The DSN propagates back along the chain via the same hop-by-hop rejection mechanism described in Section 3.5.2.</t>
        </section>
        <section anchor="transition-period-behavior">
          <name>Transition Period Behavior</name>
          <t>During the transition period when DKIM2-capable and legacy nodes coexist, a receiver that gets a message without a valid DKIM2 signature cannot perform DKIM2-specific verification - envelope binding, chain of custody validation and authenticated DSN generation toward the connected peer are not available. The receiver falls back to pre-DKIM2 behavior: verify DKIM1 signatures if present, apply DMARC policy if configured and generate DSNs as today - including the backscatter risk that DKIM2 was designed to eliminate. Backscatter prevention is only fully effective when all intermediate nodes participate in DKIM2. A single legacy node in the chain breaks authenticated DSN propagation for downstream receivers. This is a known limitation of the transition period addressed in Section 5.</t>
        </section>
      </section>
      <section anchor="cryptographic-algorithms">
        <name>Cryptographic Algorithms</name>
        <t>DKIM2-core mandates support for RSA-SHA256 and Ed25519-SHA256 signing algorithms as defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>. Verifiers MUST implement both algorithms. Signers SHOULD implement both algorithms and MAY sign a message with multiple algorithms simultaneously - for example RSA-SHA256 for compatibility with legacy verifiers and Ed25519-SHA256 for efficiency. Additional signing algorithms, including post-quantum algorithms, MAY be defined in future documents and added to the set of supported algorithms without requiring changes to this profile. The DKIM2-core architecture does not publish the hash value separately from the signature, which permits use of signing algorithms that incorporate their own hash function.</t>
        <t>For body hash calculation, DKIM2-core supports both relaxed and strict canonicalization as defined in <xref target="RFC6376"/> Section 3.4. The choice of canonicalization algorithm is indicated in the signature and is a per-hop decision.</t>
        <t>The choice between relaxed and strict canonicalization for body hashing reflects a fundamental tradeoff documented in <xref target="RFC6376"/> Appendix B. Relaxed canonicalization tolerates common benign transformations made by intermediate systems - whitespace normalization, line ending conversion, quoted-printable to 8bit transcoding - at the cost of reduced sensitivity to intentional modifications. Strict canonicalization detects all byte-level changes but is more sensitive to involuntary transformations. DKIM2-core implementations that include legacy infrastructure in their deployment path SHOULD use relaxed canonicalization for body hashing to maximize chain continuity.</t>
      </section>
      <section anchor="milter-implementation">
        <name>Milter Implementation</name>
        <t>DKIM2-core is designed to be implementable via the milter interface without modifications to MTA core software. This section describes the recommended deployment patterns.</t>
        <section anchor="two-milter-pattern">
          <name>Two-Milter Pattern</name>
          <t>The recommended implementation uses two milter instances:</t>
          <t>Inbound milter - runs on the receiving MTA. Operates at two points in the SMTP session:</t>
          <ul spacing="normal">
            <li>
              <t>During RCPT TO: MAY perform local policy checks based on the envelope sender and recipient - for example checking against local allowlists or denylists. No DKIM2-specific verification is possible at this stage because the message headers, including DKIM2 signatures, have not yet been received.</t>
            </li>
            <li>
              <t>At EndOfBody: performs full DKIM2 verification with access to the complete message and accumulated envelope state from MailFromRequest and RcptToRequest callbacks. The milter verifies the DKIM2 signature chain, the envelope binding in DKIM2-Sig-mf and DKIM2-Sig-rt and the consistency of DKIM2-Mod declarations with the signed header set. The milter returns SMFIS_REJECT to instruct the MTA to issue a 5xx rejection, SMFIS_TEMPFAIL for transient errors, or SMFIS_CONTINUE to accept.</t>
            </li>
          </ul>
          <t>The inbound milter requires no persistent state between sessions - all information needed for verification is available within the current SMTP session.</t>
          <t>Implementations MAY initiate DNS key lookup at EndOfHeaders as an optimization, when d= and s= are available from the DKIM2-Signature header. This allows the DNS lookup to proceed in parallel with body reception, reducing total verification latency. Full signature verification including body hash comparison MUST still be performed at EndOfBody.</t>
          <t>Outbound milter - runs on the transmitting MTA, positioned last in the milter chain after all other milters that may modify the message. Operates at EndOfBody with access to:</t>
          <ul spacing="normal">
            <li>
              <t>The complete message in its final state after all other milters</t>
            </li>
            <li>
              <t>Envelope values accumulated via MailFromRequest and RcptToRequest callbacks</t>
            </li>
            <li>
              <t>All DKIM2-Mod headers added by modifying entities earlier in the chain</t>
            </li>
          </ul>
          <t>Constructs DKIM2-Sig-mf and DKIM2-Sig-rt from envelope values, validates the formal correctness of any DKIM2-Mod headers present and adds the DKIM2 signature covering the final state of the message. Requires no persistent state between sessions.</t>
          <t>The inbound milter is inactive on outbound traffic and the outbound milter is inactive on inbound traffic - this is standard milter behavior already implemented and deployed.</t>
          <t>The two milter instances do not need to run on the same server. Each hop in the delivery chain signs independently with its own key. The inbound milter of hop N and the outbound milter of hop N+1 have no need to communicate - the chain of custody is established through the signed headers in the message itself.</t>
        </section>
        <section anchor="responsibility-for-declaring-modifications">
          <name>Responsibility for Declaring Modifications</name>
          <t>A fundamental principle of DKIM2-core is that every entity that modifies a message MUST declare its modifications via DKIM2-Mod headers at the time of modification. This responsibility belongs to the entity that makes the modification, not to the signing milter.</t>
          <t>This principle has an important architectural consequence: the outbound milter does not need to reconstruct what was changed by comparing the current message with a previously cached version. It trusts that modifications have already been declared by whoever made them and signs the message as presented. This eliminates the need for stateful milter implementations with persistent shared storage in the DKIM2-core profile.</t>
          <t>Implementations that delegate modification declaration to the signing milter rather than to the modifying entity - requiring the milter to infer changes by comparing with a cached copy - are technically possible but architecturally unsound. They couple the signing infrastructure to the modification logic in ways that create operational fragility and are incompatible with the stateless deployment model described here.</t>
        </section>
        <section anchor="mailing-list-managers-delegating-to-an-mta">
          <name>Mailing List Managers Delegating to an MTA</name>
          <t>When a mailing list manager such as Mailman or Sympa passes messages to a local MTA for transmission, the recommended pattern is:</t>
          <ul spacing="normal">
            <li>
              <t>The list manager modifies the message - adding List-* headers, modifying Subject, appending footer</t>
            </li>
            <li>
              <t>The list manager adds DKIM2-Mod headers declaring each modification it made</t>
            </li>
            <li>
              <t>The list manager adds a DKIM2-Intended-MailFrom header carrying the MAIL FROM value it intends the MTA to use for transmission</t>
            </li>
            <li>
              <t>The list manager submits the message to the local MTA</t>
            </li>
            <li>
              <t>The outbound milter on the MTA reads DKIM2-Intended-MailFrom, removes it before external transmission, constructs DKIM2-Sig-mf and DKIM2-Sig-rt from the envelope values and signs the message</t>
            </li>
            <li>
              <t>The DKIM2-Intended-MailFrom header is an internal interoperability convention between the list manager and the local MTA. It MUST be removed by the outbound milter before transmission. It MUST NOT appear in messages transmitted to external recipients. This pattern is consistent with existing conventions such as X-BCC handling.</t>
            </li>
            <li>
              <t>List managers that cannot be modified to add DKIM2-Mod headers MAY rely on the outbound milter to detect undeclared modifications by comparing the signed headers against the incoming DKIM2 signature. However this approach requires stateful milter operation and is therefore classified as DKIM2-extended behavior. It is NOT part of the DKIM2-core profile.</t>
            </li>
          </ul>
          <t>Implementations MUST validate that the domain in DKIM2-Intended-MailFrom is authorized for the authenticated submitter on the submission channel. Accepting DKIM2-Intended-MailFrom values from unauthenticated or unauthorized submitters creates a signature authority escalation risk in multi-tenant environments.</t>
          <t>In multi-tenant environments where message content cannot be fully trusted, operators SHOULD configure the outbound milter to derive the signing domain exclusively from the authenticated SMTP envelope rather than from DKIM2-Intended-MailFrom. The DKIM2-Intended-MailFrom convention is appropriate only in controlled environments where the submission channel is authenticated and the submitter is authorized for the declared domain. Where MTA header filtering is available - for example via Postfix header_checks or equivalent mechanisms - operators SHOULD strip any pre-existing DKIM2-Intended-MailFrom header at message ingestion to prevent injection by untrusted clients.</t>
          <t>The name DKIM2-Intended-MailFrom is suggested as a convention for interoperability between list manager software and milter implementations from different vendors. Operators who control both the list manager and the milter MAY use any internal header name they find convenient, provided that the header is removed before external transmission. The suggested name is provided only to facilitate interoperability in heterogeneous deployments where the list manager and the milter are from different vendors.</t>
        </section>
        <section anchor="mailing-list-managers-with-integrated-smtp">
          <name>Mailing List Managers with Integrated SMTP</name>
          <t>Some mailing list managers - including mlmmj and similar lightweight implementations - open SMTP connections directly without passing through a local MTA. These implementations act as their own MTA for the purpose of message transmission and MUST implement DKIM2-core signing directly, without relying on an external milter.</t>
          <t>Such implementations MUST:</t>
          <ul spacing="normal">
            <li>
              <t>Declare all modifications made to the message via DKIM2-Mod headers before signing</t>
            </li>
            <li>
              <t>Construct DKIM2-Sig-mf from the MAIL FROM value used in the SMTP transaction</t>
            </li>
            <li>
              <t>Construct DKIM2-Sig-rt from the RCPT TO values used in the SMTP transaction</t>
            </li>
            <li>
              <t>Sign the message with a key authorized for the signing domain</t>
            </li>
          </ul>
          <t>Alternatively, these implementations MAY be configured to relay through a local MTA that carries an outbound milter, delegating signing responsibility to that MTA. This is the RECOMMENDED approach for operators who wish to minimize the scope of DKIM2-core implementation.</t>
        </section>
        <section anchor="hop-counting-and-multiple-hops-within-the-same-administrative-domain">
          <name>Hop Counting and Multiple Hops Within the Same Administrative Domain</name>
          <t>When a message passes through multiple MTAs within the same administrative domain - for example, a receiving MTA that passes to a list manager that passes to a transmitting MTA - each SMTP transaction that adds a new DKIM2 signature constitutes a new hop with an incremented i= value.</t>
          <t>Operators MAY choose not to add a DKIM2 signature at intermediate hops within their own administrative domain if the intermediate hop does not modify the message and does not need to be independently attributed in the chain of custody. Transparent internal relays that add only Received: headers do not need to participate in DKIM2 signing.</t>
          <t>However, any hop that modifies the message - including the list manager hop - MUST be represented in the chain of custody with its own DKIM2 signature, regardless of whether it is within the same administrative domain as adjacent hops.</t>
        </section>
        <section anchor="confirmation-of-milter-based-implementability">
          <name>Confirmation of Milter-Based Implementability</name>
          <t>The feasibility of implementing DKIM2-core via the milter interface without MTA core modifications has been confirmed by multiple participants in the working group discussion.</t>
          <t>Murray Kucherawy, co-chair of the DKIM working group, confirmed publicly on the working group mailing list that core MTA modifications are not necessary to add DKIM2 support via milter - consistent with the deployment model used for DKIM1, SPF, DMARC and ARC.</t>
          <t>G.W. Haywood, maintainer of Sendmail::PMilter - a Perl milter implementation supporting both Sendmail and Postfix - noted that milter protocol version 6 already provides the necessary primitives: adding, deleting and modifying headers and replacing the message body. He assessed that implementing DKIM2 via milter would not be a significant implementation effort once the specification stabilizes and expressed intent to implement DKIM2 support. John Levine subsequently confirmed on the working group list that the primary difference from existing DKIM in terms of milter implementation is access to envelope addresses - and that SMFIC_MAIL and SMFIC_RCPT callbacks already provide these in the milter protocol. He characterized the milter-based implementation of DKIM2 as a Small Matter Of Programming. G.W. Haywood concurred with this assessment.</t>
          <t>A working milter implementation of DKIM2 in Perl using Sendmail::PMilter has been published by Bron Gondwana, co-author of the DKIM2 specification, in the working group interoperability repository at https://github.com/dkim2wg/interop/. This implementation demonstrates that the milter interface provides the primitives necessary for DKIM2 implementation - including Message-Instance generation and outbound signing - without MTA core modifications. The existence of this implementation confirms the milter-based deployment model described in this document, independently of whether the full DKIM2-extended profile or only DKIM2-core is implemented.</t>
          <t>These confirmations from active MTA implementers are consistent with the DKIM2-core design principle described in this document: all mandatory functionality is expressible within the existing milter interface without requiring changes to MTA core software.</t>
        </section>
      </section>
    </section>
    <section anchor="dkim2-extended-optional-profile">
      <name>DKIM2-extended: Optional Profile</name>
      <section anchor="overview-and-scope">
        <name>Overview and Scope</name>
        <t>DKIM2-extended is a superset of DKIM2-core. A node that implements DKIM2-extended implements all of DKIM2-core plus the body recipe mechanism described in this section. DKIM2-extended is not a separate protocol - it is an additional layer of functionality built on top of the mandatory core profile.</t>
        <t>The body recipe mechanism allows intermediaries to describe modifications made to the message body in sufficient detail to allow reconstruction of previous versions. This capability has forensic value for operators who need to investigate message handling after the fact, audit modification chains, or satisfy compliance requirements that mandate retention of original message content.</t>
        <t>However, the body recipe mechanism is not required for the primary operational objectives identified in the DKIM working group charter: replay prevention, backscatter mitigation and modification attribution. These objectives are fully satisfied by DKIM2-core. The working group charter states that "the working group will prefer a result that is incremental to the deployed ecosystem" and that "proposed solutions are expected to be robust in terms of interoperability and scalability." DKIM2-extended should be evaluated against these criteria by operators considering deployment.</t>
        <t>Operators who do not require forensic body reconstruction SHOULD implement DKIM2-core only. Operators who require body accountability for compliance or forensic purposes MAY implement DKIM2-extended, subject to the operational considerations described in this section.</t>
      </section>
      <section anchor="body-recipes-and-message-instance-headers">
        <name>Body Recipes and Message-Instance Headers</name>
        <t>The body recipe mechanism is described in detail in <xref target="I-D.ietf-dkim-dkim2-spec"/>. This section summarizes the mechanism and identifies operational considerations relevant to deployment decisions.</t>
        <t>A Message-Instance header is added by each hop that modifies the message body. It contains a JSON-encoded recipe - a structured description of the modifications made - encoded in base64. The recipe provides sufficient information for a verifier to reconstruct the previous version of the message body from the current version by applying the recipe in reverse.</t>
        <t>A null recipe declares that a modification was made but that the previous state cannot or should not be reconstructed. Null recipes are discussed further in Section 4.5.</t>
        <t>An alternative approach of storing the original message content in the MIME preamble or epilogue area has been discussed in the working group. This approach has two significant limitations identified during discussion: first, a substantial fraction of modern email - particularly bulk and transactional mail - is sent as single-part HTML without MIME boundaries, making preamble and epilogue areas unavailable; second, the use of these areas for structured signed content has not been tested and their behavior across the heterogeneous ecosystem of MTA and filtering software is unknown. The approach requires extensive testing before it could be considered for standardization.</t>
        <t>Furthermore, proposals to store original message content in the MIME epilogue and reference it via non-monotone copy instructions would require recipe processors to access arbitrary positions in the message rather than reading it sequentially. Working group discussion has confirmed that non-monotone recipes make streaming recipe processing with bounded memory impossible, as the processor must buffer the complete message before applying any recipe step. This eliminates the streaming processing model that DKIM1 and DKIM2-core support natively.</t>
      </section>
      <section anchor="computational-and-traffic-overhead">
        <name>Computational and Traffic Overhead</name>
        <t>Operators considering DKIM2-extended deployment should be aware of the following overhead costs:</t>
        <t>JSON parsing in the delivery critical path - Message-Instance headers contain base64-encoded JSON that must be decoded and parsed at every verifying hop. JSON parsing introduces a dependency on a JSON library in the MTA or milter critical path. While JSON libraries are available in all languages, their presence in the delivery path introduces attack surface that does not exist in DKIM1 or DKIM2-core. Section 4.4 addresses the security implications.</t>
        <t>Traffic overhead - every message that transits DKIM2-extended-aware nodes accumulates Message-Instance headers with base64-encoded JSON recipes, additional DKIM2-Signature headers and potentially substantial body recipe content. These headers travel in the message to all recipients, including those on servers that do not implement DKIM2 at all. The overhead is not optional - it is imposed on the entire ecosystem by nodes that implement DKIM2-extended, regardless of whether downstream infrastructure can use it.</t>
        <t>Stateful milter requirement - unlike DKIM2-core, which is stateless by design, DKIM2-extended requires the signing milter to have access to the message state before and after modifications in order to calculate body recipes. This requires either a stateful milter implementation with persistent shared storage accessible to both the inbound and outbound milter instances, or MTA core modifications that provide equivalent capability. This is a significant architectural difference from DKIM2-core and from all previous email authentication protocols.</t>
        <section anchor="recipe-size-limits-and-computational-overhead">
          <name>Recipe Size Limits and Computational Overhead</name>
          <t>The JSON recipe format introduces complexity dimensions that must be explicitly bounded to prevent denial of service attacks. Unlike DKIM1 and ARC whose computational cost is bounded and predictable, DKIM2-extended recipe processing has a cost that depends on recipe complexity - a parameter controlled by the sender or any intermediary in the delivery chain.</t>
          <t>The following limits MUST be enforced by all DKIM2-extended implementations:</t>
          <t>Maximum recipe object count - implementations MUST enforce a maximum limit on the number of top-level objects in a recipe. During the development of this specification, a limit of 50 top-level objects was proposed as a DoS mitigation measure. This value has not been formally validated and implementations MAY choose a different limit based on their operational experience. The need for any such limit is itself evidence of the attack surface introduced by the recipe mechanism.</t>
          <t>Maximum nesting depth - the current specification does not define a maximum JSON nesting depth. Implementations MUST enforce a maximum nesting depth of 8 levels. This is sufficient for any legitimate MIME structure - real-world messages rarely exceed 4-5 levels of MIME nesting - while preventing attacks that use artificially deep nesting to exhaust parser stack space or trigger pathological behavior in JSON libraries.</t>
          <t>Maximum recipe size in bytes - implementations MUST enforce a maximum size for individual recipes and for the total accumulated Message-Instance header content in a message. Until normative limits are defined in <xref target="I-D.ietf-dkim-dkim2-spec"/>, implementations SHOULD enforce a maximum individual recipe size of 64KB and a maximum total Message-Instance header size of 256KB. These values are conservative estimates pending operational data from deployments.</t>
          <t>Maximum header line count - operators with MTA configurations that enforce limits on header count or total header size MUST be aware that accumulated Message-Instance headers across multiple hops can exceed these limits, causing silent truncation that will break recipe chain verification downstream.</t>
          <t>The one concrete data point currently available is from an implementation demonstrated during the development of this specification: a message of six lines of plain text with a footer added produces a compact recipe. However, messages containing base64-encoded attachments require recipe content that describes base64 line-width re-alignment, which can produce Message-Instance headers substantially larger than the modified content itself. At the time of writing, no quantitative analysis of overhead across representative message types has been produced. Operators should evaluate this overhead against their specific traffic profiles before committing to DKIM2-extended deployment.</t>
          <t>It is worth noting that all four limits defined above are operationally motivated values derived from implementation experience rather than from principled bounds inherent in the protocol design. DKIM1 and ARC require no equivalent limits because their tag-value structure has bounded complexity by design: a tag-value list of N items has exactly N items, no recursive structures and no parser state beyond the current position in the list. The fact that DKIM2-extended requires explicit limits to prevent denial of service attacks is evidence that the recipe format introduces complexity that cannot be bounded by the protocol design itself. This is a qualitative difference from all previous email authentication protocols and should be evaluated as such by operators and implementers.</t>
          <t>Beyond CPU cycles, the requirement to reassemble fragmented Base64-encoded JSON buffers forces MTAs to move from a zero-copy or stream-oriented header processing model to a buffered model, significantly increasing the per-connection memory footprint and the pressure on memory allocation subsystems at scale. DKIM1, ARC and DKIM2-core tag-value headers can be processed in a streaming fashion with constant memory per header - each tag is read, processed and discarded. DKIM2-extended recipe processing requires accumulating the complete recipe content before any verification can begin.</t>
          <t>At tens of thousands of transactions per second, even a modest increase in per-message processing time - one millisecond of additional JSON parsing - translates to hundreds of core-seconds per second of additional load. On a server processing 50,000 messages per second, one additional millisecond per message requires 50 additional CPU cores dedicated exclusively to recipe processing.</t>
          <t>Containerized architectures support horizontal scaling to absorb this load, but scaling has latency. An attacker who sends a burst of messages with complex recipes can saturate the processing pool before the autoscaler responds. Operators running on-premise infrastructure without horizontal scaling - including universities, regional ISPs and small businesses, precisely the operators for whom milter-based deployment is most important - have no autoscaling fallback.</t>
          <t>The fundamental issue is that DKIM2-extended introduces a protocol component whose computational cost is controlled by potentially adversarial input - the recipe content - rather than being bounded by the protocol design itself. DKIM1 and ARC do not have this property.</t>
        </section>
        <section anchor="base64-re-encoding-and-recipe-complexity">
          <name>Base64 Re-encoding and Recipe Complexity</name>
          <t>Working group discussion has identified the need for additional recipe types beyond the initial design, including base64-decode-and-copy operations to handle transfer encoding changes. Each additional recipe type increases parser complexity and attack surface. This pattern of complexity growth under contact with real-world deployment scenarios is consistent with the general concern raised in this section about unbounded complexity.</t>
          <t>Base64 re-encoding with different line widths changes the body hash under both strict and relaxed canonicalization equally. Relaxed canonicalization per <xref target="RFC6376"/> Section 3.4.2 addresses trailing whitespace and internal whitespace compression but does not affect the CRLF line separators that determine base64 line boundaries. Re-wrapping base64 content at a different line width inserts CRLF sequences at different positions, producing a different hash regardless of canonicalization algorithm.</t>
          <t>The complexity of base64 re-wrapping in recipe generation has been acknowledged by the authors of the base specification. Maintaining synchronization between original and modified base64 line boundaries requires tracking both representations simultaneously and fails when the original line boundary information is unavailable due to prior intermediary processing. In practice, such cases are expected to produce null recipes.</t>
        </section>
      </section>
      <section anchor="security-considerations-for-body-recipes">
        <name>Security Considerations for Body Recipes</name>
        <t>The body recipe mechanism introduces security considerations beyond those of DKIM2-core. Three categories of concern are relevant to deployment decisions:</t>
        <t>JSON parsing attack surface - recipe processing introduces a JSON parser in the delivery critical path that processes untrusted external input. This creates attack surface that does not exist in DKIM2-core or DKIM1. The need for explicit resource limits, discussed in Section 4.3.1, is evidence that this attack surface is real.</t>
        <t>Recipe chain integrity - a malicious intermediary can construct a recipe that presents a clean original message to verifiers while delivering modified content to recipients. This attack is feasible for any compromised node in the chain.</t>
        <t>Recipe stripping - operators may strip recipe content for operational or compliance reasons, removing information that downstream verifiers depend on.</t>
        <t>These concerns are addressed in detail with normative requirements in Section 7.3.</t>
      </section>
      <section anchor="the-null-recipe-and-its-implications">
        <name>The Null Recipe and Its Implications</name>
        <t>A null recipe declares that a modification was made to the message body but that the previous state cannot be reconstructed. Null recipes are the correct response for several categories of intermediary that are common in real-world deployment:</t>
        <ul spacing="normal">
          <li>
            <t>Security gateways that rewrite URLs - the original URLs may be sensitive and should not be reconstructed</t>
          </li>
          <li>
            <t>Antivirus gateways that remove malicious attachments - the removed content should not be preserved or transmitted</t>
          </li>
          <li>
            <t>DLP systems that redact sensitive content - reconstruction would defeat the purpose of the redaction</t>
          </li>
          <li>
            <t>Legacy MTAs that perform 7bit/8bit conversion - the conversion may not be perfectly reversible</t>
          </li>
          <li>
            <t>Mailing list managers that strip attachments or filter content - software such as Mailman and Sympa supports configurable MIME type removal as an active deployment option. When a list policy removes attachments based on type or size, the list manager MUST use a null recipe because the removed content should not be reconstructed downstream. This is a currently deployed scenario, not a legacy or transitional case.</t>
          </li>
          <li>
            <t>Any intermediary that makes modifications it cannot or should not describe in a recipe</t>
          </li>
        </ul>
        <t>These categories collectively represent a substantial fraction of real-world email infrastructure. When any of these nodes is present in the delivery chain, the result is a null recipe at that hop - which provides no additional body accountability beyond the bh= change already available in DKIM2-core. If null recipes are acceptable at the nodes most likely to make substantial body modifications, the incremental benefit of DKIM2-extended over DKIM2-core for body accountability is limited to the cases where all intermediaries cooperate fully - which is the minority of real-world delivery paths.</t>
        <t>This is not a criticism of the body recipe mechanism. It is an accurate characterization of the deployment landscape that operators need to understand before committing to DKIM2-extended infrastructure.</t>
        <t>It is worth noting that <xref target="RFC6376"/> Appendix B already addressed the fragility of body signatures in DKIM1 through a pragmatic approach: relaxed canonicalization tolerates common benign transformations - whitespace normalization, line ending differences, quoted-printable to 8bit conversion - without requiring intermediaries to declare or reconstruct those changes. DKIM2's strict canonicalization and body recipe mechanism represent a deliberate departure from this pragmatism in favor of a deterministic reconstruction model. The null recipe outcome is the price of that departure: cases that relaxed canonicalization would have handled silently become explicit failures in the DKIM2-extended model. Operators should evaluate whether the forensic value of body reconstruction justifies this tradeoff for their specific deployment scenario.</t>
        <t>The systematic use of null recipes by security gateways is not a theoretical concern - it has been confirmed empirically by a major gateway vendor participating in this working group. Philip Guenther of Proofpoint, whose products perform substantial alteration of message headers and bodies under customer security policies, has stated explicitly on the working group list that reversibility of those changes is "the opposite of a goal" for their customers and that their products will use the null recipe mechanism "when necessary" - and will not follow the specification at all if null recipes are not available as an option.</t>
        <t>This confirmation from a major in-path gateway vendor illustrates the structural limitation of the body recipe mechanism: the nodes most likely to make substantial body modifications - security gateways, DLP systems, antivirus engines - are by design and by customer requirement the nodes that will systematically produce null recipes. The forensic value of body reconstruction is therefore unavailable precisely at the hops where attribution would matter most.</t>
      </section>
      <section anchor="privacy-considerations-for-body-recipes">
        <name>Privacy Considerations for Body Recipes</name>
        <t>Body recipes raise data protection concerns that operators in GDPR and equivalent jurisdictions must evaluate before deployment. These concerns are addressed in detail in Section 6. A summary relevant to the deployment decision is provided here.</t>
        <t>Body recipes create structured, recoverable representations of previous message content that travel in the message to all downstream recipients and archiving systems. For most recipe types - range references, line counts - the privacy implications are limited. However for recipes that contain literal text from the original message, or for the specific cases of DLP redaction and URL rewriting, the recipe mechanism may cause personal data or sensitive content to circulate in a form that was not intended by the operator that originally processed it.</t>
        <t>Operators subject to GDPR should evaluate whether body recipe generation and transmission is consistent with their data minimization obligations under Article 5 and whether their use of null recipes for sensitive content modifications is sufficient to meet their compliance requirements.</t>
      </section>
    </section>
    <section anchor="transition-and-interoperability">
      <name>Transition and Interoperability</name>
      <section anchor="overview">
        <name>Overview</name>
        <t>The deployment of DKIM2 will occur incrementally across a heterogeneous ecosystem that includes DKIM2-core nodes, DKIM2-extended nodes, DKIM1-only nodes and legacy nodes that implement no cryptographic authentication. This section describes the expected behavior of each node type in the presence of the others and identifies the properties that are and are not achievable during the transition period.</t>
      </section>
      <section anchor="node-types-and-behaviors">
        <name>Node Types and Behaviors</name>
        <t>DKIM2-core node - implements envelope binding, chain of custody, header accountability, replay prevention and DSN authentication as defined in Section 3. Adds DKIM2-Sig-mf, DKIM2-Sig-rt, DKIM2-Mod and DKIM2-Signature headers. Verifies incoming DKIM2 signatures. Passes DKIM2-extended headers through without interpreting them.</t>
        <t>DKIM2-extended node - implements all of DKIM2-core plus body recipe generation and verification as defined in Section 4. Adds Message-Instance headers with JSON-encoded recipes in addition to all DKIM2-core headers.</t>
        <t>DKIM1-only node - implements DKIM1 <xref target="RFC6376"/> but not DKIM2. Passes DKIM2 headers through as unrecognized header fields. Does not add DKIM2 signatures. Does not break DKIM2 chains - it simply does not extend them.</t>
        <t>ARC node - implements ARC <xref target="RFC8617"/>. ARC and DKIM2-core address overlapping problems with different mechanisms. DKIM2-core is a functional superset of ARC - it provides the same modification attribution and trust chain capabilities plus cryptographic envelope binding. During the transition period, nodes that implement ARC but not DKIM2-core continue to provide ARC chains independently of the DKIM2 chain. The two chains coexist without conflict but do not bridge each other - a gap in the DKIM2 chain caused by a non-participating node remains a gap regardless of whether that node implements ARC.</t>
        <t>Legacy node - implements no cryptographic authentication. Passes all authentication headers through without interpreting them. Does not add signatures. Does not break chains but does not extend them.</t>
      </section>
      <section anchor="chain-continuity-and-legacy-nodes">
        <name>Chain Continuity and Legacy Nodes</name>
        <t>A legacy node in the delivery chain does not break the DKIM2 signature chain, it simply passes existing signatures through without adding new ones. A downstream receiver that encounters a message with a valid DKIM2 chain ending at a hop before the legacy node can verify the chain up to that point and apply local policy for the unsigned segment.</t>
        <t>A legacy node that makes modifications to the message - adding or changing headers, modifying the body, rewriting URLs - represents a more significant gap in the chain of custody than a transparent relay. Such modifications are not declared via DKIM2-Mod headers and cannot be attributed to any signing domain. A downstream receiver that encounters a changed bh= value or unexpected header differences between two consecutive DKIM2 signatures can identify that a modification occurred in the gap but cannot determine what was changed or by whom. Receivers that apply strict chain of custody policies SHOULD treat gaps containing undeclared modifications with additional suspicion, even if the signatures on either side of the gap are individually valid.</t>
        <t>This is a known limitation of the transition period. The properties achievable end-to-end depend on the composition of the delivery path:</t>
        <t>Replay prevention - fully effective only when every hop adds a DKIM2 signature with envelope binding. A legacy node between the originator and the final recipient means that the rt= value at the last signed hop does not necessarily reflect the actual final recipient.</t>
        <t>Backscatter prevention - fully effective only when every hop participates in DKIM2. A single legacy node breaks authenticated DSN propagation for all downstream receivers. During the transition period, receivers that encounter messages with broken DKIM2 chains MUST fall back to current DKIM1 behavior: apply local policy, generate DSNs as today.</t>
        <t>Chain of custody - provides attribution for all hops that participate in DKIM2. Legacy hops are visible as gaps in the i= sequence. A gap in the sequence does not invalidate the chain - it identifies the segment where accountability is absent.</t>
        <t>Header accountability - fully effective for all hops that implement DKIM2-core. Modifications made by legacy nodes are not declared but are detectable as changes in the signed header set between consecutive DKIM2 signatures.</t>
      </section>
      <section anchor="coexistence-with-dkim1">
        <name>Coexistence with DKIM1</name>
        <t>DKIM2 reuses DKIM1 DNS key infrastructure. A domain that has DKIM1 keys deployed does not need to make DNS changes to support DKIM2 signing by an ESP or MTA acting on its behalf. This is a deliberate design decision in <xref target="I-D.ietf-dkim-dkim2-spec"/> that significantly reduces the barrier to adoption for domain owners.</t>
        <t>During the transition period, messages MAY carry both DKIM1 and DKIM2 signatures. Receivers that implement only DKIM1 will verify the DKIM1 signature and ignore the DKIM2 headers. Receivers that implement DKIM2 will verify the DKIM2 chain and MAY also verify the DKIM1 signature for compatibility with existing policy frameworks such as DMARC.</t>
      </section>
      <section anchor="coexistence-with-arc">
        <name>Coexistence with ARC</name>
        <t>ARC <xref target="RFC8617"/> and DKIM2-core address overlapping problems with different mechanisms. ARC provides a trust chain for mailing list redistribution by recording the authentication state of a message as it passes through intermediaries. DKIM2-core is a functional superset of ARC - it provides the same modification attribution and trust chain capabilities plus cryptographic envelope binding that ARC lacks.</t>
        <t>During the transition period, nodes that implement ARC but not DKIM2-core continue to provide ARC chains independently of the DKIM2 chain. The two chains coexist without conflict but do not bridge each other - a gap in the DKIM2 chain caused by a non-participating node remains a gap regardless of whether that node implements ARC. ARC does not compensate for the absence of DKIM2 participation.</t>
        <t>Operators that have deployed ARC should not remove it during the DKIM2 transition period. ARC continues to provide value for receivers that evaluate ARC chains as part of their local policy, independently of DKIM2 adoption status.</t>
        <t>The limited adoption of ARC after six years of availability - approximately 10,000 signing domains compared to 9.5 million DKIM1 records as reported in <xref target="I-D.adams-arc-experiment-conclusion"/> - is informative for DKIM2 deployment expectations. ARC is milter-deployable and architecturally simpler than DKIM2-extended. Its adoption trajectory suggests that even milter-deployable protocols face significant ecosystem inertia. This reinforces the importance of the DKIM2-core profile: reducing deployment complexity to the minimum necessary to achieve the primary objectives of the protocol maximizes the probability of meaningful adoption.</t>
        <t>DKIM2-core enables a model of trust based on cryptographic chain of custody rather than direct domain alignment - a model that major providers already implement empirically through ARC evaluation. The approach taken in DKIM2-core is consistent with and builds upon experimental work already deployed in production. <xref target="I-D.chuang-replay-resistant-arc"/> proposes extending ARC with explicit envelope binding via dara= and darn= tags in the ARC-Seal, signing SMTP recipients at each hop and declaring the forwarding path. This protocol has been implemented in production by Google on Google Groups infrastructure, as evidenced by headers observed in real message flows. DKIM2-core formalizes and extends this approach with stronger cryptographic binding and a complete chain of custody model.</t>
      </section>
      <section anchor="incremental-deployment-path">
        <name>Incremental Deployment Path</name>
        <t>The recommended incremental deployment path for operators adopting DKIM2-core is:</t>
        <t>Phase 1 - outbound signing only: deploy the outbound milter to add DKIM2-Sig-mf, DKIM2-Sig-rt and DKIM2-Signature headers to outgoing messages. No inbound verification. This establishes the operator's presence in the DKIM2 ecosystem and allows downstream receivers to begin building chain of custody records.</t>
        <t>Phase 2 - inbound verification: deploy the inbound milter to verify incoming DKIM2 signatures and record results in Authentication-Results headers. Apply local policy based on verification results. This phase can be implemented in monitoring-only mode initially - logging verification results without affecting delivery - to assess the impact before enforcing policy.</t>
        <t>Phase 3 - policy enforcement: begin rejecting messages that fail DKIM2 verification according to local policy. This phase requires confidence that the majority of expected senders have deployed DKIM2 outbound signing.</t>
        <t>Phase 4 - mailing list and intermediary participation: update mailing list managers and other intermediaries to add DKIM2-Mod headers for their modifications and to pass the DKIM2-Intended-MailFrom convention to the outbound milter. This phase completes the chain of custody for messages that transit these systems.</t>
        <t>DKIM2-extended MAY be added at any phase by operators who require body accountability, subject to the operational considerations described in Section 4.</t>
      </section>
      <section anchor="the-dmarc-preject-mailing-list-problem">
        <name>The DMARC p=reject Mailing List Problem</name>
        <t>The DMARC p=reject mailing list problem is a known limitation of the current email authentication ecosystem that predates DKIM2. It arises from the interaction between DMARC's domain alignment requirement and the routing changes introduced by mailing list redistribution.</t>
        <t>The mechanism of failure: DMARC requires that at least one of SPF or DKIM provide a pass with domain alignment to the RFC5322 From: header. When a message passes through a mailing list two failure modes are possible depending on how the list handles the From: header.</t>
        <t>Case A - list without From: rewriting: when a mailing list redistributes a message without modifying the From: header, SPF fails because the list server IP is not in the original sender's SPF record and DKIM alignment fails because the list's signing domain differs from the From: domain. The following Authentication-Results header was observed on a message from itb.it that transited Google Groups and was delivered to a Microsoft Exchange recipient:</t>
        <artwork><![CDATA[
dmarc=fail header.from=itb.it
dkim=pass header.d=googlegroups.com
spf=pass smtp.mailfrom=googlegroups.com
arc=pass
]]></artwork>
        <t>The message body was plain text with no modifications. DMARC failed purely on alignment grounds - not because the body was modified. Microsoft delivered the message via ARC override. Body recipes cannot fix this failure - even with full body reconstruction, the signing domain googlegroups.com is not aligned with the From: domain itb.it.</t>
        <t>Case B - list with From: rewriting: when a mailing list replaces the From: header with its own domain, DMARC passes because the list's signing domain is now aligned with the new From: domain. The following Authentication-Results header was observed on a message from vittorio.moccia@gmail.com that transited a mailing list on itb.it and was delivered to a Microsoft Exchange recipient:</t>
        <artwork><![CDATA[
dkim=pass header.d=itb.it
dmarc=pass header.from=itb.it
spf=pass smtp.mailfrom=itb.it
arc=pass
]]></artwork>
        <t>DMARC passed completely. But the original sender's identity was destroyed - the recipient sees "Lista Utenti utenti@itb.it" instead of the original author. This is the architectural hack that makes DMARC work today for mailing lists - and it is unsound because it destroys sender identity to achieve alignment.</t>
        <t>Body recipes do not resolve this problem. In Case A, DMARC fails on domain alignment - a problem in the header and envelope layer that body reconstruction cannot address. In Case B, DMARC passes only because the From: header was replaced - a header modification that has nothing to do with body integrity. In neither case does body reconstruction affect the DMARC outcome.</t>
        <t>DKIM2-core offers a third path that neither Case A nor Case B provides today. A mailing list implementing DKIM2-core can:</t>
        <ul spacing="normal">
          <li>
            <t>Retain the original From: header - preserving the original sender's identity</t>
          </li>
          <li>
            <t>Declare the addition of List-* headers and any Subject: modifications via DKIM2-Mod headers</t>
          </li>
          <li>
            <t>Sign with its own DKIM2 key, cryptographically binding the envelope and the chain of custody</t>
          </li>
          <li>
            <t>Provide receivers with a verifiable record that the list handled the message and what modifications were made</t>
          </li>
        </ul>
        <t>This allows receivers that evaluate DKIM2 chain of custody - as Microsoft already does empirically with ARC - to make an informed trust decision without requiring From: rewriting or body reconstruction. DKIM2-core provides the cryptographic substrate necessary for a future DMARC2 or an evolved DMARC policy evaluation that recognizes transitive trust through a verified Chain of Custody.</t>
        <t>This allows receivers that evaluate DKIM2 chain of custody - as Microsoft and Google already do empirically with ARC - to make an informed trust decision without requiring From: rewriting or body reconstruction. Critically, it achieves this without requiring new DNS records or SMTP capabilities.</t>
        <t>By utilizing the i= and rt= fields, DKIM2-core establishes a verifiable cryptographic link between the original message and the modified version distributed by the list. Trust is derived from the verifiable path of the message rather than from an obsolete and hidden body state. This approach maintains the "What You See Is What Was Authenticated" principle, which is abandoned by the body reconstruction mechanism.</t>
        <t>DKIM2-core provides the cryptographic substrate necessary for a future DMARC2 or an evolved DMARC policy evaluation that recognizes transitive trust through a verified Chain of Custody. The empirical evidence from current ARC deployment demonstrates that the trust model is sound and already accepted by major providers in practice.</t>
        <t>Ultimately, DKIM2-core restores DMARC interoperability with mailing lists by authenticating the modification path, whereas DKIM2-extended fails to address the root cause of misalignment while introducing significant privacy and security overhead.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>This section addresses privacy implications of DKIM2-core and DKIM2-extended in accordance with <xref target="RFC6973"/>, which provides guidance on privacy considerations in Internet protocol design.</t>
      <section anchor="dkim2-core-privacy-properties">
        <name>DKIM2-core Privacy Properties</name>
        <t>DKIM2-core adds the following information to messages in transit:</t>
        <t>DKIM2-Sig-mf and DKIM2-Sig-rt headers - these fields carry the SMTP envelope values, which may include email addresses not present in the RFC5322 headers. In the common case of direct delivery, these values are already implicit in the message routing. For mailing list redistribution, the rt= value at each hop reveals the address of the individual subscriber receiving that copy of the message. This is not new information - the SMTP envelope already contains this information - but it is now carried in a signed header field that persists in the message and may be archived by downstream systems.</t>
        <t>DKIM2-Mod headers - these fields carry previous values of modified header fields. For header modifications that involve personal data - for example a From: header that is rewritten by a mailing list - the original value is preserved in a signed header that travels with the message. Operators that modify headers containing personal data should be aware that the original values will be visible to all downstream recipients and archiving systems.</t>
        <t>This pattern is already practiced informally in the ecosystem - for example, Google Groups preserves the original sender address in an X-Original-Sender header alongside its own Sender: field. DKIM2-Mod formalizes this existing convention by making the declaration cryptographically signed and part of the verifiable chain of custody, rather than an informational annotation with no authentication binding.</t>
        <t>Authentication-Results headers - these fields record the outcome of DKIM2 verification at each hop. They do not contain message content or personal data beyond what is already present in the message headers.</t>
        <t>The privacy impact of DKIM2-core is limited and proportionate to its functional objectives. The additional data carried in DKIM2-core headers is necessary for the envelope binding and chain of custody mechanisms and does not represent a material increase in the personal data surface of the message beyond what is already present in the SMTP transaction.</t>
      </section>
      <section anchor="dkim2-extended-privacy-considerations">
        <name>DKIM2-extended Privacy Considerations</name>
        <t>DKIM2-extended raises privacy concerns that are qualitatively different from those of standard email processing. Email messages already transit through systems that read, analyze and archive them - existing data protection frameworks address this reality. What DKIM2-extended adds is the systematic creation of structured, cryptographically signed records of previous versions of message content that did not previously exist as discrete data objects. A standard email message represents the current state of a communication. A message with body recipes represents both the current state and a signed history of previous states distributed to every downstream recipient and archiving system in cryptographically immutable form.</t>
        <t>This distinction is relevant to data protection law in the ways described below.</t>
        <section anchor="the-null-recipe-mechanism">
          <name>The Null Recipe Mechanism</name>
          <t>The null recipe is the primary technical instrument available to intermediaries for managing privacy risk in DKIM2-extended deployments. An intermediary that modifies message content may declare null rather than generating a content-bearing recipe, signalling that a modification occurred and who made it without creating any structured record of the previous content.</t>
          <t>The null recipe preserves the core accountability property of DKIM2 - the modification is declared and attributed - while avoiding the creation of personal data records that would otherwise travel with the message to all downstream recipients and archiving systems. It is the correct response in any situation where generating a content-bearing recipe would conflict with data protection obligations or organizational security policy.</t>
          <t>The current specification does not provide normative guidance on when intermediaries are obligated to use null recipes. This document addresses that gap for specific deployment scenarios in the sections that follow.</t>
        </section>
        <section anchor="data-minimization">
          <name>Data Minimization</name>
          <t>GDPR Article 5(1)(c) requires that personal data be adequate, relevant and limited to what is necessary for the purposes for which it is processed. The primary operational objectives of DKIM2 - replay prevention, backscatter mitigation, modification attribution - are achievable without body recipes as argued in Section 4.5. Body recipe data collection may therefore not meet the necessity test under Article 5(1)(c).</t>
          <t>The specific minimization problem of body recipes is not that personal data is processed - it is that body recipes create a new category of structured data that did not previously exist: recoverable representations of previous message content, distributed in signed form to all downstream systems. This is qualitatively different from the processing that occurs in standard email transit and raises minimization questions that do not arise for DKIM2-core.</t>
          <t>This is not a definitive legal assessment. Operators subject to GDPR should seek legal advice on whether their specific use of body recipes is consistent with their data minimization obligations.</t>
        </section>
        <section anchor="data-retention">
          <name>Data Retention</name>
          <t>GDPR Article 5(1)(e) requires that personal data be kept in a form that permits identification of data subjects for no longer than necessary. Body recipes travel in the message and may be archived by any system that receives or intercepts it - including the final recipient's mail store, compliance archiving systems and, in some jurisdictions, systems operated under lawful interception or judicial oversight obligations. Unlike the message body itself, body recipes embedded in signed headers cannot be selectively removed without invalidating the signature chain. This creates a retention problem that has no clean technical resolution: the data persists in signed form in every copy of the message held by any system that archived it, regardless of the originating organization's retention policy.</t>
          <t>Furthermore, intermediaries that implement DKIM2-extended may find that the body recipe itself constitutes an audit trail of modifications - and in many jurisdictions, audit records are subject to mandatory retention obligations that may exceed the retention period applicable to the communication content itself. An intermediary may therefore find itself obligated to retain recipe content as an audit record for extended periods, regardless of its normal data retention policy. This obligation did not exist before DKIM2-extended because no structured modification record was created during transit.</t>
          <t>Operators should evaluate whether their archiving systems can handle recipe content consistently with applicable obligations under <xref target="GDPR"/> Article 5(1)(e) and any sector-specific retention requirements in their jurisdiction.</t>
        </section>
        <section anchor="dlp-systems-and-body-recipes">
          <name>DLP Systems and Body Recipes</name>
          <t>A Data Loss Prevention system that redacts sensitive content does so precisely because that data must not circulate. A body recipe that allows reconstruction of the content before redaction creates a structured record of the very data the DLP system was designed to protect - a structural contradiction between the purpose of the system and what DKIM2-extended asks it to generate.</t>
          <t>Operators deploying DLP systems in conjunction with DKIM2-extended MUST use null recipes as described in Section 6.2.1 for all modifications that involve redaction of sensitive content.</t>
        </section>
        <section anchor="antivirus-gateways-and-body-recipes">
          <name>Antivirus Gateways and Body Recipes</name>
          <t>When an antivirus gateway removes a malicious attachment, the removed content should be eliminated, not preserved. A content-bearing recipe for such a removal creates a structured record of content that should not exist downstream.</t>
          <t>Operators deploying antivirus gateways in conjunction with DKIM2-extended MUST use null recipes as described in Section 6.2.1 for all modifications that involve removal of malicious or suspicious content.</t>
        </section>
        <section anchor="url-rewriting-and-body-recipes">
          <name>URL Rewriting and Body Recipes</name>
          <t>Security gateways that rewrite URLs generate recipes containing the original URLs, which may reveal sensitive communication content or internal infrastructure details not intended for downstream exposure.</t>
          <t>Operators who cannot expose original URLs in recipe content MUST use null recipes as described in Section 6.2.1.</t>
        </section>
        <section anchor="compliance-with-data-subject-rights">
          <name>Compliance with Data Subject Rights</name>
          <t>GDPR Articles 16 and 17 grant data subjects the right to rectification of inaccurate personal data and the right to erasure. Body recipes create structural conflicts with both rights that manifest differently depending on the stage of the message lifecycle. In addition to GDPR, operators must consider Directive 2002/58/EC (ePrivacy Directive) <xref target="ePrivacy"/>, which mandates the confidentiality of communications. By creating structured, cryptographically signed records of previous body states that are durably embedded in the message itself, DKIM2-extended converts transient communication content into a verifiable content history that travels with the message to every downstream system. This conversion raises questions about the applicability of mere conduit exemptions under Article 12 of the e-Commerce Directive and its successor provisions, which condition that exemption on the intermediary not modifying the information transmitted. Generating a body recipe may be considered a form of content processing that goes beyond mere transport, potentially requiring an explicit legal basis for the creation and retention of such records at intermediate hops.</t>
          <t>The erasure problem - the null recipe described in Section 6.2.1 is a preventive instrument: if applied consistently before personal data enters the recipe, no erasure conflict arises. However it is not a remedial instrument. Once a content-bearing recipe has been generated and distributed, the Right to Erasure under Article 17 GDPR becomes technically unenforceable: the organization that generated the recipe can delete its own copy, but the recipe exists in cryptographically signed form in every downstream copy of the message. GDPR Article 17 imposes an obligation on the controller to erase data - but it provides no mechanism to compel deletion from systems in other administrative domains, other jurisdictions, or operated by parties who are not data controllers under the same legal framework.</t>
          <t>Furthermore, an intermediary that generated a recipe may itself face conflicting obligations: the erasure request requires deletion, but audit trail or documentary evidence obligations - contractual, regulatory, or legal - may require retention of records of modifications made. These two obligations cannot be simultaneously fulfilled. This conflict is not a gap in the legal framework - it is a structural consequence of DKIM2-extended creating cryptographically immutable records at transit nodes.</t>
          <t>The rectification problem - the rectification conflict is structurally irresolvable and arises specifically when the message is in archival state. During transit the message exists transiently and the problem does not arise. The problem emerges when the message is archived - by any system at any point in the delivery chain - with a recipe containing inaccurate personal data.</t>
          <t>At that point three obligations come into direct conflict. First, GDPR Article 16 requires that the inaccurate personal data be corrected. Second, correcting the value in the recipe invalidates the cryptographic signature of the hop that generated it, which cascades through all subsequent signatures in the chain. Third, if the archive is used as certified documentary evidence - for compliance, audit, or legal purposes - its integrity must be preserved. Modifying it to fulfill the rectification request destroys its evidentiary value. Not modifying it violates the data subject's right.</t>
          <t>This three-way conflict between data subject rights, cryptographic integrity and documentary evidence obligations has no technical resolution within the current DKIM2-extended architecture. It does not arise in standard email archiving, where an organization can modify or delete its own archives without affecting cryptographic chains, because standard email archives do not carry immutable signed records of previous content versions.</t>
          <t>Joint controllership - an intermediary that generates body recipes is no longer merely transporting the message - it is creating a new structured record of personal data by determining what previous content to include in the recipe and ensuring its persistence through cryptographic binding. This may constitute joint controllership under GDPR Article 26, with associated obligations including the potential requirement for a Data Protection Impact Assessment under Article 35. Operators should evaluate whether their recipe generation activities trigger these obligations.</t>
        </section>
        <section anchor="privacy-review-recommendation">
          <name>Privacy Review Recommendation</name>
          <t>At the time of writing, <xref target="I-D.ietf-dkim-dkim2-spec"/> does not include a Privacy Considerations section and the Security Considerations section is marked TBA. Subsequent versions may address some of the concerns raised here following discussion on the ietf-dkim mailing list initiated in March 2026.</t>
          <t>For a specification intended to become an IETF Standards Track document, privacy and security considerations are required per <xref target="RFC3552"/> (BCP 72). This document provides suggested privacy considerations text based on <xref target="RFC6973"/> for consideration by the working group as a contribution to the base specification.</t>
          <t>Note on <xref target="RFC6973"/>: this is an IAB document rather than an IETF document. However IAB documents on protocol design are explicitly relevant to IETF Standards Track work - the IAB and IETF coordinate on architectural and privacy matters as part of the overall Internet standards process. The privacy considerations in this document are consistent with both <xref target="RFC6973"/> and the security considerations requirements of <xref target="RFC3552"/>.</t>
        </section>
        <section anchor="architectural-conclusion">
          <name>Architectural Conclusion</name>
          <t>The privacy considerations described in this section lead to a clear architectural conclusion: DKIM2-extended MUST remain optional and loosely coupled to DKIM2-core. This is not merely a deployment preference - it is a requirement derived from data protection principles.</t>
          <t>An operator subject to <xref target="GDPR"/> and <xref target="ePrivacy"/> who activates DKIM2-extended takes on explicit data processing obligations for the personal data contained in body recipes, including obligations that may not arise under standard email processing - among them the creation of audit-trail records at transit nodes, potential joint controllership under GDPR Article 26 and questions about mere conduit exemptions under the e-Commerce Directive. An operator who implements only DKIM2-core has no such obligations beyond those that exist today for standard email processing. The optional nature of DKIM2-extended is therefore not a technical convenience but a legal necessity for a significant portion of the global email infrastructure.</t>
          <t>DKIM2-core and DKIM2-extended are designed to coexist cleanly: a DKIM2-core-only node passes Message-Instance headers through as opaque signed content without interpreting them and a DKIM2-extended node adds full body recipe functionality on top of the core. Activating DKIM2-extended adds capabilities; not activating it does not degrade the core functionality in any way. This clean separation is the architectural property that makes DKIM2 deployable across jurisdictions with different data protection requirements.</t>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <section anchor="security-properties-of-dkim2-core">
        <name>Security Properties of DKIM2-core</name>
        <t>Replay prevention - a valid DKIM2 signature cannot be reused for a different recipient without breaking the chain. The cryptographic binding of RCPT TO values in DKIM2-Sig-rt to the signature at every hop makes replay attacks detectable by any conformant verifier.</t>
        <t>DKIM2-core envelope binding uses one DKIM2-Sig-rt header per recipient address. A verifier checks that the RCPT TO of the current SMTP session matches exactly the addr= value of the corresponding DKIM2-Sig-rt header. This provides complete replay prevention - a message signed for recipients A, B and C cannot be replayed to only recipient A because the DKIM2-Sig-rt header carrying addr=A was signed as part of a chain that also includes headers for B and C. This is a structural improvement over designs that aggregate all recipients in a single signed blob, where a subset of recipients could be used without breaking the signature.</t>
        <t>The base specification <xref target="I-D.ietf-dkim-dkim2-spec"/> addresses this risk through an optional "exploded" flag (Section 8.9) that signals a message was sent to multiple recipients. However this mitigation has structural weaknesses: the flag is optional and depends on the signer including it, and if the signer omits it or an attacker removes it, the protection fails. The flag also does not prevent replay to a subset of the original recipients - it only signals that multiple recipients existed. DKIM2-core's one-header-per-address design eliminates this category of attack without requiring any optional flag: the signed set of DKIM2-Sig-rt headers is cryptographically bound to the chain and any attempt to replay the message to a recipient subset or a different recipient produces a verifiable mismatch.</t>
        <t>Sender accountability - the signing domain at each hop is cryptographically bound to the message and the envelope. A receiver can establish a verifiable chain of custody from originator to final recipient, identifying every entity that handled the message and declared its modifications.</t>
        <t>Backscatter prevention - DSN generation is authenticated through the chain of custody. A receiver that rejects a message during the SMTP session directs the rejection to the connected peer, never to the envelope sender. This prevents backscatter to innocent sender domains.</t>
        <t>Header integrity - modifications to header fields are declared via DKIM2-Mod headers and are covered by the signature of the modifying hop. Undeclared header modifications are detectable as inconsistencies between the signed header set and the declared modifications.</t>
        <t>Body integrity - the bh= value at each hop provides a hash of the current message body. Changes in bh= between consecutive signatures identify hops where body modifications occurred and attribute them to the signing domain. Full body reconstruction is not provided in DKIM2-core and is not required for the primary security objectives.</t>
        <section anchor="implementation-robustness-and-reduced-attack-surface">
          <name>Implementation Robustness and Reduced Attack Surface</name>
          <t>DKIM2-core uses the tag-value syntax of DKIM1 <xref target="RFC6376"/> throughout, without nested or opaque data structures such as JSON-encoded values within header fields. This design choice has direct security implications.</t>
          <t>The elimination of multi-layered parsing - JSON-in-base64 embedded in header fields - removes a category of attack surface that does not exist in DKIM1 or ARC. Parser vulnerabilities in JSON libraries, including memory exhaustion and type confusion attacks, cannot be triggered by DKIM2-core header processing. This is consistent with the attack surface analysis in Section 7.3.1.</t>
          <t>All DKIM2-core declarations - envelope binding, modification attribution, chain of custody - are in cleartext tag-value format, directly inspectable in mail logs without specialized tooling. This transparency supports real-time threat detection and incident response in ways that base64-encoded opaque blobs do not.</t>
          <t>Interoperability testing of <xref target="I-D.ietf-dkim-dkim2-spec"/> conducted during IETF hackathon activities in March 2026 identified multiple confirmed interop failures between independent implementations, including disagreements on header ordering for signing input and header hash computation. DKIM2-core's use of explicit i= and seq= index values rather than positional ordering eliminates this category of implementation ambiguity.</t>
          <t>The practical consequence of these design choices is immediate implementability. DKIM2-core header processing requires only the tag-value parser already present in every DKIM1 and ARC implementation - no new libraries, no new data structures, no new parsing infrastructure. A conformant DKIM2-core milter can be built by extending an existing ARC milter with envelope binding and modification declaration. The incremental implementation cost above a working ARC milter is measured in a few weeks, not months. This stands in contrast to DKIM2-extended, which requires JSON parsing infrastructure, stateful message buffering and persistent shared storage, none of which are present in existing DKIM1 or ARC implementations.</t>
        </section>
      </section>
      <section anchor="security-limitations-of-dkim2-core">
        <name>Security Limitations of DKIM2-core</name>
        <t>Legacy node gap - a legacy node in the delivery chain does not extend the DKIM2 chain. Modifications made by legacy nodes are not declared and cannot be attributed. The gap is visible as a discontinuity in the i= sequence but the content of the gap is unknown. Receivers must apply local policy for messages with gaps in the chain.</t>
        <t>Key compromise - compromise of a signing key allows an attacker to generate valid signatures for that domain. Key rotation procedures as defined in <xref target="RFC6376"/> apply to DKIM2 keys. The i= sequence provides some mitigation - an attacker who generates a forged signature must insert it into a plausible position in the chain.</t>
        <t>DNS security - DKIM2 inherits the DNS security properties of DKIM1. Key publication relies on DNS, which is subject to cache poisoning and other attacks unless DNSSEC is deployed. Operators SHOULD deploy DNSSEC for their signing domains.</t>
        <t>Relaxed domain match - the relaxed domain match algorithm for mf= allows subaddress schemes used for bounce handling. Operators should be aware that this algorithm permits signatures from subdomains of the MAIL FROM domain, which may be exploitable if subdomain delegation is not carefully controlled.</t>
      </section>
      <section anchor="security-considerations-for-dkim2-extended">
        <name>Security Considerations for DKIM2-extended</name>
        <t>DKIM2-extended introduces additional attack surface beyond DKIM2-core. Operators considering DKIM2-extended deployment should evaluate the following.</t>
        <section anchor="json-parsing-attack-surface">
          <name>JSON Parsing Attack Surface</name>
          <t>Message-Instance headers contain base64-encoded JSON that must be decoded and parsed at every verifying hop. JSON parsers process untrusted external input in the delivery critical path and are subject to algorithmic complexity attacks that cause excessive CPU consumption, memory exhaustion through deeply nested structures, parser inconsistency across implementations and buffer overflows in poorly implemented parsers.</t>
          <t>A specific concern is Type Confusion: differences in JSON parser implementations regarding duplicate keys and numerical precision can cause a recipe to be interpreted differently by intermediaries and final recipients. An attacker could craft a recipe that validates correctly at intermediate hops - where the signature is verified - but is interpreted differently at the final recipient, causing signature validation to succeed on a message body that differs from what the signer intended. This attack exploits parser inconsistency rather than cryptographic weakness and cannot be mitigated by stronger signing algorithms.</t>
          <t>The JSON recipe syntax also exhibits semantic ambiguity: the same construct - an empty array [] - is used in different contexts with different meanings. In backward-looking recipes it declares that a header field was added by the current hop and had no previous value. In forward-looking recipe proposals discussed in the working group, the same construct declares that a header field should be ignored during verification of a future message. This dual meaning requires implementations to determine the correct interpretation from context, introducing a category of parser confusion that does not exist in the tag-value formats used by DKIM1 and DKIM2-core.</t>
          <t>The need to define explicit limits on object count, nesting depth and total recipe size - as discussed in Section 4.3.1 - demonstrates that this attack surface has been recognized. Operators MUST ensure that their JSON parsing implementation enforces strict resource limits on input size, nesting depth and object count appropriate to their operational environment. Implementations SHOULD use a JSON parser that strictly conforms to <xref target="RFC8259"/> and rejects input that is ambiguous under that specification - in particular, implementations MUST reject JSON objects with duplicate keys rather than silently selecting one value. Sandboxing the JSON parser from the MTA delivery process is RECOMMENDED where operationally feasible.</t>
        </section>
        <section anchor="recipe-chain-integrity">
          <name>Recipe Chain Integrity</name>
          <t>A malicious intermediary that controls a node in the delivery chain can construct a recipe that presents a clean original message to the verifier while the delivered content is malicious. This attack requires control of a node in the chain and the ability to generate a valid signature for that node's domain, but is feasible for a compromised or malicious intermediary. Verifiers MUST validate the complete recipe chain from originator to final recipient and MUST NOT rely on individual recipes in isolation.</t>
        </section>
        <section anchor="semantic-gap-between-verification-and-visualization">
          <name>Semantic Gap Between Verification and Visualization</name>
          <t>DKIM2-extended introduces a structural discrepancy between the reconstructed body - the previous state that is cryptographically verified - and the transferred body - the modified state that is rendered to the end user. This creates a semantic gap that undermines the fundamental premise of email authentication: that the content being displayed is the content that was authenticated.</t>
          <t>When a receiver applies a body recipe to validate a DKIM signature on a version of the message that is no longer present, a verification pass result is semantically ambiguous. The user is presented with a verified status - a positive Authentication-Results header or a trust indicator in a mail client - but the content displayed does not correspond to the cryptographically covered data.</t>
          <t>This gap is a vector for social engineering. A compromised intermediary can craft modifications that are functionally malicious while providing a valid reconstruction recipe that produces a clean original. The receiver's verification passes on the ghost version; the user sees and acts on the malicious version.</t>
          <t>There is no standardized mechanism to communicate a "reconstructed authentication" state to human recipients without creating UI confusion or warning fatigue. The DKIM2-extended body recipe mechanism therefore constitutes a departure from the "What You See Is What Was Signed" principle. It should be treated as a specialized tool for automated forensic processing rather than a general-purpose body integrity mechanism for end-user trust decisions.</t>
          <t>This concern is distinct from but related to the Recipe Injection attack described in Section 7.3.4. Recipe Injection exploits the gap to authenticate a stolen message. The semantic gap concern exists even without malicious intent - any legitimate body modification creates a divergence between what was authenticated and what is displayed.</t>
        </section>
        <section anchor="attribution-of-change-vs-verification-of-state">
          <name>Attribution of Change vs. Verification of State</name>
          <t>It has been argued that body recipes provide attribution for modifications. However, attribution of a state change is not equivalent to verification of the previous state. In mixed environments (DKIM1/DKIM2), an intermediary can provide a cryptographically consistent recipe for a state that never existed, effectively signing a fabrication. As long as the fabrication is consistent with a previously obtained DKIM1 signature, the mechanisms described in the DKIM2-extended profile validate the lie as truth.</t>
          <t>The attack proceeds as follows: a malicious intermediary in possession of a stolen DKIM1-signed message receives a legitimate but unsigned message. It provides a signed recipe that, when applied to the legitimate message, reconstructs the stolen DKIM1 message. The intermediary's DKIM2 signature validates the recipe's integrity. The recipe validates the stolen message's DKIM1 signature. The receiver sees a valid chain and believes the trusted domain sent the stolen message in the current delivery.</t>
          <t>DKIM2-core avoids this entirely. An intermediary declares what it received and what it changed - attestation of flow, not reconstruction of state. There is no recipe mechanism that can be used as a payload injector because there is no mechanism for claiming what the previous state was.</t>
          <t>DKIM2-core provides a stateless chain of custody over message headers and body content as transmitted. This property is well-suited to general Internet mail flow across administrative boundaries. DKIM2-extended introduces stateful body reconstruction across those same boundaries, with the verification limitations described above. Implementers SHOULD carefully evaluate the operational, security and legal implications of deploying DKIM2-extended before adoption and MUST NOT treat a passing DKIM2-extended verification result as equivalent to verification of the reconstructed prior message state.</t>
        </section>
        <section anchor="null-recipe-ambiguity">
          <name>Null Recipe Ambiguity</name>
          <t>A null recipe declares that a modification was made but provides no information about the nature or extent of the modification. A malicious intermediary can use a null recipe to conceal arbitrary body modifications while remaining nominally compliant with the protocol. Receivers that rely on body recipe verification for security decisions MUST treat null recipes as untrusted modifications equivalent to a complete body replacement.</t>
        </section>
        <section anchor="recipe-stripping">
          <name>Recipe Stripping</name>
          <t>An intermediary that strips body recipe content from a message removes information that downstream verifiers depend on. The specification does not currently define how receivers should handle messages with stripped or truncated recipes. Implementations MUST handle this case gracefully without crashing or producing incorrect verification results. Stripped recipes SHOULD be treated as null recipes for the purpose of verification policy.</t>
        </section>
        <section anchor="stateful-milter-attack-surface">
          <name>Stateful Milter Attack Surface</name>
          <t>The persistent shared storage required by stateful DKIM2-extended milter implementations is an additional attack surface. Compromise of the shared storage allows an attacker to manipulate cached message state and cause the milter to generate incorrect recipes or signatures. Operators MUST apply appropriate access controls to stateful milter storage and MUST monitor for unexpected modifications.</t>
        </section>
      </section>
      <section anchor="cryptographic-agility">
        <name>Cryptographic Agility</name>
        <t>DKIM2-core mandates support for RSA-SHA256 and Ed25519-SHA256. The architecture does not publish the hash value separately from the signature, which permits future adoption of post-quantum signing algorithms that incorporate their own hash function. Operators should monitor the development of post-quantum algorithm standards and be prepared to add support for new algorithms as they are standardized.</t>
        <t>The use of both RSA-SHA256 and Ed25519-SHA256 in parallel is RECOMMENDED during the transition period to provide cryptographic agility. Ed25519 signatures are significantly shorter than RSA signatures and impose lower computational overhead at scale.</t>
      </section>
      <section anchor="timestamp-handling">
        <name>Timestamp Handling</name>
        <t>DKIM2 signatures include a timestamp. Receivers SHOULD reject signatures with timestamps significantly in the future, which may indicate replay of pre-generated signatures. The acceptable clock skew is implementation-defined. Operators should balance two competing concerns: a tight skew window reduces the window for pre-generated replay attacks but may cause legitimate rejections due to clock synchronization differences between sending and receiving systems; a loose skew window accommodates clock differences but increases the window available for replay attacks. NTP-synchronized infrastructure typically maintains clock accuracy within seconds, making a skew window of a few minutes sufficient for most deployments.</t>
        <t>Signatures with timestamps significantly in the past MAY be treated with additional suspicion as potential replays, subject to local policy. The appropriate age threshold depends on the deployment context - mailing list redistribution may legitimately introduce delays of hours or days and operators with mailing list traffic in their delivery paths should configure age thresholds accordingly. This is consistent with operational experience from DKIM1 deployments, where signature expiry timestamps are often set generously or ignored precisely because legitimate redistribution paths introduce unpredictable delays.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document requests the registration of the following header fields in the Permanent Message Header Field Registry maintained by IANA in accordance with <xref target="RFC3864"/>.</t>
      <section anchor="dkim2-sig-mf">
        <name>DKIM2-Sig-mf</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Sig-mf</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: standard</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.1</t>
          </li>
          <li>
            <t>Related information: carries the SMTP MAIL FROM value bound to a DKIM2 signature at a specific hop, indexed by i=</t>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-sig-rt">
        <name>DKIM2-Sig-rt</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Sig-rt</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: standard</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.1</t>
          </li>
          <li>
            <t>Related information: carries exactly one SMTP RCPT TO address per header, bound to a DKIM2 signature at a specific hop. Multiple recipients use multiple headers with incrementing v= sequence index. Indexed by i= for hop and v= for recipient sequence.</t>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-mod">
        <name>DKIM2-Mod</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Mod</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: standard</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.3</t>
          </li>
          <li>
            <t>Related information: declares a modification made to a header field by a Reviser node, using:
            </t>
            <ul spacing="normal">
              <li>
                <t>field= - identifies the modified header field name</t>
              </li>
              <li>
                <t>del= - previous value, present for removals and modifications</t>
              </li>
              <li>
                <t>new= - new value, present for additions and modifications</t>
              </li>
              <li>
                <t>fr= - optional frame index for splitting long values across multiple headers</t>
              </li>
              <li>
                <t>i= - hop index</t>
              </li>
              <li>
                <t>seq= - field instance index</t>
              </li>
              <li>
                <t>del= and new= MUST appear on separate header lines and MUST be last in the header field value</t>
              </li>
            </ul>
          </li>
        </ul>
      </section>
      <section anchor="dkim2-intended-mailfrom">
        <name>DKIM2-Intended-MailFrom</name>
        <ul spacing="normal">
          <li>
            <t>Header field name: DKIM2-Intended-MailFrom</t>
          </li>
          <li>
            <t>Applicable protocol: mail</t>
          </li>
          <li>
            <t>Status: informational</t>
          </li>
          <li>
            <t>Author/Change controller: IETF</t>
          </li>
          <li>
            <t>Specification document: this document, Section 3.7.3</t>
          </li>
          <li>
            <t>Related information: internal interoperability header used by mailing list managers to communicate the intended MAIL FROM value to the outbound signing milter. MUST be removed before external transmission. MUST NOT appear in messages delivered to external recipients.</t>
          </li>
        </ul>
      </section>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <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="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="B. Korver" initials="B." surname="Korver"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. 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="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC3864">
          <front>
            <title>Registration Procedures for Message Header Fields</title>
            <author fullname="G. Klyne" initials="G." surname="Klyne"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="J. Mogul" initials="J." surname="Mogul"/>
            <date month="September" year="2004"/>
            <abstract>
              <t>This specification defines registration procedures for the message header fields used by Internet mail, HTTP, Netnews and other applications. 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="90"/>
          <seriesInfo name="RFC" value="3864"/>
          <seriesInfo name="DOI" value="10.17487/RFC3864"/>
        </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="RFC5234">
          <front>
            <title>Augmented BNF for Syntax Specifications: ABNF</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="P. Overell" initials="P." surname="Overell"/>
            <date month="January" year="2008"/>
            <abstract>
              <t>Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="68"/>
          <seriesInfo name="RFC" value="5234"/>
          <seriesInfo name="DOI" value="10.17487/RFC5234"/>
        </reference>
        <reference anchor="RFC5321">
          <front>
            <title>Simple Mail Transfer Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document is a specification of the basic protocol for Internet electronic mail transport. It consolidates, updates, and clarifies several previous documents, making all or parts of most of them obsolete. It covers the SMTP extension mechanisms and best practices for the contemporary Internet, but does not provide details about particular extensions. Although SMTP was designed as a mail transport and delivery protocol, this specification also contains information that is important to its use as a "mail submission" protocol for "split-UA" (User Agent) mail reading systems and mobile environments. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5321"/>
          <seriesInfo name="DOI" value="10.17487/RFC5321"/>
        </reference>
        <reference anchor="RFC5322">
          <front>
            <title>Internet Message Format</title>
            <author fullname="P. Resnick" initials="P." role="editor" surname="Resnick"/>
            <date month="October" year="2008"/>
            <abstract>
              <t>This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of "electronic mail" messages. This specification is a revision of Request For Comments (RFC) 2822, which itself superseded Request For Comments (RFC) 822, "Standard for the Format of ARPA Internet Text Messages", updating it to reflect current practice and incorporating incremental changes that were specified in other RFCs. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5322"/>
          <seriesInfo name="DOI" value="10.17487/RFC5322"/>
        </reference>
        <reference anchor="RFC6376">
          <front>
            <title>DomainKeys Identified Mail (DKIM) Signatures</title>
            <author fullname="D. Crocker" initials="D." role="editor" surname="Crocker"/>
            <author fullname="T. Hansen" initials="T." role="editor" surname="Hansen"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="September" year="2011"/>
            <abstract>
              <t>DomainKeys Identified Mail (DKIM) permits a person, role, or organization that owns the signing domain to claim some responsibility for a message by associating the domain with the message. This can be an author's organization, an operational relay, or one of their agents. DKIM separates the question of the identity of the Signer of the message from the purported author of the message. Assertion of responsibility is validated through a cryptographic signature and by querying the Signer's domain directly to retrieve the appropriate public key. Message transit from author to recipient is through relays that typically make no substantive change to the message content and thus preserve the DKIM signature.</t>
              <t>This memo obsoletes RFC 4871 and RFC 5672. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="76"/>
          <seriesInfo name="RFC" value="6376"/>
          <seriesInfo name="DOI" value="10.17487/RFC6376"/>
        </reference>
        <reference anchor="RFC6648">
          <front>
            <title>Deprecating the "X-" Prefix and Similar Constructs in Application Protocols</title>
            <author fullname="P. Saint-Andre" initials="P." surname="Saint-Andre"/>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="June" year="2012"/>
            <abstract>
              <t>Historically, designers and implementers of application protocols have often distinguished between standardized and unstandardized parameters by prefixing the names of unstandardized parameters with the string "X-" or similar constructs. In practice, that convention causes more problems than it solves. Therefore, this document deprecates the convention for newly defined parameters with textual (as opposed to numerical) names in application protocols. This memo documents an Internet Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="178"/>
          <seriesInfo name="RFC" value="6648"/>
          <seriesInfo name="DOI" value="10.17487/RFC6648"/>
        </reference>
        <reference anchor="RFC8259">
          <front>
            <title>The JavaScript Object Notation (JSON) Data Interchange Format</title>
            <author fullname="T. Bray" initials="T." role="editor" surname="Bray"/>
            <date month="December" year="2017"/>
            <abstract>
              <t>JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.</t>
              <t>This document removes inconsistencies with other specifications of JSON, repairs specification errors, and offers experience-based interoperability guidance.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="90"/>
          <seriesInfo name="RFC" value="8259"/>
          <seriesInfo name="DOI" value="10.17487/RFC8259"/>
        </reference>
        <reference anchor="RFC8617">
          <front>
            <title>The Authenticated Received Chain (ARC) Protocol</title>
            <author fullname="K. Andersen" initials="K." surname="Andersen"/>
            <author fullname="B. Long" initials="B." role="editor" surname="Long"/>
            <author fullname="S. Blank" initials="S." role="editor" surname="Blank"/>
            <author fullname="M. Kucherawy" initials="M." role="editor" surname="Kucherawy"/>
            <date month="July" year="2019"/>
            <abstract>
              <t>The Authenticated Received Chain (ARC) protocol provides an authenticated "chain of custody" for a message, allowing each entity that handles the message to see what entities handled it before and what the message's authentication assessment was at each step in the handling.</t>
              <t>ARC allows Internet Mail Handlers to attach assertions of message authentication assessment to individual messages. As messages traverse ARC-enabled Internet Mail Handlers, additional ARC assertions can be attached to messages to form ordered sets of ARC assertions that represent the authentication assessment at each step of the message-handling paths.</t>
              <t>ARC-enabled Internet Mail Handlers can process sets of ARC assertions to inform message disposition decisions, identify Internet Mail Handlers that might break existing authentication mechanisms, and convey original authentication assessments across trust boundaries.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8617"/>
          <seriesInfo name="DOI" value="10.17487/RFC8617"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-spec">
          <front>
            <title>DomainKeys Identified Mail Signatures v2 (DKIM2)</title>
            <author initials="R." surname="Clayton">
              <organization/>
            </author>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <author initials="B." surname="Gondwana">
              <organization/>
            </author>
            <date year="2026" month="March"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-spec-00"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-header">
          <front>
            <title>DKIM2 Header Format</title>
            <author initials="R." surname="Clayton">
              <organization/>
            </author>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <author initials="B." surname="Gondwana">
              <organization/>
            </author>
            <date year="2026" month="January"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-header-00"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC5598">
          <front>
            <title>Internet Mail Architecture</title>
            <author fullname="D. Crocker" initials="D." surname="Crocker"/>
            <date month="July" year="2009"/>
            <abstract>
              <t>Over its thirty-five-year history, Internet Mail has changed significantly in scale and complexity, as it has become a global infrastructure service. These changes have been evolutionary, rather than revolutionary, reflecting a strong desire to preserve both its installed base and its usefulness. To collaborate productively on this large and complex system, all participants need to work from a common view of it and use a common language to describe its components and the interactions among them. But the many differences in perspective currently make it difficult to know exactly what another participant means. To serve as the necessary common frame of reference, this document describes the enhanced Internet Mail architecture, reflecting the current service. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5598"/>
          <seriesInfo name="DOI" value="10.17487/RFC5598"/>
        </reference>
        <reference anchor="RFC6973">
          <front>
            <title>Privacy Considerations for Internet Protocols</title>
            <author fullname="A. Cooper" initials="A." surname="Cooper"/>
            <author fullname="H. Tschofenig" initials="H." surname="Tschofenig"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="J. Peterson" initials="J." surname="Peterson"/>
            <author fullname="J. Morris" initials="J." surname="Morris"/>
            <author fullname="M. Hansen" initials="M." surname="Hansen"/>
            <author fullname="R. Smith" initials="R." surname="Smith"/>
            <date month="July" year="2013"/>
            <abstract>
              <t>This document offers guidance for developing privacy considerations for inclusion in protocol specifications. It aims to make designers, implementers, and users of Internet protocols aware of privacy-related design choices. It suggests that whether any individual RFC warrants a specific privacy considerations section will depend on the document's content.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6973"/>
          <seriesInfo name="DOI" value="10.17487/RFC6973"/>
        </reference>
        <reference anchor="I-D.chuang-replay-resistant-arc">
          <front>
            <title>Replay Resistant Authenticated Receiver Chain</title>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <date year="2024"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-replay-resistant-arc-11"/>
        </reference>
        <reference anchor="I-D.adams-arc-experiment-conclusion">
          <front>
            <title>Wrap-up of the ARC Experiment</title>
            <author initials="T." surname="Adams">
              <organization/>
            </author>
            <author initials="J." surname="Levine">
              <organization/>
            </author>
            <date year="2026" month="January"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-adams-arc-experiment-conclusion-01"/>
        </reference>
        <reference anchor="I-D.ietf-dkim-dkim2-motivation">
          <front>
            <title>DKIM Version 2 Motivation</title>
            <author initials="T." surname="Todd">
              <organization/>
            </author>
            <date year="2025"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-dkim-dkim2-motivation"/>
        </reference>
        <reference anchor="DKIM-CHARTER" target="https://datatracker.ietf.org/wg/dkim/about/">
          <front>
            <title>IETF DKIM Working Group Charter</title>
            <author>
              <organization/>
            </author>
            <date year="2026" month="March"/>
          </front>
        </reference>
        <reference anchor="GDPR" target="http://data.europa.eu/eli/reg/2016/679/oj">
          <front>
            <title>Regulation (EU) 2016/679 (General Data Protection Regulation)</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2016" month="April"/>
          </front>
        </reference>
        <reference anchor="ePrivacy" target="http://data.europa.eu/eli/dir/2002/58/oj">
          <front>
            <title>Directive 2002/58/EC (Directive on privacy and electronic communications)</title>
            <author>
              <organization>European Union</organization>
            </author>
            <date year="2002" month="July"/>
          </front>
        </reference>
        <reference anchor="I-D.chuang-mailing-list-modifications">
          <front>
            <title>Tolerating Mailing-List Modifications</title>
            <author initials="W." surname="Chuang">
              <organization/>
            </author>
            <date year="2024" month="February"/>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-chuang-mailing-list-modifications-04"/>
        </reference>
      </references>
    </references>
    <?line 1124?>

<section anchor="implementation-notes-informative">
      <name>Implementation Notes (Informative)</name>
      <section anchor="dkim2-mod-header-representation">
        <name>DKIM2-Mod Header Representation</name>
        <t>A DKIM2-Mod header declaration maps directly to a simple flat data structure. The following Go example illustrates a complete representation:</t>
        <sourcecode type="go"><![CDATA[
// HeaderMod represents a single DKIM2-Mod header declaration
type HeaderMod struct {
    HopIndex   int    // i= tag: hop sequence number
    SeqIndex   int    // seq= tag: field instance index
    FrameIndex int    // fr= tag: fragment index, 0 if not fragmented
    FieldName  string // field= tag: name of the modified header field
    DelValue   string // del= tag: previous value, empty if addition
    NewValue   string // new= tag: new value, empty if removal
}

// ModChain accumulates all DKIM2-Mod declarations for a message
// at a single hop
type ModChain []HeaderMod

// ModificationType returns the type of modification
func (m HeaderMod) ModificationType() string {
    switch {
    case m.DelValue != "" && m.NewValue != "":
        return "modification"
    case m.DelValue != "":
        return "removal"
    case m.NewValue != "":
        return "addition"
    default:
        return "invalid"
    }
}
]]></sourcecode>
        <t>All fields are primitive types. No JSON parser, no base64 decoder, no recursive structures. The complete state for a hop can be built by iterating the message headers once in O(n) time with O(1) memory per header.</t>
      </section>
      <section anchor="comparison-dkim2-mod-vs-json-header-recipe-encoding">
        <name>Comparison: DKIM2-Mod vs JSON Header Recipe Encoding</name>
        <t>The current DKIM2 specification encodes header modifications as JSON inside the Message-Instance header. The following is a real example from a working implementation demonstrated during the development of this specification. The r= field decoded from base64 contains:</t>
        <sourcecode type="json"><![CDATA[
{
  "h": {
    "content-transfer-encoding": [],
    "content-type": [],
    "list-help": [],
    "list-id": [],
    "list-owner": [],
    "list-post": [],
    "list-subscribe": [],
    "list-unsubscribe": [],
    "precedence": [],
    "subject": ["s= format 23:26:28"]
  },
  "b": [[1,1]]
}
]]></sourcecode>
        <t>This structure is not directly readable in mail logs - it requires base64 decoding followed by JSON parsing before any field can be inspected. The equivalent declaration using DKIM2-Mod headers:</t>
        <artwork><![CDATA[
DKIM2-Mod: i=2; seq=1; field=Subject; del="s= format 23:26:28"
DKIM2-Mod: i=2; seq=1; field=List-Id; new="dkim2.mailman.dkim2.com"
DKIM2-Mod: i=2; seq=1; field=List-Help; new="<mailto:dkim2-request@mailman.dkim2.com>"
DKIM2-Mod: i=2; seq=1; field=Precedence; new="list"
]]></artwork>
        <t>The Go data structures required for each approach illustrate the implementation complexity difference:</t>
        <sourcecode type="go"><![CDATA[
// DKIM2-Mod - flat structure, no JSON dependency
type HeaderMod struct {
    HopIndex   int    // i=
    SeqIndex   int    // seq=
    FrameIndex int    // fr= optional
    FieldName  string // field=
    DelValue   string // del= empty if addition
    NewValue   string // new= empty if removal
}

// JSON recipe - requires recursive structure and runtime type assertion
type HeaderRecipe struct {
    Headers map[string][]interface{} `json:"h"`
    Body    [][]int                  `json:"b"`
}

// Processing requires:
// 1. Accumulate complete base64 value across folded lines
// 2. Decode base64 into buffer
// 3. Unmarshal JSON into map with interface{} values
// 4. Type-assert each value to determine if string or empty
// 5. Apply resource limits before processing
]]></sourcecode>
        <t>The DKIM2-Mod approach requires only the tag-value parser already present in every DKIM1 and ARC implementation. The JSON recipe approach requires base64 decoding, JSON unmarshaling with dynamic type handling and resource limit enforcement as discussed in Sections 4.3.1 and 7.3.</t>
      </section>
    </section>
    <section numbered="false" anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The author would like to thank the participants of the IETF-DKIM mailing list for the rigorous technical exchange that motivated this document.</t>
      <t>Special thanks to Pete Resnick for his guidance on the IETF process, for encouraging the formalization of these concerns into an Internet-Draft and for clarifying the process by which any contributor may address the architectural and security implications of proposed standards.</t>
      <t>The author acknowledges Wei Chuang for his independent convergence on the importance of human-readable envelope binding fields and Bron Gondwana for the extensive debate regarding stateful delivery models.</t>
      <t>Valuable perspectives were provided by Philip Guenther on security gateway deployment requirements and by Steffen Nurpmeso on architectural simplification and attack surface reduction. Hannah Stern contributed detailed technical observations on base64 encoding complexity and recipe streaming limitations. The author also thanks John Levine, Richard Clayton and R. Latimer for their engagement with the technical questions raised in this document.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
5TjDWOzTr4A3mjK/qVag2rsyV7NmxgbM5wL5ZaZChcJsPfGQ6Ng964NjRo6J
XPgNauTuWiLde79qlGNeZiAdJmNxB8kYjkKfI3uL7mQqCsHHywHDGuOwt4V9
1MYOviEY9riZZmALt64WTIgrdLOINSmgG2Q2UAJoKzRkkepI6cJ6HZmxsijc
E8A1NMOChQk6dGoOq+bFuwiBrq6MQ0jnEpz6iu3Cl2xDnsIptn27udpNWOyX
22pViiDpSoqSNnAetTp6IG0wj+g8tpDgINtLw5TRAg7nR7CEExKM1+IBeHq8
RnuIPZFw7uwp0XMcGcEGe7ITNHjDNjUQC/4SN4hUBUwoId+QBxNTap69bzFA
cpk82II19g2LJ6J1QBZBhj6XeGBg6VVthzZvXV5ikpV8KDokY8+gblhnbwrK
OvAPIfjCQSU1d0g0AYENQuXrGTLiEtU8yJdqEDsRzdIdmJBIRZcNJQ38kcCi
wV6UeC5rCk7FbMgbVh4gMwy+Om2n4H/ZszbvfDKdVCQJJad5ZFMXdXGZowFL
1076EXMNXBeXX1Qd0HY+bXjK4n3WKA6Zo9gtGzSVouVFEpeJq98uwUDuMZQz
VbJmll0ae2Tvi5wjfqXQqgVJxdYdp2MLyo/ylm4PSoarUv8YZQNYBURG5JqR
VFH/KEdSqBIJlISArlpUTbTidfEZ7M0/W6KxXZhVchFOysXKKR7VEdXDJ4KH
s4/BZ7y81GkE8gl+GhGVd9WABCjeWKMSo5wpiaj874uiAlP+NwdR6SpLtPAb
CZKVtAZeQZTmCJk6JXwOWZKzypmXWAtorkVU8Lq9phSA1n7ibV3ANrZMYCq4
LYaZBi8tw/NfG/plY3usZECGkL0mcTL2VdATQTtGTsqrA8wdxM/OTppdKiKM
hvYlBBxhkeTJ9bbp3GaoX1SpaEJqUe5aePuNhAHGgkuYoLczMYVz61rBJEKJ
a/eE0SHRnBjaQ29QXkVxCWUfcq+T9+BOUfdnH8nsaOv2ksnmJZ5uZWG7MvtU
7jCUBJr0wbsfzz8+mPF/s/cf6N9nr/7vj2/OXr3Ef5//cPL2rf1DP3H+w4cf
374M/wrffPHh3btX71/yl+G3WfKrdyf/ypHeBx9OP7758P7k7YNx+FXU8KIM
6pGjZpE4Im8C63ApMRsbN1sqsnDnQOKKvoE1lOB/fGGBMioYOAmytPySY/kN
UCaaAKtwfPqY/WFJti0vWtS0JHiCf8hRatybGjsUxujL0QHAdlyC7uCYnhn0
z0QhkTOf4idFuk2JrP+vSem9Gf7BqTwRgr9YQ+hxWuZJjtSST7/iRM0/IBv1
Pzld9Wb4RSmq21Pt+zJYwUJbFhu6JjRy8axOGvqCOyVO7QR6clQWp5/33TSa
0uvx26LbHdWsUeVJGhWEZb8NNjkt95YMxx02e9WQoY22BFb/2mN7sub32PIT
b7mfeQ+/sEDwXtu+F+MeRBxa06CQ2AcDJnSbZft+tdIgT1c4wvpCCrtXx7Ps
rAQR1+SnxXB1zIIO43d03i3p4slTF/Nnno3WgJxBR0kWD3wcfdoK6BbZUXWT
2WFAep4fyD0r4ziIj7Os8TKaFg2ruhZ3In65GTR3xUAwcChREBf6wMoj2C4l
oAYKj2QUHgEj4d2bd6/Q1QUnbr1AfbsbByPJDgKTb4OnTS0iFtrI5UoofuRi
f1wjBbd5Vl5XPTYtxHfIt1GR9cHCaXQhqS0qZhqylDw0I3WuQS5UYvFDON7G
TPuuXQVC8UWcKCZSUaW1kqOSSiqexJcCDYJ9iu55uHl2l6zqkgiK1oOpd6Gs
g4M3Ddl+IhZM7cWGMmY+NpjSXkj5LJHTjj38JVLKZfpioNCtvdcrBtbVVfRa
Mb/RyB6yV83qw8VzytJLwK8gl1K5gs3zoXSVe6SF4FPbNdaQY/1jeLdamaQE
wOh4DcbEGci7UkI9Z8vN8LHV32AYmsoG4Wg+bIdfczaqiSbvmioNVqvJA4P9
gfTiZGQIpZDKjFeCCh7cVTJxYLN1IQn5sDiShzPgA7Jhsb6UpQz9tVeal3zB
LvK1yOKFRYmLikJADlgi5YF20u0xV4kfH0VKYMsc8iqMWVw8uIgYxertwEi3
QJF/2nziXJdFh1mkJlwLmFjl5+yL6hmwSc1LikoxjnJry6ICyGa7XmCJYQEU
A7TgHgE/w0PwajG/j07UtLim2I/sdwi/wYen1dJUqKbPv+jg8ejEb0B5azkn
uhkaU//222+oVATkM+51QxUj0sxGZvirxLBUUp2uW4V7JIa8tZxU9pSKEwzM
YOgYNjWL/CdkLzvWfH3h3Eb8RTfE6nWepWtW27afquVF0gEZTQJHgjXMcFQD
gtZ8gQuvVm6peGGF0zMkRSstyUE7gWLuFuiWUowXiUmuZ8kalGwmtBm6lebU
UWVQXDaUHGoKvlBmAQOkRyO86q9KyyEZnVmJSVJBnPoL4gm1XXWJQY+WmIg5
1DYHByv3oyKBbaPA0hZsmWBqsfWtNIQDWVLBCs/8bR/WCGf1PqTpmPdHqotZ
XBJKpJpjXr8pbqmvpXoe9f1tGbxucOHR/lmUPsaP7r5bE/t9El6py+uCQg+j
AMEb78vPphKp7D6SsFpJQoBqlNQWLSR4DVd79Yw5iIUNkK8VdauUEKMMTpPs
EU7SrKiqHo5iWF4pxRU15pqGqyhOf2t1jsUKD+ePWWDh80wTypvlXV+sUDRe
Figxk/Jy/sSMQ9cUp98uNA/WL8GgLtGasWDVlvwppHlKr74tFljnXVBgEWNn
K03WlFldXgDlYXBVCC99KZjkA0aNeenkypLmw+xDC6qOHt1haHlcrfvrggf3
qGmyqiULJtDuVY6E140c15n4KWE99AlMPOlHqHqREry/iSqE31noQdrVfXxC
Q/a3xSc4RtuEAOUNiJ+9zgLZkYlnxtEtcBfsEeEDxFY+TCgFljtfDyhhXr+I
9BVxwHIyN0FqPdR8bsBCGrTGTSoA6YEX4mNHznAUjNlqG9DoNWh8LSh7OhPr
1iyhUCKk3uMFsEXkiMJbf9uLL4LHj/Yq6TSQQujfzLPXsiY5BY4jevc6j5o2
QoR4lj1/8YJtg4FiRqA0toHdZhmsgkykXNgimDnw2Lk3Wc0Bp7oRrNgqtVqv
DyGEXotq8ZOWlkFzDUyUVgLvcQm8leZXPQdr2Z/a15KEVWDgOBYYu6aXEbzA
UBm5mNmHB5NUVlGe1YyH56wZxyaQMoj1oNzRaUOFI3EfVPZ8F1tQ5A77hpx7
m1G3N99EFe3iio6tHLaHfoGZg3kQ6mm63eCZOrnUssNWBpf8jUy549ju+4JM
8XHLEh3Il2OzMP58fHxfasWQxGS2PacryHAO65AiLOsusEwqJmWoIhC4Am50
JtU28M/8vCzqGf1LbZbgDggB5CdRaDU/owJrXkX1LHga7DnQXS+2FVr/3lhk
80uyfuZAwK1b7ZtwZxrdowyx7AgTImIUintZ9ub7EMvQguBUSAPfboizy0V7
1cbNXniBdJdxn5zrzBX1NEwHoWNoxJtj5hQcCJbv0dLYWUICqKgqgGN0bWNF
FpKwTviMiIMlW7Sx+HH4GDSBkKlistLmFPyEkhD6yfxO2MVzrMJJae5Z4ltS
bWPbWDxeriox9PEWo57FfxgJmoMJK2MSlNaFX0iEb4zXgZasMYeIChdPZXoW
JY2qHoFaqb5rKLEQ6V3xMxY0UdI/JKdDi+b3bXspVU3vKlxJe+GtAXwXV36T
CYHbq7q0Hk8rJvaE4NlOV+Z3TWlaLHEXa7AxMs0GVKNCYQbzy5Sc9vIHKcbN
0EeZTNzAaOVCPew5Agn+7W9/O/BrPYZrPvyOaPQZW9y/x5MG6369mYP+PPD7
kA9f2zdAjQ+HvwdJut5U7f6PH7mPH9398cfy8Qc/t1fNd2BdPPh9h7kB/AKu
/+DDJIP5vl3TViLG/mNLNXp1y22H3SARsOtn2VBchnyvi9Iw7UuKga9si+zn
CH0iDtGnMZqUNGosl71VNlGhmJpUmiW6fqZuCQfBQykRsJFgEbntSRVoOJDx
AZDBwqWrXIRMZScWDcq1kAKOBD5S24mzG0rlq2zNqdGGBsN6UcEpDegYXxbd
iopDxCPzkSauwdNIQliUJlxph8t2448IP0kkPpKWiT7h/Idnl7q9xDjVPXlF
C4LxHjbaQgtmzgZdMsLoIEmCZzZInz7X6sNrele52DtHThIUQ9vW2qgtBTPF
dVutxKY07rZCEY5tdJWU9DZBRoROeG7uqHoy5BAlq59NXDcVQhjlhm9TLxZQ
OkVScSdtp7Hwz0mb5Twm+KAQ5XYW+CylRXwDecKia9OFh8NxK4fPIicgU/Or
4yo4tS2EQNBEjbvhVXBKQcvOu9CS2WJRGx0XpWRvvwegYQmM6voJPiTrd0A+
n/WF1iee3Aa31fFniUA4bG7xpV7vGWips5DSZCPSZttRS1MiDZZUi6xl7nSH
i530+DGTYS76nyRnZgmzqTaEu4JBFP9Rz5VoTyvqdk7sztE607wK1nijQIr6
YjiQJSVmImzh705y53KsrmiXJKvrTlijcSAXhJWs+U3bwUGwtQCOL3bRCwFi
j5L5MxwAaMrLurokVwiFFwIzDNLFhh5vH9j9agv7y1E+WPBhzNgzzirtoZ8P
Xxx+6Sg7qm7/8EXzpbbvXFigseI0piSUDF5gVYF42vrgLBwquQrY4hdVKIR1
IkYO5jPNS9NsFz4f83VU3gGnR1EVyXADYf1ivdFv4cYK9OTX1bKt1XzaYPnO
IPgqmmU4BHLCYCx+AHlTIiWrKG1cNeObneiKSvUiVf+D5ysXqCeBVCqrzoEk
0a1h7yLtk3ylZhom9o4ffmyPBX6un3A4RgafGPksbMzV2COnMGPGhOmRGupd
CG+q7KG1zDJcDL7yxfI4TX9w5JKWvtTaSI7Lbeui49oduGQJWaP/3S/LBjRM
i1gCpx3GJNbSCQJvWGzrT3LmiRiXEABK5t1GYhhFGrQ1Ya9UwX/PD48ef/WE
DM15ZG0GoBZ9jRMHJB4D9aMYoPqxzmkzy0BSFG+zKYvOUphJop1LqOfZj8Sr
esJWDoKoH3gjyZ0Bi6CkxTJNiXFRW7aJOKCm71NpD+Yutkrhr1Go6auYJXqv
BvSY8IJf0bfoYcffiXuH+8C/yaWrBsbWJeCESCTYmTB32DaSQFIhT9VsBvt1
3I8YieOoKJePtC/ZzIQ98yGaa3Pf05zhZq1xzjrFMa/UrkvftovMQievBjGF
LvjRUnTDKypXl7Isx/14C8nFbTypM4XzGTctfxGz7yvSFFqHFkwYZ+PRnvu7
HMAgCFJ6cq3pXKjIzZyslcV0fvPutb5vZrXJLKIxjK1Gt4lxgjsZy3JWnhvk
/zjt3A3PdDl5pJfM9g9kgBpMWSnnPJuHziqsmTqqfZZb43A6SrVCys3x4Bft
Z/PspXsG1XsOMn670sZOpE0yNl2RiMEhLHfjS/KSAw4W2ObhSF5ytQBWiga7
hN66rfkCxPDggtVeGlPCuYVXkBojHkRjSj5ITNU2pYjlrTBM8FO0kSPlSg6+
XlbXWv3oY/gLLLnkAK6CzXD4NDUWnWbDqCYjbGXvMAHGOqybyBL+venBCtNo
aB8gFFYj+UtBXJtIFK4R9YFfTBkt/pPQfcxTokowbjy18F+XVry3ZqLeWFzm
6ln0BzlkTKacGTkcHODPjjys2JNd5XJ0q71zfaLvot5ttYiBUATqtt8S/gB9
0Ok+LfoL752NEENcgYfd2+P50/nj4GmpH7zAwiUzwy6ojp4EKmeOQGZiALH3
IsvyHnujqOTUYCWBnYQn7ZFLqddIBFEEcK74jLCoyrpc6HNavxjwMkteNTj7
2z4YVu9+PEkT6CJv3p38a8YFIEBN64qKvfLNFbKvat8QpFUi+mMOLzkWs26Y
qLDCkxVUgqGrNqj4qAcYA4Qd1ZXjacjr5EocsoiG9FtFO9vJu1R+xH490YeL
7U8eOtXBtR0KjGn8kT1NT1jjp9Elk4gJ2fvw0UiOsQNY127R6Iz4vkEhHdX8
1+AHJNwRvhvLQlOXfD54Gio0sQTMu1j9VLEK1YntuCvr2pGF9KRQBS6m08zi
Fkvjumpr6xtSEFev/ZRt+1i87uHKUIqJ7RfYzYfqhPR82n9sKl4LcaT2J4Kz
47y+ap7ktvx7+LCZiVKpQsrOQqZY221tMIudI/6Eo7A7xgVS07cTT3rPxivw
IThRNaysZvkSO1UWMw3GFr7CO0PO2MpTIhBvAS5GmWkUw6zgFFosgEiWjjsj
kYVNLgGGcLHjDLTVjOqD2ad3JTJ7HbqZhUDEYkhbmegegUN7ZC3tTkFbEsNZ
fEoklJwUm5BfoRWnWLTXMbYpthYXGxLcIdfeO4cEZSiRKcoJ7oCCR1+ATdqp
EJY6XF5PDDYlZEx6aqXdY+Q6ZgbT7wjMfC4JhIn6fc0lEufkdLFxE9p2Tp6/
f23Qvbji2Aa0qnOpoIv6Q862tQhTdpy16Ig5FowFK/QJIY2iZ5bkdEuxaC4O
vottGb8A+NuLiWxAWgPAN3Ighhc/Bv/3TMDxNZ/zIDs/zQTt8iIneNA+e3H2
9vVB+kv4qpQjtZuca0YffOe+jq88iFaeVFvetvJEIbnAF3zr3YQBjbo2ZBCj
FLQ2BuNdXj9zRwDrGR1BN/gj6IaJIwi/3HsEgiMd/U++vNwM9/xofIChrNhO
7yXX/vW/tFJZrxKeKP+zI4C3RCTQrqZoIPz2lx8Afrkv/+POz9FK86G4nPrI
v8WkdtHhB7M/TX00+iC+nHykg4PkLXQG9NOzB3JY8kcMwh9E75ETu+jgo4e/
e/nm+zcfx2/+LtOmxiyX2DCnYDgBRiBuVADrkmMHB8ky8T2/++IPiMCXPcx+
Oj/98kCnwNS6FFgJ/ARLSbc4sSTuymBNpfX58mr+dlPeuOfCT3/3c4FOcXkk
5fB5/NkFodSbPSnUiTVpPXzhlNxmbGIg8bkhbSMBZwsLHMMHM342Kc8s/z9c
2FnU9Bd6mf1Fey/Dl/6JPwF/88wTGA57QrECMNf2jJT9uGm0qMdIg/JBjSmQ
vubSuU5V3cF3dhBajXqbLQ8fx+6oY98MVHOYkotG/pgT5GL1mU7r32R6zJ/k
WivdC0h94/XRBpnzQ+aNWB7efM4tg8zfdCUHKdfjU6vb2QFrv5Ps+Awdqo4N
tMODkYCEZ17f/sxgyKd5d5vCJFJ96tvu5bOgJpjenIswWDL+IBZhzCTYh3Hr
IiPZvH+dIHrxsE9E4+E5HwRFIE+D93FtQ7imqVeGO4wdhX8TK+NPDiHmcH40
9Yjbcv+4zh98Iw3JyJHUhNUe/u6L7OTt6Q8nIL7ogOC/D/IH2ZeTq55a61FY
6xGsFMmRY5BUp0HECAKL06n6P6rK4P3D+1ED2M9fiu7404H9Kv4WLfzBM/4K
Czz7dfgk72lqc/+Om7Pvhm/AZ//X56PD/DF++n99fvwi//rV9DEgKAJXBpyc
v3jzBgEVEPPVMmKgJShu5db0DO3zXMJZv/viwfyB+8WXB+6P+vn9F9PTvJC2
s8fv/7Bul/PCGJJoLm97/j/RVx7S/z/bQwQ0JgwhkyTZXNSbqwIkqcm1r0iu
ofFIGCGkIWLj+t/Etv7TAa/A/e8ZHP1Xh/kTvoSnh/nXJwe8vORDjx/lj789
AHEY/w//dPToACXj6PePXuL/nRywuk6/BK96dfBT+sBnKHFxKY++5dok9EbS
PjCrXPxYXPaTToF80HzZAT/4nVSp4g+qnB26yajbLNZuCTPui9/+6cAZ1Ej2
Fe/36bd0xbeIxerZlErYa12QsCZZLYkOEdfodB1aA5hrY5l6EniibHXpS1UH
I3qkhOnXoRZZIzrbhsNC6V6vea9fP71rr9fafnOP3W77iRAWJhpC7GNSy0w4
RUkt2a8723TTK7ngr2jTThRNPX71LAnbp0/r5Qgf09Mi2TMpHZ7ZZ9InLa54
XUf4f9/Q47xcmnoatkVZN/boeZk+716PeuaK38XF+A4ZVvQAl/toycH/aJUl
ciqzlsQX3JJ4cJD2+CVACK4n/DbhYxRzV1sgx4NSsBIC7L69rfEf0dDIojrs
4AVH1pLqjnF/Kre+8+QFbIS6T3dqH5pn9DwqkSjRU3zrsZbfa+MuTz/BSGPH
KI3WuC5PRAHBD7Oexulb6uFjH6ndwZyyKGY8vlZbfcIi4hdLCgzv7gdiRKMj
ohgwO5fUQK/CCYvkdJYK4Sh8AYz8pRWKylqins0wlWiMO2kJy6iILVquoERa
F6XCqKNDL2gVOnylNziDmQS5qSNBujMpoW7OwFTrabukDay4aGuIeoK4PMV/
erJ7830bYdDEuKZS1GPAXoT2KVj6MXyUchfBHzZu9+rXYqE+pgjXiyrqY+cY
9mD1B0niVlGzDNyZeo0sIeBm1yTYnRxDFpGyQsxfySQRJyp/v9emg4ODPfTL
BWP0MRqbgl/EckBMvaMmFCyQ6tnhPPteLIZIhPwyq0Ga3RCGb7seOYBwF08e
jfI5t7Z9BtEDHxc/7Lz0ome6NV5Ejy+y6EtKKY2qwJJEGH2OWzGZ/abF16Ts
uUva7Jd3v+wJe4Xf/WTfFHwD0gn4Tj8T7qlDUxjJEPZC4BI51xUnEQMygsAd
hxTdV3zWcYDMlVa5FzGZRXrSam4Iq6YU3cXVkAw/I2Lkoq1JCjmAGofIvxH5
9esk4z11xt4rGV/pr9Qti2BjM/4rFcBRJQz14l7BIZTdvTiNC1OYn8Z8QIlC
zHOqKjJEpZA29shKVDrPhBFDMTH8iILCEJ5RK00MfSysXOKR4BUJtkQg9Qds
/RUEYDZ3uIOTQJG0IpJ6lmTIrOTDGao9WEIXXXFZcVFQkd0U0jzg87QG2y5Y
4jgCLUqFYThScvCcCMQqCELukzVPJdnpTEUnYH0KAmS1jdcdWMdP0g5OQzAG
9egD/JaCXNgipRB+ac3Eru4sFMLOsnNmcPjXSxoNmvOYPH6PYsGkR0haU38I
RTIOGBd4wtBymJKMQLHkU22aFbf4Tp/K32m1zFwS02QXtYGvtl05KiAYSaev
A3PFwBNhxL0stu1W3Od3T9bCEoSkfcaqB4q+364FACvOtGKy8FoINJQJdtLn
MXWAVZ8k1EO4UozJFJZnlhGuDvfxwxc2V7ueh80JslFSDzznNIA0HFISO0yj
I5g+WmCyE8/zVUB+YYAwKk1MnRpflz/DrNHSEUU4/8T38WAAFasY3J5sV0tI
XfuOV+ezWDUH38SpSNen6e9R5FJfRm/iQ41UmJ7qLB1QOEx4dtq0YkjxXPXe
OxxkX/Xea5DYlc/cQZehpF7qXDT6GJ9yYjFxnw4XvLfD0K5p7rh+mKzWLaO1
l1axheptq0iA+jRyZlD+ZB++eI/9YNn7L0PCK9MZWoTGzw8oLBW0bmUqVkP4
BaZb4Ulf8i0I4oGdHlkGQehzxVFp00XTQQlcueSpOaVjBkEQlXAS2e4HBz9h
7jPgbImTRF2qBGRMWpJAC4vocGcIOhBB2A3BLcGKYYYt823VY0NODl0ckVTD
qjl/t5rS+IN3XbS7hjoK2JcQz8j5BB5waAK8gWr81Ca14Vu/iUZcZy+wKv3g
IPpdrqujRL+Ye5haFrSfQkd+gRcSW5nj9KvYaNq8rcLi2Hf9Yn0A/PHoO/rT
4Xd8R89Eh3Kq98EHDpzUwXYuPw8P7vkEyjm/U0TA+AkUeTrjHO/01nHDkk+d
Zx8w+Ysr+uVbOJOc7MT7TySTHBawqlYk2Wghtgwyx2QRuKn7LALnmudvVnwK
/xtNqcL3O/8fXgHhZEqdKtwk9tAojAh1YawQNVs6ADXv3YvOkKrYchVsES3Y
TarCk4YXhfA1wClnk1KFsXa94jhjaimgeXO3jihOLYuITbSXh5IEwaSJu5Ga
aF7NqABIjUgk6WG3keHoqQoXXtMvR3Plgd/094bPHj1WhBT52OzjYEXoTXNv
3vlj/uoPJ29/PMFiEaG+TbXZtHcwTPw14ppNgeOpmz3fPLrthfV2+GVfCy8E
ySuccc5DFlD9oABUKwAMZzyP6lew4R8k3kTSGwnh6BeJEf46w01OffvxPV7+
K749+e7Hckhjf5/yc1MVNCFLlxZ/KdbIiWFo0kPMfp3JknA0w7Mv+eE4Javk
8XradfAWwZ5ooUDn2HCr8EA06eLzEqvgpYKfylwozlCXzeVwNRv1v2vFO9Wt
B0RJRkgwHMkR2MfeUj38qgDk0r+ruFVAgoHhHO/Ha4bxkZ/Aa/pNsf4On34o
d87zSAhLYD6/kwP3POxIHgaP6NGkXf29D3wcHjhcVR0/71c9jEgTsQ3oZIUk
8XSlQm1dgiXn3FQNwihYdlSuRvhzjV6O9DrNJq2JmCzZtiChjLSBgvkLLuSi
YT4IAEgmcoMmc1NIaBrfw97e2HsUJG+BEZMetU6KzShMi3PtcEoZt2NFigZN
Thrt5n/LQYNCGk9wkp58O9iL0QJ9hzCZztdlk8TcCPlKsC4kyhqhRIZzp04/
rIl173BBEd2I8mtyOLf2I7+wsu1+DJUrgAAYOWQEtEmcMXYnuZ+zzv6Yq72X
TwEP3YBVUDvwK5FrDvvmnMf+WSGbPQ6jNDP/C5GwAoG3ruCyQpBVpow5YFAH
OGLD4J1XM55LaEpdu5OyyxbHCekcopqFmfnJcHB8jThEI8YGsDljfLyOsrQT
+c6Q2PT5j1yFaE5DcDnWETSsa8pcwyLJdLJ+3KJWz9oQlDycCXdwrezGDQjJ
TXvK47FxAqr0PfcsxwPgWvMOuAVcS7wJbj+6bf67jp6gCSdoYqqBxX8/HqMv
Gw1L/4EVQTvyDMi9d7tncjeFCHLlwhGQlb+IqA22iU87I5DYALFADdjxPKrQ
ghlHPHgaISlyH81YXm3BycuxsxC+RZUFeUTcIbRhXdJ/zE+7qu3yEGjGDhLO
Yuev23Zwfn7BuG8GytZbTJVjitxMMZNzpJYuXorUvkZ8hrXBMR4Gno0JUEQa
MYiRPdcautLcNdshpUVO42gaAV1jI4lIS4lZfKDgBlXoqn2ikMF9BHPqwuaU
U6NZXBz53J9RC6Cok4HKKI4bgrBHmCTS6DfaWGGKDDEix8E16p0b/EsccNQO
Qwl8a8ybsSFBNO9y7CEixBu9QZIh43QPB3IS+01fExL9SBYUZiXmm2n7E2kl
FNIaVuV4UuJyYuB0If37HLetfJBV5sSC0BHkeD8atkcIZiVnbXe6EIR5BiUt
yUsOsUbr3UaUUoTXsmlM09FbtlVXzK61gQBd7BHkButDl6CxbMvL8BukomBG
9kMYRDg9MMFEKH+XsPAQhpjB2QmKE9ulIpJNerI0MjytosSyKzi+xUE5tBot
Xo4g43u6Syhgt9LWFIk3VDbxJryQGzhDV51WBHLI2GLVScIcJ1uw5CU8CBlb
HHWRTjvqkf9kiLt7VLQ09uPMqNLQmWTvN0WAIIuA5+OBszxjHoGBldYVc05i
3irc902LQ0qYCPFPB5/zSYMgLYQa5QDKPmT4fNzGF56oYNZ4OgW4rM33zm2O
m8jpSmz4nzQl87jUPTMGH8/ZPzUDw/r9DMveAKHYQwlCTQ9L0wKhrIvmDnk9
VQzs6CvJi/cWnqVajz/tAffupvcpJ02fzI7ZKN5HQqXwgeXIfBXpxC9FLJ50
0/3MGSoE+NI4smYrXiZXKXnxbO/wIHNrHKpJFc0QgWV1O3VaVDLNLHwXHhWg
6ptUCsDJ6BP08HQgi0tUaYzxLkINvedGk3JUUyaVJpGMQNhmwGRJ0v3835o5
ko/elT4CWwG1jPEqEnIcqckWW3gBx1d5vmjv000OJpzmDmvSaQtaFf+AhEd9
bPfPPgYB726Tk0VnjB99agPkML6fzpTjWafUIk+M7yo5R5glYCrhn+6GGt5v
5jsIbDMiCrFQBCdpGo6Lx7L+J44BweFrPHqEkW7wByxz6SMobhWI2AHqnuuK
M0YACRVV8DD6Hw6Z7BmrxMfp5XQM68cYXI5EO3ZF5aK14NAalD1Cz9vPXHJI
mD/Y743GPUY0RFbhADovmkFuVH1gdRuWGw1kMbNlHX9V4BaKZJ6IPZGRzTFG
aaBgfJ3MPuJvppV1UbR/fcGqNWAhzXyGJDKrk83sKWPurxS2I/GYWajHikvu
IilSpmInwS8IA2H8ABaZD44DG+ERzxncJkZ3jqxIMxYkBORRkImkw1cRMkiL
Nc8ZN+W9K37FuWHn7/svtcyIAWpoyNWSohCM+tWANKL2PooFcAWplnz+wWMV
vuRUNHHmOQ/XilaeTvzdlB3SXLnaNxGMapJu2nCANOABC7flVUrxuRxGhNSC
npq8QjvnWiAGLIUvaXIQ5eIFszFFxWPylEuc+dAKf50ku+A/8MMJ5AVJgSbA
gXjf1Ywr9l4n8FrBzOggVFpRDVZFk2xoOLGVl6WpQI+UnE4ImnEVFjLnrhwY
mE0YEIOoJ36QWs5gla4ofO8dkcYhqtWItGdlP2MtHb+Gro8Od54c8iYSx7kD
3u3iiWXRJdlAguYuNSNc6XHGFOFo7HJERfKRBxlNy0D+QoisLQ62oKoHiQmH
Uq+WfBUro3n38YTKdc/fvX5z/u8vPrz/+Ob9j6906LocY+Xx7lzAK3gVVc9K
7Dt9KJsKpTrEWpltbzp79c+vXnw0+FQ9Usrj0JNm8dMXXfupbKgOZPK8DaCF
lFNYRtX3FODNnnz+LIrFlcbD4TesajZl2dniPr56d/oa4TFy+CLXr6CcKbsO
izWlBj9mPbDl359nQ7UuCROVhQBGfuu2/bTdTCzoK1gQKui2Q6tJZ3NPL4zj
KkO4aL1jf5izuzbNVlJpo97il+hdCKCOoffK1aUF7FaZiDr8WqSjPDHgS4WX
EyTuNRVExKswBZYIuhie+QLLFshMrdPJ2DaEzemHYwx5oOZCqxPfqjBVGB6/
wQ5SDL2Kj8aDhhhZRYrDFKJycAXI0URITaRQyuG0azcgcq0y4blTVN56FQPE
KR4ZZYtP6VN3FS9vj/qZ7b8/P/psT6tVHqweNjj0jmSITjodcqPba2iUHR6z
nuKEBeKmuTGsQTCSPP/R12nwFdvuuAVNe+mn9MUl3y2H+ZnoIlOCt4VvXLBl
rmaym2vpjYeCM3Gks1Hv+Mm4Sx5+kIYOGpVLVEhW9f2EfuPwifnjwDth8ElB
1CjcvY/kA8JXEUperfquHdplW8fQ8W5Xc7VyyOHnojs6RODddjWTeVYUJKY9
JmjZd2+v52Toms8QmCMyXcCEJ+x3zu6zIFd9HI3jopFMYXuGH4cG350HRDS+
42+XFUXUsCwcaamvBFczzDOVhzLi35RgFTY+iQ1TuKjvbTR3TB462nVDAkyt
J9aI3uhoSPXBO20lTACmpmwIcothV4onSSMUKo3R9M/gWYlQshm2rg3tzSDv
1Q3TEACyXODVEgKjx8N+4Yj/LLFEZU9twcKQFTNlNUyfm9wki5UyEQNRAya+
eT8bM+Pq6G9tRc4XO0QPcYIgSPzJGODj+ZP5kdzlx0D5p0T52fMSrM4Ke4Jv
YxC2IkU0y6BxPInaz/ZetpKxKFSEylFcliOZwYExZqqR5ciTINUHuM0Iz0e2
zmyiAJyj+irDixE9u1HzTnInl6pQ6YlJbDu9AEeiV/GPiiaXaJgc8LFOoeOZ
ZE5wVBehAoQmB2Yv32HOUGRHdeFR3SJUSWLgQkabw2EE5wI34IV6V/WfXGad
FLofBWeR9Hmkn+NQEnEOjwQsud7+umTKwCLeKNGk097HcwnnNFGYIs2OeiLX
mgM4/cRNbZwtQTE+4Mwei1TWdhF9MI2AnxtkXdzbEJWBjAlckzwR6zxhJ/9F
VIp5ov0jcWLTwpce6Pns/CQ//+Hk6MlTurhXq6MnTw6/1V+pULOOlP4X9FjN
xYm3MuwweYmq3MNDxy1A+z7JCVxQgjwgJdbyYYRJ+Hxf4W+LBuz6nqAdvdXv
Ns8YtjwTkDtS6ZFCANe2kYlDoidKX+sSp7NbEnfi/Lx/DcpjyP9jWzTDdh19
RFqr3DlfbEnwuAGejY641uZFzk3L3SIfhkMYB8+1yZm+TAVeMr/zo+XNZMTm
EmuclvJ20X6bLYWBOT5tw+6t5jxq1AjVvVKjIND2297a9RMK46g0KMgOnavB
15nSy3RqpOSNQqu4Nl6Rhe0z+nwm0lyhANGKtLscJjqwxhCs+/o7l1dtxc7G
LX1cXN8oYiLNu6vdXuDZkObU/mdpLpNXaMT2Phu48AfDjTIXtXgp3hdDZNCy
vbgwyhrv+GSDZZnV5+z53PDCR+8b2losZRl4sCgbsl5QjFl5jAxe3p/zdwV1
2uYq1+naYLnUp2NHigGs8oCrBBT9zQINH3yzjGDJg8vcDzy6gEE9+5KE7DXN
U2o9AFuCaJyd7zlohojnnkAcq5MTBq3xF8LhEmwAAXzzy0p+1XVbYw8NwtHG
hxSNj00rcZU5qDJEpFMSq7VJdn4+bwGUL8J12wd497sJh8DNP4N++rPqPsyZ
VI1MFcDieo5pxGWb6eRgr8oXflt4Z2pBjkbkquCKi4zgEQY8rQ15NiR2GaHW
qouMVMnJ0PhQsCJOQ84fb9pc9nLKf1Eo/PDtJN3GpQY3bVi5VCccIwR2FIoE
r31LUT1dUcng0TQxlyHKy17j0hyOVknhQwcU7YuD1Mf/wIB0oiD/h0ek88zH
pI/1jHqOTfPDRkORyEHs++A5/bKgNGk+RV08w1CC5HDOlpvhY6u/wbQkmb9R
APh/WLx6Kow5FaKm32FQM41pztKILRVhxBFb7h5MAtyY/yQ/XlRkEvf30/42
qCq4QoVvSPWocFQveN9+iA364eJdpwRs3pUvRdwTYxz1zwKf0sw5co3en7sI
M/IDUeoPoSwTQS02A4reQvOssGwtsX8W5z+SGocRmMJ4YgAuQF7OTV7UE4Lz
tYAO6hq0GJGBws2UG14E6U7WDGhBROeDHEE28Ovbkj/Gzs50YzD0vm0UtQzT
1ovSpYkKx8o41SEZnxDLV8FXHXSk98xKlhDt0vXgyLdlWi119BTWeCMliJmN
juLmUC+lYtkd8l+xJCGp/XFKmmB6BBHuOQLLaa3pVcATXiUDgrwYQh36C8TO
XngVQ5oIjbCWXS6Lrq5CSScd2sHBizCk6o7JZ0iho8oKLWmURAE3Hki+qhGA
fQz3jpdqhXrsC+2Rmr640h9zijd29ktkxrTYITNfEiroyiuJ6rRBFcLp6I/k
e/pUP6SQ4wUGoClf1NCNVfT7Kepcu8atGbLeKVNFW2s0pAlspFwk/RLddZQW
mM5K4IlHXVwyWc/CkyDrJnO0WDYFT32/93T0A/90qNp+cobLnirJW1ATEiif
pFAZ1l3WF5YpkpxKQKt6aWUfSVPpSeRhoWeypKiEqVu1ibkVj85QQLUcCFhU
0xL1yOOBxgZxXHubTBvGpCZN13RfsfRetKtFSX0YavlEayo+CYP6xzDoQ4JT
xrdmXSe2/SvWaGHIoIstEMdb8dfxJBmMYu++zPtGc4DSET8esJFCx0k8XfNt
NdbjLpFCxLWkeDw8vNcRrPGREyWGcUhlE0ogadBJS2lLRuvHYntua7ps+ojG
QrUxQ4ndUjFMcgjs1n2DyGk/Xm4xsDcwQSd6JtgGWu5DIZ99DXclepfDLU3c
k/ceFUrLJxJNsqMMpkainBK2UYDmPftLlAuTW1q2GxrUgjl31yBv7gXPDnUE
Bn8E+wAJiqQQPnm7qctoC4kj7ZdvFg7Ni46bCQgpLpppx9AbuFXSTZ2CXmF0
USxHfrFVSju3NK2WxvZ37WOXwjDEEoAfCHW+x1KsUvK7PBkCMegPpsrlFKhe
W0bweWvGTjvfwfLA9KM2AsstUp0hO31ox5t5LtD1s5F7HbrMzOaJ3mzCzbNB
rkgfhJHwu+D5BcqRrhbKP0gY6IL6mKZeQsbAWCCGQj2q64/utRqIWfc+TQXs
3skBNFlICToMZ5G2z0GqsXvvEqHDm57o1AJoPs8QH5nQpl2NfG+kOxt7Ic8X
27MLg2qhCoFbhhXM/EzSe5h7kbeqZuuULJQN3HHKFeuQvdMZfBegK3AdTWmI
zo5E/Whiw25SC8nZxLPY9OsEcWWTZQMTqTMimSw9Vz8SO23RTPsqJvoc+3i2
nM0tRNi+t27DoeeJcK9KAzEl7l5NID+Ro0qdpEI/6SmE2ZjwS9V7sYIcKeDE
2vIzriwbnhjv8+yH9kYwWH1Zv7n3qVIMeEoSU0ddJFX14PX1vO1CKZd6Hhlv
j+1oBULBi/TtoPdSm0QC6s1kNnNN0vIWoRnTdtWnKf1xjQzLAMfSbmgXqssG
B5+dUEgktHCMX6VDRPHf2yZ+BbyXfyULsVf2ouK0zEGyFvzJARuRgJEELBOz
uJX0EObY245hnOa66tqGElc0G3D/nxXsRaSc9vgF2uXkLtllWMPX2mxHCW5b
Ino/3XaMoTXCrhXQv+sofxUfUdwb4E0d+sKeU5/fKtmcyFIaB6OZLIpGYHBa
HENW1xxsTM9qmhiUqMLaVewFSpqmO+NnPhaqu+9YhVh7Sz1YU0gIQMWhY/RJ
Ttt+wLE1/L1/l2g0A7VWQIpsj0ttCI05Ta+TRmFytVdX5iYE79ASxeDiKyCB
1VzVSvSq0cqUBVqFQk0gIiohUbwv6nC9hWX77SU+muVJ4a+RinJSzTQ5MMjg
BAsXDEjEClFWaCaBl6wIYiKMNcVuEaERTnHuVXmugJ1aVxTPogmtfbTtAQ3k
i4obZBDsgko/pEHAzZMMWvk+g44EydHOjV5V9eG5Wvh0USzx0LgoIzlHmj6F
v8MaEyyUnJ48eNv28cD3nOptZjbpYSSFy86EwcHBOU4jnzKy+6jcZV2v1z9H
4BZ1dXkFJIH/P7pz4oQmLcp1s0Q1MYb2OitYDmsU3qr5yCiNybMReYRRLySp
bob9lXX7U7xALU13g2HmaKjQSFrnSaDKMv3IWOslpa5goQ6LFVBj2wh1CF7E
+S6JfBDwamRl6Dg8bxpPR0NimEB4qIUtYzM2zP9NbHid3WEZOdcCtedx3ghO
xnjf8bRzLf1LwhUT5X9jTXZwcFLTAQ+kzMhJmyAEqTKJB3IysvAEOakRyUMd
iybVrTONGGhVI1cdRAEmuigeShqXh5+9evHh3btX71++ehmsPNxcGwm5Gyo6
wRBmwwlp2vsSdXESXIu2qkAQ7QZuadtYo7MBQfyAiGY/hXTOOQqmkxW+Bu6U
UQ1eytGqWy33Ig6zHpiVINHcVZcholBqET9S7I4EX6WIk8N8Yvoacse9aBv9
Nc18YAUinuZoxjLXS4f+/3HgHAi6GrZs9+EntDSbXTCB80IyluLWaNY2Utfy
qkVhIkFCNx0kxrCPikEIXS4cnMio6ZOrtJg2/r7rJhnlazgqnoYSF2USudbW
48CkI8BaLlUFL8F6t9mnqy0whBsmlTYCEU9j7lNliIZoenAgXhADSOAG4zhx
HEqJSywjYsGv5s7Ttdjjvk3GEfzk6mbJFGRQvmQPc6vs/WifsDR/LpYKrCqs
+gJlkiZj4dFclpE/pzqG4Hcp/iyaFRdlYXIGEW71Q8Fc5FbBu0pNpkeaU/Sa
wrxLXprkyJTd7QJd2UY8zBjr3LeaGH637ToQs/8CWg/45WaHUZUcD7/zHmf8
hJl7NRXgLYN/Hr8qskZYbLdiwceb0orh0P3tIwJWJ4pnZlnWKcCHUfCStJsi
iR/OsvPT1zOpGUb+g//CIXw//wkc/GJ302J/A5IDtmJzwgfxn3Abx8en7/TN
BVaE74l/61o5q4y1TvIAep/6Ibmfhy7PscYMiftnTx08lmuIDWcE3tma6rj6
Y4lbsu4zveIghB38EnUzL9M+rAWJkh8wFdBzdS9XeI3I198Cg/yLRyytB3ir
TWpJYl0q3mCr8LAx6EHPLKSoS+XnjVUY0wVjQD628/Sc59k/t1dN9ra8xrq8
qGkmUOkkcQaiJHsTzhLP1AGscZbYe3rEUCXW7aBZOnn9Ve/KdsxBD7g4ufgA
xUCVJC/+naw7GgZAP5J1ZsnxlALUgIpKBpRw6PaAdxFLrWSzLHxKcLmT1aqx
wp7jOeKugZtBPvmHC2xHAw9jvSbIA88kBBjIA4SE9XDbRDc0kRxTj3rY08dk
L64aZibG5Rtzm4k7KfVlcfe8g2d83zarG1AoJLPYFo3CZDGNzaal4citA+7A
Ag1E0MI+nWHY9McPH17CNrcLhEt5SJXlN5cP5ZsP1YCMN7gCN7QhJaP9SpPC
PuLswM+OycMYhOQNXsG+YybOFUjM92kgbZmJrPZwfoeaYQ+ZQa8bbWEc71JY
rB8T2i1pJLoHN8B+lpg8ToNTqYSVyIUwqcQ+aeYJ2jVxOtvVHnAIpS91pT6U
IXUO1Ohq35BZKFPKxb2Ei0hdTnn/7o7ZWTRYNi0aLziI0Kuwq5JKLhM8ew2E
ySL6cT0qGDLJ8R1nHxQ695QPkspnP4Diua7AvCZphM6M1s7auVNxOEheOCau
8g9ngs0qob/NDnQU4XZ/ocqiyF3a1FumJT9abE/T1uDKbOejtyh0h8HPm3rN
xS7kxl1tkABjmRV+fD+LLZw+6Q+wWLVQx+4yicN/3LtwKXZLpx20tqN7RBN4
8lvjR5etygEtC7SV8AXpBLb2InTxilGhCR7qTJM54gUBLWJN+FLnxo8cXvUP
KtBoQJacj9fyWEn3SL0Y8WxBGVIQTskoObLruZCyh9/0F5ycqSuSWm6IhtW6
UasQFnhKTBM2lXYIanTeOyj7iUhIw2bTWcRJLACfPm8p10sS2Y14cSUMiTZB
7Utd412KLzSLesxQzLs+7+iIHNiURs7cMihkSKkHPj8ZOeP58ONIycmyOEsl
J/tgrAsFoae8IMgzEErgVGQKzWR+dhhsZnC7BtH6IFg3DwwDtG/rbTDzbQ4g
e7tdu9hKEaQaViOVTMFKzOzwz/MHKbf3V2SHwuNKJGDOMoS0Hor/rkKbqMCz
CpStAG8UsTKFFUUPkPjFRxaKCcyi9OV5btQ35qQbqqo0XK4PpWdNjCJ03NF2
4dUSHpVK3uRlei6zdK6cJ23du0ic/aKVdAOVkp4RK0nrW2pxSLnwbVKwSl4j
4uvO7r2ooaLfroFNBZA1krGYaFUm7W/bq8GXkgA2O8UPezwZb9Al/m0GmlYi
7g+DsFv1ZlCAL1SgCD6bE/hsudJTQq/SCn5Wck4b34g5oSHyTJ+CnaA0PNha
bfGhU+MufXU544MZct/EdKRUfyTFqnzRFlrW0jb9MOJuYZdugKSiZVXYG4Gf
KRk0AQ08+ZODOBxPLb0ptG9rG3luskQukJUMLSqYK++dRiDo8+x9eCnLJQmL
oELYdhw+Ct2tX82xvxWB0UI8O8SHsXsQGFp3uU89qd549+bdK1x1sV6wCVtu
qrq93BKOUBE8nrCiKc9Fy+g9aDNW1XofPHTzRvpLwEBCIAjhrTtuR0cPGosi
Ky4eM0MCjfgO3HgKZeTxgJTFtv7Egj9EdXH7/FHiXYYJ42bmnAoafvj47m1w
QvBIyEMhy8ggxu2UKCrgj4mQRDXj+52AaLLal4ZOFvz8Wa5bNO6SChC9lyuB
bKFTH8reJakrX9rM4O6cbvSJv4BQjhFCMMBp6JXlpi23SgCH1GfNXDouIxHs
aywLKNn6l2xRhQJEdJxKs1CPSaXY0pyBzahMwNjrNxMo7qImcxPJ9J4EGk6b
QkaGOs9RuKZtcnBwwaRuSi6BrIIS7CUupLotSCN0alHzSdcM4lV0i2og5CLt
ixjVP8eIt8VK4GP8SN159tOeGCddbogE8UAjv3iVATypkhrkOWHk12xln0Sj
hNGxRgcgwDDOFMDfdpmt0bBZbDGexNIxbbmQuzURiUF1eS9Q02a6Djcs0a2N
XWwDLTh0NXC+8TjTTJw06/vpbvSVj1Loj64g6jtvCXljKbG/nBINplhBND8C
Dmvl0dQCi7WZBMUOIqGX9jG2LLWkH+w2noyIfaP5Pq3cG34ma0HTrvRw1s50
G6Rh6C8CtN+XDoyTYScoXoqzepOVDQqWgzjsHK5YUuCbNTpI2wURsnIRCIJW
m2bijWApC4Yv3NcqUUOhiqVirIgaXPttQajdLI9sfF56VnREfpkEVwl3z2ED
Ac2RhJPNqGJ60SCTuBBB730VYXq7yac8bFyiRWD1CeXY9eZyppa9J33NYBJp
UCBnWmEkjNBL1O+/bmbGibsWdp553366D43t2E07qBCJdJ+3YNW9TCb6wWaw
wzqRVuyMu5JK3zYK2q4veSped20FkeJfpBFuNIDqmlWFHat4rzb7KPeAsL63
dkDJGzTTQqFn4vDMyGOYzqQ58JCkNB3RnlHh0mDG86QK0g/FzEH31dUnH0ZT
JIaqd/XnNB4AFfQslTKmJX2hQain40aIqGVW70Rbp1jcYiH8xWAl4G5iBCPd
YzuPTs71dNBbs4pqawaOKu5oibirI4LXrFi+Vjel3UlR/DbtmaJIyp5MoR+t
7AvdQuzH4794uzFuiElTIh6VAw0diqX66dxsJCbDRjT+1lsjE/HWOVZPvK2o
rJxng3idFPQQMoFjcG7PG7y4Y/X6GWXTqlrrCJFI9jusXFXkrhgP5DlyPlrz
GAhFlGKSoHDvPwbSPdTEIbrvvYJkB0+zl+mp/HgGWStX1ZIABiZoOjUzrqSI
T5NTrGqon9TEkW0UvUaMb65L0jGhPFOKxqWzXnD+I1z3yeY5CWIGbV3zzWim
vkTnccnPL8Zh+aSw5xjhlT9X6+1al86BrIyiHCi6pgqX5R3UMcJfpkWoZOMB
DWRXtBsBueDH8nQfeVWEYrcqKQ9HckgzGUlyqNC3XGRPHk08mucxSESLruhl
e+7jeGvwM7YG/8Bx1MixsLlGWpm9UnT0UTGUlKt46G5encdPqLooxoFxtQ6B
fyQCGE14oPp8fkTVS0Mh6Gf0CQM+ZWIvGGsZNaUBnXm430bcFaBWstN8NCBO
9ZoFwrg27pqJvaMH7Rn8PKaQ+PWwn28yuj6HcOVCIHoqdXkJ97emkdro8gSt
hn1hRZ2Dw12vQvsEmGlYki0zC7/Kn8hLyO3DB+gyckEx1PAv2vYsSpinqeS1
I5hqtjxWZbmxb1NnxlWx5RmBPcdt8WJ0vtsA/htW0aDB11IfGBos6qYCE8R2
5XzEhj0KXTSWdwOlpO/Jh/Q1rileVUA828KFUJoQSed+fN8Tvi+Y5hxPq2RD
aTtUNePuUKBFhFCRjpO/bVBCuiWJy443NdoLbxOu9OlX//KcrQX7MO9s3270
i0dPnv7Lc7UWtdVIkoqgWXhTeNlrMnK1jcxzM8iHQkqDQ1Wxu0h5I4ERqTR1
GRs0ONgq4JJKbxHoEcipoousl4HPwTukXfpNqfxnO10BTu+63n48iBNr6pZU
eEs8xDEaXsksQ+QVLtokOwW4sRGhwci6hMSAeHemCRn20WM6BEtVdBkHKDB5
AWxOx0qYNg6Y2LlcmhlubknnR1jud2qWY1eiSShjn+nSSGZsapr4AOpTq2q5
k1ACzJvgb1ID03Iw3WZpLpNN4v9SyCh2i0jyXHFOLYnIKPuJoaFIRfwAWmd+
U60IqiwnKFFO17PVjteo4xz2EoBzqeCk66K7tJZcC2m7SJy0uiNaDgkS6Ri/
QecZq5uaNiOYOopqorkPvLLrKzpNc5GE6KyqkD9q/tkOxVUoKxEd5/MyEsPQ
XBLfanh8SCyBCjZ8IcVIkHSwH6KiRbBDuz9wgu1IXK7YdjSsT+ausBMIhLHt
lGNVBhaL9pqx553kqBEvAzZc2KjPXjqNxFJP67LMbBh3EVl5w4rtWTSwrsrO
RQotqc4u2zyxkJXc4Nqc/yHbcEhLFY0WzgW8z7QwXZIY0s7oNQ8ReSt8j+q5
gA7eAxUhiBt+m8abwpHI74iAOoxgUIzV3sTqq2mdviV/cdcqWJGYMhqj1P3j
O9ncwox3CMBNea02oEb2fx/Pg2HHxUyzjMd9XKCk01KPUSy55N6M74I7CGxW
K5elDuAvcPY4dzuVnpWm0SgfG9nDJXXBPOdLeHH6Y7bcLWsJg0WRBUpbYfXZ
mtGHbP7u84n4EMdjKSOAJ0bV8VjIj6zEm8v+XHZtTjFtzhqALslb5JHBukYn
Yq9Y8s4P5w7Usp55n5rHKOI6VXUgxmJoqdGIMmoAwhC0XiGqDtpS+lg/hNUe
WjkJAlZQC3FyMliC5VyLXbXK1TnsgV0scFo0BG/EG2LTqnBR5guE39MgBqXQ
CmqWo4VsShtbKNX9NLq2pzj9zD2UsaAJYLtcjap1xl6wcY2ZGQafoVH0RIdZ
dGcXGwS8v0vybVGtlI1M7APiLcixvvB5K5oHYukkZE/OQpYULaULJNMZb89a
L8K6SWPlZHSswVypZLgbIgeFeGQUV8757RzvxDAWMGpX8rrwynJ+hF9X8ri6
LVB90bVRWNEv6Mmj2aNHj4Kd4HeHq3TP8QvGj1n+Re8CHGP3cWLJtiP9ooii
vnOVs8nxvc4JpImrq6lA1cO6Bjxg6ipqqdQEKVrxJBZ92y1YG+OeZ5QH1g+g
uDfUr3SEVU8hFGTQjpVEjFkvctOcGaSZHmPFAvrqD3TTYnOjNN9zX25LbNdJ
k9EqaokEG7bhfrMcGHld9aOJRpoDndi0L/HcNgTZTPhXFKblW3hzfipClop3
F2hBU7R+RiN84X31ztV+tCz68FDWews2CSe0HxxCTm6AR7pdFg1cpqxRIwc2
xCB78YjqECbyqRRTRXgJQJFYcXlLYC2OcfnofbHC8wGPl+AY4KsShkjkRB7Z
OYuSC/XvpR1j40ai9nQwCl0MZyxgpL8R7ZOdlbnOGWYYNF7OC1PVBwe35i5d
3n6IwjqBE2WHbNk6q4UR/mqLpzu8O9aMnAvLYVmi7zZWI0MB9WZVS9sl5jBt
G1JuKkhc0wsxYdmrUeWME3Kqo2hTgjtBss8+DudyA1y6bTRkgLYWMa6L0vgc
5LJsgA7afgq/Ag9GpjqTX4iv64rKyixcqREY2FsElhjboGiY8PV27np5QpEL
2eFYV/Sf+lChq8VRBDbIO6KIv+Anc7J9DyRuiUYZJrv3oh+j2N4HEn3kM3md
dOY4nGMyvrR7zP0ed93JtDIUuBbAKwjYnrb04uzta96v1Nu2ltuySaDOq3Sl
HriZ/KYrNptAl8arVAI0daCYACkRSJterHBdZAKFj1tBwUy8PGJB9wG6gzjh
tR86WyGwA1nCxxdGBLaFyuL0rgbf3E0g+aa9Ael1GcQNty7YHOHxTNA59oGb
e9/vmuVVB6uUFWo/v1V1hIpSfMfkqbtcWlcwsK5AkgefmXBdYtB6CvIB5fRh
VJq91b9hF1WZVVGtTrbaluz7VIpOoCkJZydkb9CJQJNsWc7YU1iSMElLSDUC
4YrIZOrnuWaqX8TVfyg8fTnjrRWLQVNZ4jspJjR5K93qcSVuV2KKdCiRiEqx
6VjmFBSGub0QMa2OSCL0+YThHOlW+3KAytxTWaG5wiXLhwBFYR3ypFK1elxR
WO5dYaAVsNKIl6QozDUG4uORWRoSjGrgQlXC4zm4NxO+cTVaE/si9RxHvrqY
YUXoCZpCQ3z3JXmzET2iGRjKIQtTbzIsrOcmhgy80qIZF1XBnYZpDZwPcCPQ
RqEvNZc9DJPsBcOS1FQqc7RoZjdK5XZNems0FSTslmBLNmxLBgsQEWQZ0CQx
jkLhv9S/RwXIqM9JnBLGBlNbYHO5fSsUCJvnFGamYwS4GweZQEpe/DwRqQkm
VRoyAFFjgKOEr2loN0Kmw9appFP2jZLqDXz2jatS+XW1plNdGPeoP71HxSl7
swQvq/gEfL89xnbRPIkER0SavGQJL3I8atIW4pmMKrqwbSPABXYlxlXL7Mez
tzra3YiYfodksvDjAlwwZ2qPCOXb4BADkB2jd1GEJTCaj0qrnc7ALUqL8YuI
3zr8e8CpG/idL9+e2uQGedkKLcSwbmf7x9X6XKe4KoG95DID7AivaWVIGG95
xgFHjEgECND914tqeEijHsI8CE2Bhl/gYepe4IuMnsJl0MjY8IJ3k9gt9CpB
H3Jn1ir6kducFZqmqIrU0EWwijaBxDJDKFQoeUlWO10C2hDcH8Udck41cd2R
jUCmpQrEv+L2+VWGfDU+vOVs0sxCp4YHQPklnmHtOdSD8d9OHhEd+iSQC2n6
UZTSuKKewky6xWSOhWG/q/NZYKk6Uvdugg0ZkjYpJhqmC9Gt38uVKphQDOy+
RA93ybWawSi7pTzbMT8HZOMgg15YswuV0VwOVgX06smKEA23Ui8QHaO/oELk
IOM5yFwdbTpoWu8bTjW4OF91cfVMnCTreY5KIb1Z9eYiMvdYiRDiXGEDHXR/
FMjA4h2OSHGVb1rnF93dTHzn0O60AEP+onL9jhbJoOGlzr6xoSXJRjFihRZN
aVOS2JplmKh4JJgQAKthbfbKQ6kcaaOqYcS7+OqjUtBekY+tF5JNPrRr1dWY
MnoVepD4f8kxMNdVbv3boQOMJEONwdRlofZRMDa0dZCcXSpWv1dqLCHg/emx
6RFBgYrMuqA6ZMPDRe+NJqC76XJaDRtQhzaYTYAtL61Y/3i/f37f2UP3HS8U
8i79LfOFIqUz7g2e6jllEKu2S9p9KOqmsR26jt/2+ydT4T1OOk1eXiFFLpiQ
VxgZ4Bnu3C9EooePl1wtcC2vuYW/sLAB9kAvU61N2RVxIZwwgn0v23WpPAIn
pbVNXEbHbz8W1hNLYc9VsmFAsT0Og7m5oIuSXmNOi4xctr6FhJBltfvTy1Gz
e9yIq0SaHMDP4Jtpq1nVh9lZUoDj09ITYTGJZLDJRLQtHTORUF3sgstrtpyJ
EngLrJQdSPVoqRR5Ap6mXG+AFBkWG+sGQQj/jLNV+aGCeOeQh6wPgNndtzyd
ghsFhtD32PhxxVWAp13bXlBJx0wCxxwSGGyyeyTvqYHLZFgy4UeJuiIXmKKN
CD+05pwJnwVZOxVP/BGbf+ULS+/AGlGLz4RQxHZ4wA84Wk/Rq5K54bIt6gfu
dnVVfWi31d4A2TrVyqjp5JkksOkDiuEY0MQDgSahb+IlcxEol5FGFXxSklBN
aOFo6qebHCOuX2WtONJ/yAlXpoeqySkUkdAFLGcbcDRC0p5CTumwykmBdPx3
mQNoV6d8MPM+B4JhqdNTNpdU3MN48FaowHS1C9QUpa9tcaHKKfAmg8lPBbm4
7OBe8iLCH/axuJAiUhxNAj1jqyT0oYs4lInNeIbsdZ921TXay3dG2J67KnqO
tkspVtcO4spbSCAxH0ASfP/y9Iw7AEMRyc9wIz2WVXM3LBZLmkAV88IV12T3
DDu40MJTmr5Kzca7KFCX2D0arIvwQwUpP9q2oPOHNsQZXRO6+ngVaejVgzek
fXraS7O//SSe9ipRJZkBsLxiTD+h33mGwyuJMaJEEibKGkr/BiMk1Buq174R
EvDtQHS8Yu8G5OwLtjfoLAQLjFu2amzNR1QBLISzXuI0njaT/vdIIIkuR8Mc
GNK8ddroj2dvJcRBpWNTBczklLOLie0ZofKSgjBp9AD7QqpO+kLIfyPtMujE
D+rhaRTIO866ClXLnmqLdSP1xYADrmWf6H6fteBFXYL2EwGlTqfAcCgjblQA
LEWILmqpZlf1d4I6GYjzCauGYKjA96eMhovJg0tc46gWG4VwWar+2oMFQhg2
biA3RfcSlIgIwoYtHB+3ULwpEq8t+jXexUMByFWDxd7eXj/wsvdOHwnvUWeH
++1hTiBF0t6WzgJPGrLAa15GQ5Tj0qpbx0taYsSKwWHfVJbDyDycl7WqIl/8
TxO++hREQbLhmNauLFCqPVSq70GeAHVyamf/XHTWGO9xHR93WjGuI9Xj+dC0
2NwjBd09unxmkNuR540yNkFi4ZKo8/dpzVo8ajdkTnGMcjxhYuZ+6gb9CTF+
o9ETcbehDaEmKJXJKQPwmVMGUE1oyToOxS9VL498u01XanEUJiknyDA+yz2o
S7fIk6ieavqYvpJjur1hcwL4gpt2JEyk2sutTU+PN+Y4Kd4U++0+FIAxeiRP
maTuD3Z0noQmgMr4sqGqJIOXL2us5nlpGe+ASOnuzP7Mten8AQY6Yp+ox4Xu
fGYML0cvDGtJxhvC39J2vnl6+DWCoEwU84kFQ1GoWtLPwK3AiTJq2+W6A7p9
PNVX5jArZoPH9sI30vojkDrCUN0HWCTqB60xGdGrvYZI90RnsXBLGTtq2xrJ
kNm0yMSFRtfNe5PxwJJt5jZI/KhczQh0znx3SaKRgY2QGvKFZcspTeU+dGVq
jI1wVYSQQLUCm4lkLg9NxPziZbGJggN2OARPSj4xYhLELjDRRIfRXAKNwWdM
N+cKpsGqTOgHaOttUDQxed2pZYRfkBsTOXl/YRQzzi0sIwccVZfETIJoBXRm
L2zmM9GabBDVCuX3nGadjmeHF/Crw52M5tsGzhVYa4PkczHD9BRkfhSiVLcN
bvUkscURf1nuDCXhVjAHU3x1ahKMqEWCgpSqxHi7q0H0u8akNeMYhHxwxpNV
OWvVanEx4U7EY5rVvt42ApHSl5eG6OnfsjfxkaRLbaBWK8PUHBitn6qlzvss
mOyalzTHiE7JoPOlVdmx1ggzmir8BIhc4LEJFXueEcr/NASxTR3ZM8uwWbkU
r0PnpoFnuwQA//7Xb+MCr56pL49TcMyiE5XkQsJhrtRNy61lyy0DxCcaikhC
jDrNHMcSnOzhLgAN4aEiM8pGQw3XaLoh5jtoyuB6ruDimrNk8tLwcXo3GkbT
xjw8ILrNqJVp71An5pKQXeq3/QYzy43UbAsguzsErJ/jfn0MVai8x53yVDzt
AtQGXZc9KTIC7ZmIN42tXFIazmR21jEwcD60ecnTULkiItOSdm0sscSKy+Qc
YzlHasXmkhkqqQqPB7biPA4M6jHyBgoJPzLOSTie5DXSvTGP+7ll4rkObZhh
wiNsw8D2dVlo9IZ87UEJWX5Bw4519pbHxtcQZEW5zotaiwrBl8euzOQ9VHoZ
kBR/8Yk4hHvL+BxRrIfAqeITQBWRji9C1wEvuLh0IGqjkAtzwl3mTBezjEmE
pD590bWfyia2LCllfkE131gjhMEJaVJiW1hdwOMJOT9TC7/E3dCIb2DKAsta
X6SMmgfzzxt6umsKGMrsh/HogLkqaPpYQbD3XMdU9MzsInGqZ1bFiXfhpLr+
OtBL1bjZZir2GQcl9lxFeWk8c5SSLRY9E9QPU67jBD2NNz2F8ziP5/AKZN0u
9vpH6obnhJYyzk7j55YXaEyeBWWAdroy6W0KQNGeApwzURXRiTiMQIlb9Y8O
bSJ8WkRwotMSOOlf6Ofhs30oqhgNtaAoOz7T4RRrq0c0YYJM4SZ7dX6qsCYY
z+NpPdwyeFXEbWpRfpFC7SEee3uLuBTWRB1aNFFeq7RpwEzHgwg4h0H3LycA
zC5u6a0MbnxMsA44mZMLbROUrsg4TvRoIDGDuj7kMJYz8/i3bpgJxnEuGzUQ
I7f3lje4GFnycLVCCfsT9lLUfXvbAhS7FHhA2CmeHqkGJ2KXYK4szJCk6Qx7
SBb+wg6zc43/UV4xPjaIusiLxc1EsywQ0aUPwnDBGZfOhp0kLpPNeQ9mfkE1
QsnQnjhX//9pR50pB99cE0TOXYzw/zvuv8Bxl/4iEaPIRmXTUzGQjuRcWPCW
1+VWQLnWkE8QUX3t4Jrx6a4mTWozgX5c/JYfO2Hf0kXIBfX+hgJ0eGrVaOrC
3WHR+7GmVZeYJ6MrFkQ0FcTIUFudj6iVVfZXYQkG+ULEhV1ZcH+FZD5Vv1NN
z2eC4YDXHHKrZOzBcVN1IUPJvp0/4TbJVkuFmO9pQzg5ohs8OEmxKtZ9XnTL
nNvs8Yax55eaJNsGZFfO0NoXVukcxj247AV7gTqZAfeGLXrcvccfKxQkNR01
ThEM7XaLY8NzqpC2U4O7xsQTtvXKZES7P7Avxm8LPd5UaO+d8pA0wUbPoSoM
Oa1qpPGajD7pLwxZCB+UZhyFY1bKMUJ31OguAQdMZBESkJ8gRM6XtnAKvHvA
UpeXWrsfobwYsjTqjCLUaaB7A6tAlDc9snmUtSgbPJZe2oVr7ism4DEtgo0l
6sgl9n2JPLjQhlMp9gZ3KwSwT66cEA7swriYIGJ98Y2qGSQgYcqqTbFohwJd
jbhtYyKHSBUN26oG0t9uDEdCCiZRodtaTOxUirbBb2UWWV5twSbMOUsD/8GX
AAkh0wB7COKWAOOS3iHkNTYlpP5qpJowcrMquuIZt50XXfMM+9LNioZH5Odl
oQ36OHcGZ9L5RPkQsL3pGTawXYq0bgpW9ozm+VHaP5mMrATKzSGJN4+a4/u2
RXezbfRf32OlUJ/Y3AQrq10upHE0ENUupB5eSv/NsrjAUROR7XAhJYalTlfS
AfAeP5rOFN7bNpcEV+pJVQ+WwZCsA39EwVzqRqbbG1c/+zIw7imcF0ttFJzr
tdZ6hg87LqdyoHgWBbOeIdAKdR4fHJxeYdvcIba5pLNu0Gw+ludyMGM8jDlM
H59K8d2W18NvwwMvW+rqEXN/nr1vDcDRp88U0xcHXtE4oz4qE/htn6XwrqwM
gkSlO+BxIlMRBx6rcIngXsid0q6bCBrWWXM9tSNqNB8vNjo0/UA4M7H+92Yz
pZkV3yUF5MSBJ5FtnJ/JX8w5ORmHpU2CRplIeaayH21F0CwSzlu3TcUA7Zw/
XHN6oJLO8RzedkmR6annh9A+xwFIE0l0LifaocFXqtGw80RnD5OyC96OHfhj
jKrw1gSNiycF8cV15c/yHvMeSdhjnamOYIsysktzPdro3KKTsY5PqsBLEGVI
j4iis5Azg0f2ifHIC0iZzLb2FWwtcpWsrdi6PL2pegzagyI504OLCft0uCq7
bFzGHFjWx+dDkWQS3m9kvqXcFH/z1iHoOjQjlhYxuYko7KcTEOQ3RncoBjV+
vC+tAmuUtZeJuIwDhrF0nDtOb4zwcu4YIPKr53+ErL411/HMxM0zJs54MPUp
e9cs15MPRvcqbvjtMXUNY04CCyXlOAitSoFciTa+wRhahQaD1ZER4UhZmAbL
aI2/7cfmla/L1Dg3qOXBoR4kuJi3hAXEPQnVZjhdimvFj+WYHKRxQe3udYlR
cgRmwdmTp6+1Y9a8rIJJmOMY6fLlms9ev3jy+OgoQ4LWSa/WsrVnXnCRDOu8
aXWtjH5DsUkFu5f8hUTmrqRKmL7I1fLMD9H7Dw5eIP3iGODaO+P8Icv6HXO8
vth7sGWaLMWHxIlE/14a+SlN676djB4rcDlvTrWwvUqa2lkEAqXgQ0SVqS3g
zn368dg8EfmSEnhyxMkr1VwhF/Qq9O6tepKScGYCtv5iGeVtWMyrIZI58LnY
0qSSPirnIW0mOczsXYWVcO3FkL36LB1ZZhmDofW3v/3tYAWe1PIZ6SO5XXzp
M37pAUZZnxGVyh9Xzy7pxVQL3+MQxYN+c8Ef6dfDZo53TU8YfQ7fg5+j1wo7
uUZcQuVNUBSbNh1lyLyGy0VUxS2BuLaeb/CFaBHn0k4Y7tHeov3ac3c+7uDc
wtD7wPdh/LEDlp1ncRkw51RxCiwZ4MplOfvZtAUaeThRyD2zJIAjqvTMrEmj
5mSBoZ54YhMCUa587rnyviyJU2QnOD0e1cyv05m7InTu5hTaw814D1hX8Z/G
NNfVgFZiO1+3y2VV/P4SN0xHmvBRchStHuffw1JjplF2WisTTDHbHkaSv8bs
4+5gZaYL4sk83w575B5n1Iad7Ar9QzQCHbIS5X77Em71ARoDRfYjQTJlW/rP
73khDwixHtEztdzUwEoI/CSkdCi6GcHPX1F6M9Sb8C4oxEBJy1F0XofsMtj1
tunJelOaqwbdR6/w6LZJFzIy4ZCW8dswuL6tHfIT2jWEWsJabuaEDtUeTEZy
zB5itaMVrOija0yD51LS9qc6O0SaSM4jLOB5wnHk9ni2izmWo5fIzytamPw+
yh5Yzg9eeCXeBhyGjMVZ7QKmBi2jkWoLrNDnWPbU+h2GEK9Xmvji0FrLahPb
zqpu5RBL9CViWjSt/PO5S4VQYhv+GLHsvqnscJ4EmXBWDkVqDERHlisigRod
+3kHIQqk5ZKoW4tdgRWQY/LfRcVFaOqfs9l+nPgwkxVJiO+Aec9I6rKT9qnE
ee4+ksM9eJbBKd2EakU6TXwYePypmJ4hxqA1auSFSvcK2UbmUDpbMNaO3EdQ
pE0BN5ihx0S5VN1IhGNfJsEnY6JaBQQ9MGFrEUikPh8I1Vwi+++UnsYSKQrD
l5oXs0TyuKc2UZBZ200R9zwJZ4fUXBxdo/4zSmHHU58x30eRJuKMI57iAGeA
cmel7C1RBIvmZtJlKLXMvaVwUFbRvoLFLwgtq8yKPl7wQc7/obfQmOEZLuS/
5TpeCORRvaPiThH1EggdPxZtDaxa0BQPPJbixD5VitphB7oOh9crT1Ucd8YC
KK4gn3lC8KG/iIViogBR9WmqAquOOIk4S5GEtAs8uErWhiQ4xXSQVQIIjX93
yyDhmkx5HCFDY1vnAhQgRoFxHVfVCoSdNNRjsjudTrgWADOm/wc/IR39a7vN
zssye9Nn9PNPQDYnvtTqQUCgdqOCigW8sW3C5qb0ip9R8T+WC3kGuzJKALui
K9AwCaWKfTvi1Nx5ficnjrB7yAYLGUoCwWdoSCNOKlUBig1O88d6kIRpRNag
DAcCg+UTGc3wJR6PrTRMnztzXbgnsjmQGGdcv1WMumLYtuJIYKcR2K7FjHkh
zWnrqg8WF2NwafhG67g1Z6mNjIRxpA2/CvpODWjT3a4iKg0z0jAWJzsj48ab
kFZwsBcSzy2s6IW7Wr79+jHOtUgwVi63FX+SQLf5hUlkD55IvXJNOYzw2im8
5xakWzy1AtaIfaiadIgcrggBrA3RzqpRmj/WR3BmJc6lYHJFrZ9coqIsNKVa
Ct9GUtcsFQa115PADk5pytOIod0AWsYJuI2Gxizb8MZKcNdkTjPdaPpV4vwz
WZmb5eEzrZSFTIdWctRQmmv3BwmlMdUXy1rmEUtbaXDnlatqupCopk0tQcFF
oVstvLDqHMZ0jUR5cLS4QO8musB84rh1oza/mLRl/C2so2FvC532JVXOKZB4
VLFIV5spelZPYiA5OEKvZOAxblVmoeRyXWnU3If/J2koDDHm++Nxtix0k1Yv
vK0J50crlxoS+0mzcC4YhgX6FLDlyE/Q8elsnQxloxAYjiIS7DUmBAVm0hxv
epSuB7wP8RG75qQAiAOk6bRMSk1Fe0nHd5oGiVcnABOLUM/7K/rORXIq5m8V
yhdU3ayUzuraBpaFDEB07rMkuKln1085Z8ZNVNCY/TH/IH/Pz/nv6onXbXNJ
7QLqWPHfj5le5s4bczl2YhArdHQJJdKtn1TRcU2BgNSPnDS5bJlSqoVSkb04
6oD1ZpoZ0JrvoUCBm0fIWN4+t6JtAAcHt6doUyYz3y9A8FjFVpyoDLKNbJud
BlMUCSDFOUAzJCJPAQy7EaYK9BIJ+QTVRfIwTh9jjjbWxA6gi0f2tViahCc3
EG3j/bvqy1BEJNUzoROF1ulE4LiXleRkZGNGnrgvthhXWFjBKtelaI2gx1xC
60xQ0MO8AqpoilldEFLTie73OmLSEW5sgrckzJbZZzCl0x+KyttLMRAICiE3
iwTbaK16V9wXwWvUOdhiBngw4Vf0G7NNdE8hGcu2eAIiiRMGaMDQn11pHVeT
ofAxDk+RTFxNc7BMBYeWomM/TWDik2kl8U+HzESgIRIs8sghewWGOasOPkQc
w94jHsWjn6qVGkv0DRpyR8n7nhB4w+wsGYdI/TLxeYdpEdau57O5rgQaba1t
YwUxJ3Hrox+46h9mc1HjJ3JJkqrGqqf6Rb95+lgfOcU4YI/KN6a01aSyQrIf
H3kF++BODRS0qs9WRBYGvBNhPCeUUhc3ylAErxWS8AuQBTcySAAFjMe2facy
gOWaR3cK0GdU6wjvuSJYs4yns3Ne29B/UK7FZRUcSm+KSy6aZ4bsqv5TkGQT
s6t6GrgxAYzJRtYYvwbtO0Wh4+U7zaXgAwTWLt/IFyWX3/E+uXAP7sBM3X0N
jRxubLkHp3Il4MRXDc9cD4yluswqQ4WIdAL0+MRjO4O9pLiNSMdCBKWYjx1d
CspIJ5BMR1Bq1WGSxXVbWdzWy4VYrKsAYFgasuaoguYGQZcEMyg1F38VahDj
McquYxDjqpFe2EHCIdyBdY+blRVbhT7XOSRs43FqsDqwuywUDZ9MPI/UtlPc
/tuHkWp5RYCc9p415T8TViEERV6I4Fv2Y4AuvNZ2KXzn5qhzqyvD5dyC1Bf6
vsqlc0PY+xbp8BIP552D8Tk4INwgg+754vDLL5ZfJqUmqVkFq8PpEkM5CwKL
kGoCaqlaBGPTRUCTdbIMxekGwcNikCNti5USbI8wHpVjK3+MQFtm1OWoTZ9h
7O5sf4dLLriw1n+rvB9pGMSo6y63ad3TkyhrL0adgPIKmPNgiGpIQApiJMdD
2UScGZXgKPFlKAKjXn2EwqRJQYflxjgpTKkT1+dP2gbCRylDD0BWkNsvYMO7
2LDg591qExz/WtSyWaSD4bRFaTOI1kgAmZzRgMUdVmA8hovQtlAJEAslpora
fRSlZ+MzuoH/2OJwVmM3cVKosCz0Z3CrZwqxS9A4HOfFds9aikMZhO5OkK++
LD/p91Y0B5CFzxBQt4xmJMKZksivwPryguSsHJjhpqRIeacU+VRuhhQabYPY
AUMYZLQ0xSVuiEzYxpNtsIC1sRmhJmqSGppp6Ls9kSPSRK5mULJZpDpIpmPk
m7rx/LgtinLGnee/7Slsk1Gge+axykbaEdcyI8pDbzjCKpzZZwTheSUyAoxB
bC6xJdEhdfDlFU2Jplg0sMzVEN2djqaPXDjKxtPQqllMIOUajMtVxH5uDqCA
WsD3HPY4o64HkBfpvdYzSlBT0gEhWacEZXLN1RHI6IxgplJVxZYLgylGQprf
RQq9zKi0rX8izgnbqidv3yijGmZJW54LFEkaMdgVv+39TtSweL3tkDXXRA9p
hfJUe3gABca6lcqBt0b4WzKgnTJaYEPRSQJTASUMPLophDADSikXWqP5vksp
jr9prWo0IcAE0BplI7lNYYfewpLSm52b2ezPgtoCCWMA1iJehUbUzcsbD/hN
/IVYodLJyCFENlbHZRnJ1JLCHY8Y8BwZlMPmNfbpfVeEg4RhO7WckwtmWg5n
YTqRnWOp8k9uVotsgLqdXo2sFFkj4agQo4SR0qyZYkDI/XDRINnHogdbIGR0
W3JOQTdo0t1d2xj88S9/QRWAqOqJEtAylZ7aBXNTSeEA03ktvFZPlap03p5m
50FmJrCxJ6yU3iIw42kA+oilOWJ+9hOok2Tb963DuA31T6jVSSViWpQikArs
ifEIz4o6gVnqIHyOWevV4wGkAYQ0CMG9DiZHIdjmKh2osJbbsbTjJlv0fqg4
yyEg0zTEQo40KhdIBpm45qGbqehT/4k0ILxJkUEiGmTfhGql3LCVivj6ZwmL
BlAJ38iggz1iqOg9/QZP50fzQ0PZuCUBEw6ZZiYnVy+0FWbRfK/45WMSk7kY
DsNZ8adtnsnk1BoFlJ0cSoKTjtFzwujxahbykJjLQQLb4/uSO0goCJnOYbmD
hqIonmvpZgHlxqBMX+Zo0/+9d8pbRtVmB04nwtBOURgG7xcBfs+s6Gd8tfcZ
e2Q4OOYkhcxYlDjCT/ucM+dmI9qb0ndqY/IEtWjuK0NOJ7DBjDBiTlD5GZiY
x198iLp+xFqjv6djm8YK8lfcmJzxi2DkMimgrJLyxOwMrdE+9hT67PAp3cXh
19llh2GE2MonriErlgeexR4BbEJHjsS+hTXj6FfhMOhgstswtllCUiRJkZRo
yiGtWw2bprpAR90cSp4PFNpbSHwOaFMmJmYNX6SZ5FRF4DFM8UBmft4a4WxI
FiR7ScUFSDNHjx4dPXzyzcNXL7IvSs2W2J+/BA2svw2lH2yuWbyRe/mwkVHa
9yI6BP/g+S4EO391BiEUdrm0zIqmR+0ip8Kfj3ogifjgeSWD1kRJO/+UrdhQ
8bxPecpfNM5/aw58MszPqku9lDA5RcIAwfPn2a9UeSE2kkMCYIyS1Rabzz+X
6423mtRYOjxSeinzF9jpjGMNw9VzgTqh3qCPqwVXPRvsfNX4jiqUk9mrlCoj
C5qCUFEbVFSaEyamzbPvfRw2GpnA3rNSKnU6kKvlVE0aZbmk0m5OGtLJMNxi
i8DIfjxzqKssmtC7z8GORdFX1roZYtvcP2w+yQUrR3NjBncAA48ukMCaCAdz
OTngHs/+26uqKp5KzdYm4qJY6uQYYQWJHJiMgzEttl8ss0rGdhy0U6JES8DW
ZiFublgMOPlaSMMTJ2l3Pn+Dk94x5LDPiDD0AVVtnFBwsTc2Xc5Ukr6SBSXk
+zVHpnjYTR98dNjttpGuZWTKY9GTwVcWurDXhwMg32RVUtmoVlSg8z6TiYr2
ObJf+ums22QIwLH4ZNVTFMyCvSH0SM9utfPvDI9RZox3qmlKrfSRSic/4yz0
dyIGH2L11LxHzgW3a28vczNzseLRRh2nGgRpZiZ/TZx3wz/gcBa1T5dsBRiI
HIenddUqikhzIQoUc5nlpdPIRTGVvHPk48WDeOUXPBmaSZgUZXAfmSKUzpHv
y95aa3s7G770KKjRWbYEl2H1rt41zcXnIWxI8ujRbWuxRg++zhvNxULjxuhI
gjjlth6B9OmYEGx+9e90obF4HvLFtr6ocBZ9UCjM08bADkAquQQL1KcOnQEe
jsfNmSK/LRft5KMGugl8a264G87miiVk/De/m7BEfFfH3U8OdIi0p+XWaoXd
jMwBLreieAVazlwm/jIKfERfECFgZoIMoJZQPy07zCLHFRj4Kv0NRGdHCJoT
C7EoYJ7ECLXXnkCSpwGkc21/cUa2eAz7zFcsqdLMDT15oMHQEY3R5DK0eKT2
VE9/nr2uuh6UaSzCniaheFb4e6znheVokVTPMYyBFiD/Ss0FKTtsvBwOUJuT
JfMW+xVxi0WrifCoBrNmin5ZrHzLec3Fq0TvQzKIb7jyEeUOo+n8Dq3Cwda+
nkIX2RJLlamac1J85AZGyJ6MxEOdwLAEZk5qKQyHJsPdT58VbE+ysTheIjJg
gn9U8lm7IT6bVzWQnKUTR6gYb7nBU8Hmru3IvfuEUWhU25p2IjLKMVgRIO0k
BuS/Jg5PYvO7bXIp2R2SV0L2U8F64gi9NIdC6yNMoaezpNqBmHUnsnQW2Zwp
gGsTmxloTEhdK2qO2KwQMplCb5mA4YKz0eDg5CpC3ydXFAdpe4vTpBazll/B
rf0zcb/T1FfVhkL3tyjgfiINrFkyNLjrXTC5rYnC4NdZx4RyF0r+TsaSEpGx
CzMY4Xs3grYR74wKiLj2PpYb3MLas2yveBRfr0ieyv+TGFOiSddM05L+yH6e
Ojc2ciKxePR0JtIZXKplRRLI03Cc3zP3xMerpemHAh2noebkDVeNnlg6N7GX
Hz+554jHSqdgRVNW0Clk7E2w0i85AYqmyDhNq2GCsxIHHWG0i2G0pPbjRBp+
Kq7CtfFXt0LhOmhlvs1i32g3a3MRRWwxtj2fo6vsPsE1fHx+grj7Ju6tKBGv
WuskeykeFiuc60DJN+eZaq7xBOsStzziSt1h3VzS6ks4T1Jz8A75OTt6dPQU
jWC66bgiyCJxhKNFWhm4882rj6+zc5EMPY6iWn4yiTmb7h1K2nCKzjCYKCPF
bT2Pnzw5ggv44vmL0+zroy/TmiHzMwSREb863eVD+BeGk+VahkT5uQ9r31w8
orLoxae0AhpJ5OFD40OCowOdVSYvQrNfYJnhwE6eh10kdel0mPrH4Pf6r/Tc
zxQ1K9EJukGbvrBy8n7EysY94LNpaBh+btkSXFbBO4jBBrj4m0+Yxx2mWKWU
h0fTxZqqenuvxEas2mlPO9YQ14V15ahqg8KU/hKV3/ZRV5Rwg4U64tJsSLTP
FwZCGhfH34YKNfg+txrBHCg+hzn8LjnGgHF6PJk9YHRcGQ0qx163LWXplkCN
NTOgx1T3dTai9ooILNDmFDrPysv1qOk1LSm0RlMUsydNmNvnEuWWD8XV+tAs
++IowgMWVdjwQKgVrQt66cs1juY1lNXURdpYfAy+B28OzJxKm0zaBwuL9dXe
Knk0Q9Yta8Z1HIfDqm20mHN20/c5mP+vumvtcdvIst/7V3D7w8QGJGVtJ5mk
vb3YXsdJetcvdDtZLAwDQ7XYEmOJVETRtiZIfvvUPfdRt4pUezLAALv5MmM1
Waznrfs491zn7/sDFzZmM/e73u1iPeZUBazAVo4WxfEqG3m6JmOwOguXop85
q0nfaqSYg2mRa+SORAM6Srapo22U53j6cqxST9m0as4XqrGR4SARGyXiCllB
SXJXOVfFipqs2znlC2+4pGlWR/3u/FMuQRADz8qdDaQO8WiWbhJdNTbhGTla
/82VWmu3ZVhv1ZxVlzxaRkog/mN17ZA0kZAlIYxqeTpw2NNFto1KBeoY8FmN
3B9pGoZP8H8sNQ7thdqZLotgP5WLylrOPi0w6A+lQkkY7tRRKXKDfZtNa8LT
AOOe9MZRQrPbhctVpmVwM3b7XMgNSmoe0d6Qy2N/i7nAac7UeFGatHKVQ4eZ
Dw2VJhayi2NnYwKG4XSp+ooB3iOz+zg3bejb1ZNXr4vXLzVF0VIWJM9Y9BlX
JGHv6sLwPAvwGHH+d50vxiF+IjK0KarCGix5HXY5DXSWx9Uz/041lvQMRdCl
niiNz4U1HgZeUU/MyaODzNgSkZBFtgnDk/c3K7Amh427Zm2P2j6PZaINt0+Q
/UU8CUn3IrMxa6HG/Dssqjl1ZFrRQ+/TCC4mBSthT5LNQA2xqIEwiZNxkfAV
jU0ebHFYtTS2C4BmNG8y6myl+O0EydOZzRoTGlGwmvvmi4s4v2y4SMIkSBkO
0lZZRmo0dLkkaBmBq9drP2bJ20VhIenZPAhn82iw/2svnml960ZBJDgoo8fB
NrF4dYdK+t0Wn09GoCQlSvExEe0Us1NSWqhc52lxuy6XxT2NlX09++Z+YSVU
KEvdsTKWwGMxurBf70mvcuOLKj++HcH8uJPdpH8IA27QSw4poAeEyPNqI8fq
O4vU0yzvnFZEjj4EW2/931uGJO+FzoPPO84ig35qAfj4tD5CawjfHHUEW8kl
kOAo6MmAZhwXN4GSuJWGpop9r7PIMn84aayFVAtPKvQZ5MqUd/E0iJKp2tFi
MRkISZbZg/55yCO0NyTlbIZppGdx4haFDGiUwKHuxtimwDWioFCrIUNfIfsq
aHaMBOFpy3KSnDjQyTx2azC7ek6qs6k7CMMZwYGa0SJPOjjHPuhJGD49qJyQ
R28AEuNW8Y+clUb9k6EaBrTBZKG4imvkZU53zsTq+VGv+RKrhMOO4dXjzFuW
Y0a7P2XJvKOsGlU8c86qOq+IpoIjrnAcTDIJgr9iJFCUF67sSHKNcSREI+g/
yzk0fHHTME/1tiKa14YlSpssgeT72z2GQXVJLhF8mE1Q4UFjiC0i8dhYGCx6
yqfDcpcJg4Toz58sIclGP1NEijtmEE2JMQEkzP8YayGOMlQMi4cRM7v4FVBq
0eNDh5XEdPuOV1xUGkQ/FfAOrcaYS1wdpSDTV7my4hMVZsR7pDXOqLWximY+
NqSFLFGEje/RuRQfcLORZIBaNqUYt+3IoZ8V3x1hXVWvgwwqz+rH5aJZ+OLf
MyteMt4ioVAkDmC3zKVaqHy2rtp5ODd06aHdq4qJpi9YWF9zyn6ib/adBIr2
5XLKK9EdQnMfVUynZbHlrAaRPzHZ37BnEUADmGYcPFKbMZbmSup3GxEIQj8Z
jwq7MfkWulm1lMq0QjI5Yps2HZ4bSbE7cmeJPYurcAoWzApUGOKrQFfqZkqK
z1dfJBi09EBOHZB35P5TFgTJ9Ko6h5+ttchPmBmUZXoVPh9aft+vG2W24nru
6E6xruc7JH94r8wmfJ2k88dV0GWj7/zAkeNbOMnU3pg4zVjiACwfBiQSmdeh
Ppb7lQ8TfAYdh+JVlfvz7BHwnhdp5XXHT0KzmNs1xzMvJ6OUgCiyys5C+Krj
dmWU2kQ2B5heuq2KMWS01Guq0BBjeVB0wbZCl3C7jrMQa/3eHLTGIDMvTBES
oYhpuRc5qYtBrr8FaxMxgTkChnmL2b6XM0J6vEYFw+Rd5oRnlP0pdumdmji8
XDcuBwQ+aiK9LcNgk9BQEr+IxS4XUV8EHhSkiULApvTSUfi70lrRPVYK1ihu
20UdJPSuMueZ7rt2R37U8AA8YSJB62bb8wUiT0Hok7XY74XlIdFaJXfRHKLC
mNhVv5yjfx9VuPjIgZbIJYi4duIuBTcdXFFu5vWS6oYbHQw4hoaYGw68JbIL
p6veKNIwtsxrPbvzfEagBhT9VFRvWaKMsKywUhfrRIJVLx0S0ZUjnusEj/yS
SXD7XQXosLKnc2y40Ui1FymrQiVl9iSPYjkmgDmFCIW6KC+MFhjmDE0vNZyM
YcvKVwLKRnvTEiHJnErVlRa7cp8kU7IC5kz4sm7DeMOWf9dNBBzb7Fd6NcGH
q9kOe5qKGG9QZ6ACV2z9IOTHZ3DCeCZK4DTlpicjRYdtAXDK04B6RRDm8Bx1
jss98NdQZ8FtA51cfxPlB3eWeuyeWU2NgcvumatuTNi0qfiX9bdxyJO7F2lq
okNG3XL/SMHbY5XUeSMAONf5csElQr5ceVC8q4j6xsrBhiK17ItY5BtM4Cg5
4sufAt8zrI+cFm7BXvbFinnQJyf/XR0g5IK5RgGWqf8HHE8qH6mWruSQeWeD
y7YSr6nTc1mFLPemntLXdkrhBfGy4CpLHWedV1J4MOp6PDDd16jSK6fMzVkM
MVOs2zljpklfKZoSESmAhVP992i0YCrDzV3tmAuQwfvBqu95Ba3CeTaJxLBr
+uBUulo3QezXYvolT2wH3ugHPDXbfr6OyKt1zTG38K6jjnXBvJtgqlCn6q5t
9IwKOFd8v32DRNHQwvXTJ0zQwiWQPNBDqtdLnSx5NtYgympJzshnvi4/AqkG
TwOcE4a+HPlTuV5SZabVhvfk7blupDAWQ02EoRBG2/zq5J6Axt0sWDcaIFNy
gj8wfemXNGPf70bgmPu5FsWUk/X84vJZ8d3Vy+dW5yFmSM05Wt/WosjdxvcB
1lqW3ri6CZ3hctsWNFxkYi2DmEQmBhXYA2YxK9XTeYa2TCWWgJ+PNcfp0nj4
SKjI87VkcB84KxWpIoYeLo9Xcnnk9tzRsJky42U6KBoTVyEjFINYxV+EMBDI
SA1vcKE2cyTYNUYfED0l7HZwBFdcHlDy1bb9CAhWSLSZKFp9Ge5k2T4icF2s
06nHiplJ4denhPKgIoUL/cmrHzHVPQd6JyNWkzqZFlVFUk1sVq/iiC7lvR4H
jZNlF2bB5SvpgoY7HzUTaajbtt2tD0n9OJkpMpAi+4aAk2j3viZT7omacmfm
nLxxlqF2LesF56NDQPRsCFdcS5261/SbiomfOYNZIY88dwY/Bk4pRk1pY7pM
tvlhwFsUms68iczfZaKeww83u/J27z5DyxbBwIIdJhDGSBoOOKsqqXcQr4i6
i2TXkkrRHe25hLsGjk8avnI3c7PKSMG+QSRUVVl5F3h1hNbGlWD6oEE1ixpo
ZVxmL+dTKlKsG99g3kRJI5Mavsg0Hbli2bC3gpt6U9jpUX8I9o8sgjh2EHkI
R6OeQ0pXpLSH75mFIw57yvwwPxZf5+RuD1O72wX5/OYtVx/GrWHFqYQngEz0
kWrpKIHLrMnkQ6UqqNN1276L+UcdF1iBjqfRsZT9l6JDXNhOHJ/qFdRiq6uS
wvsZay++KYVXs09KlViKnggoMOYiJhi3ydi83NnXeFuG5Wl30UhPeE2h6wlL
fMqzDIJmmbZoR+RigED/grU1LAH8ZHY2yphMJIszsctN6NSc5Sv7NLqXjji3
UlOU3TCyH+be9Mz4jojjiiO2rHe6bL4aegMIRH7mJIaezmwjvpBwZcqdsW/3
pSXjdfVfK64akaxfZON6NKPCrmPU9vGU6nVu+W/Gvp8obICfAZocyY2Dopaa
dqnhWWnNasqgY5q7tifgURwuX5U0jrHB+sngkgjbXS3Esvx5z4gWrOY6CAUG
R15mW0X0Tb4B/NXCoVh0cG0ohY5ha8Ei+Prhl98Ick3jL9xn5adm4UHHTTFW
ZU6WN8UFieqdfTgyk8E+FmgfBou+CVuoyJH0ivNys6vXLPSFegiJ15Ue/OvQ
63n7UUNEftTG/fX89UVUUVSnCcO6evrk5fPnT198+/RbuZLcVFMGV1XCPBEl
TRg2uRLDpYY66OaPlARDpL5orGQW3WFE4+42sZNerMZyWgpGaFDtQ2IWBgth
Tkj3GQelAuhaupteZb4ILHWZRZfvdIzQwnuszkxnqZa5rRpNVWrIympO9IbX
ORbITzSSEXIYn9hZ8ZOMVLaVqh4iHw2HwilY6PSnw6YYF5p78ZJ2KtcBdFz6
doeRZkdJOLUx1VzrNft9uS3+U5ypPyX01qHxn+qOaOqUifEOe8QDHZhjd1uS
PuGDdC4ORTKZPekcV/LstnaIh4Fqp2/pmsJFHm70XdqkMeKnTe4QEq0WMbK6
IOmzGxB9mRpC3ha8DUFCd5rUjAj/LsW1F/qvXpKxMq9nEe4U2XXEKy14IaMe
dQQo0Cx8ZHqm/C4xBM3p212W+E7VrHWDccjWh2Mbjtd3DmJpx1JJMS0lR47y
xGL8Vsqko9kkJnW4ImS6sEomfNk903fszpSmBAPkS8XQGvUd15BrhYDk7tKH
OHpcBob2+w1OSK1VHYPUwfmYDlxoccZNf4iwMYvFD/adxrYl+xF7RdxwNAzi
jeIIQgtuu6oJh7aCmc2+6CgiEnELGQrDZIRIpkwAmFTm20QLS0t2dbG+xDIs
C/SmItlOaiqSeY10Q33WDZe5MjTSckVOa9k7j/ETFhf1EmE73+zt4dhdeYG1
LTacQCfGuGOEvfKsc+HPoO17moqN9Gid6vlui1UftqCHGA3IkX+8dEokQarL
HTTZ2/DnZS/5tjn/meeTiJ00vHNCakdKUlAocInoVX68ONQ1MAuuKhQSCaOO
vhcyNTiL8xgh3z79vt3gGepLMOJukkCNz1ORC289VSattMahGxu45prFFCub
FiuzIhfOX6D84DziObBXayW4A8KTJ++yUcSLXN6jnBUUvP1iNnzHjFZ1gO+T
eg/AHu7boHZ5i6VKpbh2WhKxrT4tEPrJtc31LBu4/GuuDzUEZbjLYkFHZ8k+
e7nvPoxK8MhYxjPHskhTWhzbL5XN4sqq77tZei9TJW3a8ycnl/toHgjr75Am
1yptu9bhe02LCguGcZI8x15/HDCp8yruTdK7gsgRUGRuPQ6vdJi7m5rcwc4e
6Ip7sMo+x5m7P2RuIPkYK4WPiWVDCDjOsdLf+YyjErThpKg4bRZkoOajCAJg
vosE/h3uPjp2uOfj38ZACaVnFG7nktbCxqbduRO5ZK3YRZaINJA6YdC3JOIT
NTHcaejULuwosVzlKOHQVwsET9hR250lRG/JrMIv2CkqTdYYZwfdngqWKlZA
EILZMjkOPWlE6aOQXw4rFZOJ9RqaSO1lIZ0RCeGalZYm/iqTKhKui+kh94P7
THMLBv60ylPXfOay4u0CrLf5w6lIkbbduqZ3p1yDchdHy2NO4Rul1Fe3tEQO
GFc8+JSZL+JLUtsry3chCn0t0BNEzA7Vj3MuUvMIsdwxxmAvjPZyvqFY7wnr
YYeZfMkTgYPlfJFWGzHe6iNXJRzkjQHAcZ1ty8O6LWn7/8zakwPHW1vpnRRG
QeiIZXRzZmZDkLZHyiOKREAAbADmAf49q7HD69ZKnbCKSVkT0inNJODUFiq4
Wa3X065Xenm5bmNaJfRSmkz14WesOcDgwqc9y6WBs7MsLD9afZgb5lwv+AVj
o5OIoUrE9doF16NUAi7BuWuqGBuMka0kPuT8EJMY3kQiJPK98rKBjoIzJ5y9
5dp8DNpObVyoRNg+rOJk7yYjE+MkLNynb6tUxQwKWQyYyybnK9rXLblQ/zT5
U1IyrtQFmygNpBIwoKBPeZc8vVlka1ObTeh/9wmY1tecGRf1dO7YueY7CBU7
KCsUPNzN67ADd4cx0CmbGZzcSrPdtIRO4ouX2UccMk/Tmz0eQQDS7JfwmnSy
BjCcdMeYqsmLzgue8zzG6F7a4XShy+hYkW+jJLhUQXf+seug8Wy3YYTIlR06
xMgPuU14K0wscPlYd1dKvoXnqmNvtRF6vTdPECPXCgULHanlIXcAeBzhn14F
GbKzORZ7QSiSU5QHOr5lx1SYsYZ10J0W9Mi9sZhxaUjwZ2HvBIXrRk58tKjK
bsWc4mJYMoRIHf0j5zB87lp7oyspEiU1dZK1zkpy0O5PzVOlLodLS2Xjc0ZQ
5VFpwOSO4ZYi2Hl+iFI2pzkXaFY2b8wRcDQkPwPtaATS4LpPPz6OpiEyzy1o
nBnfsUhlkgTiNKVMOud9m3FFdEIF5cgwiEEggRE23qVfgs4xuoT3rUOG8Qdt
DCqoN21Tq0Okb4LlxnkNOf6e6FiTAOPFEt7Z5Ao3elABv6LRq+uL6fUPFw+/
5Gzrp4uHX3754Bv5SSrYOX4el9XUc74KTRcwnQIw5wxWklNmtjvdXWrUCopE
AmN2P1GAqu3201/6IA77zUjkU7xqtBZhCHJhUpTkQ8O9UC/PCLBF55I948Af
buQaSL4a0S6RvoF1T9KStqW4PMMeTWaSMJSuo2zyHBgC4dwzYm1YjY4gWu5c
A4mshF3NBZp92MJlx2gV6dZ495kaHPZeGnwulwJNlQ95MA96G9PHybJbhQGq
6yP0NHmaENKgSwxm3odq53G9UpaClEAK2HfByuSbv3hdb0gp3myLHwSFJNs0
5flSupm9Pu5vQxF3ElFy7/Edqq902WDEFOB9l9YJXrDvQ7LNmKxpGsnK/EnH
oUBVbE7SWrckoN5Rxdw8gjsV/N0YzqpcA89DlILghtSaoKC2OcPIiYcTDX8I
HcRVxaor4tf80y3uDd/VLFF53jPdA0s3Zx9a3hQFo1mT4ZEcmpvVrjUyLY9a
UZdMV0XY7s5KCwub5WMyb1sozq7vlF23CYKLQSL4UtIyAEVclTIZYCxKx1nD
fnCz4sXrV9PYYSj4CZX2/rAVB0esM88fZ0K8m4OmqXTgvgvKvRRiLZPecyA/
/DuobT0L0duwrWqlhdq08O3FuncnJ9d/cFduCWr8/OJ//SXOfpF4GyrjeYM0
ZkdSRbNCBWQi2MqjVmXP+stoyRkPYTOuB5myDr8mmAIQZx6tVI39FXcWhiRm
FpnblC4R5i9s+x1uzYXy7Uca7EENeBJoNMGFlYiIMdxyv7JThLSGJW4RP6JO
SqVTfvXheBpMElz/SIITjkfcXOyfcEuqqdnRHRJeqUmxjQuL0m+3e5wQ4WkT
d9bOcCLDqhPJoUwmlscaZ7NvtvSEZMDw3IKv4fLixcV4+fnItcSkg+q7WYq9
HC23yKCV5knJ/nxVUQ4AtSSYxEJyIL8DIOaKW4wHjfU/dOxY6fpHX3/1hdAQ
ubzhze3JyVQbZ7RNEyzws/SRaXERS5SoxXSGTRT+do0w2JldvfR4HzTu3efi
C44ENGfIq6F3MqPhRqidE1KmifnXH80ehJeuxEPvzJQzKfLLM4281YiGZTXJ
soTLgY8Ndq6hCVftdsKJLzyd9Xk2Wbv9JycrPPL/YbKUkoLwHZg05bNQMPPW
ym9P/tAEzornI1nzdPAsO0p9VdialmkCOJcDxGMdyP/ulgPSX/Fp789Tagt7
1W/x5+3iziWjv/8fWK9Hx9bLfDKZOwauGKxIApRDUXuiJKQYGMFAJgVgmmcn
BfGv0jPnBCDSnLUuxRys8mnCa0Hy0UspEHBi2TG8CCga0g1Sizq0ENT1c/6f
sZf1yj329u2OXo5cCETdLPlpXLkzaNjYPgh/SMqa+BTzTYcGa2oPpALUCH5C
zpvMEKVPMPw7/h1zADgwDUWNTmJca41JyJLO1gBbmF0ZVIx1GaF+ySSjt26/
Xgr0dfo87L7vwtV45+4dPv337eWkJP0/ZUP/+fiWdoVYslxNmRlFPiYqCsoh
wzeXxtn3EkhhUrtM8kucpu33LMLUxmUPwMyWR+sHiQ/XoPfiOUfAaRa9ubLy
dRPdVhH9RVT1+r6Ddod1nE6B1oUGkUIbicaxK+5d6jS9r+6nMky3wFVS5xOV
uTJeA5/LFyZt28V8XiZDgc1EhCL7LDtROFVML/meBlLi6Xq97hXxWXrYl+/N
2cnJ77//Xizbk88/l/5St1ztcOPguavTJ8jJju8LUO/XcAyL4od2iwsh/F8i
tgv/hW+F47wnehQ60XZ9NP1mXu3w0nX1y/AlHHi8duTMF8V3JGj4zfgeCSN+
bVcuN5wdGJ6YFP9KqTXkrNE/VAtuhZp/QSILbs0wsdQKS2I0RAc6dY9nkhjN
fFutf8Ke9s1AKqGRXDgzwpzqZIhwRSMvqg/DRiDRuCdRPtv7ItlPfjuhZQ0L
wqBMMug2PdNjl5awTuuV5KtzWFtOCTXA+gLvgrBevNjW6pu3tu76OZM6yO/Y
VWGnNhKRpB+yAgIn5JIq7m3i/rk/aOTefR0876ku6CE3K/kHPMebmc32v5wX
p6fFn/4UfrPJw29neJz+4z4Vp74fp8cbG74oU5y886mP6bLyS4vqtgwX3fAx
IY7np34LixhOKDMMOJ4UYsdg7BpNKdn5rUf3ImlZ+B04vYl/2lHoA2lDMftH
mOFUQLC7lzcBnc48f7neawEcD+ZT/bDl41i8vNfcZyZlaIwv7z24r4lJUUsV
x2z4MtFsRsJT2pLvJWfYhChCIU8piQsOsdcuYi0KbnLfcbpXd4TvRRqvYQ4y
Cno8jSwXsEKNCnOY5axEZTRbIgPAO+D9wrsjM/8q88MmRMEc7j8XUac5agx8
4oWVBLdOhPjPYQZP6EScrk7P5GicaqUbRa5yGlzoRXjkzdtJ9lDYSv53usSn
q2q9HfwYtmf+U/sh2PKDX8lxPPiR+KgQ/B38pW9G/0YegQq0+v5X8eXQT6fd
uSRhFA8fnT386uzh16dvw1O/0aOnc3rkzYPJg7dv9ThJJrt6wQRqZNcuUQoM
OTSmjGgQHLg/XszqQJuE1aAkJ0KjzM1BFlOOlHB1aNq2Cyh6faB3wWdHhcSL
fmK/Bx3t/OFjXJEPHstdJcXmHuPOGZuiu19/RityuXiM2+YUzBszmoyg1s34
X0Fo/D1t/BC2kLTyb9TAvj1jHg/xuPzHoNV//0Szr2xDSLu0e051aSvSg3Ii
noRgCGxLcPfR/4mqEqumOXmCJWJGf2yiOMXFmbKS5rgNGpHLyhxyc/hHlKW7
daK7NR81wj6l2XxCZfmj2skRbcTn5E3jYRq5mNh33jdMPkNzRvjgXa5vys2Q
zqLcRkGXfsPdevvmLUwXipH++lvxFxKWZ0FQ/gXPg54r/PeGHysG/8nz8/A8
D+PVkKPkjH5/QAy5qmY5TADLCmH7YjM3yAuS6DA86dWHszD7JOX1afAAcKYt
/f0R8ZhtgkxZhdtHri8EbrfqlYnjY4Oa3vpihizbKc8db3wztGLqHKWY8/rR
6aClo5e/nME0PQzytrRom81CPHrxMNj5+mexuLDc9Dtq+MlMSk/48V4nEhgv
pFgdgk5f3/BG0+x/Cd/4sWtK20aAWmNpd53k3dHbBDIm6/Hihhg01tViybxA
J7+esblTLc5Pb8t1V53+JjhLGPZBoSD3PReobxFdfCdREMoiq7el0NXTb2Tx
T5F6kdjfimjY1cuW3OyOKrv6KCBbzoRvmYB9kToHKEbDUHD+Pgz5V7Sfr6ou
tPOOfXuUn9DX7LqWAAmImGR3TATlfRNmsVyqAoSrSLN9IneQVa5gEozGMG3T
bzmpulkoQG/n6jVq2tr8oFQwzSFWZECqVKyUsU9j9kKGOkqsxnFOSpHlzBGO
ds+ShSrjynbF/1R18WTVl8LyhLCKY43ispmM3tbSGxuKkJfCoITEgqmpHwMa
IDUBqGLvLrTwfdssPpRNaWsN/AgE6aKac8BEE+UNTGGRoqAVV2saDslwdj8F
sbkVmr3iQxWBjVBrXq3C7toW31MVEoL7w4+WVgr2sbGksgIQAofiek+w6KZ4
0e+C9tu1wzoS8HakqWFZniqivCwAfiibplxRq7smLjgoJqhEMO1o2/PtnApR
6cIqMUShGnHCuNAYlJiRVHymDL4o8ULZAJRTLgfkv9pVUzwLdn0T7v6rsBOJ
7P7JujzsZShXs+JZSVfaznGdVM2yZLkQMW6x35HhX8q55HUwZid/A/wu2Tb1
+AEA

-->

</rfc>
