<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.0.40 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc toc="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-lpwan-ipv6-static-context-hc-04" category="info">

  <front>
    <title abbrev="LPWAN SCHC">LPWAN Static Context Header Compression (SCHC) and fragmentation for IPv6 and UDP</title>

    <author initials="A." surname="Minaburo" fullname="Ana Minaburo">
      <organization>Acklio</organization>
      <address>
        <postal>
          <street>2bis rue de la Chataigneraie</street>
          <city>35510 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>ana@ackl.io</email>
      </address>
    </author>
    <author initials="L." surname="Toutain" fullname="Laurent Toutain">
      <organization>IMT-Atlantique</organization>
      <address>
        <postal>
          <street>2 rue de la Chataigneraie</street> <street>CS 17607</street>
          <city>35576 Cesson-Sevigne Cedex</city>
          <country>France</country>
        </postal>
        <email>Laurent.Toutain@imt-atlantique.fr</email>
      </address>
    </author>
    <author initials="C." surname="Gomez" fullname="Carles Gomez">
      <organization>Universitat Politècnica de Catalunya</organization>
      <address>
        <postal>
          <street>C/Esteve Terradas, 7</street> <street>08860 Castelldefels</street>
          <country>Spain</country>
        </postal>
        <email>carlesgo@entel.upc.edu</email>
      </address>
    </author>

    <date year="2017" month="June" day="16"/>

    
    <workgroup>lpwan Working Group</workgroup>
    

    <abstract>


<t>This document describes a header compression scheme and fragmentation functionality 
for very low bandwidth networks. These techniques are especially tailored for LPWAN (Low Power Wide Area Network) networks.</t>

<t>The Static Context Header Compression (SCHC) offers a great level of flexibility 
when  processing the header fields and must be used for this kind of networks. A common context stored in a LPWAN device and in the  network is used. This context stores information that will not be transmitted in the constrained network.
Static context means that information stored in the context which describes field values, does not change during
packet transmission, avoiding complex resynchronization mechanisms, incompatible
with LPWAN characteristics. In most of the cases, IPv6/UDP headers are reduced
to a small identifier called Rule ID. But sometimes the SCHC header compression will not be enough to send the packet in one L2 PDU, so this document also describes a Fragmentation protocol that must be used when needed.</t>

<t>This document describes the generic compression/decompression mechanism and applies it 
to IPv6/UDP headers. Similar mechanisms for other protocols such as CoAP will be described in 
separate documents. Moreover, this document specifies fragmentation and reassembly mechanims for SCHC compressed packets exceeding the L2 PDU size and for the case where the SCHC compression is not possible then the IPv6/UDP packet is sent using the fragmentation protocol.</t>



    </abstract>


  </front>

  <middle>


<section anchor="Introduction" title="Introduction">

<t>Header compression is mandatory to efficiently bring Internet connectivity to the node
within a LPWAN network. Some LPWAN networks properties can be exploited for an efficient header
compression:</t>

<t><list style="symbols">
  <t>Topology is star-oriented, therefore all the packets follow the same path.
For the needs of this draft, the architecture can be summarized to Devices (Dev)
exchanging information with LPWAN Application Server (App) through a Network Gateway (NGW).</t>
  <t>Traffic flows are mostly known in advance, since devices embed built-in
applications. Contrary to computers or smartphones, new applications cannot
be easily installed.</t>
</list></t>

<t>The Static Context Header Compression (SCHC) is defined for this environment.
SCHC uses a context where header information is kept in the header format order. This context is 
static (the values on the header fields do not change over time) avoiding 
complex resynchronization mechanisms, incompatible
with LPWAN characteristics. In most of the cases, IPv6/UDP headers are reduced
to a small context identifier.</t>

<t>The SCHC header compression mechanism is independent of the specific LPWAN technology over which it will be used.</t>

<t>LPWAN technologies are also characterized,
among others, by a very reduced data unit and/or payload size
<xref target="I-D.ietf-lpwan-overview"/>.  However, some of these technologies
do not support layer two fragmentation, therefore the only option for
   these to support the IPv6 MTU requirement of 1280 bytes
 <xref target="RFC2460"/> is the use of a fragmentation protocol at the
adaptation layer below IPv6. 
This draft defines also a fragmentation 
functionality to support the IPv6 MTU requirements over LPWAN 
technologies. Such functionality has been designed under the assumption that data unit reordering will not happen between the entity performing fragmentation and the entity performing reassembly.</t>

</section>
<section anchor="LPWAN-Archi" title="LPWAN Architecture">

<t>LPWAN technologies have similar architectures but different terminology. We can identify different
types of entities in a typical LPWAN network, see <xref target="Fig-LPWANarchi"/>:</t>

<t>o  Devices (Dev) are the end-devices or hosts (e.g. sensors,
      actuators, etc.). There can be a high density of devices per radio gateway.</t>

<t>o  The Radio Gateway (RG), which is the end point of the constrained link.</t>

<t>o  The Network Gateway (NGW) is the interconnection node between the Radio Gateway and the Internet.</t>

<t>o  LPWAN-AAA Server, which controls the user authentication, the
      applications. We use the term LPWAN-AAA server because we are not assuming 
      that this entity speaks RADIUS or Diameter as many/most AAA servers do, but equally we don’t want to
      rule that out, as the functionality will be similar.</t>

<t>o  Application Server (App)</t>

<figure title="LPWAN Architecture" anchor="Fig-LPWANarchi"><artwork><![CDATA[
                                              +------+
 ()   ()   ()       |                         |LPWAN-|
  ()  () () ()     / \         +---------+    | AAA  |
() () () () () ()  /   \=======|    ^    |====|Server|  +-----------+
 ()  ()   ()     |             | <--|--> |    +------+  |APPLICATION|
()  ()  ()  ()  / \============|    v    |==============|    (App)  |
  ()  ()  ()   /   \           +---------+              +-----------+
 Dev        Radio Gateways         NGW

]]></artwork></figure>

</section>
<section anchor="terminology" title="Terminology">
<t>This section defines the terminology and acronyms used in this document.</t>

<t><list style="symbols">
  <t>CDA: Compression/Decompression Action. An action that is perfomed for both functionnalities to compress a header field or to recover its original value in the decompression phase.</t>
  <t>Context: A set of rules used to compress/decompress headers</t>
  <t>Dev: Device. Node connected to the LPWAN. A Dev may implement SCHC.</t>
  <t>App: LPWAN Application. An application sending/receiving IPv6 packets to/from the Device.</t>
  <t>SCHC C/D: LPWAN Compressor/Decompressor. A process in the network to achieve compression/decompressing headers. SCHC C/D uses SCHC rules to perform compression and decompression.</t>
  <t>MO: Matching Operator. An operator used to match a value contained in a header field with a value contained in a Rule.</t>
  <t>Rule: A set of header field values.</t>
  <t>Rule ID: An identifier for a rule, SCHC C/D and Dev share the same Rule ID for a specific flow.</t>
  <t>TV: Target value. A value contained in the Rule that will be matched with the value of a header field.</t>
  <t>FID: Field Indentifier is an index to describe the header fields in the Rule</t>
  <t>FP: Field Position is a list of possible correct values that a field may use</t>
  <t>DI: Direction Indicator is a differentiator for matching in order to be able to have different values for both sides.</t>
  <t>IID: Interface Identifier. See the IPv6 addressing architecture <xref target="RFC7136"/></t>
  <t>Dev-IID: Device Interface Identifier. Second part of the IPv6 address to identify the device interface</t>
  <t>APP-IID: Application Interface Identifier. Second part of the IPv6 address to identify the application interface</t>
  <t>Dw: Down Link direction for compression, from SCHC C/D to Dev</t>
  <t>Up: Up Link direction for compression, from Dev to SCHC C/D</t>
  <t>Bi: Bidirectional, it can be used in both senses</t>
</list></t>

</section>
<section anchor="static-context-header-compression" title="Static Context Header Compression">

<t>Static Context Header Compression (SCHC) avoids context synchronization,
which is the most bandwidth-consuming operation in other header compression mechanisms
such as RoHC <xref target="RFC5795"/>. Based on the fact
that the nature of data flows is highly predictable in LPWAN networks, a static
context may be stored on the Device (Dev). The context must be stored in both ends, and it can 
either be learned by a provisioning protocol or by out of band means or it can be pre-provosioned, etc. 
The way the context is learned on both sides is out of the scope of this document.</t>

<figure title="Architecture" anchor="Fig-archi"><artwork><![CDATA[
     Dev                                                 App
+---------------+                                  +---------------+
| APP1 APP2 APP3|                                  |APP1  APP2 APP3|
|               |                                  |               |
|       UDP     |                                  |      UDP      | 
|      IPv6     |                                  |     IPv6      |   
|               |                                  |               |  
|    SCHC C/D   |                                  |               |  
|    (context)  |                                  |               | 
+--------+------+                                  +-------+-------+ 
         |   +--+     +----+     +---------+               .
         +~~ |RG| === |NGW | === |SCHC C/D |... Internet ...
             +--+     +----+     |(context)| 
                                 +---------+
]]></artwork></figure>

<t><xref target="Fig-archi"/> based on <xref target="I-D.ietf-lpwan-overview"/> terminology represents the architecture for 
compression/decompression. The Device is sending applications flows using IPv6 or IPv6/UDP protocols. These flows are compressed by an Static Context Header Compression Compressor/Decompressor (SCHC C/D) to reduce headers size. Resulting
information is sent on a layer two (L2) frame to the LPWAN Radio Network to a Radio Gateway (RG) which forwards 
the frame to a Network Gateway (NGW).
The NGW sends the data to a SCHC C/D for decompression which shares the same rules with the Dev. The SCHC C/D can be 
located on the Network Gateway (NGW) or in another place as long as a tunnel is established between the NGW and the SCHC C/D. SCHC C/D in both sides must share the same set of Rules.
After decompression, the packet can be sent on the Internet to one
or several LPWAN Application Servers (App).</t>

<t>The SCHC C/D process is bidirectional, so the same principles can be applied in the other direction.</t>

<section anchor="schc-rules" title="SCHC Rules">

<t>The main idea of the SCHC compression scheme is to send the Rule id to the other end that match as much as possible the original packet values instead 
of sending known field values. When a value is known by both
ends, it is not necessary sent through the LPWAN network.</t>

<t>The context contains a list of rules (cf. <xref target="Fig-ctxt"/>). Each Rule contains 
itself a list of fields descriptions composed of a field identifier (FID), a field position (FP), a direction indicator (DI), 
a target value (TV), a matching operator (MO) and a Compression/Decompression Action
(CDA).</t>

<figure title="Compression/Decompression Context" anchor="Fig-ctxt"><artwork><![CDATA[
  /--------------------------------------------------------------\
  |                      Rule N                                  |
 /--------------------------------------------------------------\|
 |                    Rule i                                    ||
/--------------------------------------------------------------\||
|  (FID)         Rule 1                                        |||
|+-------+--+--+------------+-----------------+---------------+|||
||Field 1|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||||
|+-------+--+--+------------+-----------------+---------------+|||
||Field 2|FP|DI|Target Value|Matching Operator|Comp/Decomp Act||||
|+-------+--+--+------------+-----------------+---------------+|||
||...    |..|..|   ...      | ...             | ...           ||||
|+-------+--+--+------------+-----------------+---------------+||/
||Field N|FP|DI|Target Value|Matching Operator|Comp/Decomp Act|||
|+-------+--+--+------------+-----------------+---------------+|/
|                                                              |
\--------------------------------------------------------------/
]]></artwork></figure>

<t>The Rule does not describe the original packet format which
must be known from the compressor/decompressor. The rule just describes the
compression/decompression behavior for the header fields. In the rule, the description of the header field must be performed in the format packet order.</t>

<t>The Rule describes also the compressed header fields which are transmitted regarding their position
in the rule which is used for data serialization on the compressor side and data deserialization on the decompressor side.</t>

<t>The Context describes the header fields and its values with the following entries:</t>

<t><list style="symbols">
  <t>A Field ID (FID) is a unique value to define the header field.</t>
  <t>A Field Position (FP) indicating if several instances of the field exist in the 
headers which one is targeted. The default position is 1</t>
  <t>A direction indicator (DI) indicating the packet direction. Three values are possible:  <list style="symbols">
      <t>UP LINK (Up) when the field or the value is only present in packets sent by the Dev to the App,</t>
      <t>DOWN LINK (Dw) when the field or the value is only present in packet sent from the App to the Dev and</t>
      <t>BIDIRECTIONAL (Bi) when the field or the value is present either upstream or downstream.</t>
    </list></t>
  <t>A Target Value (TV) is the value used to make the comparison with
the packet header field. The Target Value can be of any type (integer, strings,…).
For instance, it can be a single value or a more complex structure (array, list,…), such as a JSON or a CBOR structure.</t>
  <t>A Matching Operator (MO) is the operator used to make the comparison between 
the Field Value and the Target Value. The Matching Operator may require some 
parameters. MO is only used during the compression phase.</t>
  <t>A Compression Decompression Action (CDA) is used to describe the compression
and the decompression process. The CDA may require some 
parameters, CDA are used in both compression and decompression phases.</t>
</list></t>

</section>
<section anchor="rule-id" title="Rule ID">

<t>Rule IDs are sent between both compression/decompression elements. The size 
of the Rule ID is not specified in this document, it is implementation-specific and can vary regarding the
LPWAN technology, the number of flows, among others.</t>

<t>Some values in the Rule ID space may be reserved for goals other than header 
compression as fragmentation. (See <xref target="Frag"/>).</t>

<t>Rule IDs are specific to a Dev. Two Devs may use the same Rule ID for different
header compression. To identify the correct Rule ID, the SCHC C/D needs to combine the Rule ID with the Dev L2 identifier
to find the appropriate Rule.</t>

</section>
<section anchor="packet-processing" title="Packet processing">

<t>The compression/decompression process follows several steps:</t>

<t><list style="symbols">
  <t>compression Rule selection: The goal is to identify which Rule(s) will be used
to compress the packet’s headers. When doing compression from Dw to Up the SCHC C/D needs to find the 
correct Rule to use by identifying its Dev-ID and the Rule-ID. In the Up situation only the Rule-ID is used. 
The next step is to choose the fields by their direction, using the 
direction indicator (DI), so the fields that does not correspond to the appropiated DI will be excluded. 
Next, then fields are identified according to their field identifier (FID) and field position (FP). 
If the field position does not correspond then the Rule is not use and the SCHC take next Rule.
Once the DI and the FP correspond to the header information, each field’s value is then compared to the corresponding 
target value (TV) stored in the Rule for that specific field using the matching operator (MO).
If all the fields in the packet’s header satisfy all the matching operators (MOs) of a Rule (i.e. all results are True),
the fields of the header are then processed according to the Compression/Decompession Actions (CDAs) 
and a compressed header is obtained. Otherwise the next rule is tested. 
If no eligible rule is found, then the header must be sent without compression, in which case the fragmentation process 
must be required.</t>
  <t>sending: The Rule ID is sent to the other end followed by information resulting
from the compression of header fields. This information is sent in the order expressed in the Rule for the matching
fields. The way the Rule ID is sent depends on the specific LPWAN
layer two technology and will be specified in a specific document, and is out of the scope of this document. 
For example, it can be either included in a Layer 2 header or sent in the first byte of
the L2 payload. (cf. <xref target="Fig-FormatPckt"/>).</t>
  <t>decompression: In both directions, The receiver identifies the sender through its device-id
(e.g. MAC address) and selects the appropriate Rule through the Rule ID. This
Rule gives the compressed header format and associates these values to header fields.
It applies the CDA action to reconstruct the original
header fields. The CDA application order can be different of the order given by the Rule. For instance
Compute-* may be applied at end, after the other CDAs.</t>
</list></t>

<figure title="LPWAN Compressed Format Packet" anchor="Fig-FormatPckt"><artwork><![CDATA[
 
+--- ... ---+-------------- ... --------------+
|  Rule ID  |Compressed Hdr Fields information|
+--- ... ---+-------------- ... --------------+

]]></artwork></figure>

</section>
</section>
<section anchor="chap-MO" title="Matching operators">

<t>Matching Operators (MOs) are functions used by both SCHC C/D endpoints involved in the header 
compression/decompression. They are not typed and can be applied indifferently to integer, string 
or any other data type. The result of the operation can either be True or False. MOs are defined as follows:</t>

<t><list style="symbols">
  <t>equal: A field value in a packet matches with a TV in a Rule if they are equal.</t>
  <t>ignore: No check is done between a field value in a packet and a TV
in the Rule. The result of the matching is always true.</t>
  <t>MSB(length): A matching is obtained if the most significant bits of the length field value bits 
of the header are equal to the TV in the rule. The MSB Matching Operator needs a parameter,
indicating the number of bits, to proceed to the matching.</t>
  <t>match-mapping: The goal of mapping-sent is to reduce the size of a field by allocating
a shorter value. The Target Value contains a list of values. Each value is idenfied by a short ID (or index). 
This operator matches if a field value is equal to one of those target values.</t>
</list></t>

</section>
<section anchor="chap-CDA" title="Compression Decompression Actions (CDA)">

<t>The Compression Decompression Actions (CDA) describes the action taken during
the compression of headers fields, and inversely, the action taken by the decompressor to restore
the original value.</t>

<figure title="Compression and Decompression Functions" anchor="Fig-function"><artwork><![CDATA[
/--------------------+-------------+----------------------------\
|  Action            | Compression | Decompression              |
|                    |             |                            |
+--------------------+-------------+----------------------------+
|not-sent            |elided       |use value stored in ctxt    |
|value-sent          |send         |build from received value   |
|mapping-sent        |send index   |value from index on a table |
|LSB(length)         |send LSB     |TV OR received value        |
|compute-length      |elided       |compute length              |
|compute-checksum    |elided       |compute UDP checksum        |
|Deviid              |elided       |build IID from L2 Dev addr  |
|Appiid              |elided       |build IID from L2 App addr  |
\--------------------+-------------+----------------------------/

]]></artwork></figure>

<t><xref target="Fig-function"/> sumarizes the basics functions defined to compress and decompress
a field. The first column gives the action’s name. The second and third
columns outlines the compression/decompression behavior.</t>

<t>Compression is done in the rule order and compressed values are sent in that order in the compressed
message. The receiver must be able to find the size of each compressed field
which can be given by the rule or may be sent with the compressed header.</t>

<t>If the field is identified as variable, then its size must be sent first using the following coding:</t>

<t><list style="symbols">
  <t>If the size is between 0 and 14 bytes it is sent using 4 bits.</t>
  <t>For values between 15 and 255, the first 4 bit sent are set to 1 and the size is sent using 8 bits.</t>
  <t>For higher value, the first 12 bytes are set to 1 and the size is sent on 2 bytes.</t>
</list></t>

<section anchor="not-sent-cda" title="not-sent CDA">

<t>Not-sent function is generally used when the field value is specified in the rule and
therefore known by the both Compressor and Decompressor. This action is generally used with the
“equal” MO. If MO is “ignore”, there is a risk to have a decompressed field
value different from the compressed field.</t>

<t>The compressor does not send any value on the compressed header for the field on which compression is applied.</t>

<t>The decompressor restores the field value with the target value stored in the matched rule.</t>

</section>
<section anchor="value-sent-cda" title="value-sent CDA">

<t>The value-sent action is generally used when the field value is not known by both Compressor and Decompressor.
The value is sent in the compressed message header. Both Compressor and Decompressor must know the
size of the field, either implicitly (the size is known by both sides) 
or explicitly in the compressed header
field by indicating the length. This function is generally used with the “ignore” MO.</t>

<t>The compressor sends the Target Value stored on the rule in the compressed
header message. The decompressor restores the field value with the one received 
from the LPWAN</t>

</section>
<section anchor="mapping-sent" title="mapping-sent">

<t>mapping-sent is used to send a smaller index associated to the list of values
in the Target Value. This function is used together with the “match-mapping” MO.</t>

<t>The compressor looks in the TV to find the field value and send the corresponding index.
The decompressor uses this index to restore the field value.</t>

<t>The number of bits sent is the minimal size to code all the possible indexes.</t>

</section>
<section anchor="lsb-cda" title="LSB CDA">

<t>LSB action is used to avoid sendind the known part of the packet field header to the other end.
This action is used together with the “MSB” MO. A length can be specified in the rule to indicate
how many bits have to be sent. If not length is specified, the number of bits sent are the
field length minus the bits length specified in the MSB MO.</t>

<t>The compressor sends the “length” Least Significant Bits. The decompressor
combines the value received with the Target Value.</t>

<t>If this action is made on a variable length field, the remaning size in byte has to be sent before.</t>

</section>
<section anchor="deviid-appiid-cda" title="DEViid, APPiid CDA">

<t>These functions are used to process respectively the Dev and the App Interface Identifiers (Deviid and Appiid) of the 
IPv6 addresses. Appiid CDA is less common, since current LPWAN technologies
frames contain a single address.</t>

<t>The IID value can be computed from the Device ID present in the Layer 2 header. The
computation is specific for each LPWAN technology and depends on the Device ID size.</t>

<t>In the downstream direction, these CDA are used to determine the L2 addresses used by the LPWAN.</t>

</section>
<section anchor="compute-" title="Compute-*">

<t>Thes classes of functions are used by the decompressor to compute the compressed field value based on received information. 
Compressed fields are elided during compression and reconstructed during decompression.</t>

<t><list style="symbols">
  <t>compute-length: compute the length assigned to this field. For instance, regarding
the field ID, this CDA may be used to compute IPv6 length or UDP length.</t>
  <t>compute-checksum: compute a checksum from the information already received by the SCHC C/D.
This field may be used to compute UDP checksum.</t>
</list></t>

</section>
</section>
<section anchor="application-to-ipv6-and-udp-headers" title="Application to IPv6 and UDP headers">

<t>This section lists the different IPv6 and UDP header fields and how they can be compressed.</t>

<section anchor="ipv6-version-field" title="IPv6 version field">

<t>This field always holds the same value, therefore the TV is 6, the MO is “equal” 
and the “CDA “not-sent””.</t>

</section>
<section anchor="ipv6-traffic-class-field" title="IPv6 Traffic class field">

<t>If the DiffServ field identified by the rest of the rule do not vary and is known 
by both sides, the TV should contain this well-known value, the MO should be “equal” 
and the CDA must be “not-sent.</t>

<t>If the DiffServ field identified by the rest of the rule varies over time or is not 
known by both sides, then there are two possibilities depending on the variability of the value, 
the first one is to do not compressed the field and sends the original value, or 
the second where the values can be computed by sending only the LSB bits:</t>

<t><list style="symbols">
  <t>TV is not set to any value, MO is set to “ignore” and CDA is set to “value-sent”</t>
  <t>TV contains a stable value, MO is MSB(X) and CDA is set to LSB</t>
</list></t>

</section>
<section anchor="flow-label-field" title="Flow label field">

<t>If the Flow Label field identified by the rest of the rule does not vary and is known 
by both sides, the TV should contain this well-known value, the MO should be “equal” 
and the CDA should be “not-sent”.</t>

<t>If the Flow Label field identified by the rest of the rule varies during time or is not 
known by both sides, there are two possibilities depending on the variability of the value,
the first one is without compression and then the value is sent 
and the second where only part of the value is sent and the decompressor needs to compute the original value:</t>

<t><list style="symbols">
  <t>TV is not set, MO is set to “ignore” and CDA is set to “value-sent”</t>
  <t>TV contains a stable value, MO is MSB(X) and CDA is set to LSB</t>
</list></t>

</section>
<section anchor="payload-length-field" title="Payload Length field">

<t>If the LPWAN technology does not add padding, this field can be elided for the 
transmission on the LPWAN network. The SCHC C/D recomputes the original payload length
value. The TV is not set, the MO is set to “ignore” and the CDA is “compute-IPv6-length”.</t>

<t>If the payload length needs to be sent and does not need to be coded in 16 bits, the TV can be set to 0x0000, 
the MO set to “MSB (16-s)” and the
CDA to “LSB”. The ‘s’ parameter depends on the expected maximum packet length.</t>

<t>On other cases, the payload length field must be sent and the CDA is replaced by “value-sent”.</t>

</section>
<section anchor="next-header-field" title="Next Header field">

<t>If the Next Header field identified by the rest of the rule does not vary and is known 
by both sides, the TV should contain this Next Header value, the MO should be “equal” 
and the CDA should be “not-sent”.</t>

<t>If the Next header field identified by the rest of the rule varies during time or is not 
known by both sides, then TV is not set, MO is set to “ignore” and CDA is set to 
“value-sent”. A matching-list may also be used.</t>

</section>
<section anchor="hop-limit-field" title="Hop Limit field">

<t>The End System is generally a device and does not forward packets, therefore the
Hop Limit value is constant. So the TV is set with a default value, the MO 
is set to “equal” and the CDA is set to “not-sent”.</t>

<t>Otherwise the value is sent on the LPWAN: TV is not set, MO is set to ignore and 
CDA is set to “value-sent”.</t>

<t>Note that the field behavior differs in upstream and downstream. In upstream, since there is 
no IP forwarding between the Dev and the SCHC C/D, the value is relatively constant. On the
other hand, the downstream value depends of Internet routing and may change more frequently.
One solution could be to use the Direction Indicator (DI) to distinguish both directions to
elide the field in the upstream direction and send the value in the downstream direction.</t>

</section>
<section anchor="ipv6-addresses-fields" title="IPv6 addresses fields">

<t>As in 6LoWPAN <xref target="RFC4944"/>, IPv6 addresses are split into two 64-bit long fields; 
one for the prefix and one for the Interface Identifier (IID). These fields should
be compressed. To allow a single rule, these values are identified by their role 
(DEV or APP) and not by their position in the frame (source or destination). The SCHC C/D
must be aware of the traffic direction (upstream, downstream) to select the appropriate
field.</t>

<section anchor="ipv6-source-and-destination-prefixes" title="IPv6 source and destination prefixes">

<t>Both ends must be synchronized with the appropriate prefixes. For a specific flow, 
the source and destination prefix can be unique and stored in the context. It can 
be either a link-local prefix or a global prefix. In that case, the TV for the 
source and destination prefixes contains the values, the MO is set to “equal” and
the CDA is set to “not-sent”.</t>

<t>In case the rule allows several prefixes, mapping-list must be used. The 
different prefixes are listed in the TV associated with a short ID. The MO is set 
to “match-mapping” and the CDA is set to “mapping-sent”.</t>

<t>Otherwise the TV contains the prefix, the MO is set to “equal” and the CDA is set to
value-sent.</t>

</section>
<section anchor="ipv6-source-and-destination-iid" title="IPv6 source and destination IID">

<t>If the DEV or APP IID are based on an LPWAN address, then the IID can be reconstructed 
with information coming from the LPWAN header. In that case, the TV is not set, the MO 
is set to “ignore” and the CDA is set to “DEViid” or “APPiid”. Note that the 
LPWAN technology is generally carrying a single device identifier corresponding
to the DEV. The SCHC C/D may also not be aware of these values.</t>

<t>If the DEV address has a static value that is not derivated from the EUI-64, 
then TV contains the value, the MO operator is set to
“equal” and the CDA is set to “not-sent”.</t>

<t>If several IIDs are possible, then the TV contains the list of possible IIDs, the MO is 
set to “match-mapping” and the CDA is set to “mapping-sent”.</t>

<t>Otherwise the value variation of the IID may be reduced to few bytes. In that case, the TV is
set to the stable part of the IID, the MO is set to MSB and the CDA is set to LSB.</t>

<t>Finally, the IID can be sent on the LPWAN. In that case, the TV is not set, the MO is set
to “ignore” and the CDA is set to “value-sent”.</t>

</section>
</section>
<section anchor="ipv6-extensions" title="IPv6 extensions">

<t>No extension rules are currently defined. They can be based on the MOs and 
CDAs described above.</t>

</section>
<section anchor="udp-source-and-destination-port" title="UDP source and destination port">

<t>To allow a single rule, the UDP port values are identified by their role 
(DEV or APP) and not by their position in the frame (source or destination). The SCHC C/D
must be aware of the traffic direction (upstream, downstream) to select the appropriate
field. The following rules apply for DEV and APP port numbers.</t>

<t>If both ends know the port number, it can be elided. The TV contains the port number,
the MO is set to “equal” and the CDA is set to “not-sent”.</t>

<t>If the port variation is on few bits, the TV contains the stable part of the port number,
the MO is set to “MSB” and the CDA is set to “LSB”.</t>

<t>If some well-known values are used,  the TV can contain the list of this values, the
MO is set to “match-mapping” and the CDA is set to “mapping-sent”.</t>

<t>Otherwise the port numbers are sent on the LPWAN. The TV is not set, the MO is 
set to “ignore” and the CDA is set to “value-sent”.</t>

</section>
<section anchor="udp-length-field" title="UDP length field">

<t>If the LPWAN technology does not introduce padding, the UDP length can be computed
from the received data. In that case the TV is not set, the MO is set to “ignore” and
the CDA is set to “compute-UDP-length”.</t>

<t>If the payload is small, the TV can be set to 0x0000, the MO set to “MSB” and the
CDA to “LSB”.</t>

<t>On other cases, the length must be sent and the CDA is replaced by “value-sent”.</t>

</section>
<section anchor="udp-checksum-field" title="UDP Checksum field">

<t>IPv6 mandates a checksum in the protocol above IP. Nevertheless, if a more efficient
mechanism such as L2 CRC or MIC is carried by or over the L2 (such as in the 
LPWAN fragmentation process (see section <xref target="Frag"/>)), the UDP checksum transmission can be avoided.
In that case, the TV is not set, the MO is set to “ignore” and the CDA is set to
“compute-UDP-checksum”.</t>

<t>In other cases the checksum must be explicitly sent. The TV is not set, the MO is set to
“ignore” and the CDF is set to “value-sent”.</t>

</section>
</section>
<section anchor="compressIPv6" title="Examples">

<t>This section gives some scenarios of the compression mechanism for IPv6/UDP.
The goal is to illustrate the SCHC behavior.</t>

<section anchor="ipv6udp-compression" title="IPv6/UDP compression">

<t>The most common case using the mechanisms defined in this document will be a 
LPWAN Dev that embeds some applications running over
CoAP. In this example, three flows are considered. The first flow is for the device management based
on CoAP using
Link Local IPv6 addresses and UDP ports 123 and 124 for Dev and App, respectively.
The second flow will be a CoAP server for measurements done by the Device
(using ports 5683) and Global IPv6 Address prefixes alpha::IID/64 to beta::1/64.
The last flow is for legacy applications using different ports numbers, the
destination IPv6 address prefix is gamma::1/64.</t>

<t><xref target="FigStack"/> presents the protocol stack for this Device. IPv6 and UDP are represented
with dotted lines since these protocols are compressed on the radio link.</t>

<figure title="Simplified Protocol Stack for LP-WAN" anchor="FigStack"><artwork><![CDATA[
 Managment    Data
+----------+---------+---------+
|   CoAP   |  CoAP   | legacy  |
+----||----+---||----+---||----+
.   UDP    .  UDP    |   UDP   |
................................
.   IPv6   .  IPv6   .  IPv6   .
+------------------------------+
|    SCHC Header compression   |
|      and fragmentation       |
+------------------------------+
|      LPWAN L2 technologies   |
+------------------------------+
         DEV or NGW

]]></artwork></figure>

<t>Note that in some LPWAN technologies, only the Devs have a device ID.
Therefore, when such technologies are used, it is necessary to define statically an IID for the Link
Local address for the SCHC C/D.</t>

<figure title="Context rules" anchor="Fig-fields"><artwork><![CDATA[
  Rule 0
  +----------------+--+--+---------+--------+-------------++------+
  | Field          |FP|DI| Value   | Match  | Comp Decomp || Sent |
  |                |  |  |         | Opera. | Action      ||[bits]|
  +----------------+--+--+---------+----------------------++------+
  |IPv6 version    |1 |Bi|6        | equal  | not-sent    ||      |
  |IPv6 DiffServ   |1 |Bi|0        | equal  | not-sent    ||      |
  |IPv6 Flow Label |1 |Bi|0        | equal  | not-sent    ||      |
  |IPv6 Length     |1 |Bi|         | ignore | comp-length ||      |
  |IPv6 Next Header|1 |Bi|17       | equal  | not-sent    ||      |
  |IPv6 Hop Limit  |1 |Bi|255      | ignore | not-sent    ||      |
  |IPv6 DEVprefix  |1 |Bi|FE80::/64| equal  | not-sent    ||      |
  |IPv6 DEViid     |1 |Bi|         | ignore | DEViid      ||      |
  |IPv6 APPprefix  |1 |Bi|FE80::/64| equal  | not-sent    ||      |
  |IPv6 APPiid     |1 |Bi|::1      | equal  | not-sent    ||      |
  +================+==+==+=========+========+=============++======+
  |UDP DEVport     |1 |Bi|123      | equal  | not-sent    ||      |
  |UDP APPport     |1 |Bi|124      | equal  | not-sent    ||      |
  |UDP Length      |1 |Bi|         | ignore | comp-length ||      |
  |UDP checksum    |1 |Bi|         | ignore | comp-chk    ||      |
  +================+==+==+=========+========+=============++======+

  Rule 1
  +----------------+--+--+---------+--------+-------------++------+
  | Field          |FP|DI| Value   | Match  | Action      || Sent |
  |                |  |  |         | Opera. | Action      ||[bits]|
  +----------------+--+--+---------+--------+-------------++------+
  |IPv6 version    |1 |Bi|6        | equal  | not-sent    ||      |
  |IPv6 DiffServ   |1 |Bi|0        | equal  | not-sent    ||      |
  |IPv6 Flow Label |1 |Bi|0        | equal  | not-sent    ||      |
  |IPv6 Length     |1 |Bi|         | ignore | comp-length ||      |
  |IPv6 Next Header|1 |Bi|17       | equal  | not-sent    ||      |
  |IPv6 Hop Limit  |1 |Bi|255      | ignore | not-sent    ||      |
  |IPv6 DEVprefix  |1 |Bi|[alpha/64, match- | mapping-sent||  [1] |
  |                |1 |Bi|fe80::/64] mapping|             ||      |
  |IPv6 DEViid     |1 |Bi|         | ignore | DEViid      ||      |
  |IPv6 APPprefix  |1 |Bi|[beta/64,| match- | mapping-sent||  [2] |
  |                |  |  |alpha/64,| mapping|             ||      |
  |                |  |  |fe80::64]|        |             ||      |
  |IPv6 APPiid     |1 |Bi|::1000   | equal  | not-sent    ||      |
  +================+==+==+=========+========+=============++======+
  |UDP DEVport     |1 |Bi|5683     | equal  | not-sent    ||      |
  |UDP APPport     |1 |Bi|5683     | equal  | not-sent    ||      |
  |UDP Length      |1 |Bi|         | ignore | comp-length ||      |
  |UDP checksum    |1 |Bi|         | ignore | comp-chk    ||      |
  +================+==+==+=========+========+=============++======+

  Rule 2
  +----------------+--+--+---------+--------+-------------++------+
  | Field          |FP|DI| Value   | Match  | Action      || Sent |
  |                |  |  |         | Opera. | Action      ||[bits]|
  +----------------+--+--+---------+--------+-------------++------+
  |IPv6 version    |1 |Bi|6        | equal  | not-sent    ||      |
  |IPv6 DiffServ   |1 |Bi|0        | equal  | not-sent    ||      |
  |IPv6 Flow Label |1 |Bi|0        | equal  | not-sent    ||      |
  |IPv6 Length     |1 |Bi|         | ignore | comp-length ||      |
  |IPv6 Next Header|1 |Bi|17       | equal  | not-sent    ||      |
  |IPv6 Hop Limit  |1 |Up|255      | ignore | not-sent    ||      |
  |IPv6 Hop Limit  |1 |Dw|         | ignore | value-sent  ||  [8] |
  |IPv6 DEVprefix  |1 |Bi|alpha/64 | equal  | not-sent    ||      |
  |IPv6 DEViid     |1 |Bi|         | ignore | DEViid      ||      |
  |IPv6 APPprefix  |1 |Bi|gamma/64 | equal  | not-sent    ||      |
  |IPv6 APPiid     |1 |Bi|::1000   | equal  | not-sent    ||      |
  +================+==+==+=========+========+=============++======+
  |UDP DEVport     |1 |Bi|8720     | MSB(12)| LSB(4)      || [4]  |
  |UDP APPport     |1 |Bi|8720     | MSB(12)| LSB(4)      || [4]  |
  |UDP Length      |1 |Bi|         | ignore | comp-length ||      |
  |UDP checksum    |1 |Bi|         | ignore | comp-chk    ||      |
  +================+==+==+=========+========+=============++======+


]]></artwork></figure>

<t>All the fields described in the three rules depicted on <xref target="Fig-fields"/> are present
in the IPv6 and UDP headers.  The DEViid-DID value is found in the L2
header.</t>

<t>The second and third rules use global addresses. The way the Dev learns the
prefix is not in the scope of the document.</t>

<t>The third rule compresses port numbers to 4 bits.</t>

</section>
</section>
<section anchor="Frag" title="Fragmentation">

<section anchor="overview" title="Overview">

<t>Fragmentation support in LPWAN is mandatory when the underlying LPWAN technology is not capable of fulfilling the IPv6 MTU requirement. Fragmentation is used if, after SCHC header compression, the size of the resulting IPv6 packet is larger than the L2 data unit maximum payload. Fragmentation is also used if SCHC header compression has not been able to compress an IPv6 packet that is larger than the L2 data unit maximum payload. In LPWAN technologies, the L2 data unit size typically varies from tens to hundreds of bytes. 
If the entire IPv6 datagram fits within a single L2 data unit, the fragmentation mechanism is not used and the packet is sent unfragmented.<vspace />
If the datagram does not fit within a single L2 data unit, it SHALL be broken into fragments.</t>

<t>Moreover, LPWAN technologies impose some strict limitations on traffic; 
therefore it is desirable to enable optional fragment retransmission, while 
a single fragment loss should not lead to retransmitting the full IPv6 datagram. 
On the other hand, in order to preserve energy, Devices are sleeping most of the time and 
may receive data during a short period of time after transmission. In 
order to adapt to the capabilities of various LPWAN technologies,
this specification allows for a gradation of fragment delivery
reliability. This document does not make any decision with regard to which 
fragment delivery reliability option is used over a specific LPWAN 
technology.</t>

<t>An important consideration is that LPWAN networks typically follow the star topology, and therefore data unit reordering is not expected in such networks. This specification assumes that reordering will not happen between the entity performing fragmentation and the entity performing reassembly. This assumption allows to reduce complexity and overhead of the fragmentation mechanism.</t>

</section>
<section anchor="reliability-options-definition" title="Reliability options: definition">

<t>This specification defines the following three fragment delivery reliability options:</t>

<t>o  No ACK</t>

<t>o  Window mode - ACK “always”</t>

<t>o  Window mode - ACK on error</t>

<t>The same reliability option MUST be used for all fragments of a packet. It is up to implementers and/or representatives of the underlying LPWAN technology to decide which reliability option to use and whether the same reliability option applies to all IPv6 packets or not.  Note that the reliability option to be used is not necessarily tied to the particular characteristics of the underlying L2 LPWAN technology (e.g. the No ACK reliability option may be used on top of an L2 LPWAN technology with symmetric characteristics for uplink and downlink).</t>

<t>In the No ACK option, the receiver MUST NOT issue acknowledgments (ACK).</t>

<t>In Window mode – ACK “always”, an ACK is transmitted by the fragment
   receiver after a window of fragments have been sent.  A window of
   fragments is a subset of the full set of fragments needed to carry an
   IPv6 packet.  In this mode, the ACK informs the sender about received
   and/or missing fragments from the window of fragments.</t>

<t>In Window mode – ACK on error, an ACK is transmitted by the fragment
   receiver after a window of fragments have been sent, only if at least one 
   of the fragments in the window has been lost. In this mode, the ACK informs the sender about received and/or missing fragments from the window of fragments.</t>

<t>In Window mode, upon receipt of an ACK that informs about any lost fragments, the sender retransmits the lost fragments. The maximum number of ACKs to be sent by the receiver for a specific window, denoted MAX_ACKS_PER_WINDOW, is not stated in this document, and it is expected to be defined in other documents (e.g. technology-specific profiles).</t>

<t>This document does not make any decision as to which fragment delivery 
   reliability option(s) need to be supported over a specific LPWAN 
   technology.</t>

<t>Examples of the different reliability options described are provided in Appendix A.</t>

</section>
<section anchor="reliability-options-discussion" title="Reliability options: discussion">

<t>This section discusses the properties of each fragment delivery 
   reliability option defined in the previous section.</t>

<t>No ACK is the most simple fragment delivery reliability option. With this 
   option, the receiver does not generate overhead in the form of ACKs. 
   However, this option does not enhance delivery reliability beyond that 
   offered by the underlying LPWAN technology.</t>

<t>The Window mode - ACK on error option is based on the optimistic expectation that the underlying links will offer relatively low L2 data unit loss probability. This option reduces the number of ACKs transmitted by the fragment receiver compared to the Window mode - ACK “always” option. This may be especially beneficial in asymmetric scenarios, e.g. where fragmented data are sent uplink and the underlying LPWAN technology downlink capacity or message rate is lower than the uplink one. However, if an ACK is lost, the sender assumes that all fragments covered by the ACK have been successfully delivered. In contrast, the Window mode - ACK “always” option does not suffer that issue, at the expense of an ACK overhead increase.</t>

<t>The Window mode – ACK “always” option provides flow control. In addition, it is able to handle long bursts of lost fragments, since detection of such events can be done before end of the IPv6 packet transmission, as long as the window size is short enough. However, such benefit comes at the expense of higher ACK overhead.</t>

</section>
<section anchor="tools" title="Tools">

<t>This subsection describes the different tools that are used to enable the described fragmentation functionality and the different reliability options supported. Each tool has a corresponding header field format that is defined in the next subsection. The list of tools follows:</t>

<t>o  Rule ID. The Rule ID is used in fragments and in ACKs. The Rule ID in a fragment is set to a value that indicates that the data unit being carried is a fragment. This also allows to interleave non-fragmented IPv6 datagrams with fragments that carry a larger IPv6 datagram. Rule ID may also be used to signal which reliability option is in use for the IPv6 packet being carried. In an ACK, the Rule ID signals that the message this Rule ID is prepended to is an ACK.</t>

<t>o  Compressed Fragment Number (CFN). The CFN is included in all fragments. This field can be understood as a truncated, efficient representation of a larger-sized fragment number, and does not necessarily carry an absolute fragment number. A special CFN value signals the last fragment that carries a fragmented IPv6 packet. In Window mode, the CFN is augmented with the W bit, which has the purpose of avoiding possible ambiguity for the receiver that might arise under certain conditions</t>

<t>o  Datagram Tag (DTag). The DTag field, if present, is set to the same value for all fragments carrying the same IPv6 datagram, allows to interleave fragments that correspond to different IPv6 datagrams.</t>

<t>o  Message Integrity Check (MIC). It is computed by the sender over the complete IPv6 packet before fragmentation by using the TBD algorithm. The MIC allows the receiver to check for errors in the reassembled IPv6 packet, while it also enables compressing the UDP checksum by use of SCHC.</t>

<t>o  Bitmap. The bitmap is a sequence of bits included in the ACK for a given window, that provides feedback on whether each fragment of the current window has been received or not.</t>

</section>
<section anchor="formats" title="Formats">

<t>This section defines the fragment format, the fragmentation header formats, and the ACK format.</t>

<section anchor="fragment-format" title="Fragment format">

<t>A fragment comprises a fragmentation header and a fragment payload, and conforms
   to the format shown in <xref target="Fig-FragFormat"/>. The fragment payload carries a subset of either the
   IPv6 packet after header compression or an IPv6 packet which could not be compressed. 
   A fragment is the payload in the L2 protocol data unit (PDU).</t>

<figure title="Fragment format." anchor="Fig-FragFormat"><artwork><![CDATA[
      +---------------+-----------------------+
      | Fragm. Header |   Fragment payload    |
      +---------------+-----------------------+
]]></artwork></figure>

</section>
<section anchor="fragmentation-header-formats" title="Fragmentation header formats">

<t>In the No ACK option, fragments except the last one SHALL contain the fragmentation header as defined in <xref target="Fig-NotLast"/>. The total size of this fragmentation header is R bits.</t>

<figure title="Fragmentation Header for Fragments except the Last One, No ACK option" anchor="Fig-NotLast"><artwork><![CDATA[
             <------------ R ---------->
                         <--T--> <--N-->
             +-- ... --+- ...  -+- ... -+
             | Rule ID |  DTag  |  CFN  |
             +-- ... --+- ...  -+- ... -+

]]></artwork></figure>

<t>In any of the Window mode options, fragments except the last one SHALL  <vspace />
   contain the fragmentation header as defined in <xref target="Fig-NotLastWin"/>. The total size of this fragmentation header is R bits.</t>

<figure title="Fragmentation Header for Fragments except the Last One, Window mode" anchor="Fig-NotLastWin"><artwork><![CDATA[
             <------------ R ---------->
                       <--T--> 1 <--N-->
            +-- ... --+- ... -+-+- ... -+
            | Rule ID | DTag  |W|  CFN  |
            +-- ... --+- ... -+-+- ... -+

]]></artwork></figure>

<t>The last fragment of an IPv6 datagram SHALL contain a fragmentation header that conforms to 
   the format shown in <xref target="Fig-Last"/>. The total size of this fragmentation 
   header is R+M bits.</t>

<figure title="Fragmentation Header for the Last Fragment" anchor="Fig-Last"><artwork><![CDATA[
              <------------- R ------------>
                            <- T -> <- N -> <---- M ----->
              +---- ... ---+- ... -+- ... -+---- ... ----+
              |   Rule ID  | DTag  | 11..1 |     MIC     |
              +---- ... ---+- ... -+- ... -+---- ... ----+
]]></artwork></figure>

<t><list style="symbols">
  <t>Rule ID: This field has a size of R - T - N - 1 bits in all fragments that are not the last one, when Window mode is used. In all other fragments, the Rule ID field has a size of R – T – N bits.</t>
  <t>DTag: The size of the DTag field is T bits, which may be set to a value greater than or equal to 0 bits. The DTag field in all fragments that carry the same IPv6 datagram MUST be set to the same value. DTag MUST be set sequentially increasing from 0 to 2^T - 1, and MUST wrap back from 2^T - 1 to 0.</t>
  <t>CFN: This field is an unsigned integer, with a size of N bits, that carries the CFN of the fragment. In the No ACK option, N=1. For the rest of options, N equal to or greater than 3 is recommended. The CFN MUST be set sequentially decreasing from the highest CFN in the window (which will be used for the first fragment), and MUST wrap from 0 back to the highest CFN in the window. The highest CFN in the window MUST be a value equal to or smaller than 2^N-2. (Example 1: for N=5, the highest CFN value may be configured to be 30, then subsequent CFNs are set sequentially and in decreasing order, and CFN will wrap from 0 back to 30. Example 2: for N=5, the highest CFN value may be set to 23, then subsequent CFNs are set sequentially and in decreasing order, and the CFN will wrap from 0 back to 23). The CFN for the last fragment has all bits set to 1. Note that, by this definition, the CFN value of 2^N - 1 is only used to identify a fragment as the last fragment carrying a subset of the IPv6 packet being transported, and thus the CFN does not strictly correspond to the N least significant bits of the actual absolute fragment number. It is also important to note that, for N=1, the last fragment of the packet will carry a CFN equal to 1, while all previous fragments will carry a CFN of 0.</t>
  <t>W: W is a 1-bit field. This field carries the same value for all fragments of a window, and it is complemented for the next window. The initial value for this field is 1.</t>
  <t>MIC: This field, which has a size of M bits, carries the MIC for the IPv6 packet.</t>
</list></t>

<t>The values for R, N, T and M are not specified in this document, and have to be determined in other documents (e.g. technology-specific profile documents).</t>

</section>
<section anchor="ack-format" title="ACK format">

<t>The format of an ACK is shown in <xref target="Fig-ACK-Format"/>:</t>

<figure title="Format of an ACK" anchor="Fig-ACK-Format"><artwork><![CDATA[
                <--------  R  ------->
                            <- T -> 1  
                +---- ... --+-... -+-+----- ... ---+
                |  Rule ID  | DTag |W|   bitmap    |
                +---- ... --+-... -+-+----- ... ---+
]]></artwork></figure>

<t>Rule ID: In all ACKs, Rule ID has a size of R - T - 1 bits.</t>

<t>DTag: DTag has a size of T bits. DTag carries the same value as the DTag field in the fragments carrying the IPv6 datagram for which this ACK is intended.</t>

<t>W: This field has a size of 1 bit. In all ACKs, the W bit carries the same value as the W bit carried by the fragments whose reception is being positively or negatively acknowledged by the ACK.</t>

<t>bitmap: This field carries the bitmap sent by the receiver to inform the sender about whether fragments in the current window have been received or not. Size of the bitmap field of an ACK can be equal to 0 or Ceiling(Number_of_Fragments/8) octets, where Number_of_Fragments denotes the number of fragments of a window. The bitmap is a sequence of bits, where the n-th bit signals whether the n-th fragment transmitted in the current window has been correctly received (n-th bit set to 1) or not (n-th bit set to 0). Remaining bits with bit order greater than the number of fragments sent (as determined by the receiver) are set to 0, except for the last bit in the bitmap, which is set to 1 if the last fragment of the window has been correctly received, and 0 otherwise. Feedback on reception of the fragment with CFN = 2^N - 1 (last fragment carrying an IPv6 packet) is only given by the last bit of the corresponding window. Absence of the bitmap in an ACK confirms correct reception of all fragments to be acknowledged by means of the ACK.</t>

<t><xref target="Fig-Bitmap-Win"/> shows an example of an ACK (N=3), where the bitmap
indicates that the second and the fifth fragments have not been correctly received.</t>

<figure title="Example of the bitmap in an ACK (in Window mode, for N=3)" anchor="Fig-Bitmap-Win"><artwork><![CDATA[
              <-------   R  ------->
                          <- T ->   0 1 2 3 4 5 6 7
              +---- ... --+-... -+-+-+-+-+-+-+-+-+-+
              |  Rule ID  | DTag |W|1|0|1|1|0|1|1|1|
              +---- ... --+-... -+-+-+-+-+-+-+-+-+-+

]]></artwork></figure>

<t><xref target="Fig-NoBitmap"/> illustrates an ACK without a bitmap.</t>

<figure title="Example of an ACK without a bitmap" anchor="Fig-NoBitmap"><artwork><![CDATA[
                    <-------   R  ------->
                                <- T -> 
                    +---- ... --+-... -+-+
                    |  Rule ID  | DTag |W|
                    +---- ... --+-... -+-+

]]></artwork></figure>

<t>Note that, in order to exploit the available L2 payload space to the fullest, a bitmap may have a size smaller than 2^N bits. In that case, the window in use will have a size lower than 2^N-1 fragments. For example, if the maximum available space for a bitmap is 56 bits, N can be set to 6, and the window size can be set to a maximum of 56 fragments.</t>

</section>
</section>
<section anchor="baseline-mechanism" title="Baseline mechanism">

<t>The receiver of link fragments SHALL use (1) the sender’s L2 source address (if present), (2) the destination’s L2 address (if present), (3) Rule ID and (4) DTag to identify all the fragments that belong to a given IPv6 datagram. The fragment receiver may determine the fragment delivery reliability option in use for the fragment based on the Rule ID field in that fragment.</t>

<t>Upon receipt of a link fragment, the receiver starts constructing the original unfragmented packet. It uses the CFN and the order of arrival of each fragment to determine the location of the individual fragments within the original unfragmented packet. For example, it may place the data payload of the fragments within a payload datagram reassembly buffer at the location determined from the CFN and order of arrival of the fragments, and the fragment payload sizes. In Window mode, the fragment receiver also uses the W bit in the received fragments. Note that the size of the original, unfragmented IPv6 packet cannot be determined from fragmentation headers.</t>

<t>When Window mode - ACK on error is used, the fragment receiver starts a timer (denoted “ACK on Error Timer”) upon reception of the first fragment for an IPv6 datagram. The initial value for this timer is not provided by this specification, and is expected to be defined in additional documents. This timer is reset every time that a new fragment carrying data from the same IPv6 datagram is received. In Window mode – ACK on error, upon timer expiration, if neither the last fragment of the IPv6 datagram nor the last fragment of the current window (i.e. with CFN=0) have been received, an ACK MUST be transmitted by the fragment receiver to indicate received and not received fragments for the current window.</t>

<t>Note that, in Window mode, the first fragment of the window is the one sent with CFN=2^N-2. Also note that, in Window mode, the fragment with CFN=0 is considered the last fragment of its window, except for the last fragment of the whole packet (with all CFN bits set to 1), which is also the last fragment of the last window. Upon receipt of the last fragment of a window, if Window mode – ACK “Always” is used, the fragment receiver MUST send an ACK to the fragment sender. The ACK provides feedback on the fragments received and lost that correspond to the last window.</t>

<t>If the recipient receives the last fragment of an IPv6 datagram, it checks for the integrity of the reassembled IPv6 datagram, based on the MIC received. In No ACK mode, if the integrity check indicates that the reassembled IPv6 datagram does not match the original IPv6 datagram (prior to fragmentation), the reassembled IPv6 datagram MUST be discarded. If Window mode - ACK “Always” is used, the recipient MUST transmit an ACK to the fragment sender. The ACK provides feedback on the fragments that correspond to the last window. If Window  mode - ACK on error is used, the recipient MUST NOT transmit an ACK to the sender if no losses have been detected for the last window. If losses have been detected, the recipient MUST then transmit an ACK to the sender to provide feedback on the last window.</t>

<t>When Window mode - ACK “Always” is used, the fragment sender starts a timer (denoted “ACK Always Timer”) after transmitting the last fragment of a fragmented IPv6 datagram. The fragment sender also starts the ACK Always Timer after transmitting the last fragment of a window. The initial value for this timer is not provided by this specification, and is expected to be defined in additional documents. Upon expiration of the timer, if no ACK has been received for the current window, the sender retransmits the last fragment, and it reinitializes and restarts the timer.  Note that retransmitting the last fragment of a window as described serves as an ACK request. The maximum number of requests for a specific ACK, denoted MAX_ACK_REQUESTS, is not stated in this document, and it is expected to be defined in other documents (e.g. technology-specific profiles).</t>

<t>In all Window mode options, the fragment sender retransmits any lost fragments reported in an ACK.</t>

<t>If a fragment recipient disassociates from its L2 network, the recipient MUST discard all link fragments of all partially reassembled payload datagrams, and fragment senders MUST discard all not yet transmitted link fragments of all partially transmitted payload (e.g., IPv6) datagrams. Similarly, when a node first receives a fragment of a packet, it starts a reassembly timer. When this time expires, if the entire packet has not been reassembled, the existing fragments MUST be discarded and the reassembly state MUST be flushed. The value for this timer is not provided by this specification, and is expected to be defined in technology-specific profile documents.</t>

</section>
<section anchor="supporting-multiple-window-sizes" title="Supporting multiple window sizes">

<t>For Window mode operation, implementers may opt to support a single window size or multiple window sizes. The latter, when feasible, may provide performance optimizations. For example, a large window size may be used for IPv6 packets that need to be carried by a large number of fragments. However, when the number of fragments required to carry an IPv6 packet is low, a smaller window size, and thus a shorter bitmap, may be sufficient to provide feedback on all fragments. If multiple window sizes are supported, the Rule ID may be used to signal the window size in use for a specific IPv6 packet transmission.</t>

</section>
<section anchor="aborting-fragmented-ipv6-datagram-transmissions" title="Aborting fragmented IPv6 datagram transmissions">

<t>For several reasons, a fragment sender or a fragment receiver may want to abort the on-going transmission of one or several fragmented IPv6 datagrams. The entity (either the fragment sender or the fragment receiver) that triggers abortion transmits to the other endpoint a format that only comprises a Rule ID (of size R bits), which signals abortion of all on-going fragmented IPv6 packet transmissions. The specific value to be used for the Rule ID of this abortion signal is not defined in this document, and is expected to be defined in future documents.</t>

<t>Upon transmission or reception of the abortion signal, both entities MUST release any resources allocated for the fragmented IPv6 datagram transmissions being aborted.</t>

</section>
<section anchor="downlink-fragment-transmission" title="Downlink fragment transmission">

<t>In some LPWAN technologies, as part of energy-saving techniques, downlink transmission is only possible immediately after an uplink transmission. In order to avoid potentially high delay for fragmented IPv6 datagram transmission in the downlink, the fragment receiver MAY perform an uplink transmission as soon as possible after reception of a fragment that is not the last one. Such uplink transmission may be triggered by the L2 (e.g. an L2 ACK sent in response to a fragment encapsulated in a L2 frame that requires an L2 ACK) or it may be triggered from an upper layer.</t>

</section>
</section>
<section anchor="security-considerations" title="Security considerations">

<section anchor="security-considerations-for-header-compression" title="Security considerations for header compression">
<t>A malicious header compression could cause the reconstruction of a 
wrong packet that does not match with the original one, such corruption 
may be detected with end-to-end authentication and integrity mechanisms. 
Denial of Service may be produced but its arise other security problems 
that may be solved with or without header compression.</t>

</section>
<section anchor="security-considerations-for-fragmentation" title="Security considerations for fragmentation">
<t>This subsection describes potential attacks to LPWAN fragmentation 
and suggests possible countermeasures.</t>

<t>A node can perform a buffer reservation attack by sending a first
fragment to a target.  Then, the receiver will reserve buffer space
for the IPv6 packet.  Other incoming fragmented packets will be
dropped while the reassembly buffer is occupied during the reassembly
timeout.  Once that timeout expires, the attacker can repeat the same
procedure, and iterate, thus creating a denial of service attack.
The (low) cost to mount this attack is linear with the number of
buffers at the target node.  However, the cost for an attacker can be
increased if individual fragments of multiple packets can be stored
in the reassembly buffer.  To further increase the attack cost, the
reassembly buffer can be split into fragment-sized buffer slots.
Once a packet is complete, it is processed normally.  If buffer
overload occurs, a receiver can discard packets based on the sender
behavior, which may help identify which fragments have been sent by
an attacker.</t>

<t>In another type of attack, the malicious node is required to have
overhearing capabilities.  If an attacker can overhear a fragment, it
can send a spoofed duplicate (e.g. with random payload) to the
destination.  A receiver cannot distinguish legitimate from spoofed
fragments.  Therefore, the original IPv6 packet will be considered
corrupt and will be dropped.  To protect resource-constrained nodes
from this attack, it has been proposed to establish a binding among
the fragments to be transmitted by a node, by applying content-
chaining to the different fragments, based on cryptographic hash
functionality.  The aim of this technique is to allow a receiver to
identify illegitimate fragments.</t>

<t>Further attacks may involve sending overlapped fragments (i.e.
comprising some overlapping parts of the original IPv6 datagram).
Implementers should make sure that correct operation is not affected
by such event.</t>

</section>
</section>
<section anchor="acknowledgements" title="Acknowledgements">

<t>Thanks to Dominique Barthel, Carsten Bormann, Philippe Clavier, Arunprabhu Kandasamy, Antony Markovski, Alexander
Pelov, Pascal Thubert, Juan Carlos Zuniga and Diego Dujovne for useful design consideration and comments.</t>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference  anchor='RFC4944' target='http://www.rfc-editor.org/info/rfc4944'>
<front>
<title>Transmission of IPv6 Packets over IEEE 802.15.4 Networks</title>
<author initials='G.' surname='Montenegro' fullname='G. Montenegro'><organization /></author>
<author initials='N.' surname='Kushalnagar' fullname='N. Kushalnagar'><organization /></author>
<author initials='J.' surname='Hui' fullname='J. Hui'><organization /></author>
<author initials='D.' surname='Culler' fullname='D. Culler'><organization /></author>
<date year='2007' month='September' />
<abstract><t>This document describes the frame format for transmission of IPv6 packets and the method of forming IPv6 link-local addresses and statelessly autoconfigured addresses on IEEE 802.15.4 networks. Additional specifications include a simple header compression scheme using shared context and provisions for packet delivery in IEEE 802.15.4 meshes.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4944'/>
<seriesInfo name='DOI' value='10.17487/RFC4944'/>
</reference>



<reference  anchor='RFC2460' target='http://www.rfc-editor.org/info/rfc2460'>
<front>
<title>Internet Protocol, Version 6 (IPv6) Specification</title>
<author initials='S.' surname='Deering' fullname='S. Deering'><organization /></author>
<author initials='R.' surname='Hinden' fullname='R. Hinden'><organization /></author>
<date year='1998' month='December' />
<abstract><t>This document specifies version 6 of the Internet Protocol (IPv6), also sometimes referred to as IP Next Generation or IPng.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2460'/>
<seriesInfo name='DOI' value='10.17487/RFC2460'/>
</reference>



<reference  anchor='RFC7136' target='http://www.rfc-editor.org/info/rfc7136'>
<front>
<title>Significance of IPv6 Interface Identifiers</title>
<author initials='B.' surname='Carpenter' fullname='B. Carpenter'><organization /></author>
<author initials='S.' surname='Jiang' fullname='S. Jiang'><organization /></author>
<date year='2014' month='February' />
<abstract><t>The IPv6 addressing architecture includes a unicast interface identifier that is used in the creation of many IPv6 addresses. Interface identifiers are formed by a variety of methods.  This document clarifies that the bits in an interface identifier have no meaning and that the entire identifier should be treated as an opaque value.  In particular, RFC 4291 defines a method by which the Universal and Group bits of an IEEE link-layer address are mapped into an IPv6 unicast interface identifier.  This document clarifies that those two bits are significant only in the process of deriving interface identifiers from an IEEE link-layer address, and it updates RFC 4291 accordingly.</t></abstract>
</front>
<seriesInfo name='RFC' value='7136'/>
<seriesInfo name='DOI' value='10.17487/RFC7136'/>
</reference>



<reference  anchor='RFC5795' target='http://www.rfc-editor.org/info/rfc5795'>
<front>
<title>The RObust Header Compression (ROHC) Framework</title>
<author initials='K.' surname='Sandlund' fullname='K. Sandlund'><organization /></author>
<author initials='G.' surname='Pelletier' fullname='G. Pelletier'><organization /></author>
<author initials='L-E.' surname='Jonsson' fullname='L-E. Jonsson'><organization /></author>
<date year='2010' month='March' />
<abstract><t>The Robust Header Compression (ROHC) protocol provides an efficient, flexible, and future-proof header compression concept.  It is designed to operate efficiently and robustly over various link technologies with different characteristics.</t><t>The ROHC framework, along with a set of compression profiles, was initially defined in RFC 3095.  To improve and simplify the ROHC specifications, this document explicitly defines the ROHC framework and the profile for uncompressed separately.  More specifically, the definition of the framework does not modify or update the definition of the framework specified by RFC 3095.</t><t>This specification obsoletes RFC 4995.  It fixes one interoperability issue that was erroneously introduced in RFC 4995, and adds some minor clarifications.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5795'/>
<seriesInfo name='DOI' value='10.17487/RFC5795'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='I-D.ietf-lpwan-overview'>
<front>
<title>LPWAN Overview</title>

<author initials='S' surname='Farrell' fullname='Stephen Farrell'>
    <organization />
</author>

<date month='June' day='13' year='2017' />

<abstract><t>Low Power Wide Area Networks (LPWAN) are wireless technologies with characteristics such as large coverage areas, low bandwidth, possibly very small packet and application layer data sizes and long battery life operation.  This memo is an informational overview of the set of LPWAN technologies being considered in the IETF and of the gaps that exist between the needs of those technologies and the goal of running IP in LPWANs.</t></abstract>

</front>

<seriesInfo name='Internet-Draft' value='draft-ietf-lpwan-overview-04' />
<format type='TXT'
        target='http://www.ietf.org/internet-drafts/draft-ietf-lpwan-overview-04.txt' />
</reference>




    </references>


<section anchor="fragmentation-examples" title="Fragmentation examples">

<t>This section provides examples of different fragment delivery reliability options possible on the basis of this specification.</t>

<t><xref target="Fig-Example-Unreliable"/> illustrates the transmission of an IPv6 packet that needs 11 fragments in the No ACK option.</t>

<figure title="Transmission of an IPv6 packet carried by 11 fragments in the No ACK option" anchor="Fig-Example-Unreliable"><artwork><![CDATA[
        Sender               Receiver
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=0-------->|
          |-------CFN=1-------->|MIC checked =>
         
]]></artwork></figure>

<t><xref target="Fig-Example-Win-NoLoss-NACK"/> illustrates the transmission of an IPv6 packet that needs 11 fragments in Window mode - ACK on error, for N=3, without losses.</t>

<figure title="Transmission of an IPv6 packet carried by 11 fragments in Window mode - ACK on error, for N=3, without losses." anchor="Fig-Example-Win-NoLoss-NACK"><artwork><![CDATA[
        Sender               Receiver
          |-----W=1, CFN=6----->|
          |-----W=1, CFN=5----->|
          |-----W=1, CFN=4----->|
          |-----W=1, CFN=3----->|
          |-----W=1, CFN=2----->|
          |-----W=1, CFN=1----->|
          |-----W=1, CFN=0----->|
      (no ACK)
          |-----W=0, CFN=6----->|
          |-----W=0, CFN=5----->|
          |-----W=0, CFN=4----->|
          |-----W=0, CFN=7----->|MIC checked =>
      (no ACK)

]]></artwork></figure>

<t><xref target="Fig-Example-Rel-Window-NACK-Loss"/> illustrates the transmission of an IPv6 packet that needs 11 fragments in Window mode - ACK on error, for N=3, with three losses.</t>

<figure title="Transmission of an IPv6 packet carried by 11 fragments in Window mode - ACK on error, for N=3, three losses." anchor="Fig-Example-Rel-Window-NACK-Loss"><artwork><![CDATA[
         Sender             Receiver
          |-----W=1, CFN=6----->|
          |-----W=1, CFN=5----->|
          |-----W=1, CFN=4--X-->|
          |-----W=1, CFN=3----->|
          |-----W=1, CFN=2--X-->|
          |-----W=1, CFN=1----->|
          |-----W=1, CFN=0----->|
          |<-----ACK, W=1-------|Bitmap:11010111
          |-----W=1, CFN=4----->|
          |-----W=1, CFN=2----->|   
      (no ACK)     
          |-----W=0, CFN=6----->|
          |-----W=0, CFN=5----->|
          |-----W=0, CFN=4--X-->|
          |-----W=0, CFN=7----->|MIC checked
          |<-----ACK, W=0-------|Bitmap:11000001
          |-----W=0, CFN=4----->|MIC checked =>
      (no ACK)    

]]></artwork></figure>

<t><xref target="Fig-Example-Rel-Window-ACK-NoLoss"/> illustrates the transmission of an IPv6 packet that needs 11 fragments in Window mode - ACK “always”, for N=3, without losses. Note: in Window mode, an additional bit will be needed to number windows.</t>

<figure title="Transmission of an IPv6 packet carried by 11 fragments in Window mode - ACK &quot;always&quot;, for N=3, no losses." anchor="Fig-Example-Rel-Window-ACK-NoLoss"><artwork><![CDATA[
        Sender               Receiver
          |-----W=1, CFN=6----->|
          |-----W=1, CFN=5----->|
          |-----W=1, CFN=4----->|
          |-----W=1, CFN=3----->|
          |-----W=1, CFN=2----->|
          |-----W=1, CFN=1----->|
          |-----W=1, CFN=0----->|
          |<-----ACK, W=1-------|no bitmap
          |-----W=0, CFN=6----->|
          |-----W=0, CFN=5----->|   
          |-----W=0, CFN=4----->|
          |-----W=0, CFN=7----->|MIC checked =>
          |<-----ACK, W=0-------|no bitmap
        (End)    

]]></artwork></figure>

<t><xref target="Fig-Example-Rel-Window-ACK-Loss"/> illustrates the transmission of an IPv6 packet that needs 11 fragments in Window mode - ACK “always”, for N=3, with three losses.</t>

<figure title="Transmission of an IPv6 packet carried by 11 fragments in Window mode - ACK &quot;Always&quot;, for N=3, with three losses." anchor="Fig-Example-Rel-Window-ACK-Loss"><artwork><![CDATA[
        Sender               Receiver
          |-----W=1, CFN=6----->|
          |-----W=1, CFN=5----->|
          |-----W=1, CFN=4--X-->|
          |-----W=1, CFN=3----->|
          |-----W=1, CFN=2--X-->|
          |-----W=1, CFN=1----->|
          |-----W=1, CFN=0----->|
          |<-----ACK, W=1-------|bitmap:11010111
          |-----W=1, CFN=4----->|
          |-----W=1, CFN=2----->|
          |<-----ACK, W=1-------|no bitmap
          |-----W=0, CFN=6----->|
          |-----W=0, CFN=5----->|   
          |-----W=0, CFN=4--X-->|
          |-----W=0, CFN=7----->|MIC checked
          |<-----ACK, W=0-------|bitmap:11000001
          |-----W=0, CFN=4----->|MIC checked =>
          |<-----ACK, W=0-------|no bitmap
        (End)    

]]></artwork></figure>

</section>
<section anchor="rule-ids-for-fragmentation" title="Rule IDs for fragmentation">

<t>Different Rule IDs may be used for different aspects of fragmentation functionality as per this document. A summary of such Rule IDs follows:</t>

<t><list style="symbols">
  <t>A fragment, and the reliability option in use for the IPv6 datagram being carried: i) No ACK, ii) Window mode - ACK on error, iii) Window mode - ACK “always”. In Window mode, a specific Rule ID may be used for each supported window size.</t>
  <t>An ACK message.</t>
  <t>A message to abort all on-going transmissions.</t>
</list></t>

</section>
<section anchor="note" title="Note">
<t>Carles Gomez has been funded in part by the Spanish Government
(Ministerio de Educacion, Cultura y Deporte) through the Jose
Castillejo grant CAS15/00336, and by the ERDF and the Spanish Government 
through project TEC2016-79988-P.  Part of his contribution to this work
has been carried out during his stay as a visiting scholar at the
Computer Laboratory of the University of Cambridge.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAGOUQ1kAA+1923bbVpbgO74Cy3kIVSZpSXaclLrTq2XJTtRtyxpLjnum
qjoLJCERFRBgA6BkVehe/Q/9OrPWPM53zPxJf8ns+zkHAHWxnUp1r1KlEokE
zmWffb+d0WgU1U1SzH5M8rJI9+KmWqVRtqzot7rZ3d7+7fZuNCunRbKAr2dV
ct6MsrQ5H+XLq6QYZcvLpyMYocmmo2lZNOn7ZjSfjrafRNOk2Yuz4ryMltle
FMf19aJKz+u9+MvrtP4SPyirpvVJU2XTxv09LRfLxP+gKaf6R5M1OSzo5cm7
/eP4lBYQH/AC4u/TZJZW8OdiWaV1nZVFPDg9+P5gK4adxudVcrFIC3wFvjgv
q/jo5PIpffX28CRKJpMqvbSR4bXo6mIvpu3G78rqp6y4iL+rytUySlbNvKz2
ohHsE7axP45fZUUyWVUlrJUBtl8k/odlBUPtT3/Ks5L3m6awvd1JVscA+HiW
xnkSH8yTJskuirRKshTBkDXXe/Hjr77a2Y4PYD9lMTpNL/EB+HOWvidIrYqm
gqdeVEkxxZfSRZLle7Cr5O8TmG8ME8oyX47js3IFMxS2ypfJqgKIeJ/TQo9e
nY32mzwpmuxfYHVuxfDbKN69Ycmj+OA03vn66fbX/vq/fnrv9cvKxrKyv88W
zSixJY3PK93VwTj+rlykf7I9HSRVntb2IW3obZFdplWdwdnHJ2WeNf/v/0yL
bJrgLg5gB/mquE68g+GdPHpeN+llGp+lVZXMknoYf83fbH/zzVM4kgS+zvNZ
ep7mtb+X0yXDUrYypQVdlH8P+0nz8Wo5HaezVVSU1QJQ8TJFqFbn0ye/ffKE
Zobfd5883dbfv955/FQe+err3361FyFt6asxPnQ0Ohx7pFnCVi+z9Govikaj
UZxMYFdATVF0Ngd0A5JeIRXA1utplU0AVEk8Z8KZeoRTT+fpIu0jnFUxxV8S
AON1HCEdwYTXcV5exRN4/CqbNfO4SJsroJkacG6e1mncpNN5gUcH01VpnNbL
dJoleX4dw/HmZZXOiCKZ+AYvYayT8gqW9C6DI9qv0iQ+5hG33NC4o/TuPKA8
PwccgN1ewHBNnMPR5vBhfJ6n77NJxtu5mqdFHC+rcoovA8U3MIWA5zxL81lN
IFkAj4wnabyqZeENwhZYxAxHdJvfR5guYA3CIwHDaK9ZAevgzc6AJKYMaPgU
p9P3YxgSJ0AYwq/BEHVsaFDiW7ChqyzP46KkdcGJF/Uia5rURoXXERGyAj6S
CcaRAE+HXqTwGo/mD+8WLQPRw1fzbDr30IjAE18CMaVAKrMSPsLVTOdJcQH8
YlUBOCPg6z+lja6PzmcYJ5dlNkNgIwLCacSwv+tiOq/KIvsTL2GR4jhZvYCh
s4IERJNN8jS6ygDbGJLwBCJ6WmU1bAqgfwTvlXBQcCS08KTGlSHXfwQcX46V
ERL2t5qms6gp4WDqBWBmDJgH3AZ2BYQBfwMA3qzyND46HMfPVnAMwGCabJHW
NDaiWB8Z+YeSFuXqYg7CLK5TOG18TcABkAUpHL/cjU8O3w5haMYno9Ukh498
gn0RkCSgK0jIMueTC3CT8LlIgd0CGm1mAbiWixTYOCGDLf/RLPU3Y4dA2Jos
l3mGiNjECLY2WMfxabbI8qTyzo5IpYTJKltzHdcrQKOkBpLdP2F4TVJbGmFd
VKdLONomtaXD6K8AJ5HVDVuwIs5yjgsL+RYuGQi/rtPFBNiOLErWRMenW4VJ
+VzqOH0/BdgpH+DzievsT8IYifAZsRDSgEeGCz7cMqaEZQl/As7iQ0xKBjPF
gxpRo4Gj0ynPew8ajxJ5+yKbzYAG4ugLwPWmKgGH6bmfv/D//BBF33cxE+Za
wCYSoO1rxMn0/DybZjAVAGeCtIpDphWwCqT4IoWhLpFFNiUtrChnTHweK1O2
Ep8CbYSf1bj2ZVo1eDBT0KiQHt4v8zJrhIPCZ7YEwaHIWy9Is9+AnrIs8/Li
mgDVJNWorPDxdIZIAOCHceBk8tyjLTzfHGUTflSDhgCfN/MxiM0XcnpIHTXz
CMQj1HRpOOAL0zksb9qAKqJrrleLRVIBAswQEIfEu+t4AL9socR/T9wOgefz
T49H7SPRTPnjU5DTcCgD+GwLJqyIO5igi78DhL9KruPB8XfvtvDEYf+wOAAR
iKzyivkW8jc4sJ+K8qogqTK7REUKeAhwyVSEC+DxAklpsspy0OJRN0ncOoCW
UHhWCeMBwnzVIF8E+AAnrJrlHJgTMM4ivQreQ5gAXsNoeJhJncFCQCdriFne
Vzoj6NNzkk4mT9PiMgMZgPgPogqpCngasj8ngpDmhO36EEdhnC4bFVkqwOl7
2Bf80RKq8GvE5kw8wDdYjMVl0aMAzEpfsCEPilEQbDk5Fv1FCTLbowk0FgWb
pZZj9BkqGrN0CQIL6VIWIDx2Kusl5Y4Jk6DBmkHWGDcnLSaKWk9nogySdHN7
BtoaRgkoTRcsKmCnk2vYDGmZsr0Y+FYSrwqYA3jYI0CYZXKdl8mMmHP0888b
dOIPH8Zx/D1oliQ4UITLllRFlXVFcsb1arkEcxVMnWs85asyZMg+20G4lAWQ
QLlUAxMoQ8cubSjl+/Grs7ewnX9ZZVW6ENju7H6zDZttYAHxzz+/eXGAhsCH
D3gK+BqAEZ9KNkiFOKHRI7BVlvIVr3uSIgPESeHgz4zLCcHVfADtUaNQ0b/D
Dmo+fT7lyAcnSAQU8uGIc5D5kxQkIch6NApncJ6IiMR6a2C0S6fbuuMGoY/k
i1RmutUcuFKK7Lm5SkWyIqbDHCBxkOjx6a420P+c0xEAY79Qtu2Lgp+/oA9H
9OGHXrSeJ2A31qL/+HIEtgy64yxDWwQPHRAeZiXaGcfvWMwInV67x6LmepmS
jKL1ktaFYhc+Bmach6IW8DqFRf78IrsY0Rc0/4cPIEEBH8s4lFpEgQyJ2UjF
BdDTHPgNPJKOL8aok9Ql0CG+Dz9ApitUG4Aw02Y63iIbz4lIMCezCzQMihpB
C4vWYQHKMVjSWRlfsGwb65KQGb2hb0zqvflua6icpNYVgg6VOTbkmzR5VvwU
DNcrRnWoDFUbVWsAHVCbCfAnXIxii2pEwER0KkGF/X0R57pmZLoVqrdCuIAG
K9T7GpGexDoUoIEwfseEju8hdngz1KwwTNJpgk9cpXR4SAFELyR5eEQiGpGh
hODAsRNQwt7sHx69PcXzPcxAF2pwWaQHXj8iAeNmQTE3JGQFAidD/QrV7+JL
4OoJIm4pU1Ur0mhRrq5AcUp4xyGpqxwQirBz2qQNRdG/wo9McNefhyP6eRjF
gy340/0Lf9YbX1szfNcRPw3/53/w51H8+/bwOAMPiLCK15G94N58BN///lv+
oYn/md6gP3mba388W7O/5HDB6/hvR6P1aPR3/PlDW8h6/+Tk5dHB/tnR62Na
S+z//5Etw63l0tbS+oL10NgDBK+FdtOFswKi7wvaEXAX/SagptpeAIqUk/55
L/4i5FcxOXq//bLLf7/80H+QEbLrM8dPWdLVQuEq65Ss5CG2ZKegoF0v2NvC
OqNnUY5R8z443N/z1dZHh4FlvE+TjOP9Armjia2sZsmyEK12AgqNkQbRBrJy
UbpxLOeLY28KasIliKQpSdYMRWyVgX0BPJ80VFVwQzt9CaI15WWz6rcXI1kT
30RylY1683qGvmqT+PohOsRZXIzjY+SRwjP5bbKJ8XzQ0YXHvQBemaHmSwoN
ape0CkCsva79w9DyOAB6RYCHPYLtpmBrogWKWobacU356LwqFzSrrAkHJx32
4NGhzqCHVFbeGZUVLlHcego0dbOhqgzoha7eDb4PWIrzash8bIvQXwxTGEbU
iECXRgQLjodW/er1XvwqaWBaGPs1vIcClSBSyh92Rgt8DPVfOnCUKyzxSAMI
sIVMiA0Pou+KZsZfPHwIBmCrxx6Ljw4xkuF7wshSpw0PHSRwi3j89VyVCTK0
ZQh5x2wGNF7HKKjQoP1hLz5LqgtYC82Np9SzfJLIJmdUmhBgUtm2GW2sIfvb
ov28wL28oF0eFW4/GfpzycR5j7BWt1OP1ectg8Y70eFOStBzxOhMQA9hO82c
PdOyAoRu1KKkHSQCb6QXOGYitSOgtKwSbgVLRKooeYFOEczoMwToQpEHfYcV
6c0laV/kYCpZA3V6psxuTKiGM+WDPkLAkGJznkzhvDwj8TRNnbKfzGZKC4Fj
hOwUDFJ8+CAsY0RDMoluHBnOF91slSlz/iS4AdOCmb/RYJkORlzl5IRn8rWI
zzOdz5WCOQ+vYGPoankJ6iaAV88L4eqR+DAmTmUEwq4iHOAtcMK3y7u9jiQF
b+oo+PqzbA/+by8m+RDNbFG8VXrxAYP6DWYkiMRbXTBRdPc4Kno4vFBE6NwY
RoG+ThqlhYQwTCxKKrM4Bq64g29yQtSRuojflAAKQjgMhaEx/yzBTYub5hzD
XKL6AntPCD/R/kDrkX1msDS0TkCdhXmAxhqiF1hG6K0cIsMioEQWGwFaRRWW
YyEyoyA5WVJkBrlQinjhXeyEjgVEHA6OwR4+tyjNCADwaJ4mFTI88naArLrM
EA4IMLPwkXyvUdHGbU0oEkUhG2QUhgewsxG+XuLr6BtFKy0mhw8aM34MB8Ch
s5aFxxnwC5mF2PkUjsy5SJ1i5Onpnrp35x+g3MjXGnuUyr6fzivRGrnBDv5r
F//1eLO6bz9resN7JWq/dJdB2n/bIOiXu98g+gb8raMQk7rXKPYG/f1ZtqTD
GDf7tGEGgntbHzmMQ5iH90YY+2/sbMs1f//QPfgweKc7wdi9/PBf/zVev/lu
HYMRFa/BnonlVwPWejweu0gK/BFatX0zrw1E6/h2G9hbZ2hLBWZUaEBFEbuH
xDMEnES46A2O08BqqlJk0+Tz60RKUJhFG4OIzCWFb3K8i1zmQWCBeTVHwQij
JVmHY2UaOdTcAhcN8SJ4yESLO4QfNpgLLPDwBLfYAkO3szna0ck8jt+k9Spv
MKrdCj1QDA9Vf89vPHi5u4U+yEUaWE5iGh97pkiPI0x8SjDJVVKB/I0kNMiD
bQoZEcdHnEQY80GRJKRXDEHxuELzkScjZb522jwbOaZrwwnyUdpAIn2ivIRj
dCKy3w+HAgttIwkG56ixgYDP0eufoMrbrMDQzBGaaY1COqtR1fdddLgzdczp
IjzzLAvkGYnjln0iFhBq9KAK75+jNyyAxNCP0WsAUM7WdwciREHSRhgww8iC
eWS7/q2a3SxBAAZXa6ZpHU9C/a4uvdBllRXTbJm7GCoH4c1IYnDa++jB/oIn
oV3ypAuwq1DfTVS8dwLWkvyT1UGyAllgmVn+PBd/iWkHbKYiqPm/frjbuS0E
mmKPYLgQaCqOYCXKCTiWGRik8TuMmKtli8E9egZoHI84YqUqazTQXqQIS4xn
0mlpaNURnQWqGSCqDYnN6ZtxjPWD6flYPOrT5n3z4QMc4PMEtkkgsdeirKnT
/Nx7XSOGZFYuJWoKgC6J356bIehZ2AOwVLeG9s1SrcvBixP62FkNmRmJg8Mj
+C4CqvFs6Xhw9gO9YaaiuRYGr15zTmRyq08rGhwc7m95qt6j0Sf9/D7aKPcJ
mMe3Cjz0UH7qImCI3kUwit++BFjEOvrkRZC2SOcdLmDnLgvgRcAQnnLz0Kk4
+lHrp6M60xBr9mTsrF+crA+P1uKR+QGxaN3xUq0RZQRXEEnWn3kVu7/yKlBh
Q9iOx/gP/CYfIN7ar3H/J59nFY8MFscfC4tPXsSjju1wz5919PvONPf6eRSq
s8h4VZvdzLRE00MVl1g70ZPlIgbuvbZIkuwQ0n4iNd9FGKnf2SmInlZbVqwJ
USTsj/hikFi3WReGCebJZSYevY7LkfI+Ghl4KH4wEyQqvAMHri5bHNFOMZDN
yVY5A8aHkMstzEXh8HTp0BHK6iFpUl6WaZVegGoqaWtZZXIrytweXDjX8mZJ
Ia3TKktyzZApixaoSYVjPzo+DWvte94/D3pD9qe6f5js2E3pxeCKaCWm5HLq
GG4KxHOVpTVloe2rH/lQmDf5aFeU3iyil1zJGHDqTMaJXPtt3zFKdxXo5NU9
N1WSUqqKaVrrifNRp+9RxxDoglBV24RhjOmkqL4R3+AUYgTReQIWi9Mp4Ikd
dsTvb9Qr/FV56rDTMWHoKrWMKcQL1fwo4+A38duT+OXR8T/Gg7fLLU5IdbsQ
vDfFjjJoxLbEzWnwh/6eXKvpoToo6NJDnuTw9btjmebw6iOn4VmM2GFwnQen
RCThuZ4dHR69eX6AMdf9l/HgWXbrfDqVOPtWS6w0SBb43AwYDP+lqOEze1Li
1KHKw7m40E+pUUpSZbVkGkaxf04h7iEWBMOLGYGqaHGN+SQwI3q8Lyg/qsE8
m3oIMm5LMyYVG33Hc4LZhhe5BWAw3LMoxR7HNDgYaMXOgUFSVcn1kBRkGndo
+b9J/A+nr4/57YNnr9+4tziI2I2XsR4rwOmJm3Xho/ajwIiJkCGhpqQPHgZY
d170BUviEyeRwXiYoUwZFZib/NqQjFbDye8BWwvjtPuBT6JPD49JDzfe2Y5V
eS9gdqfspRUWZhuTNwWj3bKNIT2D9BwEFm6MbfKWasRkMDwlABhF8gtzByZl
OYj2kC0BmXIoWdZMideRcEGNLorNp2nf3fi9WoYWmCaxMbJ4JG4CEfkyofxC
T4y1M7uuWQgXq8UESIpKR8ordOd7yYq4dUp/Ngs3WG29RE+HxBKQKVSXIgkv
ShC9YlSDQV0o5UYBwFtZ7eN4cMrJXvApmaVtYOsuyenDTpsrikbVGn3sD9i6
3LNuaAYLycKAmQY5ZYRh4JSRDGtON5ioUNTJfI8SZtg7UxhzWM8zQeVkiQnk
IPebVGPZgGEnzORcvY4a9JsQSv0sLNlrE7J1ky5ZuvtP0xrBpGdJt0dIiOck
nhEDActcfHpQbwVZr1S86NI7HGP+snYpBeTdmJVaAaOzcxDwCgd4u9wAUYMP
FaB5hwDf4dmCyNRVkloBopQitIfGI/DpERa1iLIJU4F2sFLdKr/2n3IlSRFn
2RVckZQuBSTTeVkKSoluxUI787xSQ6++AYbZ7NAQTVQG4kRQKyvCzdZLDOuK
jGYMycj3eHhkp5C+n+armSz5GJZLyFmY6lelDuUwFQgGZvovZd39HhouAOm6
aGiaI19Rs6971656A3se+Hs8uMCz2aAoI1Az6sfxa8zuJ6o5skdfnPRApZsc
P4xTdF3R4r6snY5CS2FZ6dJ73ICSXdjxMLWqw2gfbM4kjZf0QaBw597vkxoz
7LSCI8y8aNENsKwmq4H49OnOkDWOWW+xn43WNcjGINPxhYp893z8Z9Uq3RqK
SiBzhsaVuI2NffQgSo8jLZDfNQlwWI2I56THwEKdYcJZL+P4NUqCq0yIiQ6/
Ehxp0roRhAZoFSWISTBl0dWqT5yXq2I2dNglE1hQGkUwMl6M8QYO70zd/1TT
JGGGMNec+CdMrYOJBsFpNuLEZVbpiWh2xLYdx8yFOVrjx1Aqi6zEXdtbbN+W
qUzJfn1xGPWMU45M+l5B3kVXh0E4qw3rgubt7XBZhBWJhEURMIYL/ngFEnj2
lg7r6yxehpTTXMgwvUsoPhb1PH2foJrja+dic2QF80GpPaW17SoUKXLhgHWe
VXi21w3OJIQBollqLMa+P/wFAfxk+lMj6sdvQo0Qc4tYyzM+DxoTuUsozQ9X
pqxVok2plAGw1x5FFqf/jDIUp5yS/mr/QLN3mBWzlK57dYUgAmBFnIgxkXhc
L2Ah9Sa3B7tOiGjrupzisPRsbUoe5lsF6IiU2ViFZCP6tqaGckZnwfZN4Isy
Oz5AQHrXCyUxLsvxuhwvwRD+FndUqMVMUiMw32CiAy70Gv3+N6qPajAJdpsi
+0goJOZIFhnYWAMBFIcn92fXf6gf+x5F9CcqBcXrAwfm72cVG2IB/a7vPX7o
LnR4GWYSexPzI6JDksfwC2frOSHy8xfTebIcvXoNT3RMQZUxKCE0sVdMNIlO
OaUNYErlC7jPyzK/dFyoR9XviZpfW7o/2ukzM1yCMKChQ041Oy1bPo6o0vJa
A4UUDobBxIFJbNfwyLK0cBKXpoTiEhnGC7BXUrR1WYpq9V5iyvUecQMqH8CE
Uy+ixzxIPBScxllr9urZDy5hFd1gjW6cBiIhk10UoHLsxceob6ZTKpSfocdL
rcpk42Qses9+APz3JEDf9l2CJTpFKW8dm6Rw9u7ps0GeFhfNfAt35j+qAlyW
zklwWN+EnB0LJyaUxc1f8hjBYulr7FvRUUBo/ypDGUrqWBU/xemzHl8FmwqJ
M+yHtPfAp+csWpx+SKnMKOidHqhbHLO7kP4cLQDtTNiTXQQjyIcjlie1lz3R
qAnvBT4npL+VvBZUjeJ6XlbIdi6dAyb0WHWDtBolppCs6bMoVki4Uj4dDUsu
W+KCs/T9lhgxeGjOscO4mJ23cah28EdMo+MhS8fTh2tOawY2cps3pxZ3jvAW
+P2Deqvv9mLozVbBAmZCoZ0WNqpM0qlB0xALzEpIc/FtBCNNNPnW86zTcZLK
H/mCS45LmHBvZPThDX+1fn6PwkL8XkG0zQfPugWgVvSpN3zVrqq5MX7Vu8R7
7AJEHjBrJgR/YNDWUQ+Tv1aqRniGFMW6eBf0VWuMNaVk2F9Y1j1jPVl0KsVa
GiEgyGAETnuHv/hpGoE/o+Qlzo2FEV46dtdaA3zDfwE/ev2mO72ehRSVj4Th
9cFBHon9R3pGIIZfrxY3jIBJYv5jMgLmnGWz1sDhCAzJI3SBISxA5SXHP+iZ
NMI+APLeI2AUQUfojYjeA6MetZQc1Th64qJSlOETyAvVT1wCoA7w4QN2NqDG
BsxRJkmdTWtPpVHxHhQrBe7fKPGjDGxCTMt8tSg89Zr5Cxjx2KxJvLqcnM9e
jKyaRfwSWT251WzdHkQF5uPvX3UCP/7IqjHpTU4N9AJXzgbSNgGu6Y0+Hy0w
t+jCdAYxYtQa1voLc8ypxCOnizctwSpSY5u0uEBnlwVb3rma7P1WClpegddJ
BKC6tdDPAwbRRALJBZlVtLTAJ8Cn5rUfsQDotCS7nipGzt3GMF9NlK5tAuzO
Ey5gF6e7187kCSkXbCKiKSJw19d3vqL3d7/6aujZoPQSj8IHRF6EHfN56SK8
eb5pzYP5/qpP+EPv7MpKbx8Y0EkelsiG8XUQxlF0rH8ZPcKL1E6HCmddIx53
PKZVtOIWcu6wChSv0lrAst2IMtGmcFmrLTovtbFFsnEhgkPRA1JoHoACP8Yj
5ZjVA9atH0hnAw5tV1n9k9UUJR7JGxrzdpwp2nHa6JPj0EFP8U/xipJAQdtE
oohtwvPscT/Sag6rkPbFIpL5AhVG9Je6cxxGXoGTM/RvatFZZTEIT0ITNuB8
3mebD2IDRiAsgvzGG0/bTdf2eHmQE5ZlvOLZLaMyU8BFEKYoC7PFDs2ptECv
RIbG5sCnmnD9lIK7RbYn9vyRF7rLlK4/Zhm0rBTWDAS/byI1PUZFZkTxDt65
pOjAvAjre9if2hEB6k71JcE9UQxFk6lLkdGLNM9AvPL1tihqm1UaBWaq4U4v
qVg2zk9l9ltoKmlSTjvW3YKrzAGP4Fk7sAbWXz9087L8yTz3oBz6EtGHB7vu
5Isw2EBbGXfJl+pum7l0pnnvWSTt0WVZoXUbm2GK1JwV2QLDf4i3pNrMvAZS
msBM81C5JBwLqrxE5/hL0oYVV8iJG5x3xbTg1x5qwhmtVHCp7RsfRy02vukw
wOpnHr6vqrNmqvdKFvIJEVml0RzoG3s/MFyIu3MRaU0uZYotNDqqL6vacXAH
V4mUCA3LqwDllaiV+KB82lkf+S9upNQH/OqD+GWaAD6fem6VZ5lmCfjIEknE
2c+fMaozGAZkIHpUAPsFHBHbRKpFBa4bBkeVAiwRcZkJFuw/xy43DqjwX5To
mE4NqHT4/AewJ4ZYfoZ2hUqP2nclWv6F+mRA766ofSY2AM1dRpQqLmhv9FXB
cr8XnAefZFNmSzEy8sthUcsRUwc9z1QjWNfSyVI7i01XFUn6bvObiApTanXU
uOwgGV4OGG2kSz8HScy3Wdyq8kenjZeqRVwyiF7QsUf8uov9WOQRpQ7q3p1e
VWy+BDEcNyOV+AAuSHKhJWn5YWyOAQRZMpSXw5VSqYZNDKzmFzZOzyzFeeL5
/ONpntDzmGLSxYQNbhk1f/vULnUuap2X0YDncQfV9qD1mjRrZQtXkpja+T9e
KMM91G14EHoA9oLVCi3BnrkPVCP9L8WcDNPOLEPHD9hKzgm8o3lNE3cgOhXh
uMwFQ6KbQFQKf4HqOXBLTJw3wVDTjzQmOSDG7NoBVQ7IipLUzeiK/ntW53st
qPOUXzwk/TW1WbXr0RH0OEEhL3Vepon3vOZnvc5Zxbv2iZAxgFGTXqfeyaWk
TMicvBdxjM/LfOaVijlTy+uNhh7rOn7KvFKMDbFAIuVdD/D0Hqhx9eCBtwZt
fUikoSsRS/QQdovlVe1UDTsJ1A+U1VWcEU6ijVK+JMbKYjoKdNahrryel6t8
ZiyNMO0qzfMRv+XZlrAzeRig2dkgYacY3LbP8SdsBOVRWrsmhDG3jMDNRT1K
uEsJqLh5FEanWc/JpBsNc0QKgRUiNVHkcX9kmVr2GzljWvONS+uO6FiJo1LV
9uog6KnDYd1o4xxCrqGqeAracmJybTVjlqeEShkqGdwu9AfLDmTz3qzLoWCg
fG6GAi5QZJ5+5Uy5BzKmF4Go2UcajInBoX/a6hkK1kb4/AK78eXJJM1beExf
vHRf3A2TxXz+VXDZ+9qodvxJ+xGE1ozZO6L0Z8DmLjL3JMiollW4F83sNsAE
+MuZ5p7yH77UzdS1kF1LpIfU0sXvXxWlT6T75ktPKzY06ChehrOgGQFsZng+
Q0/kW+YKKx7q8In8ruF6nq2CzjNP7pJqQgBs8RvtFcrSP/IjjSFEnajqg6oS
AUoy1R5QVomO4xFCOKE7X7UKSBNVoBQSdiVWJwk7O081MsuLtGJkWtX2+234
EX6MRCuLRYNqsPN0VG/ZgiNcMH4HJ/eA9/xl/aULDrcV4vT9ktt9LZL32QI0
ILFdTXF6rR1cpCltz3bD0qQA7QV8VUoV4MQVfOxk+X/sle6HmNX55s/HMf2p
PyPLpGHn99zRx/HM4mP5RxQckZf/MCIvE+q3VEXmGv/CIX5fYtejRdY4LTKN
n8PYp9d1ky5CN17i34pg5yXtD7QmqKVgRm4GY7FkmSToyzh1aRO8D8k20ZKo
8AgjDw5yhi2M1W/9IwwzNkM+73OrvRsBz3DnaqPNfHtMUQdpiOYULCsoZAOA
PHBWbMTAdNVGR+47teobdfpHBVocCnJEK7/1gu9vUG47DHddpXkiHgp3Cq/p
9UhaPiWSoupb1xJIUCZ07nosVCCKqVFIwSaUtN+mOqNzzEGlnKcxMCQsZslX
nLmktCbp8Kxkd7usUaEbKq/Ycbu4WGX1vJ20iB1PSSB54BZ3hEHYpbIHfs2w
VWOPK8Gzc5yzgK20KNqnU3z6snx3ApKOul/hXTEfPgzbb3DBR46RtwJtaNCG
nj4ZYQCN+mrwgH8TR6jfqFAFneM8e0/r9T/u8yDFg6Ojwy3rusJGJLOzKDQd
sT4koa775vyxGtY6KBXscLesgpOG56PB4fMfkI3tn5yw5kG3aOgzroRRYijU
DGVQl6tqStwPuBycJFnPW6FaYLW9yVVSWVyjEfvSHeHAEYc7sy32uWOuKb3m
pZpGGuD6Qs9SVsN+JluOgBy7cTzTlmBOOlpHNd9B6Se06tvsF2n1VRQd4MaJ
rV0cF6wSpvZd8DLGFFZqUeaSiBPqszzChK1ch6NVXOTlxD6SWpKkIaXAxKjp
cbfAxWmjzvjr08UcZ45u4cxHhctn5/hqWP2jMw8t6MKSzLtJhXEoco4VWy0i
ET7uAAh79SIwImk0AU1y9WwnWOXUjqhsEDZ+DKgrcHw13lH2zYDrzhI5IXMH
VD7C6j51Xhi9km8XwWL+xkQb7Amz8koT8FnByNCVyDci+I424DDcyT0IlqkT
uBfnerT56HZ1Xr9mB/0D3NYDdtI/wD64vtzt1AiGmsw0qSqqvDJGqK0svduF
/LBXpBXHz39oWTOmV8l1Qj77Mqbq5YHgeWiDy3lSW0dDLVGXBsXcF6HKLpPA
9/787dHo6RPmJ0UHt0J1ydInHRbdWW3i9SohHmndosbePERpr6HTaRVf9tE9
cnRzf+qK+/U5ch/47RcQfa2ck++mwFhneqX5IhvQUhdH7JpN7qA9qRZRBpSL
Bl3/6sGcA3J9geatpnJ6hNVRQe9OLTxFdAdi6dhtxDhAkOBFAEDXqLG6P6Wz
EnVt41ASUIskmUm2uyx+4rf4pGxzUY3r2N0SlUzKS8nHQEf3JgkDLBgsj83K
Cb1Ml1z8l9ZROEPPcrvkKJZLOAIU0sQ5MEh4IsDgSG/NZqr1MbUEEf+hoPKI
/DfmWQmlk/dK1EH0e1hd6mLhQ1PqzMiDQWQY+E38JfSQ3S2rolj7hjWRQ4WZ
GZZ/tz2qLn43jH0vjnMqOI5GDgZP74nCVXwOZcE/Vpf6GLKIs5uYQnRHEdrh
Ci7sdmc3YSaXmaW+szD1R2qFBlw+jcXksNQl5Hq3Mr329vq0TPX7wVo2u/3w
eczPucV913S8d5vcdv1uN822+GhHGwL0wEKdcjjIxPmiOL56S7/Xqly7fAg5
MPB8UJBQmMN3OSl6VEpBVrpd7xa5+6W0+cfL3fjgzQEyxVdHB+S6AcVJOC7e
GXgphWjw3EDf0d43jDj9daoDvAtH46PWJmHLIZDtJ3Aua1kVJvOgB+t+0vJ2
uogCxNE1iKniHSzbY7pEPVkviY4zdW6kVJ2xu6AXmwkVA9DPuZaUKuDEtkds
4NZaXtiZs7uJ69XTtAAeXFqFkx87caeuly9jP1fO8PK7KuT5Cq/1abzbFL0c
b1EsqBWsP7r0tiwp65zvXEUi90rO3TWUmszebhVilbmJYhX1GsKTpxv0ZJdB
r9pqVVDWD6JohHdYCpfBiiEtxm2oQ5Lfp7ZAP2yVBsny+D0XbzOui6UAxJdc
8I0apApF1OZs/4S3FlEr+ZdkkLfdQRL1R15fxzu7jzlBe/cJC3nx4WELpSCj
iA9Egli0JgcVmleuIaJbCNKkXuntX1yCZxlJsPZowODnFXz19JvHrCZ9x94C
Wu++mCjOns6X82RvD9TXR0+fcCCkgb934C9eWp60gJWnF8n0OjwWntgz12kJ
IvFYqgaGrH8dgDg20JBLFgubO+KS59Mmmf704YPmJNUhG6zxW3eFoV6eEqRh
8D198j4cKBm6s5L6qHHFg3ljazd0p8Wx5qhSu2C5/4prc18hyiyk3ucQJJ9f
y/Sw7zcql6LTpbIo+01Aq9VQ67W+1/ktwj6I0sN8bL+t7cN1NL7lh0aQBubj
vt/6K7KCgiuckzhGz42nXlUYNe8IBIaWCd1tCrn3C8VRcO/bnUaw2iGxHjrX
IBGGaU3PKeVYk/Vxokh2akj28mQE66DiZeeXALZWuxtY/QUOXaYEtQCyjH5J
eyMC45jKkBPUSdh2rmxkPVY67lq3Xdf1jj0NHMspuBxKmBqyq4jZlZKbfuXy
pVy3WaoC3o66Pf87fS3bbeH1L3ctGCAjN/xyxVvcXVNSv/EBqp/VSkPJiY/X
6/gUiWnd17t2rf/Y31R6O8YbwrwKxvX6d2iJ/GF9r720HvP3EmRm4QQ78fpZ
tn7q1sEFq/CLX4W4Xium6xiWdGRjbN97DC/T46PHeOkK/2QMD6YSFVsTQWsZ
YXcMLyorY+x8fd91uDiirmP3q68667gFps9/ECGiY7x4/s323h7IkbufCzkf
b4OH91TPGGDBf/I6JDvZWwcIxDvD9OG3rZ+H+o/7u/UL/yV/Eq6jBEGQotHq
rQNVmjufLY6B4OiM8eR+Y7z0S1g/Ak/b1am3jTGd//T5YaqcdedX4KwhV/y1
OOsNe/krZ/1PxVl/RwbDIwxWsGcMxvCdXzjG73b+sAHHeIzzVLjiH/TVVqeA
PxN3/h3aOriV9Q172d20F/7HwLG+w142jMHwAHCsvS9uhEevlNje3o5/dSmB
Zqds4aOlxL3H+C8lJXb/KiX+KiV+LSnxdvkRUqI1xuFV71783irEWb/5w42S
RjnrPc72F5ES5JW61zr+crnzN1/vbgs8MMt8Z3drjcHswZMtg8fvQCrfyJ3v
PcZ/De7c6gUjXXK1EwzfekChXXQP7Yc9VV3kXKIo7KLmSPAsXWbTRm+Ec4N/
+MC5Gey41CLyvsK0MXcHZsQeHVqpZyatSa2Qc1dq6aUotN0Lxl1XrRlmXo0q
vqC9OdGbTTdZ8pUbzoPL8UOO97rWmanfOZNmdtM5F2sdhkmb0uth8kX8IvAf
/vwFxZYoPvFaLs2LovCZerWkAe26USotxtBaWV27fhAr7H+ZU9ZQX3IRVVcl
S4pdU4Fofp7luUY56DRenb3Vtqy8x3AdWk2enWuPR3K9dRt9cxjJb/9gnVn9
u7mpRBhrqKVzuQTqqLvgqsgar3hAGoh21kOJTbKoTauhLCZOfsIef9Jox+tG
FKxJ85vut7Cjotdr2nmRGwZcL8XJKRn4HHZOC+4ICudYpZzFrL1jJDCM+SSV
nBWOeVElGHBtuObIr5n2Jx1qFokHOhdTy6x39MxCfO54uD9OoS9j4MlWYytw
mfZZc8tK4IHT7/dfvqQEnarEbnGUc6wTEI28AhaIYbFhD0yxdQj2z+OwYVMB
w4lzlNgSv8HgBqe7/E3stcJhlzNwr6xSBEgLJoUl35hnSwBc9WO66M/OMGnH
dmQP5mWticzS8SCZcVsJu+HGGiKt8jw8N9joa//yPU5r92/lXkqf/xizAvES
AQ4KSd5FnqZoo3HkUhN9sISD0pz4igbKYZDbb7jIQ/NJQdXNSrpKjt/hjq3e
tgmlI1tLMkuWlndGXEQr5ag5CAy2qvsoIKJoluYaa90zBTT5encAxcwS4wyy
szTH7ljXUQW/SNmdNBqxmKthHV3YgSWaM5iFb6LEwBgXfOOaudFP1Bk99kYX
PDAeR5kDSas5M2CUsVSQPHjF/QI5MzaS0NissSZiJOH10B7lcxaV5hMhjJdy
VYQQoSCuYx1AE3ga0i8UN25FVpnEW3QeAVUL7DVoHXqTvDcYRWlxuDlY/WkR
FGwgwwHYyLVQnETrsxFlGN3nqhRbESwmuZ4bTb/0EcB1+JT7XnAIKigA2CMb
t95B/ayLg/pvOmdY73E4iZPoNOkggAWHm6TNjuWzSbj9DmhS0xVFcRljL9n9
g3/Uv95lxQybo2A7mBF+Ef/Hv/1PLnb/j3/7X5ufgiWlVYWFzPgIaTR0d2oX
P1+9PT2zNgBEQrljXTW3SGX2TXn4iM50G5HdYkKJW8XsEXUbEpWMKm4s9+Im
PYJCdVOsZmGi6lmhlMwkXMrazCUDZ9OGrNk1ZVf6opiuJwfEHMet3On+Se0m
+/AyzwzjlpnraIRpe9l0BeIdS4GqBAiowuqdae/+d7sg4Ebi+CCffd9y/F4N
tLolX5XUOyBxq/p6sUhRnHVWhYe8WmKc3iqx8A+69IDueZZeI7IaXoG2lpEu
g4Q1x6/PADg11m5MMcMwT2eCNQN4kZqw82g+fv7Hv/17B4+RR9GHyOW8u9wk
h0OxEUezFbCESWCzNLbH7CWaTMoZpyXF++4xHMQ9mVE6+moiV/CaZJW/3YNY
DCt9MjCTHhZMe3PINY4t3Qb3yfCiPVHhQNBSPplgObemBOJAQkAkKz2mWLs8
+J59jm+Cr3KAXxa2EsfH3DpSV6RonfhSyGstTU4GRR2ahgGlpxl/LOw+FnCG
6B7ohkAV2pJm2Qh94Sokl4GXwvOjdoALd2MO/UU6hU1KBIJH2WJUld91r4K5
wh5N1yHRnYd1VryxIfBPYE8Ailf7//QjDHH648nzNz++Ozo+fP1uaKl4TdL0
5JlJ62Vi6yb8eQVeapr0aJd3amVYxnDcFVbLqgQbMK23xiJ37qhfcW8quVy8
Iy4ZN9s8EW848krUxabdrGnBIJ6yxQiA/7fsQjXILVWrR0z7mf7kgSgvMymN
319Sh4f38f5NekRWT1d8O1qYuyhfpJbFBaqPqsN8Tc4dwRLmFJKT5JKU6Vqv
SaSjEeaeSfs5bg6PcLiTujIGuqGSwKxmWu+TEXbeXIWEd3ioHuZdBqqITy3L
4+/Lq5QMtYbboYf3FaXFHHsv9a9skl7zRUZArMx/8BiN0d2ghIxNSbpBkXLq
fFAHgh8vSLAKAUmfJFUtvGlRyNasHdPa/NJkcpv7dj2ZgoAGk9BYkVWwmstn
1+Yfm3m8O5r27Uo3q5l26LQEUUUoUTMj02MC54sZ1XRHKNCyaR6WhTuMiWVw
JxJn+/N+LevfU0puUxtVaSHTcUqIaW0wY8I19LgAMnkOFxke5NPY4Vl27slH
ZNMBHw9MnFAxniIyOxjjCJ5oXE1RWURV4lqxNWWvDtZZVInOcyfAe61pV4Q4
4lKqsfRN8AyRr6hTT2p5xDZF4yllCovaeN6nkOnEwt9qznKlpZc5bQPrH5jm
WXqoEwS9DtiVEOu8J6uqZhOiLSo5rRQb1E3VVCd7E86EYCs3yvBVGmS2Ygm7
lqT5zrXAsZLUPHFS+5LfOiiTowKE5epi7mEATcwoTBnb6A/pwFR6N/twZS5/
Vpa5tT9DPVLYeXAtghMpDT4u6OS16hPXESdbq4AJrVTtv5fkatXeLqxMJsqV
FDi7lGCGLU6DRh9yz5D6LVvyhC/as52yLmMFQ7Q979qVMvbvOQqurtLLPB1J
8TUQIg2Cp+kmFeVirlYgCUpIpZto7ZivY6eTlFoGSi0Haf06nroT0PHrHAl4
X00FCu0lXnRTjDyeFTjd5LYYtwepziATQV2+LTed7qrdn4Sq5bILdB1utIUz
7qRRew0SPGoIdslkSuBkXmNXf9IcHpiUb5LM9U4IVAdUaXhlWS2DoeqE5+pf
YKRHc8yyaHDw4lgKCeE3XrR36ZfPR8d+R0JrCIChG8ClGV/H21SA+6i/Dl3p
TuBrYA6i8B7V1LTA8EXrAVvNjZw1rxYdMDFq2JG238XeMiLuaEPSj9vgqKUA
+pYhAaUpx23kMXdKy/xoHLySlb5hvRfeYchnKKgxFxa3XFXkvcbtY40QFzlI
HXKymGQXK8QeRRZTAGiFC2BqyIewFo9gHk9B6cQiQAx+EXuv6agP1TF/llzE
g0P4t5wu/qqtZ0GSyokMPRI1T41c7dFxMFlhuj0ZkMuwnybbBBdcN9lqOmm0
OqbNvBJsx84iFxVCh0rN4sGro4Mt9XH5vf08fcDKv9jB2LTJ77ys2t7FybVX
+nP27BD2c1HCtPOFNGA4OrAtBiekd0pR31hUQc2CNldoiFAaWMgaZissVGoX
uZJFBEHjCV+9W3KwiyH0LGsWyZKXN6HfxU9CzW2mqXVa9qlalSDxwtMNEmqh
0hk5XQKMtgnWDVDLfHbohSaO1mxJa9+2x8CMf3HncTNDklrtTqSBX1aHZwHX
F8UKbtqrzXWuG4MPpRfFi3AsMiD23QwE8qwOqD+Yga//sucl7DeUK0HY1UAW
a2mGEt5iOscy3kyD4bgI3vaHD1K/1RrQY0LOySUtVDA8HbqwxO/TE/Ck1vzB
o3rXgYaqWn13WvDI9MZhqUO1CKiVKzlRPTg5fMu+SNRWMbVADPW4mzC1qcRF
a1vWfFBjrcLBvIcXbRhJIsT9xg/v+LOD0LSHFn6Mv/wQ4k0fulmT55bj1fG6
9P00XTZO4KB+zNFPv3q7H+ECRY7x57hsXsIwijxN2WgHeq397h0KlQRNP9Aj
crVE+PO3PqzgYffH34UPtl46gwfwv8edBx/aXYsP+ZdYf/HrmPjIVYOBwyb5
RHVkIFbtlO8yZnjAAqn26TJYvrdTtOMNjorefF2AgA8OlmqlItLRrAOob5eJ
En+38xcS+RQ0gLn/IjBB8WCnFxM6hwb/7ccEHxEED971Y8LNY/Ziwrus+FRk
8M4aUCF2Dsmzjj7JRn2YpRHS/QYxI8qRetFL9oJuFCj34gY4lIcHD19ZSlIX
DUI8CBHhRqZAr8ZnMfGF+Jj/iyO8intfJYbtLmvV09T/el+2+QbJBncvrLGO
nZ3xeEfSelFXo0c/ZdYAne7EVQxv9AliHTDvb3TBe74VJT2W5OQA1Ag/hB2Q
lKhtLR3c/BF0p6vHXaT20mdLYrmzdYmuTFImWmEQhWP/gtDjdEb/Pva5B20I
wc73ePrZXs7OwPnPpJcK6yB2L1ngErgAJblR7x9q0Hpp5rZMedYathcmbBn2
WyYWOe+1dMY8uP8Mq88N+0zFKWdtxLZxiN1/xpPaYTWQXr2qQPkmZZmekgdo
H2NBAWBowfGzob4q5A4Du3hX278JWI+tIY1nq6oF2ordjTeEhI+/3eHuf2yV
sA/I5Naxd1NpFR7IY+4Bgv0RyMHgfAUbATZLQ4DhlOSVg1nJaA6iiwPGDW0Y
YMkNtCtuciB722pDW46DgC7HunEeXvfmZehuFCt9gOhNSQSQ3X8+Hu2O44EE
o+KdPVru8bdyCZ0/BQ8laI/MHYz8yuJgj7elVRkp/ARAfMvdLhdAVVxuHnAp
jYdhgpMRBPvg8nh7rKGzePeuqxVS2X382daoGLtxnbuPPU+UokAoXok/IaLw
7UF8AZ/XX2/IXgD1hWYu1uU2CIgPZ0jESS2f9A4wdFtw265r3+BL+txGfo++
ICWh6+Mjvzf7dhUOK0e+Ll5A+YzU+tZ3kBApS7h+05XQybRBXN3sEmNHCXka
XNJaQ10BFWyMFDvDnr2GN1DR6anXFHdghLKjXg08IItlOjbdeRMG3jbrkRjk
u734HTswdqgHrbUe8/yOjv3d6KwiL6N6NVzonL1B4rBTHCNHuc8mCHO0b77r
zGFce0c5OqgZPkf3fX6Of78S/u2vHfWTHr/w2NcspQkYPvYGePQQpCnxP5P/
reuwOtkC3vVcdsPQx6UJuGcl9wgtZOdq4Xx40VRLP07XUlvh05H6QfZ61U9P
AQUlL47vpXjumPuhX+N7ODKbIdADOy+tuwommSTqZOvRLO84U6BTOnCYZtmC
oeiPpjyKKoeBl6EtsV+NZBVSMYq1NdpJ+PiZaFn01QbyEh4YKmG+2tFyDrey
1AGBmS4IRwUzUNshhYIzfN7doBjTTsbh3s3Pfsua/Wc6YXZgSnQjO7opXdJA
Kq75TCL+dL3Ghcb/XQJdEFKWbTB+7G1iWYI+vTlD5DanPAs/rE05TOp77WRo
dfyuGtZuO17jU09Hl1XIbahGrtqC0enf8PJBmmGhyIDjRT+W5z+asfzom624
nDYpK/iYL9DzkOQ8tRMgehn17X7soXfFTzECLZmu+pXojp9ySl+6KI+XabEJ
cuKxJvFLgthAOHAzicaxJWDtfrUNKsybdAGGPjXA1/oMeoQz6gPtehNQCEEG
5AIyvt3Cly3/EmLQJMVzEehNk8wqmRiqKqBc1GcHo0Ebhf7t0GFJs80iBXtF
gpnhRQ0cZbUMFQYLqgHfmjo22KRkBQ7tLVPbgsuvbcPWRs4PmyuC7YOyJvjk
UUJWGA2gko4eGNlpuIGW3UmStc0PFmlSmGrmGEMs16dzxGZELjySjmQDSts3
jxgHx98+3vLRnZca9cTOgwo4NJrOgzj3nCPjzaYTVD/QTQK2/2eD5yi+q+BW
sR0D/uzEu2BrPom/ip/GX9/gtPEEa+t/XSdRjwjfWW/D//XfOze5h26YKZTi
7khVij93x9mLZYOsFU9m9fvxFop7dfXysIAlrruhBvbtnqlExh5v0KU+6ljC
w+l9sB9OvY/2n8N9Rm27dRkwPbDeABwEqmch+nVW2BazzKTn8WWS5ZTcg9Eu
iTjVS7zQQmN7qzxPMR9MRyZjWRqikbLS9hSIbtXtBSqMVTJEyDTyx/Hy4dDf
sONnYbygO7GlTaQwb81QdnvghXOI10nUr/RSqONWQ9mnzkb3c7HChxKbB4AN
Q3mL4vunn8H+sBuhK9Rhy8B0HEwww8w+x53YOY5AGIBYdZrPl9TgVZtyS9u3
gctcAN442OUXvKaM/NaGxx9vGSbiXrHWm9AxMPy15jn0Lk5SylYjGLDUaWUK
BSFd2y6iR3i3690K0cK8IXsnSGcNHbeZYJj5AaPobTtFPgR9KwUYK9Eauf4I
b1NQVd5uQPMrQf0yo1XteSMVh5jAcNIKrwnIu7nRTfvWW7wgxFcUUNBdZrNV
kgc+BKowvX1hIZHwDVPUx5gxBkPYSuKd6gcrY9UnzJJxlW3xhPM7RQTb4j19
zXyfCpg+oAQzOxrsZAcgNdb9eUhdtNPKaN8CsoQUUWo92g0rrHxnvsJ4GALZ
d3IBh5CkgvbW+8JcmNjzrh2naKVvS9hi0+YEUROqXq3igdZUPJBBntMgZ/jl
gy1XJxIqoYFfmblkL0lvcATx1FKwYZUF6noM6g2Hel3c5qINTdCFeczNIk4v
mwi5WINJtxjkwLJdDgSBYXrVozATfhv+9QRE2Kcv6t+tZUkERF4K7CKrZGPA
XQuXodJvQITTFr1O3f4cokE2BltCrYRvt7d6rFurmFLv/Z1S6ht3n31QnUSn
2SUQ48PhAsdtpaJLmCGWhSaV5NlgXkDtm0PfSnxhX65tuXGCti317bZeYcet
ovuBzUYpe0b7rMbOiudlbv7fAQenck6vDPzwW551SSxo44j0oZpkbTnV+5bz
5QLWbciJ37ec+FtYCGELXbWmZWNl+CSrIMwC8PvehLhQaASIREn0PemO7b1b
2394O1tm3iL7gg49uQV8dQZlCNoZZpYtaQ04WkmI7u3wopSjg5ArSAyRES47
b43OOY899ujG+fy6smY6D8V4+ORgWWV8R30gRraGt8ygjACLtJKK4pVH5/21
GxvQxR0FjaUc5TOiyh0Qw1v07TKytWKs9d2wanEqIuMuqW4p9atEucjDi4u0
V7TxjX7IUXOaGxdCnS4IXh1whWSyQWe4A9HLTDdqDTyG6QxBRwzXx6OHJ22q
NWjZA+rLRZ4oCxHnUDD1PSa+Q7Dqz6GjEOt2KoHfi4QLtopSyq3a+cD9MvXm
ylwfDBbTq1LZPyrI9CFmNxiMaSlBF4GeDi0bAcxJeFrlQx1Zaip0KKT6/19W
ad1sKhKWr7XdicXUqMyjVQr845vn/+3t89Oz01+zDlgCLL2pjX1E5Z9Qt8wa
6z64zNccXyzwkkAkC8sAhm0XIEpJOA4L1rx0NunlMcLmadktx4K4a6nnAyUn
+EKjbdmJ6dXaYN2dBE/mOg0jCrdN7D+rE9OB8G2sW17ZQ3yaLbI8qfBCNsrn
Ag0fj4FVSdMNkha2alVB1jhG59mqQgTvuFuY8Aam27Q2yZ5yhynR84LGWR7o
+BjS93zrrbftjuQ1Y9ZbCSG1PXqer+q5phT9ouzrTqFtrk445Uo86q+EfcvQ
t+i5xOooQt9CSCOpmUR+qxX0OZTcOknbuFkjKd/JhvWwfTNJwV4CiFMJOpxj
Wg3dcUgODZGd0nuHCq65yvlP3BKr5QeRsqtgcr9did6xY01YiGH6l8u7MKqO
1RO98io2rUFdX5BL2s0FrTo6PeIofcP8qt7KvWQa6WwF32uUS5OYVlaEtkHV
aFW4AXfqPQqOtWmNZpg56UPQ1QW2PameT88TBZsKZBkV9yeCiJv0jOAdwUy9
FxOpjjh30uHbtIZ+b+WVpAYlOLVYqKOL0hKZ9LYrzB4sCHV1vo11l4zGKbeJ
GngOg55l9dprW2JagKVwQS2MCCylUy5rVStZ7MFoS1gxUptfIEshQ7/cRw9w
gDXNeEacIW9mrMaVbT7h7AaRDS6x4FB493bgUgVbxu1UR12MZnDbpIJPmV67
2n8N1R144PmqWVUhuyP9LTzXqustay1lqNc5NtwFjrh5lWKOGvcKAaFCbntK
1SuniW9S3A2TJQeDJuYAJZLDoXYSaMf1pUvH0Q132IA000sbuaXeqE4uCavx
MbzVuh66VgUBSDTabMWa2WKRzlBPwWwQ7r9TaMuCTh8910YPiz5hkMayJTH3
EuMACVd93gk0/pXwOOFGF8f+f1exsGF1CJK65P+6OlTaThjzbhXLCiKa3kxN
Gk6xMr9vEmGOQrvOK4eX8pFOyo2xUJsmN1hWxGwW1ylHW2zytJgmy3qVq1ac
4HvndD+q6PUkTWo3ImVpiO8/WANplwQVABHs4pqayUYg+1OwR8i34Xf0q1kv
6P+Ojq5bhxftw7R44x7mQPaU6XE53jRZ6RXj7h5rg3t0VWHQyW9O2nKgWMWx
eVGoEoD6JKCDYcWnGAkEzMCn94BNjppyRG6wFRrrjbULLGaen8ddggeEeJgW
GUcusP843zVHYy/5uk044FVDmjsXKzNHrhV22CYFFKQa+3MmdjJ1mV/qqjBX
TOK3XbCNbz2JwFt0Q68Ho8MY1KsE3Wd4I3LPrZARXXa/AsxBS84IBc4PlTy5
zA556T5r6hgxNcLTKBF38xTg0nxIByj2OIeY1HvXpJIQv0H1quGuyO1+PRQv
1hahMgcFfKO+nNI4potcsZChXLTklmp6kn4fzaoSiGImmbwt7V1mQoY4na6W
qAlKb9HwwQiVdzhBnJkvpaMER/rMmR0kWggYdHUlEv4y1SAUkHVEF3LCBKna
vNSaaMg6H2aYNwy9meFkLTjJw/LVfwNQIbfgvGqC6wLPTSQsHwQqmSAik8pR
kymrEe/Y2ozwmdBBj4MOSClPIIGkYFcAVG3rQp2Ke+Oapad36pFo7L0pgWdF
Fr9rnQYiSAmyvdIjppk84NLK+PbC7lHqHMC5m7Abr7RmUOTKS1QY6DQTTz3X
4nrtLSN3qKYYS6lQZ8f2XXgBNA0TYVE+x1wBfyrSTV2jo6QwS1tBELinWUuM
9F5Pv6honuZLF8MPm5O1++AB5UXeGYnbo2BG1Vxzu2/+lk/W8fFCqqp8wwUH
j6TRTMU9PVyHXN58GyP0aU+6Ifwi/I6jEnAgZXlO5MX3U6YiLbm7LVBDaQ2o
t0T59e+mpD6KPmRJdWSTfZXVc7yjERa4SKhaAMaS+SLPFEK+o9f6dR31fjXA
xL+dNBK5w01A5WvhKoyrWEjOmXWsJo5Y8iWkpyKIa72L2YiU0MuciNhyrdR2
PHQjN24J01yEny5AbEYtn3vZEx5k5wrVjNBN5nR82AUf0D8CocdJnGJbuFYV
XrzeEHRaXS+bEtS1JSAfLnUeBW2ApLt9ki1MwzfNUy6x1QvmvThlZDgNgPSP
TE8JTD6hfBVjSA5ZcYkS1QQMkV1CfN1BhOKrkdhD+BTpzvoopUCTJ6mVChDq
plvj6Mh3eUhHbGobiILRi3XAiZujRJXIBECKCkmE0tC6SqGUj/ddWiWtFxOJ
koLl9CGKMYLcs4RujR7GBwlIUMCNZ+QHAXl5AgIsgy3HBzmwC+TS+9WqWFbJ
ZL6K/xE76IOMuYZPgemBzfIqqX4qL+ufMvgkT98nxGpO0ry8hKGSGu+ePJuv
QCoAqf7DCggVJszLOv4fqyK7SAjZD7P0Ata2+mN5WbChD8rd+Sqn1uMXRatL
NLePWAixRRFmvqFTontNgLhv2v0yLNCUel0Ru0h6Yytjp88IjwV8zmrD0MDL
NtbMREm4G70teMQ8beUokqRsOQv6Ou2jY6mOd7zkNrVuguJFy238v//b/jll
j4H3ifvnjdCPl2K4lqxHCpFbLfP6r098pid23BMYRKbIMDCbb/8uOLQ4TOTs
4pGmdJ7djDyeF/JW5HEJtTrdu6wYHZcvAfFHx/DcZ8XdzVlNluI7NPOGo6mf
DbvfYfUeHsbTTWdlT3x16xNPbn3i8a1P7N76xM6tT2yHTww4nrjV88L2rZvf
vnXz27duXp74egOyh4vsR/cW/n06zn8M0nXJ4k2aj3gkWtYIF/jr0EbMvfg3
k0e8kT7+bMTxT5+BOG4Z497EQU9wsj9FmN8ZW15zxvzezs42/G9n51PoXqk6
tvIPxXf64xenzE1Q20yZG8Gjcs0DD/70gafFGW6kewJDP+33EdmfiQEERHUj
+ePCmEH9wvT/gJvYPtjMpihtY6+T+5gE+SiTzNmhrve/+HA4BOf1uvmrmO15
4u6cBHBcCtE+A6HHN/GLT5TCN5B7dw+D58XsjnTrqOOXINwekrBMvdup9tej
2Vtl9l8Erf0nk9qTzy+1/8II/JcQ5pPPIsxvmOCT2ccvxjz270Cb1N5Ssw36
YmbRofmQ7Kl2kpBzMyXoI2IvYRg3azVBrzEoFqYsUKvm1WKRVNfWVd5blzQm
j2NpteI1KR16qWW3Fc+FofSg7TYoFlviLRjGGfx+kyKV9T/gt+Lvlmd5mT59
2ULULxir4tyNKF7KkLTG0d1zyqk0ALc+MQQX6wqueTtBlkqYjkJxblSrIvRg
goT4rlykf3LO9fNVIW2CKV9CwvWnS4wAz+Fh4NMFnkE0eJXBR3hXFVbyxc9n
q2kypSS4g1XerKokvo4POQMUE3gq7OVPY/1DWePkdYM+7T+WeA0gNpXaP935
6tH29uPHUooqMz9/c/jCjru7DAwk89DLqvwjOpnPnh/sbu88HX39299+883o
ZBzHJ5L4MefamKbKJiu9OYwwEtNLI9fjQGgO9VAJb5IztEmuucn5ZYatQdBj
Pp2XeJkYRwejA+5EXeGt2mXFN7SK9/xtkdG931yUcZAsJlU2w2P8/6kaB8pW
CQEA

-->

</rfc>

