<?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.6.17 (Ruby 3.1.2) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-nottingham-binary-structured-headers-03" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.15.0 -->
  <front>
    <title>Binary Structured HTTP Field Values</title>
    <seriesInfo name="Internet-Draft" value="draft-nottingham-binary-structured-headers-03"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization/>
      <address>
        <postal>
          <postalLine>Prahran</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <date/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <t>This specification defines a binary serialisation of Structured Field Values for HTTP, along with a negotiation mechanism for its use in HTTP/2.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-nottingham-binary-structured-headers/"/>.
      </t>
      <t>
         information can be found at <eref target="https://mnot.github.io/I-D/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/mnot/I-D/labels/binary-structured-headers"/>.</t>
    </note>
  </front>
  <middle>
    <section anchor="introduction">
      <name>Introduction</name>
      <t>Structured Field Values for HTTP <xref target="STRUCTURED-FIELDS"/> offers a set of data types for use by HTTP fields, along with a serialisation of them in a familiar textual syntax.</t>
      <t><xref target="fields"/> defines an alternative, binary serialisation of those structures, and <xref target="negotiate"/> defines a mechanism for using that serialisation in HTTP/2.</t>
      <t>The primary goal of this specification is to reduce parsing overhead and associated costs, as compared to the textual representation of Structured Fields. A secondary goal is a more compact wire format in common situations. An additional goal is to enable future work on more granular field compression mechanisms.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <t>This specification describes wire formats using the convention described in <xref section="1.3" sectionFormat="of" target="QUIC"/>.</t>
      </section>
    </section>
    <section anchor="fields">
      <name>Binary Structured Types</name>
      <t>This section defines a binary serialisation for Structured Field Values as defined in <xref target="STRUCTURED-FIELDS"/>.</t>
      <t>A Structured Field Value can be a singular Item (such as a String, an Integer, or a Boolean, possibly with parameters), or it can be a compound type, such as a Dictionary or List, whose members are composed of those Item types.</t>
      <t>When a field value is serialised as a Binary Structured Field, each of these types is preceded by an header octet that indicates the relevant type, along with some type-specific flags. The type then determines how the value is serialised in the following octet(s).</t>
      <artwork><![CDATA[
Binary Structured Type {
  Type (5),
  Flags (3),
  [Payload (..)]
}
]]></artwork>
      <t>Use of each flag may not be specified by all types. When this is the case, generators <bcp14>MUST</bcp14> send 0 for them, and recipients <bcp14>MUST</bcp14> ignore them.</t>
      <section anchor="literal">
        <name>Literal Values</name>
        <t>A Literal Value is a special type that carries the string value of a field; they are used to carry field values that are not structured using the data types defined in <xref section="3" sectionFormat="of" target="STRUCTURED-FIELDS"/>. This might be because the field is not recognised as a Structured Field, or it might be because a field that is understood to be a Structured Field cannot be parsed successfully as one.</t>
        <t>A literal value's payload consists of an integer Length field (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>), followed by that many octets of the field value. They are functionally equivalent to String Literal Representations in <xref section="5.2" sectionFormat="of" target="RFC7541"/>.</t>
        <artwork><![CDATA[
Literal Value {
  Type (5) = 0,
  Unused Flags (3) = 0,
  Length (i),
  Payload (..)
}
]]></artwork>
      </section>
      <section anchor="lists">
        <name>Lists</name>
        <t>A List (<xref section="3.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) uses its Flags to carry a Short Member Count as three bits.</t>
        <t>If the Short Member Count is zero, it indicates that the next byte is the Member Count, represented using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>. Otherwise, it indicates the Member Count itself. This allows a small list to be encoded without using an extra byte for its length.</t>
        <t>In either case, the payload indicates the number of List members that follow.</t>
        <artwork><![CDATA[
List {
  Type (5) = 1,
  Short Member Count (3),
  [ Member Count (i) ],
  Binary Structured Type (..) ...
}
]]></artwork>
      </section>
      <section anchor="dictionaries">
        <name>Dictionaries</name>
        <t>A Dictionary (<xref section="3.2" sectionFormat="of" target="STRUCTURED-FIELDS"/>) uses its Flags to indicate its number of members, in a fashion similar to Lists.</t>
        <artwork><![CDATA[
Dictionary {
  Type (5) = 2,
  Short Member Count (3),
  [ Member Count (i) ],
  Dictionary Member (..) ...
}
]]></artwork>
        <t>Each Dictionary member is represented by a length, followed by that many bytes of the member-key, followed by the Binary Structured Type(s) representing the member-value.</t>
        <artwork><![CDATA[
Dictionary Member {
  Key Length (i),
  Member Key (..),
  Binary Structured Type (..),
}

]]></artwork>
        <t>A Dictionary Member <bcp14>MUST NOT</bcp14> be a Parameters (0x2).</t>
      </section>
      <section anchor="inner-list">
        <name>Inner Lists</name>
        <t>An Inner List (<xref section="3.1.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) has a payload consisting a Member Count field (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>), followed by one or more fields representing the members of the list.</t>
        <artwork><![CDATA[
Inner List {
  Type (5) = 3,
  Parameters (1),
  Unused Flags (2),
  Member Count (i),
  Binary Structured Type (..) ...
  [Parameters (..)]
}
]]></artwork>
        <t>The Parameters Flag indicates whether the value is followed by Parameters (see <xref target="parameter"/>).</t>
        <t>Parameters on the Inner List itself, if present, are serialised in a following Parameter type (<xref target="parameter"/>); they do not form part of the payload of the Inner List (and therefore are not counted in Member Count).</t>
        <section anchor="parameter">
          <name>Parameters</name>
          <t>Parameters (<xref section="3.1.2" sectionFormat="of" target="STRUCTURED-FIELDS"/>) uses its Flags to indicate its number of members, in a fashion similar to Lists.</t>
          <artwork><![CDATA[
Parameters {
  Type (5) = 4,
  Short Parameter Count (3),
  [ Parameter Count (i) ],
  Parameter (..) ...
}
]]></artwork>
          <t>Each Parameter conveys a key and a value:</t>
          <artwork><![CDATA[
Parameter {
  Parameter Key Length (i),
  Parameter Key (..),
  Binary Structured Type (..)
}
]]></artwork>
          <t>A parameter's fields are:</t>
          <ul spacing="normal">
            <li>Parameter Key Length: The number of octets used for the parameter-key (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>)</li>
            <li>Parameter Key: Parameter Key Length octets of the parameter-key</li>
            <li>Binary Structured Type: The parameter value</li>
          </ul>
          <t>The Binary Structured Type in a Parameter <bcp14>MUST NOT</bcp14> be an Inner List (0x1) or Parameters (0x2).</t>
          <t>Parameters are always associated with the Binary Structured Type that immediately preceded them. Therefore, Parameters <bcp14>MUST NOT</bcp14> be the first Binary Structured Type in a Binary Structured Field Value, and <bcp14>MUST NOT</bcp14> follow another Parameters.</t>
        </section>
        <section anchor="integers">
          <name>Integers</name>
          <t>An Integer (<xref section="3.3.1" sectionFormat="of" target="STRUCTURED-FIELDS"/>) has a payload consisting of a single integer (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>). The Sign flag conveys whether the value is positive (1) or negative (0).</t>
          <artwork><![CDATA[
Integer {
  Type (5) = 5,
  Parameters (1),
  Sign (1),
  Unused Flag (1) = 0,
  Payload (i)
}
]]></artwork>
          <t>The Parameters Flag indicates whether the value is followed by Parameters (see <xref target="parameter"/>).</t>
        </section>
        <section anchor="decimals">
          <name>Decimals</name>
          <t>A Decimal (<xref section="3.3.2" sectionFormat="of" target="STRUCTURED-FIELDS"/>) has a payload consisting of two integers (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>) that are divided to convey the decimal value. The Sign flag conveys whether the value is positive (1) or negative (0).</t>
          <artwork><![CDATA[
Decimal {
  Type (5) = 6,
  Parameters (1),
  Sign (1),
  Unused Flag (1) = 0,
  Dividend (i),
  Divisor (i)
}
]]></artwork>
          <t>The Parameters Flag indicates whether the value is followed by Parameters (see <xref target="parameter"/>).</t>
        </section>
        <section anchor="strings">
          <name>Strings</name>
          <t>A String (<xref section="3.3.3" sectionFormat="of" target="STRUCTURED-FIELDS"/>) has a payload consisting of an integer Length field (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>), followed by that many octets of payload.</t>
          <artwork><![CDATA[
String {
  Type (5) = 7,
  Parameters (1),
  Unused Flags (2) = 0,
  Length (i),
  Payload (..)
}
]]></artwork>
          <t>The Parameters Flag indicates whether the value is followed by Parameters (see <xref target="parameter"/>).</t>
          <t>Its payload is Length octets long and ASCII-encoded.</t>
        </section>
        <section anchor="token">
          <name>Tokens</name>
          <t>A Token (<xref section="3.3.4" sectionFormat="of" target="STRUCTURED-FIELDS"/>) has a payload consisting of an integer Length field (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>), followed by that many octets of payload.</t>
          <artwork><![CDATA[
Token {
  Type (5) = 8,
  Parameters (1),
  Unused Flags (2) = 0,
  Length (i),
  Payload (..)
}
]]></artwork>
          <t>The Parameters Flag indicates whether the value is followed by Parameters (see <xref target="parameter"/>).</t>
          <t>Its payload is Length octets long and ASCII-encoded.</t>
        </section>
        <section anchor="byte-sequences">
          <name>Byte Sequences</name>
          <t>A Byte Sequence (<xref section="3.3.5" sectionFormat="of" target="STRUCTURED-FIELDS"/>) has a payload consisting of an integer Length field (using the variable-length encoding from <xref section="16" sectionFormat="of" target="QUIC"/>), followed by that many octets of payload.</t>
          <artwork><![CDATA[
Byte Sequence {
  Type (5) = 9,
  Parameters (1),
  Unused Flags (2) = 0,
  Length (i),
  Payload (..)
}
]]></artwork>
          <t>The Parameters Flag indicates whether the value is followed by Parameters (see <xref target="parameter"/>).</t>
          <t>The payload is is Length octets long, containing the raw octets of the byte sequence.</t>
        </section>
        <section anchor="booleans">
          <name>Booleans</name>
          <t>A String (<xref section="3.3.6" sectionFormat="of" target="STRUCTURED-FIELDS"/>) uses the Payload flag to indicate its value; if Payload is 0, the value is False; if Payload is 1, the value is True.</t>
          <t>The Boolean data type (type=0x8) carries its payload in the Payload Flag:</t>
          <artwork><![CDATA[
Boolean {
  Type (5) = 10,
  Parameters (1),
  Payload (1),
  Unused Flag (1) = 0,
}
]]></artwork>
          <t>The Parameters Flag indicates whether the value is followed by Parameters (see <xref target="parameter"/>).</t>
        </section>
      </section>
    </section>
    <section anchor="negotiate">
      <name>Using Binary Structured Fields in HTTP/2</name>
      <t>When both peers on a connection support this specification, they can negotiate to serialise fields that they know to be Structured Fields as binary data, rather than strings.</t>
      <t>Peers advertise and discover this support using a HTTP/2 setting defined in <xref target="setting"/>, and convey Binary Structured Fields in streams whose HEADERS frame uses the flag defined in <xref target="flag"/>.</t>
      <section anchor="setting">
        <name>The SETTINGS_BINARY_STRUCTURED_FIELDS Setting</name>
        <t>Advertising support for Binary Structured Fields is accomplished using a HTTP/2 setting, SETTINGS_BINARY_STRUCTURED_FIELDS (0xTODO).</t>
        <t>Receiving SETTINGS_BINARY_STRUCTURED_FIELDS with a non-zero value from a peer indicates that:</t>
        <ol spacing="normal" type="1"><li>The peer supports all of the Binary Structured Types defined in <xref target="fields"/>.</li>
          <li>The peer will process the BINARY_STRUCTRED HEADERS flag as defined in <xref target="flag"/>.</li>
          <li>
            <t>When passing the message to a downstream consumer (whether on the network or not) who does not support this extension or otherwise explicitly negotiate an equivalent mechanism, the peer will:
            </t>
            <ol spacing="normal" type="1"><li>Transform all fields defined as Mapped Fields in Section 1.3 of <xref target="RETROFIT"/> into their unmapped forms, removing the mapped fields.</li>
              <li>Serialize all fields into the appropriate form for that peer (e.g., the textual representation of Structured Fields data types defined in <xref target="STRUCTURED-FIELDS"/>).</li>
            </ol>
          </li>
        </ol>
        <t>The default value of SETTINGS_BINARY_STRUCTURED_FIELDS is 0, whereas a value of 1 indicates that this specification is supported with no further extensions. Future specifications might use values greater than one to indicate support for extensions.</t>
      </section>
      <section anchor="flag">
        <name>The BINARY_STRUCTRED HEADERS Flag</name>
        <t>When a peer has indicated that it supports this specification as per <xref target="setting"/>, a sender can send the BINARY_STRUCTURED flag (0xTODO) on the HEADERS frame.</t>
        <t>This flag indicates that the HEADERS frame containing it and subsequent CONTINUATION frames on the same stream use the Binary Structured Types defined in <xref target="fields"/> instead of the String Literal Representation defined in <xref section="5.2" sectionFormat="of" target="RFC7541"/> to represent all field values. Field names are still serialised as String Literal Representations.</t>
        <t>In such frames, all field values <bcp14>MUST</bcp14> be sent as Binary Structured Field Values. Note that this includes Binary Literals (<xref target="literal"/>) for those field values that are not recognised as Structured Fields, as well as textual values that cannot be successfully parsed as Structured Fields. Implementations <bcp14>MAY</bcp14> also send a field value as a Binary Literal even when it is possible to represent it as a Structured Field (e.g., for efficiency purposes).</t>
        <t>Binary Structured Field Values are stored in the HPACK <xref target="RFC7541"/> dynamic table, and their lengths are used for the purposes of maintaining dynamic table size (see <xref section="4" sectionFormat="comma" target="RFC7541"/>).</t>
        <t>Note that HEADERS frames with and without the BINARY_STRUCTURED flag <bcp14>MAY</bcp14> be mixed on the same connection, depending on the requirements of the sender.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <ul spacing="normal">
        <li>ISSUE: todo</li>
      </ul>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>As is so often the case, having alternative representations of data brings the potential for security weaknesses, when attackers exploit the differences between those representations and their handling.</t>
      <t>One mitigation to this risk is the strictness of parsing for both non-binary and binary Structured Fields data types, along with the "escape valve" of Binary Literals (<xref target="literal"/>). Therefore, implementation divergence from this strictness can have security impact.</t>
    </section>
  </middle>
  <back>
    <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">
            <organization/>
          </author>
          <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="RFC7541">
        <front>
          <title>HPACK: Header Compression for HTTP/2</title>
          <author fullname="R. Peon" initials="R." surname="Peon">
            <organization/>
          </author>
          <author fullname="H. Ruellan" initials="H." surname="Ruellan">
            <organization/>
          </author>
          <date month="May" year="2015"/>
          <abstract>
            <t>This specification defines HPACK, a compression format for efficiently representing HTTP header fields, to be used in HTTP/2.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="7541"/>
        <seriesInfo name="DOI" value="10.17487/RFC7541"/>
      </reference>
      <reference anchor="STRUCTURED-FIELDS">
        <front>
          <title>Structured Field Values for HTTP</title>
          <author fullname="M. Nottingham" initials="M." surname="Nottingham">
            <organization/>
          </author>
          <author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
            <organization/>
          </author>
          <date month="February" year="2021"/>
          <abstract>
            <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="8941"/>
        <seriesInfo name="DOI" value="10.17487/RFC8941"/>
      </reference>
      <reference anchor="QUIC">
        <front>
          <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
          <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar">
            <organization/>
          </author>
          <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson">
            <organization/>
          </author>
          <date month="May" year="2021"/>
          <abstract>
            <t>This document defines the core of the QUIC transport protocol.  QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances.  Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
          </abstract>
        </front>
        <seriesInfo name="RFC" value="9000"/>
        <seriesInfo name="DOI" value="10.17487/RFC9000"/>
      </reference>
      <reference anchor="RETROFIT">
        <front>
          <title>Retrofit Structured Fields for HTTP</title>
          <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
         </author>
          <date day="8" month="June" year="2022"/>
          <abstract>
            <t>   This specification nominates a selection of existing HTTP fields as
   having syntax that is compatible with Structured Fields, so that they
   can be handled as such (subject to certain caveats).

   To accommodate some additional fields whose syntax is not compatible,
   it also defines mappings of their semantics into new Structured
   Fields.  It does not specify how to negotiate their use.

            </t>
          </abstract>
        </front>
        <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-retrofit-04"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba">
            <organization/>
          </author>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
  </back>
  <!-- ##markdown-source:
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
W/fuKMD4o1XSQUvz+051PuO8/7IDEU+P15vnqaW2b74s+fzyE4t/tqqGtjp3
wtxmcOSjWULtwd35cNj1NX1Q8Cj7qFLK1iz94INFftXW84s/tJ4dSy01f/v/
SM2v6ajmTv1Y4L07y2i8aWv75R9a203WWlp/9UfT+qh+fmZ2K576a1IrdRrk
nMtVKznmwzrjhVKahbvcegLfv366PLPMvCOOI2m7SmOe/0wF7U3Fw0mnKY83
yC62Bp22Bo1yPtzhPN2RXV05iCP6+5eTT98el1ceuu4taYNS0pEvt8JS7dPF
k91mUhrAE9H7d4vP4p79ak/CbqomDMB71c3hbxDHGd1iKn8OQZeWqGOc3k2x
XFIVvN2k4a7c+aazXJBUXp5PhGoynH6vxceUbvf4OHmbQoCJvwsmVXZgtl4o
2MBdV1ElccNUyvhB5Zb2IJSLtZlQc4gn0lPsD6gD20ZxM1bzPsq/fHx0tYxP
EZ8SIihRcmH8Ve3by8HF5e0dEAvaqLyArb+xEb3xd+WHLt+8HI2G7/969+H1
8P3g9rsPlVt9cG4F0HIEbw4DlfBMzze9D3xS0b2fYshqQpfIUMi8vFVoC6Xz
BeSgdh1dX1yTtd2i1kQOioU+Py30YmVply5GvH0zwks2udY1CVzx1GXk/NEz
yRcTAb329Ro0Be5boHrRWW25lcYyyzyj2zu3Vp1ukF1plFTYbjUIWnzub3uX
KNmrk01j5Iw9QIo4W6XOUjgsFguqSYOb+6O+VFnXBpTTcdoxWRTmKXe/2XA7
9ckiL+POJcwO9zp4Da1OtEX5XzkgXchUF3hl/5C/egky4JZDknMOwOejQJKv
99fAMri/ooaauvm3WkA2m9AK+PhI8Z7brnQuinThZtLahi62FtlDKSn/yfVd
ESVQ0Z1DjZ9UnZKwosCMPFvmzCGT606agCvM0pHqzXqdX9rytfeWeldHSYi+
GCiLxFY35593ARfkVnQkwwlTOfV0+4pwVyect4VwLJRmYlrkbEmlYZieeOM6
yxqzw006XXz7u/sZiLABVunEvh6k65BSW7tCrb3uwhFtc8gOUralsG4oSQwb
hGt3W/n1DpYxYUlnJQ105r4JvkdMXQvFlveSyJ3bBqgKntZA6Z7vRJo2Y3B5
RduE9FoqBaopRphi7DInK86v30P19wNqvHLjy3N8Q5M9AoQGhl+EW9RebFV1
Hv/kPfzuJov2dbxrqfTzKjfzltHzR3sps8EXDZbQstlM9HQ7gLvx5R4nJ47O
1jbuvJDaaJS7WH/yiNFwe7WqeYdOJ0kRq3Kep4SvEkJHDBJShw+ZUU90rjR7
SLbggbsGVwr00/W/h5X6OlVbSKMfxPeI7FqyJ4aIxGpR9U9cDb6DiEzmbLrZ
yVXv3QoCVw/wLGp45Et9ExrRVFO32u7uiglAyf49hcNpFACguMipyYz7qJ5W
h7eLLK+6sd7eDM7/RoGgNLN4DRvSE2GpuHOJlYsKrs4zVXtReV/gCeALHLhb
cLnGSsJQdPD5r9+tUwakFw6iK2tp+LHxeUha9S88gR+kFGh1oT9R413Noau8
uAOXW0JlXO2mvg0OcTdn5ZaFlgMtl6APB+8H1LRrdEwNYa5v9ysxvLu7v+xD
f3FGo8BPkWu73ho54GQOlpJNrUprDWZzyZG11t/dCn6m7DwfcxbtRA5BpZYa
xEgJJuy6UvJjClMm12Uzk9bKyUfKuSndyLQTXKypsZ3PDyApu1JMEblbe+tK
+wg4cYL9IY3rlKRr9cyhFwd56h7Q5mNojHH/aYRIcTW9awEnWrlYoXzSVwu0
w3hf/luF+EZjIu1woMxELjkwPqgD2uVJSGlcquiGG9Mps8pnfMLAma0LahUH
FLSgJlXJWXNDefhvB2OIOIr+Aav3Oy4mNAAA

-->

</rfc>
