<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.35 (Ruby 3.0.2) -->
<?rfc rfcedstyle="yes"?>
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc comments="yes"?>
<?rfc compact="yes"?>
<?rfc inline="yes"?>
<?rfc text-list-symbols="-o*+"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-ippm-explicit-flow-measurements-06" category="info" submissionType="IETF" tocDepth="6" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.4 -->
  <front>
    <title abbrev="Delay and Loss bits">Explicit Host-to-Network Flow Measurements Techniques</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-ippm-explicit-flow-measurements-06"/>
    <author initials="M." surname="Cociglio" fullname="Mauro Cociglio">
      <organization>Telecom Italia - TIM</organization>
      <address>
        <postal>
          <street>Via Reiss Romoli, 274</street>
          <city>Torino</city>
          <code>10148</code>
          <country>Italy</country>
        </postal>
        <email>mauro.cociglio@outlook.com</email>
      </address>
    </author>
    <author initials="A." surname="Ferrieux" fullname="Alexandre Ferrieux">
      <organization>Orange Labs</organization>
      <address>
        <email>alexandre.ferrieux@orange.com</email>
      </address>
    </author>
    <author initials="G." surname="Fioccola" fullname="Giuseppe Fioccola">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street>Riesstrasse, 25</street>
          <city>Munich</city>
          <code>80992</code>
          <country>Germany</country>
        </postal>
        <email>giuseppe.fioccola@huawei.com</email>
      </address>
    </author>
    <author initials="I." surname="Lubashev" fullname="Igor Lubashev">
      <organization>Akamai Technologies</organization>
      <address>
        <email>ilubashe@akamai.com</email>
      </address>
    </author>
    <author initials="F." surname="Bulgarella" fullname="Fabio Bulgarella">
      <organization>Telecom Italia - TIM</organization>
      <address>
        <postal>
          <street>Via Reiss Romoli, 274</street>
          <city>Torino</city>
          <code>10148</code>
          <country>Italy</country>
        </postal>
        <email>fabio.bulgarella@guest.telecomitalia.it</email>
      </address>
    </author>
    <author initials="M." surname="Nilo" fullname="Massimo Nilo">
      <organization>Telecom Italia - TIM</organization>
      <address>
        <postal>
          <street>Via Reiss Romoli, 274</street>
          <city>Torino</city>
          <code>10148</code>
          <country>Italy</country>
        </postal>
        <email>massimo.nilo@telecomitalia.it</email>
      </address>
    </author>
    <author initials="I." surname="Hamchaoui" fullname="Isabelle Hamchaoui">
      <organization>Orange Labs</organization>
      <address>
        <email>isabelle.hamchaoui@orange.com</email>
      </address>
    </author>
    <author initials="R." surname="Sisto" fullname="Riccardo Sisto">
      <organization>Politecnico di Torino</organization>
      <address>
        <email>riccardo.sisto@polito.it</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>IPPM</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 108?>

<t>This document describes protocol independent methods called Explicit
Host-to-Network Flow Measurement Techniques that can be applicable to
transport-layer protocols between client and server. These methods employ just a
few marking bits inside the header of each packet for performance measurements
and require collaborative client and server. Both endpoints cooperate by marking
and, possibly, mirroring information back and forward on the round-trip
connection. The techniques are especially valuable when applied to protocols that
encrypt transport headers, since they enable loss and delay measurements by passive
on-path network devices. This document considers different techniques that can be
used separately, partly or all together depending on the case.</t>
    </abstract>
  </front>
  <middle>
    <?line 121?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Packet loss and delay are hard and pervasive problems of day-to-day network
operation. Proactively detecting, measuring, and locating them is crucial to
maintaining high QoS and timely resolution of end-to-end throughput issues.
To this effect, network operators wishing to perform passive quantitative
measurement of loss and delay have been heavily relying on information present
in the clear in transport-layer headers (e.g. TCP sequence and acknowledgment
numbers). Additionally, the problem can be quickly identified in the network
path through a passive observer and by moving it around.</t>
      <t>With encrypted protocols, the transport-layer headers are encrypted and passive
packet loss and delay observations are not possible, as also noted in
<xref target="TRANSPORT-ENCRYPT"/>.</t>
      <t>The measurement of loss and delay of an encrypted protocol on a client-server
connection cannot be based on the same or similar endpoints connected through
another unencrypted protocol, since different protocols may be routed differently
by the network. Therefore, it is necessary to directly measure the packet loss
and delay experienced by users of encrypted protocols.
Hence, accurate measurement of packet loss and delay experienced by encrypted
transport-layer protocols is highly desired, especially by network operators who
own or control the infrastructure between client and server.</t>
      <t>In this regard, the Alternate-Marking method <xref target="AltMark"/> defines a consolidated
method to perform packet loss, delay, and jitter measurements on live traffic.
But, as mentioned in <xref target="IPv6AltMark"/>, it mainly applies to a network layer
controlled domain managed with a Network Management System (NMS), where the
CPE or the PE routers are the starting or the ending nodes. <xref target="AltMark"/> provides
measurement within a controlled domain in which the packets are marked. Therefore,
applying <xref target="AltMark"/> to end-to-end transport-layer connections is not easy
because packet identification and marking by network nodes is prevented when
encrypted transport-layer headers (e.g. QUIC, TCP with TLS) are being used.</t>
      <t>This document defines Explicit Host-to-Network Flow Measurement Techniques, which
are specifically designed for encrypted transport protocols. According to the
definitions of <xref target="IPPM-METHODS"/>, these measurement methods can be classified as
Hybrid. They are to be embedded into a transport-layer protocol and are
explicitly intended for exposing delay and loss rate information to on-path
measurement devices. Unlike <xref target="AltMark"/>, most of these methods require
collaborative endpoint nodes. Since these measurement techniques make performance
information directly visible to the path, they do not rely on an external NMS.</t>
      <t>The Explicit Host-to-Network Flow Measurement Techniques described in this
document are applicable to any transport-layer protocol connecting a client and a
server. In this document the client and the server are also referred to as the
endpoints of the transport-layer protocol.</t>
      <t>The different methods described in this document can be used alone or in
combination. Each technique uses few bits and exposes a specific measurement.
It is assumed that the endpoints are collaborative in the sense of the
measurements, indeed both client and server needs to cooperate.</t>
      <t>Following the recommendation in <xref target="RFC8558"/> of making path signals explicit,
this document proposes adding some dedicated measurement bits to the clear portion
of the transport protocol headers. These bits can be added to an unencrypted portion
of a transport-layer header, e.g. UDP surplus space (see <xref target="UDP-OPTIONS"/> and
<xref target="UDP-SURPLUS"/>) or reserved bits in a QUIC v1 header, as already done with the
latency Spin bit (see <xref target="QUIC-TRANSPORT"/>).</t>
      <t>The Spin bit, Delay bit and loss bits explained in this document are inspired by
<xref target="AltMark"/>, <xref target="QUIC-MANAGEABILITY"/>, <xref target="QUIC-SPIN"/>, <xref target="I-D.trammell-tsvwg-spin"/>
and <xref target="I-D.trammell-ippm-spin"/>.</t>
      <t>Additional details about the Performance Measurements for QUIC are described in
the paper <xref target="ANRW19-PM-QUIC"/>.</t>
    </section>
    <section anchor="latency-bits">
      <name>Latency Bits</name>
      <t>This section introduces bits that can be used for round trip latency
measurements.  Whenever this section of the specification refers to packets, it
is referring only to packets with protocol headers that include the latency
bits.</t>
      <t><xref target="QUIC-TRANSPORT"/> introduces an explicit per-flow transport-layer signal for
hybrid measurement of RTT.  This signal consists of a Spin bit that toggles once
per RTT. <xref target="QUIC-SPIN"/> discusses an additional two-bit Valid Edge Counter (VEC)
to compensate for loss and reordering of the Spin bit and increase fidelity
of the signal in less than ideal network conditions.</t>
      <t>This document introduces a stand-alone single-bit delay signal that can be used
by passive observers to measure the RTT of a network flow, avoiding the Spin bit
ambiguities that arise as soon as network conditions deteriorate.</t>
      <section anchor="spinbit">
        <name>Spin Bit</name>
        <t>This section is a small recap of the Spin bit working mechanism. For a
comprehensive explanation of the algorithm, please see <xref target="QUIC-MANAGEABILITY"/>.</t>
        <t>The Spin bit is an Alternate-Marking <xref target="AltMark"/> generated signal, where the
size of the alternation changes with the flight size each RTT.</t>
        <t>The latency Spin bit is a single bit signal that toggles once per RTT,
enabling latency monitoring of a connection-oriented communication
from intermediate observation points.</t>
        <t>A "spin period" is a set of packets with the same Spin bit value sent during one
RTT time interval. A "spin period value" is the value of the Spin bit shared by
all packets in a spin period.</t>
        <t>The client and server maintain an internal per-connection spin value (i.e. 0 or
1) used to set the Spin bit on outgoing packets. Both endpoints initialize the
spin value to 0 when a new connection starts. Then:</t>
        <ul spacing="normal">
          <li>when the client receives a packet with the packet number larger than any
 number seen so far, it sets the connection spin value to the opposite value
 contained in the received packet;</li>
          <li>when the server receives a packet with the packet number larger than any
 number seen so far, it sets the connection spin value to the same value
 contained in the received packet.</li>
        </ul>
        <t>The computed spin value is used by the endpoints for setting the spin
bit on outgoing packets.  This mechanism allows the endpoints
to generate a square wave such that, by measuring the distance in time
between pairs of consecutive edges observed in the same direction, a
passive on-path observer can compute the round trip network delay of that
network flow.</t>
        <t>Spin bit enables round trip latency measurement by observing a single direction
of the traffic flow.</t>
        <t>Note that packet reordering can cause spurious edges that require heuristics to
correct. The Spin bit performance deteriorates as soon as network impairments
arise as explained in <xref target="delaybit"/>.</t>
      </section>
      <section anchor="delaybit">
        <name>Delay Bit</name>
        <t>The Delay bit has been designed to overcome accuracy limitations experienced by
the Spin bit under difficult network conditions:</t>
        <ul spacing="normal">
          <li>packet reordering leads to generation of spurious edges and errors in delay
estimation;</li>
          <li>loss of edges causes wrong estimation of spin periods and therefore wrong RTT
measurements;</li>
          <li>application-limited senders cause the Spin bit to measure the application
delays instead of network delays.</li>
        </ul>
        <t>Unlike the Spin bit, which is set in every packet transmitted on the network,
the Delay bit is set only once per round trip.</t>
        <t>When the Delay bit is used, a single packet with a marked bit (the Delay bit)
bounces between a client and a server during the entire connection lifetime.
This single packet is called "delay sample".</t>
        <t>An observer placed at an intermediate point, observing a single direction of
traffic, tracking the delay sample and the relative timestamp, can measure the
round trip delay of the connection.</t>
        <t>The delay sample lifetime comprises two phases: initialization and reflection.
The initialization is the generation of the delay sample, while the
reflection realizes the bounce behavior of this single packet between the two
endpoints.</t>
        <t>The next figure describes the elementary Delay bit mechanism.</t>
        <figure>
          <name>Delay bit mechanism</name>
          <artwork><![CDATA[
      +--------+   -   -   -   -   -   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   -   -   -   -   -   +--------+

      (a) No traffic at beginning.

      +--------+   0   0   1   -   -   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   -   -   -   -   -   +--------+

       (b) The Client starts sending data and
        sets the first packet as Delay Sample.

      +--------+   0   0   0   0   0   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   -   -   -   1   0   +--------+

       (c) The Server starts sending data
        and reflects the Delay Sample.

      +--------+   0   1   0   0   0   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   0   0   0   0   0   +--------+

      (d) The Client reflects the Delay Sample.

      +--------+   0   0   0   0   0   +--------+
      |        |      ----------->     |        |
      | Client |                       | Server |
      |        |     <-----------      |        |
      +--------+   0   0   0   1   0   +--------+

      (e) The Server reflects the Delay Sample
       and so on.
]]></artwork>
        </figure>
        <section anchor="generation-phase">
          <name>Generation Phase</name>
          <t>Only client is actively involved in the generation phase. It maintains an
internal per-flow timestamp variable (<tt>ds_time</tt>) updated every time a delay
sample is transmitted.</t>
          <t>When connection starts, the client generates a new delay sample initializing the
Delay bit of the first outgoing packet to 1.  Then it updates the <tt>ds_time</tt>
variable with the timestamp of its transmission.</t>
          <t>The server initializes the Delay bit to 0 at the beginning of the connection,
and its only task during the connection is described in <xref target="reflection-phase"/>.</t>
          <t>In absence of network impairments, the delay sample should bounce between client
and server continuously, for the entire duration of the connection.  That is
highly unlikely for two reasons:</t>
          <ol spacing="normal" type="1"><li>the packet carrying the Delay bit might be lost;</li>
            <li>an endpoint could stop or delay sending packets because the application is
limiting the amount of traffic transmitted.</li>
          </ol>
          <t>To deal with these problems, the client generates a new delay sample if more
than a predetermined time (<tt>T_Max</tt>) has elapsed since the last delay sample
transmission (including reflections). Note that <tt>T_Max</tt> should be greater than
the max measurable RTT on the network. See <xref target="tmax-selection"/> for details.</t>
        </section>
        <section anchor="reflection-phase">
          <name>Reflection Phase</name>
          <t>Reflection is the process that enables the bouncing of the delay sample between
a client and a server.  The behavior of the two endpoints is almost the same.</t>
          <ul spacing="normal">
            <li>Server side reflection: when a delay sample arrives, the server marks the
first packet in the opposite direction as the delay sample.</li>
            <li>Client side reflection: when a delay sample arrives, the client marks the
first packet in the opposite direction as the delay sample. It also updates
the <tt>ds_time</tt> variable when the outgoing delay sample is actually forwarded.</li>
          </ul>
          <t>In both cases, if the outgoing delay sample is being transmitted with a delay
greater than a predetermined threshold after the reception of the incoming delay
sample (1ms by default), the delay sample is not reflected, and the outgoing
Delay bit is kept at 0.</t>
          <t>By doing so, the algorithm can reject measurements that would overestimate the
delay due to lack of traffic on the endpoints.  Hence, the maximum estimation
error would amount to twice the threshold (e.g. 2ms) per measurement.</t>
        </section>
        <section anchor="tmax-selection">
          <name>T_Max Selection</name>
          <t>The internal <tt>ds_time</tt> variable allows a client to identify delay sample losses.
Considering that a lost delay sample is regenerated at the end of an explicit
time (<tt>T_Max</tt>) since the last generation, this same value can be used by an
observer to reject a measure and start a new one.</t>
          <t>In other words, if the difference in time between two delay samples is greater
or equal than <tt>T_Max</tt>, then these cannot be used to produce a delay measure.
Therefore, the value of <tt>T_Max</tt> must also be known to the on-path network probes.</t>
          <t>There are two alternatives to select the <tt>T_Max</tt> value so that both client and
observers know it. The first one requires that <tt>T_Max</tt> is known a priori
(<tt>T_Max_p</tt>) and therefore set within the protocol specifications that implements
the marking mechanism (e.g. 1 second which usually is greater than the max
expectable RTT). The second alternative requires a dynamic mechanism able to
adapt the duration of the <tt>T_Max</tt> to the delay of the connection (<tt>T_Max_c</tt>).</t>
          <t>For instance, client and observers could use the connection RTT as a basis for
calculating an effective <tt>T_Max</tt>. They should use a predetermined initial value
so that <tt>T_Max = T_Max_p</tt> (e.g. 1 second) and then, when a valid RTT is
measured, change <tt>T_Max</tt> accordingly so that <tt>T_Max = T_Max_c</tt>. In any case, the
selected <tt>T_Max</tt> should be large enough to absorb any possible variations in the
connection delay. This also helps to prevent the mechanism from failing when the
observer cannot recognize sudden changes in RTT exceeding T_max.</t>
          <t><tt>T_Max_c</tt> could be computed as two times the measured <tt>RTT</tt> plus a fixed amount
of time (<tt>100ms</tt>) to prevent low <tt>T_Max</tt> values in case of very small RTTs.
The resulting formula is: <tt>T_Max_c = 2RTT + 100ms</tt>. If <tt>T_Max_c</tt> is greater than
<tt>T_Max_p</tt> then <tt>T_Max_c</tt> is forced to <tt>T_Max_p</tt> value.
Note that the value of 100ms is provided as an example, and it may be chosen
differently depending on the specific scenarios. For instance, an implementer may
consider using existing protocol-specific values if appropriate.</t>
          <t>Note that the observer's <tt>T_Max</tt> should always be less than or equal to the
client's <tt>T_Max</tt> to avoid considering as a valid measurement what is actually
the client's <tt>T_Max</tt>. To obtain this result, the client waits for two
consecutive incoming samples and computes the two related RTTs. Then it takes
the largest of them as the basis of the <tt>T_Max_c</tt> formula. At this point,
observers have already measured a valid RTT and then computed their <tt>T_Max_c</tt>.</t>
        </section>
        <section anchor="delay-measurement-using-delay-bit">
          <name>Delay Measurement Using Delay Bit</name>
          <t>When the Delay bit is used, a passive observer can use delay samples directly
and avoid inherent ambiguities in the calculation of the RTT as can be seen in
Spin bit analysis.</t>
          <section anchor="rtt-measurement">
            <name>RTT Measurement</name>
            <t>The delay sample generation process ensures that only one packet marked with the
Delay bit set to 1 runs back and forth between two endpoints per round trip
time.  To determine the RTT measurement of a flow, an on-path passive observer
computes the time difference between two delay samples observed in a single
direction.</t>
            <t>To ensure a valid measurement, the observer must verify that the distance in
time between the two samples taken into account is less than <tt>T_Max</tt>.</t>
            <figure>
              <name>Round-trip time (both direction)</name>
              <artwork><![CDATA[
           =======================|======================>
           = **********     -----Obs---->     ********** =
           = * Client *                       * Server * =
           = **********     <------------     ********** =
           <==============================================

                     (a) client-server RTT

           ==============================================>
           = **********     ------------>     ********** =
           = * Client *                       * Server * =
           = **********     <----Obs-----     ********** =
           <======================|=======================

                     (b) server-client RTT
]]></artwork>
            </figure>
          </section>
          <section anchor="half-rtt-measurement">
            <name>Half-RTT Measurement</name>
            <t>An observer that is able to observe both forward and return traffic directions
can use the delay samples to measure "upstream" and "downstream" RTT components,
also known as the half-RTT measurements. It does this by measuring the time
between a delay sample observed in one direction and the delay sample previously
observed in the opposite direction.</t>
            <t>As with RTT measurement, the observer must verify that the distance in time
between the two samples taken into account is less than <tt>T_Max</tt>.</t>
            <t>Note that upstream and downstream sections of paths between the endpoints and
the observer, i.e. observer-to-client vs client-to-observer and
observer-to-server vs server-to-observer, may have different delay
characteristics due to the difference in network congestion and other factors.</t>
            <figure>
              <name>Half Round-trip time (both direction)</name>
              <artwork><![CDATA[
           =======================>
           = **********     ------|----->     **********
           = * Client *          Obs          * Server *
           = **********     <-----|------     **********
           <=======================

                  (a) client-observer half-RTT

                                  =======================>
             **********     ------|----->     ********** =
             * Client *          Obs          * Server * =
             **********     <-----|------     ********** =
                                  <=======================

                  (b) observer-server half-RTT
]]></artwork>
            </figure>
          </section>
          <section anchor="intra-domain-rtt-measurement">
            <name>Intra-Domain RTT Measurement</name>
            <t>Intra-domain RTT is the portion of the entire RTT used by a flow to traverse the
network of a provider.  To measure intra-domain RTT, two observers capable of
observing traffic in both directions must be employed simultaneously at ingress
and egress of the network to be measured.  Intra-domain RTT is difference
between the two computed upstream (or downstream) RTT components.</t>
            <figure>
              <name>Intra-domain Round-trip time (client-observer: upstream)</name>
              <artwork><![CDATA[
        =========================================>
        = =====================>
        = = **********      ---|-->           ---|-->      **********
        = = * Client *         Obs               Obs       * Server *
        = = **********      <--|---           <--|---      **********
        = <=====================
        <=========================================

                 (a) client-observer RTT components (half-RTTs)

                               ==================>
            **********      ---|-->           ---|-->      **********
            * Client *         Obs               Obs       * Server *
            **********      <--|---           <--|---      **********
                               <==================

                 (b) the intra-domain RTT resulting from the
                 subtraction of the above RTT components
]]></artwork>
            </figure>
          </section>
        </section>
        <section anchor="observers-algorithm">
          <name>Observer's Algorithm</name>
          <t>An on-path observer maintains an internal per-flow variable to keep track of
time at which the last delay sample has been observed. The flow characterization
should be part of the protocol.</t>
          <t>A unidirectional observer or in case of asymmetric routing, upon detecting a
delay sample:</t>
          <ul spacing="normal">
            <li>if a delay sample was also detected previously in the same direction and the
distance in time between them is less than <tt>T_Max - K</tt>, then the two delay
samples can be used to calculate RTT measurement. <tt>K</tt> is a protection
threshold to absorb differences in <tt>T_Max</tt> computation and delay variations
between two consecutive delay samples (e.g. <tt>K = 10% T_Max</tt>).</li>
          </ul>
          <t>If the observer can observe both forward and return traffic flows, and it is
able to determine which direction contains the client and the server (e.g. by
observing the connection handshake), upon detecting a delay sample:</t>
          <ul spacing="normal">
            <li>if a delay sample was also detected in the opposite direction and the distance
in time between them is less than <tt>T_Max - K</tt>, then the two delay samples can
be used to measure the observer-client half-RTT or the observer-server
half-RTT, according to the direction of the last delay sample observed.</li>
          </ul>
          <t>Note that the accuracy can be influenced by what the observer is capable of
observing. Additionally, the type of measurement differs, as described in the
previous sections.</t>
        </section>
        <section anchor="two-bits-delay-measurement-spin-bit-delay-bit">
          <name>Two Bits Delay Measurement: Spin Bit + Delay Bit</name>
          <t>Spin and Delay bit algorithms work independently. If both marking methods are
used in the same connection, observers can choose the best measurement between
the two available:</t>
          <ul spacing="normal">
            <li>when a precise measurement can be produced using the Delay bit, observers
choose it;</li>
            <li>when a Delay bit measurement is not available, observers choose the
approximate Spin bit one.</li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="loss-bits">
      <name>Loss Bits</name>
      <t>This section introduces bits that can be used for loss measurements.
Whenever this section of the specification refers to packets, it is
referring only to packets with protocol headers that include the loss
bits -- the only packets whose loss can be measured.</t>
      <ul spacing="normal">
        <li>T: the "round Trip loss" bit is used in combination with the Spin bit to
measure round-trip loss. See <xref target="rtlossbit"/>.</li>
        <li>Q: the "sQuare signal" bit is used to measure upstream loss. See
<xref target="squarebit"/>.</li>
        <li>L: the "Loss event" bit is used to measure end-to-end loss. See <xref target="lossbit"/>.</li>
        <li>R: the "Reflection square signal" bit is used in combination with Q bit to
measure end-to-end loss. See <xref target="refsquarebit"/>.</li>
      </ul>
      <t>Loss measurements enabled by T, Q, and L bits can be implemented by those loss
bits alone (T bit requires a working Spin bit). Two-bit combinations Q+L and Q+R
enable additional measurement opportunities discussed below.</t>
      <t>Each endpoint maintains appropriate counters independently and separately for
each separately identifiable flow (each sub-flow for multipath connections).</t>
      <t>Since loss is reported independently for each flow, all bits (except for L bit)
require a certain minimum number of packets to be exchanged per flow before any
signal can be measured. Therefore, loss measurements work best for flows that
transfer more than a minimal amount of data.</t>
      <section anchor="rtlossbit">
        <name>T Bit -- Round Trip Loss Bit</name>
        <t>The round Trip loss bit is used to mark a variable number of packets exchanged
twice between the endpoints realizing a two round-trip reflection. A passive
on-path observer, observing either direction, can count and compare the number
of marked packets seen during the two reflections, estimating the loss rate
experienced by the connection. The overall exchange comprises:</t>
        <ul spacing="normal">
          <li>the client selects and consequently sets the T bit to 1 in order to identify
a first train of packets;</li>
          <li>the server, upon receiving each packet included in the first train, reflects
to the client a respective second train of packets of the same size as the
first train received, by setting the T bit to 1;</li>
          <li>the client, upon receiving each packet included in the second train, reflects
to the server a respective third train of packets of the same size as the
second train received, by setting the T bit to 1;</li>
          <li>the server, upon receiving each packet included in the third train, finally
reflects to the client a respective fourth train of packets of the same size
as the third train received, by setting the T bit to 1.</li>
        </ul>
        <t>Packets belonging to the first round trip (first and second train)
represent the Generation Phase, while those belonging to the second
round trip (third and fourth train) represent the Reflection Phase.</t>
        <t>A passive on-path observer can count and compare the number of marked
packets seen during the two round trips (i.e. the first and third
or the second and the fourth trains of packets, depending on which
direction is observed) and estimate the loss rate experienced by the
connection. This process is repeated continuously to obtain more
measurements as long as the endpoints exchange traffic.  These
measurements can be called Round Trip losses.</t>
        <t>Since packet rates in two directions may be different, the number of marked
packets in the train is determined by the direction with the lowest packet rate.
See <xref target="tbit-details"/> for details on packet generation.</t>
        <section anchor="round-trip-loss">
          <name>Round Trip Loss</name>
          <t>Since the measurements are performed on a portion of the traffic exchanged
between the client and the server, the observer calculates the end-to-end Round
Trip Packet Loss (RTPL) that, statistically, will correspond to the loss rate
experienced by the connection along the entire network path.</t>
          <figure>
            <name>Round-trip packet loss (both direction)</name>
            <artwork><![CDATA[
           =======================|======================>
           = **********     -----Obs---->     ********** =
           = * Client *                       * Server * =
           = **********     <------------     ********** =
           <==============================================

                     (a) client-server RTPL

           ==============================================>
           = **********     ------------>     ********** =
           = * Client *                       * Server * =
           = **********     <----Obs-----     ********** =
           <======================|=======================

                     (b) server-client RTPL
]]></artwork>
          </figure>
          <t>This methodology also allows the Half-RTPL measurement and
the Intra-domain RTPL measurement in a way similar to RTT measurement.</t>
          <figure>
            <name>Half Round-trip packet loss (both direction)</name>
            <artwork><![CDATA[
           =======================>
           = **********     ------|----->     **********
           = * Client *          Obs          * Server *
           = **********     <-----|------     **********
           <=======================

                  (a) client-observer half-RTPL

                                  =======================>
             **********     ------|----->     ********** =
             * Client *          Obs          * Server * =
             **********     <-----|------     ********** =
                                  <=======================

                  (b) observer-server half-RTPL
]]></artwork>
          </figure>
          <figure>
            <name>Intra-domain Round-trip packet loss (observer-server)</name>
            <artwork><![CDATA[
                           =========================================>
                                             =====================> =
        **********      ---|-->           ---|-->      ********** = =
        * Client *         Obs               Obs       * Server * = =
        **********      <--|---           <--|---      ********** = =
                                             <===================== =
                           <=========================================

             (a) observer-server RTPL components (half-RTPLs)

                           ==================>
        **********      ---|-->           ---|-->      **********
        * Client *         Obs               Obs       * Server *
        **********      <--|---           <--|---      **********
                           <==================

             (b) the intra-domain RTPL resulting from the
             subtraction of the above RTPL components
]]></artwork>
          </figure>
        </section>
        <section anchor="tbit-details">
          <name>Setting the Round Trip Loss Bit on Outgoing Packets</name>
          <t>The round Trip loss signal requires a working Spin-bit signal to separate trains
of marked packets (packets with T bit set to 1).  A "pause" of at least one
empty spin-bit period between each phase of the algorithm serves as such
separator for the on-path observer. The connection between T Bit and Spin-bit
helps the correlations on the observer.</t>
          <t>The client maintains a "generation token" count that is set to zero at the
beginning of the session and is incremented every time a packet is received
(marked or unmarked). The client also maintains a "reflection counter" that
starts at zero at the beginning of the session.</t>
          <t>The client is in charge of launching trains of marked packets and does so
according to the algorithm:</t>
          <ol spacing="normal" type="1"><li>Generation Phase. The client starts generating marked packets for two
consecutive spin-bit periods; when the client transmits a packet and a
"generation token" is available, the client marks the packet and retires a
"generation token". If no token is available, the outgoing packet is
transmitted unmarked.  At the end of the first spin-bit period spent in
generation, the reflection counter is unlocked to start counting incoming
marked packets that will be reflected later;</li>
            <li>Pause Phase. When the generation is completed, the client pauses till it has
observed one entire Spin bit period with no marked packets.  That Spin bit
period is used by the observer as a separator between generated and
reflected packets.  During this marking pause, all the outgoing packets are
transmitted with T bit set to 0.  The reflection counter is still
incremented every time a marked packet arrives;</li>
            <li>Reflection Phase. The client starts transmitting marked packets,
decrementing the reflection counter for each transmitted marked packet until
the reflection counter reached zero. The "generation token" method from the
generation phase is used during this phase as well.  At the end of the first
spin-period spent in reflection, the reflection counter is locked to avoid
incoming reflected packets incrementing it;</li>
            <li>Pause Phase 2. The pause phase is repeated after the reflection phase and
serves as a separator between the reflected packet train and a new packet
train.</li>
          </ol>
          <t>The generation token counter should be capped to limit the effects of a
subsequent sudden reduction in the other endpoint's packet rate that could
prevent that endpoint from reflecting collected packets. It is recommended a
cap value of <tt>1</tt>.</t>
          <t>A server maintains a "marking counter" that starts at zero and is incremented
every time a marked packet arrives. When the server transmits a packet and the
"marking counter" is positive, the server marks the packet and decrements the
"marking counter". If the "marking counter" is zero, the outgoing packet is
transmitted unmarked.</t>
          <t>Note that a choice of 2-RTT (two spin periods) for the generation phase is a
tradeoff between the percentage of marked packets (i.e. the percentage of
traffic monitored) and the measurement delay. Using this value the algorithm
produces a measurement approximately every 6-RTT (<tt>2</tt> generation, <tt>~2</tt>
reflection, <tt>2</tt> pauses), marking <tt>~1/3</tt> of packets exchanged in the slower
direction (see <xref target="tbit-losscov"/>). Choosing a generation phase of 1-RTT, we would
produce measurements every 4-RTT, monitoring just <tt>~1/4</tt> of packets in the
slower direction.</t>
          <t>It is worth mentioning that problems can happen in some cases especially if the
rate suddenly changes, but in the implementation, the mechanism here described
worked well with normal traffic conditions.</t>
        </section>
        <section anchor="observers-logic-for-round-trip-loss-signal">
          <name>Observer's Logic for Round Trip Loss Signal</name>
          <t>The on-path observer counts marked packets and separates different trains by
detecting spin-bit periods (at least one) with no marked packets.  The Round
Trip Packet Loss (RTPL) is the difference between the size of the Generation
train and the Reflection train.</t>
          <t>In the following example, packets are represented by two bits (first one
is the Spin bit, second one is the round Trip loss bit):</t>
          <figure>
            <name>Round Trip Loss signal example</name>
            <artwork><![CDATA[
        Generation          Pause           Reflection       Pause
   ____________________ ______________ ____________________ ________
  |                    |              |                    |        |
   01 01 00 01 11 10 11 00 00 10 10 10 01 00 01 01 10 11 10 00 00 10

]]></artwork>
          </figure>
          <t>Note that 5 marked packets have been generated of which 4 have been reflected.</t>
        </section>
        <section anchor="tbit-losscov">
          <name>Loss Coverage and Signal Timing</name>
          <t>A cycle of the round Trip loss signaling algorithm contains 2 RTTs of Generation
phase, 2 RTTs of Reflection phase, and two Pause phases at least 1 RTT in
duration each.  Hence, the loss signal is delayed by about 6 RTTs since the loss
events.</t>
          <t>The observer can only detect loss of marked packets that occurs after its
initial observation of the Generation phase and before its subsequent
observation of the Reflection phase. Hence, if the loss occurs on the path that
sends packets at a lower rate (typically ACKs in such asymmetric scenarios),
<tt>2/6</tt> (<tt>1/3</tt>) of the packets will be sampled for loss detection.</t>
          <t>If the loss occurs on the path that sends packets at a higher rate,
<tt>lowPacketRate/(3*highPacketRate)</tt> of the packets will be sampled for loss
detection. For protocols that use ACKs, the portion of packets sampled for loss
in the higher rate direction during unidirectional data transfer is
<tt>1/(3*packetsPerAck)</tt>, where the value of <tt>packetsPerAck</tt> can vary by protocol,
by implementation, and by network conditions.</t>
        </section>
      </section>
      <section anchor="squarebit">
        <name>Q Bit -- sQuare Bit</name>
        <t>The sQuare bit (Q bit) takes its name from the square wave generated by its
signal. This method is based on the Alternate-Marking method <xref target="AltMark"/> and
the Q bit represents the "packet color" that allows to mark consecutive blocks
of packets with different colors. This method does not require cooperation from
both endpoints.</t>
        <t><xref target="AltMark"/> introduces two variations of the Alternate-Marking method depending
on whether the color is switched according to a fixed timer or after a fixed
number of packets. The method based on fixed timer can measure packet loss on a
network segment by cooperating and synchronized observers on both ends of the
segment comparing packets counters for the same packet blocks. The time length of
the blocks can be chosen depending on the desired measurement frequency, but it
must be long enough to guarantee the proper operation with respect to clock errors
and network delay issues.</t>
        <t>The Q bit method described in this document chooses the color-switching method
based on a fixed number of packets for each block. This approach has the
advantage that it does not require cooperating or synchronized observers or
network elements. Each probe can measure packet loss autonomously without
relying on an external Network Management System (NMS). For the purpose of the
packet loss measurement, all blocks have the same number of packets, and it is
necessary to detect only the loss event and not to identify the exact block with
losses.</t>
        <t>Following the method based on fixed number of packets, the square wave signal is
generated by the switching of the Q bit: every outgoing packet contains the Q
bit value, which is initialized to 0 and inverted after sending N packets (a
sQuare Block or simply Q Block). Hence, Q Period is 2*N.</t>
        <t>Observation points can estimate upstream losses by watching a single direction
of the traffic flow and counting the number of packets in each observed Q Block,
as described in <xref target="upstreamloss"/>.</t>
        <section anchor="q-block-length-selection">
          <name>Q Block Length Selection</name>
          <t>The length of the block must be known to the on-path network probes.  There are
two alternatives to selecting the Q Block length. The first one requires that
the length is known a priori and therefore set within the protocol
specifications that implements the marking mechanism. The second requires the
sender to select it.</t>
          <t>In this latter scenario, the sender is expected to choose N (Q Block
length) based on the expected amount of loss and reordering on the
path.  The choice of N strikes a compromise -- the observation could
become too unreliable in case of packet reordering and/or severe loss
if N is too small, while short flows may not yield a useful upstream
loss measurement if N is too large (see <xref target="upstreamloss"/>).</t>
          <t>The value of N should be at least 64 and be a power of 2. This requirement allows
an Observer to infer the Q Block length by observing one period of the square
signal. It also allows the Observer to identify flows that set the loss bits to
arbitrary values (see <xref target="ossification"/>).</t>
          <t>If the sender does not have sufficient information to make an informed decision
about Q Block length, the sender should use N=64, since this value has been
extensively tried in large-scale field tests and yielded good results.
Alternatively, the sender may also choose a random power-of-2 N for each flow,
increasing the chances of using a Q Block length that gives the best signal for
some flows.</t>
          <t>The sender must keep the value of N constant for a given flow.</t>
        </section>
        <section anchor="upstreamloss">
          <name>Upstream Loss</name>
          <t>Blocks of N (Q Block length) consecutive packets are sent with the same
value of the Q bit, followed by another block of N packets with an
inverted value of the Q bit.  Hence, knowing the value of N, an
on-path observer can estimate the amount of upstream loss after
observing at least N packets.  The upstream loss rate (<tt>uloss</tt>) is one
minus the average number of packets in a block of packets with the
same Q value (<tt>p</tt>) divided by N (<tt>uloss=1-avg(p)/N</tt>).</t>
          <t>The observer needs to be able to tolerate packet reordering that can
blur the edges of the square signal, as explained in <xref target="endmarkingblock"/>.</t>
          <figure>
            <name>Upstream loss</name>
            <artwork><![CDATA[
          =====================>
          **********     -----Obs---->     **********
          * Client *                       * Server *
          **********     <------------     **********

            (a) in client-server channel (uloss_up)

          **********     ------------>     **********
          * Client *                       * Server *
          **********     <----Obs-----     **********
                               <=====================

            (b) in server-client channel (uloss_down)
]]></artwork>
          </figure>
        </section>
        <section anchor="endmarkingblock">
          <name>Identifying Q Block Boundaries</name>
          <t>Packet reordering can produce spurious edges in the square signal. To address
this, the observer should look for packets with the current Q bit value up to X
packets past the first packet with a reverse Q bit value. The value of X, a
"Marking Block Threshold", should be less than <tt>N/2</tt>.</t>
          <t>The choice of X represents a trade-off between resiliency to reordering and
resiliency to loss. A very large Marking Block Threshold will be able to
reconstruct Q Blocks despite a significant amount of reordering, but it may
erroneously coalesce packets from multiple Q Blocks into fewer Q Blocks, if loss
exceeds 50% for some Q Blocks.</t>
          <section anchor="Qburst">
            <name>Improved Resilience to Burst Losses</name>
            <t>Burst losses can affect Q measurements accuracy. Generally, burst losses can be
absorbed and correctly measured if smaller than the established Q Block
length. If entire Q Block length of packets get lost in a burst, however, the
observer may be left completely unaware of the loss.</t>
            <t>To improve burst loss resilience, an observer may consider a received Q Block
larger than the selected Q Block length as an indication of a burst loss
event. The observer would then compute the loss as three times Q Block length
minus the measured block length. By doing so, the observer can detect burst
losses of less than two blocks (e.g., less than 128 packets for Q Block length
of 64 packets). A burst loss of two or more consecutive periods would still
remain unnoticed by the observer (or underestimated if a period longer than Q
Block length were formed).</t>
          </section>
        </section>
      </section>
      <section anchor="lossbit">
        <name>L Bit -- Loss Event Bit</name>
        <t>The Loss Event bit uses an Unreported Loss counter maintained by the protocol
that implements the marking mechanism. To use the Loss Event bit, the protocol
must allow the sender to identify lost packets. This is true of protocols such
as QUIC, partially true for TCP and SCTP (losses of pure ACKs are not detected)
and is not true of protocols such as UDP and IPv4/IPv6.</t>
        <t>The Unreported Loss counter is initialized to 0, and L bit of every outgoing
packet indicates whether the Unreported Loss counter is positive (L=1 if the
counter is positive, and L=0 otherwise).</t>
        <t>The value of the Unreported Loss counter is decremented every time a packet
with L=1 is sent.</t>
        <t>The value of the Unreported Loss counter is incremented for every packet that
the protocol declares lost, using whatever loss detection machinery the protocol
employs. If the protocol is able to rescind the loss determination later, a
positive Unreported Loss counter may be decremented due to the rescission.
In general, it should not become negative due to the rescission, but it can happen
in few cases.</t>
        <t>This loss signaling is similar to loss signaling in <xref target="ConEx"/>, except the Loss
Event bit is reporting the exact number of lost packets, whereas Echo Loss bit
in <xref target="ConEx"/> is reporting an approximate number of lost bytes.</t>
        <t>For protocols, such as TCP (<xref target="TCP"/>), that allow network devices to change data
segmentation, it is possible that only a part of the packet is lost. In these
cases, the sender must increment Unreported Loss counter by the fraction of the
packet data lost (so Unreported Loss counter may become negative when a packet
with L=1 is sent after a partial packet has been lost).</t>
        <t>Observation points can estimate the end-to-end loss, as determined by the
upstream endpoint, by counting packets in this direction with the L bit equal to
1, as described in <xref target="endtoendloss"/>.</t>
        <section anchor="endtoendloss">
          <name>End-To-End Loss</name>
          <t>The Loss Event bit allows an observer to estimate the end-to-end loss rate by
counting packets with L bit value of 0 and 1 for a given flow. The end-to-end
loss ratio is the fraction of packets with L=1.</t>
          <t>The assumption here is that upstream loss affects packets with L=0 and L=1
equally. If some loss is caused by tail-drop in a network device, this may be a
simplification.  If the sender's congestion controller reduces the packet send
rate after loss, there may be a sufficient delay before sending packets with L=1
that they have a greater chance of arriving at the observer.</t>
          <section anchor="loss-profile">
            <name>Loss Profile Characterization</name>
            <t>The Loss Event bit allows an observer to characterize loss profile, since the
distribution of observed packets with L bit set to 1 roughly corresponds to the
distribution of packets lost between 1 RTT and 1 RTO before (see
<xref target="loss-correlation"/>).  Hence, observing random single instances of L bit set
to 1 indicates random single packet loss, while observing blocks of packets
with L bit set to 1 indicates loss affecting entire blocks of packets.</t>
          </section>
        </section>
        <section anchor="lq-bits-loss-measurement-using-l-and-q-bits">
          <name>L+Q Bits -- Loss Measurement Using L and Q Bits</name>
          <t>Combining L and Q bits allows a passive observer watching a single direction of
traffic to accurately measure:</t>
          <ul spacing="normal">
            <li>upstream loss: sender-to-observer loss (see <xref target="upstreamloss"/>)</li>
            <li>downstream loss: observer-to-receiver loss (see <xref target="downstreamloss"/>)</li>
            <li>end-to-end loss: sender-to-receiver loss on the observed path (see
<xref target="endtoendloss"/>) with loss profile characterization (see <xref target="loss-profile"/>)</li>
          </ul>
          <section anchor="loss-correlation">
            <name>Correlating End-to-End and Upstream Loss</name>
            <t>Upstream loss is calculated by observing packets that did not suffer the
upstream loss (<xref target="upstreamloss"/>). End-to-end loss, however, is calculated by
observing subsequent packets after the sender's protocol detected the loss.
Hence, end-to-end loss is generally observed with a delay of between 1 RTT (loss
declared due to multiple duplicate acknowledgements) and 1 RTO (loss declared
due to a timeout) relative to the upstream loss.</t>
            <t>The flow RTT can sometimes be estimated by timing protocol handshake
messages. This RTT estimate can be greatly improved by observing a dedicated
protocol mechanism for conveying RTT information, such as the Spin bit (see
<xref target="spinbit"/>) or Delay bit (see <xref target="delaybit"/>).</t>
            <t>Whenever the observer needs to perform a computation that uses both upstream and
end-to-end loss rate measurements, it should use upstream loss rate leading the
end-to-end loss rate by approximately 1 RTT. If the observer is unable to
estimate RTT of the flow, it should accumulate loss measurements over time
periods of at least 4 times the typical RTT for the observed flows.</t>
            <t>If the calculated upstream loss rate exceeds the end-to-end loss rate calculated
in <xref target="endtoendloss"/>, then either the Q Period is too short for the amount of
packet reordering or there is observer loss, described in <xref target="observerloss"/>. If
this happens, the observer should adjust the calculated upstream loss rate to
match end-to-end loss rate, unless the following applies.</t>
            <t>In case of a protocol, such as TCP or SCTP, that does not track losses of pure
ACK packets, observing a direction of traffic dominated by pure ACK packets
could result in measured upstream loss that is higher than measured end-to-end
loss, if said pure ACK packets are lost upstream. Hence, if the measurement is
applied to such protocols, and the observer can confirm that pure ACK packets
dominate the observed traffic direction, the observer should adjust the
calculated end-to-end loss rate to match upstream loss rate.</t>
          </section>
          <section anchor="downstreamloss">
            <name>Downstream Loss</name>
            <t>Because downstream loss affects only those packets that did not suffer upstream
loss, the end-to-end loss rate (<tt>eloss</tt>) relates to the upstream loss rate
(<tt>uloss</tt>) and downstream loss rate (<tt>dloss</tt>) as <tt>(1-uloss)(1-dloss)=1-eloss</tt>.
Hence, <tt>dloss=(eloss-uloss)/(1-uloss)</tt>.</t>
          </section>
          <section anchor="observerloss">
            <name>Observer Loss</name>
            <t>A typical deployment of a passive observation system includes a network tap
device that mirrors network packets of interest to a device that performs
analysis and measurement on the mirrored packets. The observer loss is the loss
that occurs on the mirror path.</t>
            <t>Observer loss affects upstream loss rate measurement, since it causes the
observer to account for fewer packets in a block of identical Q bit values (see
<xref target="upstreamloss"/>). The end-to-end loss rate measurement, however, is unaffected
by the observer loss, since it is a measurement of the fraction of packets with
the L bit value of 1, and the observer loss would affect all packets equally
(see <xref target="endtoendloss"/>).</t>
            <t>The need to adjust the upstream loss rate down to match end-to-end loss rate as
described in <xref target="loss-correlation"/> is an indication of the observer loss, whose
magnitude is between the amount of such adjustment and the entirety of the
upstream loss measured in <xref target="upstreamloss"/>. Alternatively, a high apparent
upstream loss rate could be an indication of significant packet reordering,
possibly due to packets belonging to a single flow being multiplexed over
several upstream paths with different latency characteristics.</t>
          </section>
        </section>
      </section>
      <section anchor="refsquarebit">
        <name>R Bit -- Reflection Square Bit</name>
        <t>R bit requires a deployment alongside Q bit. Unlike the square signal for which
packets are transmitted in blocks of fixed size, the number of packets in
Reflection square signal blocks (also an Alternate-Marking signal) varies
according to these rules:</t>
        <ul spacing="normal">
          <li>when the transmission of a new block starts, its size is set equal
to the size of the last Q Block whose reception has been completed;</li>
          <li>if, before transmission of the block is terminated, the reception
of at least one further Q Block is completed, the size of the block
is updated to be the average size of the further received Q Blocks.</li>
        </ul>
        <t>The Reflection square value is initialized to 0 and is applied to the R bit of
every outgoing packet.  The Reflection square value is toggled for the first
time when the completion of a Q Block is detected in the incoming square signal
(produced by the other endpoint using the Q bit). The number of packets
detected within this first Q Block (<tt>p</tt>), is used to generate a reflection
square signal that toggles every <tt>M=p</tt> packets (at first). This new signal
produces blocks of M packets (marked using the R bit) and each of them is
called "Reflection Block" (R Block).</t>
        <t>The M value is then updated every time a completed Q Block in the
incoming square signal is received, following this formula:
<tt>M=round(avg(p))</tt>.</t>
        <t>The parameter <tt>avg(p)</tt>, the average number of packets in a marking
period, is computed based on all the Q Blocks received since the
beginning of the current R Block.</t>
        <t>The transmission of an R Block is considered complete (and the signal toggled)
when the number of packets transmitted in that block is at least the latest
computed M value.</t>
        <t>To ensure a proper computation of the M value, endpoints implementing the R bit
must identify the boundaries of incoming Q Blocks. The same approach described
in <xref target="endmarkingblock"/> should be used.</t>
        <t>Looking at the R bit, unidirectional observation points have an indication of
loss experienced by the entire unobserved channel plus the loss on the path
from the sender to them.</t>
        <t>Since the Q Block is sent in one direction, and the corresponding reflected R
Block is sent in the opposite direction, the reflected R signal is transmitted
with the packet rate of the slowest direction. Namely, if the observed direction
is the slowest, there can be multiple Q Blocks transmitted in the unobserved
direction before a complete R Block is transmitted in the observed direction. If
the unobserved direction is the slowest, the observed direction can be sending R
Blocks of the same size repeatedly before it can update the signal to account
for a newly-completed Q Block.</t>
        <section anchor="enhancement-of-r-block-length-computation">
          <name>Enhancement of R Block Length Computation</name>
          <t>The use of the rounding function used in the M computation introduces errors
that can be minimized by storing the rounding applied each time M is computed,
and using it during the computation of the M value in the following R Block.</t>
          <t>This can be achieved introducing the new <tt>r_avg</tt> parameter in the computation of
M.  The new formula is <tt>Mr=avg(p)+r_avg; M=round(Mr); r_avg=Mr-M</tt> where the
initial value of <tt>r_avg</tt> is equal to 0.</t>
        </section>
        <section anchor="improved-resilience-to-packet-reordering">
          <name>Improved Resilience to Packet Reordering</name>
          <t>When a protocol implementing the marking mechanism is able to detect when
packets are received out of order, it can improve resilience to packet
reordering beyond what is possible using methods described in
<xref target="endmarkingblock"/>.</t>
          <t>This can be achieved by updating the size of the current R Block while it is
being transmitted.  The reflection block size is then updated every time an
incoming reordered packet of the previous Q Block is detected.  This can be
done if and only if the transmission of the current reflection block is in
progress and no packets of the following Q Block have been received.</t>
          <section anchor="Rburst">
            <name>Improved Resilience to Burst Losses</name>
            <t>Burst losses can affect R measurements accuracy similarly to how they affect Q
measurements accuracy. Therefore, recommendations in section <xref target="Qburst"/> apply
equally to improving burst loss resilience for R measurements.</t>
          </section>
        </section>
        <section anchor="rq-bits-loss-measurement-using-r-and-q-bits">
          <name>R+Q Bits -- Loss Measurement Using R and Q Bits</name>
          <t>Since both sQuare and Reflection square bits are toggled at most every N packets
(except for the first transition of the R bit as explained before), an on-path
observer can count the number of packets of each marking block and, knowing the
value of N, can estimate the amount of loss experienced by the connection.  An
observer can calculate different measurements depending on whether it is able to
observe a single direction of the traffic or both directions.</t>
          <t>Single directional observer:</t>
          <ul spacing="normal">
            <li>upstream loss in the observed direction: the loss between the sender and the
observation point (see <xref target="upstreamloss"/>)</li>
            <li>"three-quarters" connection loss: the loss between the receiver and
the sender in the unobserved direction plus the loss between the
sender and the observation point in the observed direction</li>
            <li>end-to-end loss in the unobserved direction: the loss between the
receiver and the sender in the opposite direction</li>
          </ul>
          <t>Two directions observer (same metrics seen previously applied to both
direction, plus):</t>
          <ul spacing="normal">
            <li>client-observer half round-trip loss: the loss between the client
and the observation point in both directions</li>
            <li>observer-server half round-trip loss: the loss between the
observation point and the server in both directions</li>
            <li>downstream loss: the loss between the observation point and the
receiver (applicable to both directions)</li>
          </ul>
          <section anchor="tqloss">
            <name>Three-Quarters Connection Loss</name>
            <t>Except for the very first block in which there is nothing to reflect
(a complete Q Block has not been yet received), packets are
continuously R-bit marked into alternate blocks of size lower or equal
than N.  Knowing the value of N, an on-path observer can estimate the
amount of loss occurred in the whole opposite channel plus the loss
from the sender up to it in the observation channel. As for the
previous metric, the <tt>three-quarters</tt> connection loss rate (<tt>tqloss</tt>) is
one minus the average number of packets in a block of packets with the
same R value (<tt>t</tt>) divided by <tt>N</tt> (<tt>tqloss=1-avg(t)/N</tt>).</t>
            <figure>
              <name>Three-quarters connection loss</name>
              <artwork><![CDATA[
        =======================>
        = **********     -----Obs---->     **********
        = * Client *                       * Server *
        = **********     <------------     **********
        <============================================

            (a) in client-server channel (tqloss_up)

          ============================================>
          **********     ------------>     ********** =
          * Client *                       * Server * =
          **********     <----Obs-----     ********** =
                               <=======================

            (b) in server-client channel (tqloss_down)
]]></artwork>
            </figure>
            <t>The following metrics derive from this last metric and the upstream
loss produced by the Q bit.</t>
          </section>
          <section anchor="end-to-end-loss-in-the-opposite-direction">
            <name>End-To-End Loss in the Opposite Direction</name>
            <t>End-to-end loss in the unobserved direction (<tt>eloss_unobserved</tt>) relates to the
"three-quarters" connection loss (<tt>tqloss</tt>) and upstream loss in the observed
direction (<tt>uloss</tt>) as <tt>(1-eloss_unobserved)(1-uloss)=1-tqloss</tt>.  Hence,
<tt>eloss_unobserved=(tqloss-uloss)/(1-uloss)</tt>.</t>
            <figure>
              <name>End-To-End loss in the opposite direction</name>
              <artwork><![CDATA[
          **********     -----Obs---->     **********
          * Client *                       * Server *
          **********     <------------     **********
          <==========================================

            (a) in client-server channel (eloss_down)

          ==========================================>
          **********     ------------>     **********
          * Client *                       * Server *
          **********     <----Obs-----     **********

            (b) in server-client channel (eloss_up)
]]></artwork>
            </figure>
          </section>
          <section anchor="half-round-trip-loss">
            <name>Half Round-Trip Loss</name>
            <t>If the observer is able to observe both directions of traffic, it is able to
calculate two "half round-trip" loss measurements -- loss from the observer to
the receiver (in a given direction) and then back to the observer in the
opposite direction.  For both directions, "half round-trip" loss (<tt>hrtloss</tt>)
relates to "three-quarters" connection loss (<tt>tqloss_opposite</tt>) measured in the
opposite direction and the upstream loss (<tt>uloss</tt>) measured in the given
direction as <tt>(1-uloss)(1-hrtloss)=1-tqloss_opposite</tt>.  Hence,
<tt>hrtloss=(tqloss_opposite-uloss)/(1-uloss)</tt>.</t>
            <figure>
              <name>Half Round-trip loss (both direction)</name>
              <artwork><![CDATA[
        =======================>
        = **********     ------|----->     **********
        = * Client *          Obs          * Server *
        = **********     <-----|------     **********
        <=======================

      (a) client-observer half round-trip loss (hrtloss_co)

                               =======================>
          **********     ------|----->     ********** =
          * Client *          Obs          * Server * =
          **********     <-----|------     ********** =
                               <=======================

      (b) observer-server half round-trip loss (hrtloss_os)
]]></artwork>
            </figure>
          </section>
          <section anchor="downstream-loss">
            <name>Downstream Loss</name>
            <t>If the observer is able to observe both directions of traffic, it is able to
calculate two downstream loss measurements using either end-to-end loss and
upstream loss, similar to the calculation in <xref target="downstreamloss"/> or using "half
round-trip" loss and upstream loss in the opposite direction.</t>
            <t>For the latter, <tt>dloss=(hrtloss-uloss_opposite)/(1-uloss_opposite)</tt>.</t>
            <figure>
              <name>Downstream loss</name>
              <artwork><![CDATA[
                               =====================>
          **********     ------|----->     **********
          * Client *          Obs          * Server *
          **********     <-----|------     **********

             (a) in client-server channel (dloss_up)

          **********     ------|----->     **********
          * Client *          Obs          * Server *
          **********     <-----|------     **********
          <=====================

             (b) in server-client channel (dloss_down)
]]></artwork>
            </figure>
          </section>
        </section>
      </section>
      <section anchor="e-bit-ecn-echo-event-bit">
        <name>E Bit -- ECN-Echo Event Bit</name>
        <t>While the primary focus of this document is on exposing packet loss and
delay, modern networks can report congestion before they are forced to
drop packets, as described in <xref target="ECN"/>.  When transport protocols keep
ECN-Echo feedback under encryption, this signal cannot be observed by
the network operators.  When tasked with diagnosing network
performance problems, knowledge of a congestion downstream of an
observation point can be instrumental.</t>
        <t>If downstream congestion information is desired, this information can be
signaled with an additional bit.</t>
        <ul spacing="normal">
          <li>E: The "ECN-Echo Event" bit is set to 0 or 1 according to the Unreported ECN
Echo counter, as explained below in <xref target="ecnbit"/>.</li>
        </ul>
        <section anchor="ecnbit">
          <name>Setting the ECN-Echo Event Bit on Outgoing Packets</name>
          <t>The Unreported ECN-Echo counter operates identically to Unreported Loss counter
(<xref target="lossbit"/>), except it counts packets delivered by the network with CE
markings, according to the ECN-Echo feedback from the receiver.</t>
          <t>This ECN-Echo signaling is similar to ECN signaling in <xref target="ConEx"/>. ECN-Echo
mechanism in QUIC provides the number of packets received with CE marks. For
protocols like TCP, the method described in <xref target="ConEx-TCP"/> can be employed. As
stated in <xref target="ConEx-TCP"/>, such feedback can be further improved using a method
described in <xref target="ACCURATE-ECN"/>.</t>
        </section>
        <section anchor="ech-usage">
          <name>Using E Bit for Passive ECN-Reported Congestion Measurement</name>
          <t>A network observer can count packets with CE codepoint and determine the
upstream CE-marking rate directly.</t>
          <t>Observation points can also estimate ECN-reported end-to-end congestion by
counting packets in this direction with an E bit equal to 1.</t>
          <t>The upstream CE-marking rate and end-to-end ECN-reported congestion can provide
information about downstream CE-marking rate. Presence of E bits along with L
bits, however, can somewhat confound precise estimates of upstream and
downstream CE-markings in case the flow contains packets that are not
ECN-capable.</t>
          <t>It is worth noting that <xref target="RFC9331"/>, which introduces Low Latency, Low Loss, and
Scalable throughput (L4S), uses an ECN scheme that generates CE marks at a
much higher rate. An implementation may handle both types of CE markings
to improve the E bit mechanism.</t>
        </section>
      </section>
    </section>
    <section anchor="summary-of-delay-and-loss-marking-methods">
      <name>Summary of Delay and Loss Marking Methods</name>
      <t>This section summarizes the marking methods described in this document, which
proposes a toolkit of techniques that can be used separately, partly or all
together depending on the need.</t>
      <t>For the Delay measurement, it is possible to use the Spin bit and/or the delay
bit. A unidirectional or bidirectional observer can be used.</t>
      <figure anchor="fig_summary_D">
        <name>Delay Comparison</name>
        <artwork><![CDATA[
 +---------------+----+------------------------+--------------------+
 | Method        |# of|        Available       |             | # of |
 |               |bits|      Delay Metrics     | Impairments | meas.|
 |               |    +------------+-----------+ Resiliency  |      |
 |               |    |   UniDir   |   BiDir   |             |      |
 |               |    |  Observer  |  Observer |             |      |
 +---------------+----+------------+-----------+-------------+------+
 |S: Spin Bit    | 1  | RTT        | x2        | low         | very |
 |               |    |            | Half RTT  |             | high |
 +---------------+----+------------+-----------+-------------+------+
 |D: Delay Bit   | 1  | RTT        | x2        | high        |medium|
 |               |    |            | Half RTT  |             |      |
 +---------------+----+------------+-----------+-------------+------+
 |SD: Spin Bit & | 2  | RTT        | x2        | high        | very |
 |    Delay Bit *|    |            | Half RTT  |             | high |
 +---------------+----+------------+-----------+-------------+------+

 x2 Same metric for both directions
 *  Both bits work independently; an observer could use less accurate
    Spin bit measurements when Delay bit ones are unavailable
]]></artwork>
      </figure>
      <t>For the Loss measurement, each row in the table of <xref target="fig_summary_L"/>
represents a loss marking method. For each method the table specifies
the number of bits required in the header, the available metrics using
a unidirectional or bidirectional observer, applicable protocols,
measurement fidelity and delay.</t>
      <figure anchor="fig_summary_L">
        <name>Loss Comparison</name>
        <artwork><![CDATA[
 +-------------+-+-----------------------+-+------------------------+
 | Method      |B|        Available      |P|  Measurement Aspects   |
 |             |i|      Loss Metrics     |r+------------+-----------+
 |             |t|   UniDir  |   BiDir   |t|  Fidelity  |   Delay   |
 |             |s|  Observer |  Observer |o|            |           |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |T: Round Trip|$| RT        | x2        | | Rate by    | ~6 RTT    |
 |   Loss Bit  |1|           | Half RT   |*| sampling   +-----------+
 |             | |           |           | | 1/3 to 1/(3*ppa) of    |
 |             | |           |           | | pkts over 2 RTT        |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |Q: sQuare Bit|1| Upstream  | x2        |*| Rate over  | N pkts    |
 |             | |           |           | | N pkts     | (e.g. 64) |
 |             | |           |           | | (e.g. 64)  |           |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |L: Loss Event|1| E2E       | x2        |#| Loss shape | Min: RTT  |
 |   Bit       | |           |           | | (and rate) | Max: RTO  |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |QL: sQuare + |2| Upstream  | x2        | | -> see Q   | Up: see Q |
 |    Loss Ev. | | Downstream| x2        |#| -> see Q|L | Others:   |
 |    Bits     | | E2E       | x2        | | -> see L   |     see L |
 +-------------+-+-----------+-----------+-+------------+-----------+
 |QR: sQuare + |2| Upstream  | x2        | | Rate over  | Up: see Q |
 |    Ref. Sq. | | 3/4 RT    | x2        | | N*ppa pkts | Others:   |
 |    Bits     | | !E2E      | E2E       |*| (see Q bit |  N*ppa pk |
 |             | |           | Downstream| |   for N)   |   (see Q  |
 |             | |           | Half RT   | |            |    for N) |
 +-------------+-+-----------+-----------+-+------------+-----------+

 *   All protocols
 #   Protocols employing loss detection
     (with or without pure ACK loss detection)
 $   Require a working Spin bit
 !   Metric relative to the opposite channel
 x2  Same metric for both directions
 ppa Packets-Per-Ack
 Q|L See Q if Upstream loss is significant; L otherwise
]]></artwork>
      </figure>
      <section anchor="implementation-considerations">
        <name>Implementation Considerations</name>
        <t>By combining the information of the two tables above, it can be deduced that the
solutions with 3 bits, i.e. QL or QR + S or D, or 4 bits, i.e. QL or QR + SD,
allow having more complete and resilient measurements.</t>
        <t>The methodologies described in the previous sections are transport agnostic and
can be applied in various situations. The choice of the the methods also depends
on the specific protocol, for example QL is a good combination but, in the case
of a protocol which does not support or cannot set the L bit, QR is the only
viable solution.</t>
      </section>
    </section>
    <section anchor="ossification">
      <name>Protocol Ossification Considerations</name>
      <t>Accurate loss and delay information is relevant for the operation of any protocol,
though its presence for a sufficient number of flows is important for the
operation of networks.</t>
      <t>The delay and loss bits are amenable to "greasing" described in <xref target="RFC8701"/>, if
the protocol designers are not ready to dedicate (and ossify) bits used for loss
reporting to this function. The greasing could be accomplished similarly to the
Latency Spin bit greasing in <xref target="QUIC-TRANSPORT"/>. Namely, implementations could
decide that a fraction of flows should not encode loss and delay information and,
instead, the bits would be set to arbitrary values. The observers would need to be
ready to ignore flows with delay and loss information more resembling noise
than the expected signal.</t>
    </section>
    <section anchor="examples-of-application">
      <name>Examples of Application</name>
      <t>This document provides different methods to perform measurements, but not all
of which need to be implemented at once. For example, only some of the methods
described in this document (i.e. sQuare bit and Spin bit) are utilized in
<xref target="I-D.ietf-core-coap-pm"/>. Also, the binding of a delay signal to QUIC is
partially described in <xref target="QUIC-TRANSPORT"/>, which adds only the Spin bit to the
first byte of the short packet header, leaving two reserved bits for future use.</t>
      <t>All the signals discussed in this document have been implemented and experimented
in both QUIC and TCP. The application scenarios considered can allow the monitoring
of the interconnections inside data center (Intra-DC) or between data centers
(Inter-DC) for large scale data transfers up to the end user.
For the application of the methods described in this document, it is assumed
that the monitored flows follow stable paths and traverse the same measurement
points.</t>
      <t>The specific implementation details and the choice of the bits used for the
experiments with QUIC and TCP are out of scope for this document.
A specification defining the specific protocol application is expected to discuss
the implementation details depending on which bits will be implemented in the
protocol, e.g. <xref target="I-D.ietf-core-coap-pm"/>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The methods described in this document are transport agnostic and potentially
applicable to any transport-layer protocol, especially valuable for encrypted
protocols. These methods can be applied to both limited domains and Internet,
depending on the specific protocol application.</t>
      <t>Passive loss and delay observations have been a part of the network operations
for a long time, so exposing loss and delay information to the network does not
add new security concerns for protocols that are currently observable.</t>
      <t>In the absence of packet loss, Q and R bits signals do not provide any
information that cannot be observed by simply counting packets transiting a
network path. In the presence of packet loss, Q and R bits will disclose
the loss, but this is information about the environment and not the endpoint
state. The L bit signal discloses internal state of the protocol's loss
detection machinery, but this state can often be gleaned by timing packets and
observing congestion controller response.</t>
      <t>The measurements described in this document do not imply new packets injected
into the network causing potential harm to the network itself and to data
traffic. The measurements could be harmed by an attacker altering the marking
of the packets or injecting artificial traffic. Authentication techniques may be
used where appropriate to guard against these traffic attacks.</t>
      <t>Hence, loss bits do not provide a viable new mechanism to attack data integrity
and secrecy.</t>
      <t>The measurement fields introduced in this document are intended to be included
into the packets. But it is worth mentioning that it may be possible to use this
information as a covert channel.</t>
      <t>The current document does not define a specific application and the described
techniques can generally apply to different communication protocols operating in
different security environments. A specification defining a specific protocol
application is expected to address the respective security considerations and
must consider specifics of the protocol and its expected operating environment.
For example, security considerations for QUIC, discussed in <xref target="QUIC-TRANSPORT"/>
and <xref target="QUIC-TLS"/>, consider a possibility of active and passive attackers in the
network as well as attacks on specific QUIC mechanisms.</t>
      <section anchor="optimistic-ack-attack">
        <name>Optimistic ACK Attack</name>
        <t>A defense against an Optimistic ACK Attack, described in <xref target="QUIC-TRANSPORT"/>,
involves a sender randomly skipping packet numbers to detect a receiver
acknowledging packet numbers that have never been received. The Q bit signal may
inform the attacker which packet numbers were skipped on purpose and which had
been actually lost (and are, therefore, safe for the attacker to
acknowledge). To use the Q bit for this purpose, the attacker must first receive
at least an entire Q Block of packets, which renders the attack ineffective
against a delay-sensitive congestion controller.</t>
        <t>A protocol that is more susceptible to an Optimistic ACK Attack with the loss
signal provided by Q bit and uses a loss-based congestion controller, should
shorten the current Q Block by the number of skipped packets numbers. For example,
skipping a single packet number will invert the square signal one outgoing
packet sooner.</t>
        <t>Similar considerations apply to the R bit, although a shortened R Block along
with a matching skip in packet numbers does not necessarily imply a lost
packet, since it could be due to a lost packet on the reverse path along with a
deliberately skipped packet by the sender.</t>
      </section>
      <section anchor="delay-bit-with-rtt-obfuscation">
        <name>Delay Bit with RTT Obfuscation</name>
        <t>Theoretically, delay measurements can be used to roughly evaluate the distance
of the client from the server (using the RTT) or from any intermediate observer
(using the client-observer half-RTT). As described in <xref target="RTT-PRIVACY"/>, connection
RTT measurements for geolocating endpoints are usually inferior to even the
most basic IP geolocation databases. It is the variability within RTT
measurements (the jitter) that is most informative, as it can provide insight
into the operating environment of the endpoints as well as the state of the
networks (queuing delays) used by the connection.</t>
        <t>Nevertheless, to further mask the actual RTT of the connection, the Delay bit
algorithm can be slightly modified by, for example, delaying the client-side
reflection of the delay sample by a fixed randomly chosen time value. This
would lead an intermediate observer to measure a delay greater than the real
one.</t>
        <t>This Additional Delay should be randomly selected by the client and kept
constant for a certain amount of time across multiple connections. This ensures
that the client-server jitter remains the same as if no Additional Delay had
been inserted. For example, a new Additional Delay value could be generated
whenever the client's IP address changes.</t>
        <t>Despite the Additional Delay, this Hidden Delay technique still allows an
accurate measurement of the RTT components (observer-server) and all the
intra-domain measurements used to distribute the delay in the network.
Furthermore, unlike the Delay bit, the Hidden Delay bit does not require the
use of the client reflection threshold (1ms by default). Removing this
threshold may lead to increasing the number of valid measurements produced by
the algorithm.</t>
        <t>Note that Hidden Delay bit does not affect an observer's ability to measure
accurate RTT using other means, such as timing packets exchanged during the
connection establishment.</t>
      </section>
    </section>
    <section anchor="privacy-considerations">
      <name>Privacy Considerations</name>
      <t>To minimize unintentional exposure of information, loss bits provide an explicit
loss signal -- a preferred way to share information per <xref target="RFC8558"/>.</t>
      <t>New protocols commonly have specific privacy goals, and loss reporting must
ensure that loss information does not compromise those privacy goals. For
example, <xref target="QUIC-TRANSPORT"/> allows changing Connection IDs in the middle of a
connection to reduce the likelihood of a passive observer linking old and new
sub-flows to the same device. A QUIC implementation would need to reset all
counters when it changes the destination (IP address or UDP port) or the
Connection ID used for outgoing packets. It would also need to avoid
incrementing Unreported Loss counter for loss of packets sent to a different
destination or with a different Connection ID.</t>
      <t>It is also worth highlighting that, if these techniques are not widely deployed,
an endpoint that uses them may be fingerprinted based on their usage.
But, since there is no release of user data, the techniques seem unlikely to
substantially increase the existing privacy risks.</t>
      <t>Furthermore, if there is experimental traffic with these bit set on the network,
a network operator could potentially prioritize this marked traffic by placing it
in a priority queue. This may result in the delivery of better service, which
could potentially mislead an experiment intended to benchmark the network.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document makes no request of IANA.</t>
    </section>
    <section anchor="contributors">
      <name>Contributors</name>
      <t>The following people provided valuable contributions to this document:</t>
      <ul spacing="normal">
        <li>Marcus Ihlar, Ericsson, marcus.ihlar@ericsson.com</li>
        <li>Jari Arkko, Ericsson, jari.arkko@ericsson.com</li>
        <li>Emile Stephan, Orange, emile.stephan@orange.com</li>
        <li>Dmitri Tikhonov, LiteSpeed Technologies, dtikhonov@litespeedtech.com</li>
      </ul>
    </section>
    <section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>The authors would like to thank the QUIC WG for their contributions, Christian
Huitema for implementing Q and L bits in his picoquic stack, and Ike Kunze for
providing constructive reviews and helpful suggestions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="TCP">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="ECN">
          <front>
            <title>The Addition of Explicit Congestion Notification (ECN) to IP</title>
            <author fullname="K. Ramakrishnan" initials="K." surname="Ramakrishnan"/>
            <author fullname="S. Floyd" initials="S." surname="Floyd"/>
            <author fullname="D. Black" initials="D." surname="Black"/>
            <date month="September" year="2001"/>
            <abstract>
              <t>This memo specifies the incorporation of ECN (Explicit Congestion Notification) to TCP and IP, including ECN's use of two bits in the IP header. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3168"/>
          <seriesInfo name="DOI" value="10.17487/RFC3168"/>
        </reference>
        <reference anchor="IPPM-METHODS">
          <front>
            <title>Active and Passive Metrics and Methods (with Hybrid Types In-Between)</title>
            <author fullname="A. Morton" initials="A." surname="Morton"/>
            <date month="May" year="2016"/>
            <abstract>
              <t>This memo provides clear definitions for Active and Passive performance assessment. The construction of Metrics and Methods can be described as either "Active" or "Passive". Some methods may use a subset of both Active and Passive attributes, and we refer to these as "Hybrid Methods". This memo also describes multiple dimensions to help evaluate new methods as they emerge.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7799"/>
          <seriesInfo name="DOI" value="10.17487/RFC7799"/>
        </reference>
        <reference anchor="QUIC-TRANSPORT">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC8558">
          <front>
            <title>Transport Protocol Path Signals</title>
            <author fullname="T. Hardie" initials="T." role="editor" surname="Hardie"/>
            <date month="April" year="2019"/>
            <abstract>
              <t>This document discusses the nature of signals seen by on-path elements examining transport protocols, contrasting implicit and explicit signals. For example, TCP's state machine uses a series of well-known messages that are exchanged in the clear. Because these are visible to network elements on the path between the two nodes setting up the transport connection, they are often used as signals by those network elements. In transports that do not exchange these messages in the clear, on-path network elements lack those signals. Often, the removal of those signals is intended by those moving the messages to confidential channels. Where the endpoints desire that network elements along the path receive these signals, this document recommends explicit signals be used.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8558"/>
          <seriesInfo name="DOI" value="10.17487/RFC8558"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="QUIC-TLS">
          <front>
            <title>Using TLS to Secure QUIC</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="S. Turner" initials="S." role="editor" surname="Turner"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document describes how Transport Layer Security (TLS) is used to secure QUIC.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9001"/>
          <seriesInfo name="DOI" value="10.17487/RFC9001"/>
        </reference>
        <reference anchor="TRANSPORT-ENCRYPT">
          <front>
            <title>Considerations around Transport Header Confidentiality, Network Operations, and the Evolution of Internet Transport Protocols</title>
            <author fullname="G. Fairhurst" initials="G." surname="Fairhurst"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <date month="July" year="2021"/>
            <abstract>
              <t>To protect user data and privacy, Internet transport protocols have supported payload encryption and authentication for some time. Such encryption and authentication are now also starting to be applied to the transport protocol headers. This helps avoid transport protocol ossification by middleboxes, mitigate attacks against the transport protocol, and protect metadata about the communication. Current operational practice in some networks inspect transport header information within the network, but this is no longer possible when those transport headers are encrypted.</t>
              <t>This document discusses the possible impact when network traffic uses a protocol with an encrypted transport header. It suggests issues to consider when designing new transport protocols or features.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9065"/>
          <seriesInfo name="DOI" value="10.17487/RFC9065"/>
        </reference>
        <reference anchor="QUIC-MANAGEABILITY">
          <front>
            <title>Manageability of the QUIC Transport Protocol</title>
            <author fullname="M. Kühlewind" initials="M." surname="Kühlewind"/>
            <author fullname="B. Trammell" initials="B." surname="Trammell"/>
            <date month="September" year="2022"/>
            <abstract>
              <t>This document discusses manageability of the QUIC transport protocol and focuses on the implications of QUIC's design and wire image on network operations involving QUIC traffic. It is intended as a "user's manual" for the wire image to provide guidance for network operators and equipment vendors who rely on the use of transport-aware network functions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9312"/>
          <seriesInfo name="DOI" value="10.17487/RFC9312"/>
        </reference>
        <reference anchor="QUIC-SPIN">
          <front>
            <title>Adding Explicit Passive Measurability of Two-Way Latency to the QUIC Transport Protocol</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization>ETH Zurich</organization>
            </author>
            <author fullname="Piet De Vaere" initials="P." surname="De Vaere">
              <organization>ETH Zurich</organization>
            </author>
            <author fullname="Roni Even" initials="R." surname="Even">
              <organization>Huawei</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>Nokia</organization>
            </author>
            <author fullname="Marcus Ihlar" initials="M." surname="Ihlar">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Al Morton" initials="A. C." surname="Morton">
              <organization>AT&amp;T Labs</organization>
            </author>
            <author fullname="Stephan Emile" initials="S." surname="Emile">
              <organization>Orange</organization>
            </author>
            <date day="14" month="May" year="2018"/>
            <abstract>
              <t>   This document describes the addition of a "spin bit", intended for
   explicit measurability of end-to-end RTT, to the QUIC transport
   protocol.  It proposes a detailed mechanism for the spin bit, as well
   as an additional mechanism, called the valid edge counter, to
   increase the fidelity of the latency signal in less than ideal
   network conditions.  It describes how to use the latency spin signal
   to measure end-to-end latency, discusses corner cases and their
   workarounds in the measurement, describes experimental evaluation of
   the mechanism done to date, and examines the utility and privacy
   implications of the spin bit.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-trammell-quic-spin-03"/>
        </reference>
        <reference anchor="RTT-PRIVACY">
          <front>
            <title>Revisiting the Privacy Implications of Two-Way Internet Latency Data</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization/>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization/>
            </author>
            <date year="2018"/>
          </front>
          <seriesInfo name="Passive and Active Measurement" value="pp. 73-84"/>
          <seriesInfo name="DOI" value="10.1007/978-3-319-76481-8_6"/>
        </reference>
        <reference anchor="UDP-OPTIONS">
          <front>
            <title>Transport Options for UDP</title>
            <author fullname="Dr. Joseph D. Touch" initials="J. D." surname="Touch">
              <organization>Independent Consultant</organization>
            </author>
            <date day="9" month="June" year="2023"/>
            <abstract>
              <t>   Transport protocols are extended through the use of transport header
   options. This document extends UDP by indicating the location,
   syntax, and semantics for UDP transport layer options.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tsvwg-udp-options-22"/>
        </reference>
        <reference anchor="UDP-SURPLUS">
          <front>
            <title>UDP Surplus Header</title>
            <author fullname="Tom Herbert" initials="T." surname="Herbert">
              <organization>Intel</organization>
            </author>
            <date day="8" month="July" year="2019"/>
            <abstract>
              <t>   This specification defines the UDP Surplus Header that is an
   extensible and generic format applied to the UDP surplus space. The
   UDP surplus space comprises the bytes between the end of the UDP
   datagram, as indicated by the UDP Length field, and the end of the IP
   packet, as indicated by IP packet or payload length. The UDP Surplus
   Header can be either a protocol trailer of the UDP datagram, or a
   protocol header which effectively serves as an extended UDP header.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-herbert-udp-space-hdr-01"/>
        </reference>
        <reference anchor="ACCURATE-ECN">
          <front>
            <title>More Accurate Explicit Congestion Notification (ECN) Feedback in TCP</title>
            <author fullname="Bob Briscoe" initials="B." surname="Briscoe">
              <organization>Independent</organization>
            </author>
            <author fullname="Mirja Kühlewind" initials="M." surname="Kühlewind">
              <organization>Ericsson</organization>
            </author>
            <author fullname="Richard Scheffenegger" initials="R." surname="Scheffenegger">
              <organization>NetApp</organization>
            </author>
            <date day="30" month="March" year="2023"/>
            <abstract>
              <t>   Explicit Congestion Notification (ECN) is a mechanism where network
   nodes can mark IP packets instead of dropping them to indicate
   incipient congestion to the endpoints.  Receivers with an ECN-capable
   transport protocol feed back this information to the sender.  ECN was
   originally specified for TCP in such a way that only one feedback
   signal can be transmitted per Round-Trip Time (RTT).  Recent new TCP
   mechanisms like Congestion Exposure (ConEx), Data Center TCP (DCTCP)
   or Low Latency, Low Loss, and Scalable Throughput (L4S) need more
   accurate ECN feedback information whenever more than one marking is
   received in one RTT.  This document updates the original ECN
   specification in RFC 3168 to specify a scheme that provides more than
   one feedback signal per RTT in the TCP header.  Given TCP header
   space is scarce, it allocates a reserved header bit previously
   assigned to the ECN-Nonce.  It also overloads the two existing ECN
   flags in the TCP header.  The resulting extra space is exploited to
   feed back the IP-ECN field received during the 3-way handshake as
   well.  Supplementary feedback information can optionally be provided
   in two new TCP option alternatives, which are never used on the TCP
   SYN.  The document also specifies the treatment of this updated TCP
   wire protocol by middleboxes.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-tcpm-accurate-ecn-24"/>
        </reference>
        <reference anchor="AltMark">
          <front>
            <title>Alternate-Marking Method</title>
            <author fullname="G. Fioccola" initials="G." role="editor" surname="Fioccola"/>
            <author fullname="M. Cociglio" initials="M." surname="Cociglio"/>
            <author fullname="G. Mirsky" initials="G." surname="Mirsky"/>
            <author fullname="T. Mizrahi" initials="T." surname="Mizrahi"/>
            <author fullname="T. Zhou" initials="T." surname="Zhou"/>
            <date month="December" year="2022"/>
            <abstract>
              <t>This document describes the Alternate-Marking technique to perform packet loss, delay, and jitter measurements on live traffic. This technology can be applied in various situations and for different protocols. According to the classification defined in RFC 7799, it could be considered Passive or Hybrid depending on the application. This document obsoletes RFC 8321.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9341"/>
          <seriesInfo name="DOI" value="10.17487/RFC9341"/>
        </reference>
        <reference anchor="IPv6AltMark">
          <front>
            <title>IPv6 Application of the Alternate-Marking Method</title>
            <author fullname="G. Fioccola" initials="G." surname="Fioccola"/>
            <author fullname="T. Zhou" initials="T." surname="Zhou"/>
            <author fullname="M. Cociglio" initials="M." surname="Cociglio"/>
            <author fullname="F. Qin" initials="F." surname="Qin"/>
            <author fullname="R. Pang" initials="R." surname="Pang"/>
            <date month="December" year="2022"/>
            <abstract>
              <t>This document describes how the Alternate-Marking Method can be used as a passive performance measurement tool in an IPv6 domain. It defines an Extension Header Option to encode Alternate-Marking information in both the Hop-by-Hop Options Header and Destination Options Header.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9343"/>
          <seriesInfo name="DOI" value="10.17487/RFC9343"/>
        </reference>
        <reference anchor="ANRW19-PM-QUIC">
          <front>
            <title>Performance measurements of QUIC communications</title>
            <author fullname="Fabio Bulgarella" initials="F." surname="Bulgarella">
              <organization>Politecnico di Torino</organization>
            </author>
            <author fullname="Mauro Cociglio" initials="M." surname="Cociglio">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei Technologies</organization>
            </author>
            <author fullname="Guido Marchetto" initials="G." surname="Marchetto">
              <organization>Politecnico di Torino</organization>
            </author>
            <author fullname="Riccardo Sisto" initials="R." surname="Sisto">
              <organization>Politecnico di Torino</organization>
            </author>
            <date month="July" year="2019"/>
          </front>
          <seriesInfo name="Proceedings of the Applied Networking Research" value="Workshop"/>
          <seriesInfo name="DOI" value="10.1145/3340301.3341127"/>
        </reference>
        <reference anchor="ConEx">
          <front>
            <title>Congestion Exposure (ConEx) Concepts, Abstract Mechanism, and Requirements</title>
            <author fullname="M. Mathis" initials="M." surname="Mathis"/>
            <author fullname="B. Briscoe" initials="B." surname="Briscoe"/>
            <date month="December" year="2015"/>
            <abstract>
              <t>This document describes an abstract mechanism by which senders inform the network about the congestion recently encountered by packets in the same flow. Today, network elements at any layer may signal congestion to the receiver by dropping packets or by Explicit Congestion Notification (ECN) markings, and the receiver passes this information back to the sender in transport-layer feedback. The mechanism described here enables the sender to also relay this congestion information back into the network in-band at the IP layer, such that the total amount of congestion from all elements on the path is revealed to all IP elements along the path, where it could, for example, be used to provide input to traffic management. This mechanism is called Congestion Exposure, or ConEx. The companion document, "Congestion Exposure (ConEx) Concepts and Use Cases" (RFC 6789), provides the entry point to the set of ConEx documentation.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7713"/>
          <seriesInfo name="DOI" value="10.17487/RFC7713"/>
        </reference>
        <reference anchor="ConEx-TCP">
          <front>
            <title>TCP Modifications for Congestion Exposure (ConEx)</title>
            <author fullname="M. Kuehlewind" initials="M." role="editor" surname="Kuehlewind"/>
            <author fullname="R. Scheffenegger" initials="R." surname="Scheffenegger"/>
            <date month="May" year="2016"/>
            <abstract>
              <t>Congestion Exposure (ConEx) is a mechanism by which senders inform the network about expected congestion based on congestion feedback from previous packets in the same flow. This document describes the necessary modifications to use ConEx with the Transmission Control Protocol (TCP).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7786"/>
          <seriesInfo name="DOI" value="10.17487/RFC7786"/>
        </reference>
        <reference anchor="I-D.trammell-tsvwg-spin">
          <front>
            <title>A Transport-Independent Explicit Signal for Hybrid RTT Measurement</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization>ETH Zurich</organization>
            </author>
            <date day="2" month="July" year="2018"/>
            <abstract>
              <t>   This document defines an explicit per-flow transport-layer signal for
   hybrid measurement of end-to-end RTT.  This signal consists of three
   bits: a spin bit, which oscillates once per end-to-end RTT, and a
   two-bit Valid Edge Counter (VEC), which compensates for loss and
   reordering of the spin bit to increase fidelity of the signal in less
   than ideal network conditions.  It describes the algorithm for
   generating the signal, approaches for observing it to passively
   measure end-to-end latency, and proposes methods for adding it to a
   variety of IETF transport protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-trammell-tsvwg-spin-00"/>
        </reference>
        <reference anchor="I-D.trammell-ippm-spin">
          <front>
            <title>An Explicit Transport-Layer Signal for Hybrid RTT Measurement</title>
            <author fullname="Brian Trammell" initials="B." surname="Trammell">
              <organization>ETH Zurich</organization>
            </author>
            <date day="9" month="January" year="2019"/>
            <abstract>
              <t>   This document defines an explicit per-flow transport-layer signal for
   hybrid measurement of end-to-end RTT.  This signal consists of three
   bits: a spin bit, which oscillates once per end-to-end RTT, and a
   two-bit Valid Edge Counter (VEC), which compensates for loss and
   reordering of the spin bit to increase fidelity of the signal in less
   than ideal network conditions.  It describes the algorithm for
   generating the signal, approaches for observing it to passively
   measure end-to-end latency, and proposes methods for adding it to a
   variety of IETF transport protocols.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-trammell-ippm-spin-00"/>
        </reference>
        <reference anchor="RFC9331">
          <front>
            <title>The Explicit Congestion Notification (ECN) Protocol for Low Latency, Low Loss, and Scalable Throughput (L4S)</title>
            <author fullname="K. De Schepper" initials="K." surname="De Schepper"/>
            <author fullname="B. Briscoe" initials="B." role="editor" surname="Briscoe"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>This specification defines the protocol to be used for a new network service called Low Latency, Low Loss, and Scalable throughput (L4S). L4S uses an Explicit Congestion Notification (ECN) scheme at the IP layer that is similar to the original (or 'Classic') ECN approach, except as specified within. L4S uses 'Scalable' congestion control, which induces much more frequent control signals from the network, and it responds to them with much more fine-grained adjustments so that very low (typically sub-millisecond on average) and consistently low queuing delay becomes possible for L4S traffic without compromising link utilization. Thus, even capacity-seeking (TCP-like) traffic can have high bandwidth and very low delay at the same time, even during periods of high traffic load.</t>
              <t>The L4S identifier defined in this document distinguishes L4S from 'Classic' (e.g., TCP-Reno-friendly) traffic. Then, network bottlenecks can be incrementally modified to distinguish and isolate existing traffic that still follows the Classic behaviour, to prevent it from degrading the low queuing delay and low loss of L4S traffic. This Experimental specification defines the rules that L4S transports and network elements need to follow, with the intention that L4S flows neither harm each other's performance nor that of Classic traffic. It also suggests open questions to be investigated during experimentation. Examples of new Active Queue Management (AQM) marking algorithms and new transports (whether TCP-like or real time) are specified separately.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9331"/>
          <seriesInfo name="DOI" value="10.17487/RFC9331"/>
        </reference>
        <reference anchor="RFC8701">
          <front>
            <title>Applying Generate Random Extensions And Sustain Extensibility (GREASE) to TLS Extensibility</title>
            <author fullname="D. Benjamin" initials="D." surname="Benjamin"/>
            <date month="January" year="2020"/>
            <abstract>
              <t>This document describes GREASE (Generate Random Extensions And Sustain Extensibility), a mechanism to prevent extensibility failures in the TLS ecosystem. It reserves a set of TLS protocol values that may be advertised to ensure peers correctly handle unknown values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8701"/>
          <seriesInfo name="DOI" value="10.17487/RFC8701"/>
        </reference>
        <reference anchor="I-D.ietf-core-coap-pm">
          <front>
            <title>Constrained Application Protocol (CoAP) Performance Measurement Option</title>
            <author fullname="Giuseppe Fioccola" initials="G." surname="Fioccola">
              <organization>Huawei</organization>
            </author>
            <author fullname="Tianran Zhou" initials="T." surname="Zhou">
              <organization>Huawei</organization>
            </author>
            <author fullname="Mauro Cociglio" initials="M." surname="Cociglio">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Fabio Bulgarella" initials="F." surname="Bulgarella">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Massimo Nilo" initials="M." surname="Nilo">
              <organization>Telecom Italia</organization>
            </author>
            <author fullname="Fabrizio Milan" initials="F." surname="Milan">
              <organization>Telecom Italia</organization>
            </author>
            <date day="19" month="April" year="2023"/>
            <abstract>
              <t>   This document specifies a method for the Performance Measurement of
   the Constrained Application Protocol (CoAP).  A new CoAP option is
   defined in order to enable network telemetry both end-to-end and hop-
   by-hop.  The endpoints cooperate by marking and, possibly, mirroring
   information on the round-trip connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-core-coap-pm-00"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+29+3vbSHYg+nv9FYi9uyO2SbZlu1+eOGm1rJ7WHdmWZXmS
fPvdrwWSoIgxCbABUDLHdv72e55VpwBQkj2dze7eKNOORAL1OHXqvB+j0cg1
ebPMniZH79fLfJo3yS9l3YyacvQya67L6l3y87K8Tl5kab2pslVWNHVynk0X
Rf7bJqtdOplU2dXT5Hm2TLdJWsySk7Kuk0ne1G5WTot0BUPPqnTejPKsmY/y
9Xo1ymSq0RyGHq3M0KOH37pZ2sA7H54fnB99clP447Kstk+TvJiXzuXr6mnS
VJu6efTw4Q8PH7m0ytKnyXmVFvW6rBqHS76sys36aXJ8evrCvcu28NEM/iqa
rCqyZvQcV+PqzWSV13VeFufbNcx3fHT+s3N1A1v4NV2WBXy0hf2t86cuSar5
NJvVzXYpnyZJU07Nr7Ns3SyeJt/yX3kxg73o1zWsqsrmtf97u4r+bKp86h+e
liuCg/l7nYav82KZF2EN2ftmtMzhtGDMSbmEt0blVw+cSzfNoqxw4SP4D1+D
r16Mk0NY2+UyL+lDPpoX6aYq4y/K6hIAmi0zmDw5btJlniaj5Pz4BX0L680y
WNBf4NOzDCCYnJWrcpkPk0ffPaEn4GDhuM7LKi94wGk5g5n2H+4/+V7+3hQN
HikOvqWPslWaL58mK1zNeCqr+bHcNMuyfAcfrOK9HIyTn7OqyrPNe7OXg2X2
Ho6vyuIvaT+vAEEus+QkndR2wlRfGc/llR9LerI7559gzrycTstlaub8U76p
s/U6i7+jKX/ZpNdZzpelXJaXeVZHEDyDD+D3tK4zAN43BnYvNkU+XRjYff/w
hx8exbD7U1at0iKC3qWsZTyXtfy4oCV093I8Tk42k7ReZFdmL8dw0eLPaR8H
71IYv7sPmTVf8hs/pvRcd7Kfx8lPm+UlXNRlBLqf00letr/6T0S+Oa5nPPHr
+fESCFwzbngxOa1lnDedW/UyX8Y3CqjKqgwf/6feJ1rLuIC1/HjzRgAlfklX
00VabnKLE3U6AWBkrS9vulO5vDJe6Cs779TZ+A2QLwu9s3w6TatZmYQvaK5T
AEmTTeFelMkst9CQWSt5cVzjiz+u8fkSd+lcUcJVafKrDCni+eEpzPLz4Q+P
fngMfx4dvqQ/H+9/i8BEljF6cXT+y6vnb+jz77774Qf4/PXb48PR+dnByzen
r87OeYCHDx8CPwKuZEbn507e6BP7OKO+Njp6eXj2b6f6+rff6AsvDl4e/Ono
4Kfjk+Pzf+NvH+8/0m/fnB7DGo9Hz8dALIA9LJej3zb5dFSv8wKeOTs/H52e
Hf/l4BBeff7qeLz/EP738Luvf/ju+9Hj0eP9H0bfffvk+/3R978if3r7/HT0
6vT8+NXLNzwoseWmvrq+HG1m61G5boAn1vLkm7dnpydv5clFVk2yqqHHamBL
2Wgxq+DBg8PDt2fArUcEzDDmFFh9Op1uKuDhIzg7fHTZvEird7LHJ/sE8qtv
Wx/jwRy8PPsXWDocBwIh7Gz/yTdfP3785OHjh/tj+P/7+4++g6cPy+LovRzY
/mP9YKSH/d1333/r3Gg0SgBXAYpTQIvzRV4nIKJskOEms6yeVvkkq5N1VQIP
L5cJsvF1Rrw8WWXAUWd1Mk0BsWdeVnK3yUpGVEqaRdrAAEUyyZJ0jQOkE7hY
gOWNSi8jEKKyyi8B5CgYN8uKZLrMcTSUr+qsusqqcXK+yOrMLyxbrZflNvkr
CEZJ6ubZNdz96l1eXJIohrctn8FciyxZZOkM5ijnSZZOFwmc47usSQCLk3VW
ETIXUxw3CGUOp60yQDpgrbCsZTqBC40o37eun8pmkQDY1mWOsuK0LGFcwIBk
stU14YDDZA2CYj5ZbofJKq8qvNCXib9OJYAJVkYjw0fXcLUT+Aw3AMJdMRuB
2LR207Iosik+TfAAichDG2h4ktXrbJrDkW2Tq3S5IXBfLwCcBH44x6Y0sMbz
cVkxrbbrJvFHIvCqh0mdI2BgBVvYHo21RFEXVzgj6dfCDHe7Rup7lbmyGK1T
AEohSDLLrvJpVuOSLQrCZvCQKvgon4M4gp81vejjgM8jwNcpAhYhCL81sEs4
RNgtbOsS0AIOmREYASuwm6Z1NuabsMpns2Xm3H2UjKtytiE4OnfKCNHaG4Jz
gYeAH8GBXqW4NYQeAGJVIzrN0i1eBfh/ulPHR0/Hc1qVcO3gHVjmLGvw1IrL
ocCMfsWRlyUI/LheWOwKOEkyrTZ4gnhLgM4XDfyHXy/yy0XyunxDLzX5Cket
srpcbgh1ELkRR8pRht8vAGUuF+tNAyPWAMuxOy/hUxg+A0BPm6E/Gl5wCWdw
ndcLWkip90LPM/ltkxagNNENcObQcdoW2BYpPD/BGwxodJXTKpdbORCL7GtY
PQwB/ITPaZmlVYJ/tEiDYGOyl40vx8jMAA0APRAzcVY4u6K8BhJ1iQtyxWYF
FLsejJOD2SzHifAyDGkKOTqlSMhS3sH6cqR3+Rxvh6xFD5NwWGCZpB4a5YRv
Ps2Pd7y8opsMVIFuKqDbv+REEuhmwbj+yvFCdm2RbrB/ifBOLtS6F0V5IQRO
frkoGyUyIGGn8OGyLvFT2pv78KHDmT99GiNjiMhfz6nCJwC07obwUFOhiSOG
iiFRCGlcEgAbBObM07MaBB+8uSCp5Us4dUs76d3MozAQzpIu9qbozq4UKlCP
QNtWsOoJkU58wz8B0iKcmDlkIqOgnpYVQCzH+wLfAK2q02qLV2EGLGCKlEYA
xJgUjsMFIIGSn4FGBSsitACSVdV8MTt4MHa/4HNwRiIttOHff+CtGfzAN/BT
2A+SDqJBNewF2JBhEpNtHyFYlK68LvCE4DyAUi5p03B5QXVrgDw1CIfdjNq5
44KJTZWBZjFjpAeJJ6sKFIxeCJ9mTp58+CDC0KdPsMY5qPs14hTgNEi0aBqZ
OXkyokwePkMGDpPTv+YNTBMzJsC6Jd5bANJ8nk/H7qdNQ7cDvwY05Yv/4YOR
yz59ImRAAgxQYuZZ4/yphxcB2gmAUESalfg4vFOkl/DnNZKANFE56QV9TMf7
Zls3QIb2Xr54Mxgie2ascoenRwhzBBb8RpgrRIEuTQMcj+goPyJsrgDVCBir
BSIc/hUQtTqi1LicvGDAtlYM/7tegPptUJunReElm9kb4hAURM3thAAXy3xa
uBjoAWEjEgRYF9zDbJrCHdGjVDI8ZfaAh+kFuoCltF0cBtjHFbyAgAb5xoU7
djP/QNF6SFyEzgcUlwFtdZLhRChljLuCMuPknc2FRgQeMmTRZpfQrcP9LeUy
XiLmoRjas3hDKpKD6bSsZsKaEVFoRTlDFGgFYm5Q4hB1G5GUw5KCOE+8b7pE
xkI8L63dL9tJlfM5s9wD88BDGbDS2YxuB2H+LiLDfLjKnFo5kanC0RQz3d97
YEq4/pm3mRJhI8JnZQKYRkTHCHe9+Pi2WObvMot7IE/BaSAUmkg7EOHdxcK7
Mhq9NW9UwG1BywihqxQmNHqCs+v1zOEqJ54rB5TgDoYsOM+I/5IQRMwSuOh7
IoTLBO6/MN8vQS2vwInYkpP5mVEWzzBSuGDe7e7z0xsKJ5Raep46VXGUoPsZ
WGTzTxKBEqEI50axA0hGVlWsc6Q1IW5g9HxgO5ckcAmMXc+1s2mjTTBqk6ZA
9myklCD1TMvVJC9EKD9CDdAfLz5cJ6g7ks6IOyFcJQ6k99Vixtgdk4gAtwcm
nbGKItRYdpZ2VEaRKkHaBTTjjVv0BiKBijeydFQkO/wUaF82I+bjNUsAz88w
RXktigPAmu3oM8ZLYmf/cPbz4ffffPM9EGiYFPAYHyaRFkkPHFGi93XoYkjC
KQgQZkR26hLkNbjMSJthmfamENwE61mEx9NEtap9wgHdhCKrQk9DqJWA6A3h
ayzxhUG7dIjHA7kGCfzb56AgbKr1clMnZLJJ9uoMSYYxAwFEALyOPxODz6dP
A8QXVEoA6DM1IsB0yDKSq30/DYnVFfyBlxuwjBgJnukSoFNMt8mbNbwH7+vM
sSkNJhLs1ueG4kvCVzxtpPnxgIBD92E7olkOYECRDhiki2iizBlZ2cznaF/j
P/85MrKxTQytbJ8+kVzbfoB8Wfw97CFoWKjfpjlgFCD9hi/EqTGtRK40ZAgE
UtyBvc6OKSdgOBL4yBhG091PTgTAP6Gvjbl0LZpGLhp9JpCzpieiCDgtaWcJ
2lESOavoHo6T5F9AlsjwzjV2cEFlz8DpQyJvhPsiMqHE6EjoJc8KabzLrXmA
MaV9DXipwIiWG7FX6dpwI7DvLgLZ3RJDEe4BoCMHY+eG8IVHGLgF8fq2unF2
fg67Z4jys2SbqZlSpwGlmeCVl5fLDAVr4Id4XvR6hFxAuuvppq55hWnAFOBr
IxzoLykI98nR7DJLDtGaD6Ps/eXocOCIzq3WQCxROsBj80pQlYEclDFo+Uj8
uvBrgCFcS6Aoc5All3mzVRokW4JHYdUE8ALFTfhIxUrYLa+w7oh/FtYJeUtH
zF1QollmtBmWa2SaNuq5YBjzpgPCG6tRAgQZ0roiPEegNVdlPlMir5t1KTC0
yw2sV41kaZXDtoEw1SXKGHXPvsgEVeWlsA93/z6PB3cpSZIP9/FWw9if2veK
dr1CGxvwmHTdATxOw8rcFMCa16tx8jMa5ZDtgowO94k2TpSMmbAOkS4vywpu
xGqYrJd0boZctkhXi2LSsooeldJqJZdwlStiWHwwVtWq879lYR08ChksFui2
qT1Nh2MA5blJ6HmyHiOq82I65J5hRVhBf1t8sFcmkSszdGRVxXXrWKsS5PpS
MTw1utOoRMUfd4OcHt2ltGI3r8oVSdsVyCM5XhljFUpYJkFandzDE8ap83J2
T9aaGVuD2TTZZ/y20JBM0gvg+UboWuYQYdEMyXPDM6CnRHPwezQTjsmjtLGn
XqTCvxDDdCHEds1QAvCuZKQGUkQGWgfCG6mgsUHRODz7Xj7OxslD4PNuf8Bs
Aa4hQiFaFKLoprksWV6iJXWM/KR/AQn7m+BTmARGfCg2d7iG14ldCqrwLPcU
T537ih8zojRcsQxuS03GRtKK/ZnI32zfBHypLolLIXFln7h8U6NNBqTveVqR
CaPOGj6AfpCI6FauUUNr5JgcuVgJssEoKmubyUr+GK1fzuM/bf2EsXdeu+IT
UCiyDprxAFsJL8RIGA4cGRGsRU319I7biS3MSj1NRB9FeV3HQyKnUxqF+P7b
BiWia7Sf1xuyxqQgGk62wWNA7wNjbUiqwr3BBXRqiFunOdsbkXVn0w1rvDMk
Z8J2PDwIXKy8AjyBzTjPoMRz423cyMgEUMEXxTJU8O6IiZj8SZaBAaD9rWIP
Ut0jhMUKhZq1WRsVcurXatQKtOXpLC9LWh4QWsEzIyrQDsjSVK8BjCUoBgwV
el69fIsMvqubfIqsGZhXhROyj81vwboLDTut+zhvvsLzEG+isudInv/wgQCH
TJfE2/uiBiBH/nDff8e4GjSERVqzf8WbkNBqAkc1RS2N7ckA02W+IocNsv7Y
bOwiYgeHgW6zHKG5WTY9kgNRqi5YgWWzVio4LJy9BWNSqdHXSVSdNgU3NANA
swmFyAgJeGgop1forIAbVSXMEp7kwT1PqNXuwJZJeRy4EgxvhXqaQGwhxEcJ
MORMLEj8ZtSIYNKSzczbMDjtgfzLDUAAVxXdA2S2YqayY4ohMCHRCoXKBNWM
rcKVBPYV2q69k0RGHdJxheOXAUi18MJEuFPoe1KiHL2EVG0YLpQlz6kYelln
jd4cOFDoCtKqhMrEBiIl/LNAn9CKW0XkepnPM6RUYxEtoxXkPsTgnkjR6QrE
wXsosxSBDMG9QexFWbeIxR0ipsMbiQYckhOCMURQT995Ymqm9IasCj4k4omL
BmK7Wg+JiBiccIaKGfJnt60mLDuDQoIoKhKFGvWhZA13OqufBqEimMABu5c6
3jk5YaJHRLiKr2B7Y4R7S1m3Hw+GJvmFR+BjhlNepFdA1XiYzmEpEhAFvi6D
PU82W2TvG9C+LjdGtReut6TriE61gJZBZ3Du3+GHopuS5MFIfh7AH6Oe/8ID
8sbHJIl+GYWff2o94N84ZDT237R+PiZvGPM+9s/xj2aO9gNfsA95ZS8dJC9L
z91SBPllXmAEwNj1DftQ/tv//wV4kr3JgFiyrI4FaiLl5F5Im5QsezqVFx7n
IBp52QAYKOPgG7oeNwPW/vd/OmD3u/vwgJ0yYGXyHsB6oBqyVBs+cxswdfL/
k4F5C1LoJZ5FSPoFsPq/AfHs+ncj3l4W4d1OWCn2kfKPXsIxc4wPTxPK5nh2
r4et3PuEYvX95E+BPZ4iq3XuFYpPIsigKUTjtPLiqlwaRckwVmLS4+S48VYH
FEFdZHZg46tKDaBSVjk54PYuZvWv+PnFINmsKaZB5D+SBlIRjEVKQKYe5EGV
6Dp2hKG1HKgiWYvVIRI7vNAgYo8LsBJxgeljS49FOXifdFmYHlUFWjmfjd+Q
85v0qn4AAIxOxnjeDeWeiKQgYl0wo9QtkZXMKOJc8zywK2UNyU+RU5QHGtvT
+p0VRg3Q8pbz8MOHIAuN6HBJDTsuMGKWwsuMaG+0uWFXcKwX5WY5CzKUDYxx
xlyFdom82IB2hCFpcx/IQQLzbBNLcDbSE44AfQS1k1CeDSkY8AuNcY2+1rRm
VQ0OzJhbpmlVbRUY5oaQUXNC8ZxoyXk05vAu8Y5PaTt1U67RJSZbFVagNjqN
3mgpSLhIuKakZOm86QoN/LQvkWti9D4vEzLGKwLVIcryM3B8nqxAD3RsUsLw
ENLQV6Rt0y3buzj/9UX6Hq4gqtDw7ppiSjUEIFmmdRON6SzeJnvsosFNBcTB
QMNge5AJPD4A/YCDacTQRYrcKn0vegTdGTL7R/reGEghWsEbeHJUZzLPp090
1OJmGzNZOwuyPJG1BO34HaR2zjwn+gKAdyqekGCY8WqAuWgRiAWxXa8KyHSi
pUCQlmCtpug6pYANtUKNUT1XoQMDtsP6n6oVNVbSqgotjENrdkT1lQMMkljS
EyrurZtBI+SAhGhoWooKlp+9FAHJ77QUZDMURCE0F3PfLNUNrMWbYD3xjq8F
MbcNxRxJVDndOSBzHG2AmucQb8+NY3B4lLVSiOWAGZdF8+7lW1QZ3Ai4EOmc
H2KD7NpSO7hc5crPrJxwb39FceWzbJ5uls2gh/ZKRJmcFdk4RI3XzbjIDvIO
5kW+8hCA8BN68DnAYRi7pEjfr7K/wpBxLCHdmGu63mhzE/MU69a8rhlbpZcY
y29IntzyoDEniYSAClnIV5uVMXc5sprJVEJB0dh9nQu5CmDlyLZHq3pAxqAo
XIUIBZEluGVKBT7cb1EXJ7YFEWV60EwM2P7qw1IkYG/bMnGU6PQdu0OJ7Wcm
gHYbYjadw6uy4KcLsTQacKxZJy0C3iLaQUobitXCuwOiGIAJxp45b1NqSj3i
1Nt2iFujeCU8piwyvi0chYyJteG6aHhSMMYHC8l1GW2VaJ9cE4chcb9t2DVY
KNcgRCiE/4XAafVSrdkJ7WmQLJisQhq+HPnZlBmtKEEGaQmMhrHyhXf6tLI0
kOlmYspBUFRMvr1/9IpDYBltmB7JHOIiLPmkW2FMLji9cXoQ1tisLjJnkakN
vo65aF7LcpGgAEvJnSDAr2tAgdj6W2c+wlX4G8dYRCEbGmqB58GGeb56LQe2
3Kd99IGXxUwMt5uaiWg4Rj49ub0Y+whQUaY+4C3KCAaCYa9wkNsiXVF8mXcT
SXpUOkvXDOG2VKjAkSPcYXvUq/Lr9GJAsWIV2atTojeGeYeTYZFPBTozEkoo
GPGEEfw5ucHcNF1ON0vOWsFLShkluDdZnASSihSEY7ZZgoj94rFTvOHXk2eJ
nnLrJPyhF0Plx1cURYJrzH24M7AAduN7YKUaQAvnt2Oy6QUFOWKYJLLEIXt1
M+YpPYIdOTCBUlFqCMarTeqymtD7moDBxFPinglRbGoEnZwkRNHtXGTLNYcT
cWQzY5ZHDfLzz0H6Q6gr03fWTcdscFpeFuiVrjezWRYCGnI+yez9NMtIhj3/
FbAWcMMjiqDAxPhFUzZPkz4ny2EIJxcw2EVCQXYpXOT3mfIo8s8xsd5/+HBV
w001W0L1OKIZtDAEOOIwKcQcawLD12zwhqsCnB9XjK43QDs46aeJrhrO7xHu
60HCs8EhzpOwpdZldZ5+MK2NHoThp0xqw1O0xrHxLkYUlqbkWHQKuCeAEdcS
szurppqKMl2UoEQ5k4rSzVbzMaf1FMRyoHo1h9OE24vuDyVgJPpunabRwVXD
obL36MdEVU2o4MiPqjCfo8pWlWvEzyxynxJfEKT6Q91G/HR5jb4vxH8fSBWY
GQenM3kx7+LtwDAmn+5HdKP2tzfKUmA918usLojWYUS4NSUskgI/JM0EcSSS
w6/TXJz26KewHnEvaSpjxlMSlK+9zkI+oGzGiOgtIE36LmOuQfffB56vVIhn
IhnRakQvQd1xctDwitlpZTgjpc1pWKm/ZpbAKe0L1xP+yqswiwh7LO3amPG3
hBbeuXybh7CT5oYiFFLxWJ7R2HcycPAB58WCo7VtgJrm9ynTCLxMWItIaBT4
kRfOhPSlyy2Ak/d1nx432+pxr1lrnWi4WYHPC+cXp6m3jojb0wfwBnDUYv1K
qg1Qb5uXC49aGS/otrEfliRW1InLxPM9v+lW8GWqwX6FF8naZ+BiBM1XkfC5
W+i0gR/qF3Ve9WTbC4Oo7zoOI3LAkiT8gjK/JxYmHMXFErDcJF0K3p1CUkmm
VMABkS7QEb3ckSuQfp71/3zs//ifoleTr/xPMJS/mtTBUm4eeNZ6Va0BX+0w
mXvLRffVeFZrOx/dOOs/7tjsjh9n3w0/6EaMkjIpMOIOMN3xcweYRt6H/2Uw
lZP8IpjuwJ+dMJ0MxN40Eh6DMG05Ic58pr5IQaQL+Qs3EI/E/eSXdDkfdSia
jXholBVKBo98wdqVFghgX1yzqQpvaPCT1U4Jd9toEkUf39ussSJLurpHo92b
gcqlH+ACkfIAzUTLtyNBVZQyJkUL3UccSH8Min5J1CqvuyFsUdhay6hmKRaS
amMnE7tO9DhKljkZ1F07yK1rasOYEglzbS35MyldvIMvp3RB7tJD4GRffwQa
h11znG6zqCP6arKOQM+2WxgmFOuqf2JOmWDtVa2kAT6zqezOPiwfX9VJ+CyM
vdJE/5CgxXY7UDew1kimoXSzEKIZG0tMmBnKUXq+bGWZwxBlVd+dFdyFPn3s
pU+3UycgMX3U6Q70/mMvvb8Lte8jQYam+1PT27eDZEU/dwFd8jmgi4ls8jnA
67x6d/C1X+39+Sy4Al33mN+Ga4u8I9VO7kzjscpIOnrOSdYdWs/fzsK36pvh
VDcVksU7iA94G2bCfmaKE0Ltgc3PPpF/TvYWUkkrFkGV1uetOYdEt4wVKF0T
uynnLsTTKWPJxWUQGAzTScoUxlo85E0DPQeoZEYkOaHEJtDApUxCRr/qznS9
nGysOg8suA8ygXp0yK7XhzwN3UNXmaehgxYba5OVHbhy01V51v9S9EAbqRNG
6X8yqBd90kMhnvWTpOhStT7pIVB9a/lHvl72ythPetfSf6n8A3eXXHtuYR9x
i08t2dNLWQ9uJXc3HU28v56D6H7ST7x/h6PpW8vnH82On54D6YM8kD92wLUu
nTG8oemRXZqtn3ozodpiNqtrUl5lrbNrk9H4grfJaQsPnvp7rZQVYaoGqgP1
2LHw3M5esKE6STdUx7u3gAa9y7I1BwdTuDDF5TSmMEYnPCBE4qvkKX4NHDkI
Qhyp64LpGCtXKbRMvvtBsilyT1thlX4TZP/zVtK03q5WGdZQpRIhVEhqsyaL
cqNJ/M6uk+L30eQXr/5aywPxe1SdRmXp/jwRlcAxCL4lC1updNUn7Saj5M/G
xRVMFTCYys3WVYdZoGIx6thMxsnFny84gw3hJ4khifGIBoN84BtkiVKbJPOM
EGbNkAkGexjNGlWs/TBWpNhDcfFnoI/7D/97Ig5KdBnOY5UCN3dXFQ4xqPbm
4xxrDjOOBlMS42U4Gkl5qq0NtFWYgZc62VrWHvt64Lhm9QK0l0EXpZIvQqkb
oh5UmxNMcsnfj0sWk+gEPS7ZdA4v7AmYvAor8VgtYRAG0ieGwZMUtJqQY7CD
THjq0Laz+1wdQfy8mC83vrjTddscz6kSXQGtr9RZs10TsYiqqNBVqKmAQauM
Rub07nuFU0MHALaYbt81Kz8N+cMPrHGZPsXTNUUNlEjXCUfThTqTyy25bOhG
rKK6UFRJg+v+WWpkQv8iwRVdXWUpxo4JmuajrDIJXVJ0Sa/SfImQDGmY5KOc
5q1KMHI04n2fiYslsp2bdQCuyCpykyCZRikPYWwJXfFriTbkNwNjkrPmPQea
mCzVjIsiYPLUl1ZEoMyryHTj/t4SCEiv/v4SCFhZjZYNcg/HKiy3YRD0pPHa
ZUNee0Cgnz+lV+6xNf6cMg3h2XvW0UEcNRSGCcGrJgksZJKZCpw0lAbpVQ3+
pRl8XyWvZeb6NeVycgJ4PK8hRl5f8UPCjB8+cCJoGPREBqWDJj/qzhFNFS67
zHiRZzKeCQuU3NO+9fbB6XUXQDtmxrrv0XZO2ggn4YdE8oDAvma2dxJVhQkO
T0nM1eNnFOFyDHvntCoTX6GlCfRIMShDqk+YLdXJ6wcnNOnrB2dO6pyaghWR
s2aN2vmmYM+WlrhAqY7TUKm6kA+jNcJn8LZy7eqM8iENFZSsdq1vSnEWVG/A
fKYV0miFJGXu8SObCYuzeKNR/85JCDZ111Ag4VpXdGnIZYo7ofO1q6BqXTim
eKSWSz6IPQwcWHPR3BNODNTE2TSZZhX5YkEwoSA2yeQ2lQWknth7jkagcqq8
gQmH72AKuNYdaV1oW56xQ62YnRC1x5XNJck6bTh0d44aQElsn+ISaYEwRwhI
xsQWzr09J04G1OYsUA0lrRRX6686Ox5bxKVzI4GXkUtNFIwuTDw0HMf09dt1
OUmPJTDySwdCZFIDk4NO6d1grA3iXpaTedUkfnN290aEReq9IFISL9hR5Sjy
kuq6yU9rQuzZW+4Dooc+hlG+95XeXKt6ZSx8su6EMZWIdAqckChJjNpKtxyc
o+77govCIg77pK9zTSTYJ2cCJi7buEVUZ1OJQgN0yQtzOn/0sykUSR7mOgIE
SlNJWhiXl1PMkEOf0YKz+TpZLJ6jir2W0CmJFGuvw/NdFH2oCEmq0cXRyrXA
AdULsGUKAgz+2ALgZ23JLq93T+pGsHsCAaL6vC1FUPisPX3BMZnlDQGYJD3j
IkIO0u7jmpcbjAS4dW+EY3V7urtsbax1qWviLsWlUTr45E0K8h5/wjwkgBCJ
tJRZpvfaeVAhMRgZamcaHsqmOu/xJjgUIkBgkMTztBMTyLpxS4WJ3TQo8TTI
3UiD/DJrKfQSQMXKJizdiY6ngZmihNrN1OY8h3GEFtfyDCpfHgIsODbRhoOb
Epddwteq484xZBSwwrw5S7nST8gXYhcw81nMc4nYIKAYnp2iWmAfno5q7duE
i+7Fr2tRUM7DP4s5G0UEs/CgRSAoByeXeBPjDeA4N+8THN58iHoN6UbkdWLi
Q4U7BEh78Rw4fBaSKriYlSTMwM0ZSYJMnC6DRycvhAghzaGJub3utFnEDQEo
GFrKf3CJhrTtqFHjTeDrlqP3mmRaXmdv8PKnqCI1rdLRKqVYPYkme2fnpyeD
hAvF1GjOQq8rWwGu8yUWcauQaBFBKD+HG5NMHdVz8EHicHf/K0bnc34+I0bn
9OS/gnTuhECfE6QDQN0dpWPrrPc5cp0UckKLFLaC2rKB09Rzkkie05NIU9R4
jJYvs/UUReVdU+lAroQPt7Rt7P6vIAh7vruDIFp3Z8fPXWD3X1EQbcDeEgZx
6yVqY3D7Z8dCbz2n2376xzDAa4H87o5g9KqHUb7UERyP0lrLnR3B0Sh3+unH
jJtH+WL/Pt7ZNmoRJexx7p+e3OLdvwklvvgw//6D/PsP8TNB34ZxvxcfgHyb
G/8GF350RHf14Ue0oHXs3oH/xqi8ffY2WMsrTUVWLRizVq2I32+GEyviDivw
yJZlLb1tVRS/HmPXXuS3OI9yAwagTB0k99ZYBuEeeeYbLIrHOY0uW62bLRWs
G0npQKyJqioB2yUWqS8Ib1KPCVZcU3AD6qYsEs2b6qBsadBsOjPCu87CNk3U
OXTzTrLM6PmKC51RdGkRqSJxwVVjx07umRyLpnyXFfdEd9dwZYHO37KqlHxe
1ynfATplrT7gvOa6zWLej6qihBJxajBxe3JAJXYE4t8l11I1LBTPohWbkmdi
e7/HNmIpcgSrNKvtFhuR1cYwyTlzbUFpgNgvKd0U04WEy4kRoYVLHNmbYalI
1/Ej++PnEh4dU020R1m4HgW6TOOpNO8JL7iNXWihY/3HTgVaTfE3JVy5EwQO
1XP4GIUR/JfNolsIwQ5TZQ3fyh3DkS+4KPmvnrHbBWq42EhUl0CxAi9nlE4e
rEHtS1mvWRanseJcclsEQrGHzPzFspy+k/rBlC5OX3JDP84vo9Fa58LVA1Az
n/iR4WvU+SsuwwLkDiP25cx9opaBFEYBlOgQo2IHBuJrrpvZ4PBcJ5SW4MPi
0UkmyrytaIoQIOpWlK3lat0ZX3cch5M3WnVyQxw515VWkqWUyOT4S3m2sPsw
23O16KHKJcEAtCv2RPVgAAcJtHGgS6wfSnmS/tOsEWY0yk5SFEFGK3/AkT2G
gTvmzp676pfXva1DmnmWycyhpUdnqd47ZzcbrwyRkLeyY4wKB4DnkeTxQntu
tfTbiiSGdiksjwIzc2r8DSDBdbZc7r6CNCBdw9YVNCu+6fqFy0eJh3p0nNfZ
waxwqtymD47tSXzTkkcMijU3pNLteUOsLVzi1yN7FXwOXLsP/82r4azY8slF
dLDWBH+s2Jwrx2kfjwdECCmcpus1w4MKLzHMKS2f+zdg73dxkGlieJVJ/0sf
o0W+QTUd/6G2NlYJHsHpXEhPp9pB4usmVFHgYNFl7DAWX+9j5eTcqQbB6rCj
QKhYsX9BnoJu7GZyT8lBxMGTNgfvyBPu9ktsqKxmXvXzQLwI3XVQMm+dI3vt
r0lkh/CXvO4fjfgfBWf0zYN73MkHe3mgjThLMaYo57JmjyjebY+SlkxJ5YEX
Mfsue4pzzLJyPo/QGt6dYmVXloPa8rN3xESPaTVe7XeQhdoOccgaF0l4W3sC
I1XfrcTk1qE/R2SCC1FTy61Q82954xePLiJGf/Hvjy6cJT34APPTwdCzoot/
3//68UWvD9/7SdE/URkXkbQAIs0FFZRpeYUNgJJDjO9it34H1lhagMMNrzMu
AKRbbEXO0Jae8KOmcwS1RMbFPokWK5F+vMQoKY5v5jUlN0tPRF+2x/e7RSfR
AukMUQxqCUXFo2w7Sa6L44hkMJ3BMotcgmKYTDa+DJaP6DGSVqh1QeVnfIii
Qw0OuTqwFJVUKgzjUCSKmre04sNPyksMqAW0buuZb0gNZBLb9Unitav7JHjV
GaOexSzyT7YuBMy2Re1kz6qHg5tEruwWf48kCvUlgC/EpS7MNmgRLjCblodW
Wc2xBC/4vmK+jIVtCekdvSL7AQXhACFfzcfJ8kLlc3G2ovwp3/UEzwyetsyE
RgPyP8yyw4/ZhnkAh/i15ye58c/Why7pr5T68cY/Wx9SYdSH+/S/h/jvPvzv
If6Lfz6k3+l//oGH+sD+Q/+M6/VfGFQWi4YcGBpZAtn/po3EoUFzEMoBXTig
/In52ssrcqtoqkOK0LnkQll8hZLznOQusc8olUNOPt1Olx4Z+001RAND2TUN
Y39ElTfwVYPDaw5aCN+dtaQxKf4GSHkaJLk6GGb2OZ2scL6sEkrDcSk2a0Yi
rzS20OK8O2pu9i3PbkqQod+YZCItgx4H/Re+/7dvdNCnFpYYDV6LqInhvFok
yfbz6dzrIIVqLB3exiDuuZ6321Ab6/alrBmvkpcjhiHphI1GExDd6kASuK4b
MhQi+nvNdi0dTg8O/0w8h3qZmKQVX9lmMHQXj77+9gJLBQFfHficGG9yYz2Z
w+hNvLIQWWZdty856Vky1lGVNcMqYANMZs/g76/3Hn+FX4dPBhd3XZoLS6Oy
PaENMyd5w0khWKQdeYgf8HEt7fGEXZrlmqAIUbxaaUNUBN2HP4JkCNCFLckU
p1l1MH03uDDNsIwAHj10Qeh7hSX7sYOZ9tzGdmZt9i2N0Hu7qWFw5WsNrpTA
aG5xEiKDpSYwf0ldKCjEeMAFdwilCwypUoU0apYTyBiuDC4OX95xYly3VMPS
tiC/UzdqdeK+lshiYX3Mw+5pid1yWao+om5hif+0prcJ6qxkYo5MykGIoHHq
eNVkLuS6Xhxsqx1A8fgRGG4StaWiboFh/SYFAGmiqUcm+LwTCj7syVHYU0a6
IVuNlyXbTGD5ZEiITJlaDAwVLkpcY3ImH7tOFCyr3TKpPyA7hm28YX0LaD72
Kc91dqnNgzyEqDgdyGvbYrqoSqyJZuvdlZLMTKRBerLqKByCZo1MPmZb9SMK
8NOmGHSyvBNSNJdZcYnC5JyQh7/2MVZUBKxb+Euas0cKzLwiGj7diujcOM23
puCcUHzuEi5DCguU5vQVQiAJiEKIJsGLlFiHK5KuPJSXHTdyyut6o2UgBfU9
Vuxuvkv5KnXAkREjSMAp549XkaQbE+0NXAQ0rY6Hehx+uJBA0XR2lbImyU6H
5oZ7UlC/9F1IUHkMkv4ktXQIplKYO3Ev3TRlUa44Lg+hC3KBww7PcqBRk+eb
+78zn6Bj21TYdFeR0c4XFSqhmHzGKZLVPDp2wGkzCIsMowuRljeanie5Oco9
2apD6FDG9V3JmvQ+nQqq046dDw2MGxH3X+WepbWpuJe4XETP6TGPSUK2CCmf
iv7btoVEmZCvne9gaDowharzM6kzT91DYbhg7NN65y+DLSN1yr4IDIhXyAi3
yN7wk4EXpF5j+1sxkz/66iVA6VWnKSNhlw8YjXKBMqqZc53Kru/WBU2iZzfB
gty9X7l4Hr1PQFY+dO2cwA8fdEW4IGlQdl+fT06YxPmSwtIRUwlf4gmfLxFx
l8qzCSd7kE1/d+VZ3Z6uhWe9saYsl+zj1XXKyt6tlKy7uZQsI3+7lGxUBdas
KHPcfcyU080b1cHRvp02hIMiKqthkV7JuZ8b2VaRmHOi4EsUmQgejvc5iOUd
/0rIfeltqyvZoBjkyaaIYDR8mQBC5O/IzkZpGeUKsyU1Qc8gOBuKJxl1pGvK
EkRUoI6cCGMy2bs95WA1X1OfRSytLRIwToxmAxiGaoNq0Hq9wKbinPKDkcdI
tbZ5hlUqUdCeb5b+Urk2FU3sqFzKVQx1MdZrp24vIb80RnevVX77RPQvCgq+
5iv3SLiXnDpbJEk8BJbrLVREZ4u5CFcxRsetEKlsIRMV9UsT9fTSrlaMN6GJ
0SxKzUOSlO98GhqOY+3hCn6rkFNItVCBDFa1VfRnyBzPLV56HrzgDpZImNhV
XlDTRHFgYCP6jKsxSDD1DLNukYawfh0DIUJ9U1H45bNvnwy9Eu4Nw1qSwSH/
pc7DyOKqnIkanfSoBv0UKQWiSpPVYtcj1IHHLstyJkEzwN0OAgXS1GpZC6Ic
wVsuYAraWTED9YQwYFTOR48AW+J8Oicdqn3q/SKlwgRwoBsxBrdQgI7pkunf
QvKaTTNvssLSgfq2Krw4JLpc0CLGXtRImrTgdLmURi60hyYR+LfKh8ja8+F+
dB+c+4kFDxprL17rIFJ3rM2Q8kKi5sIu6gb8ms2EbHnUMu3sjmIeQtNFahM1
3hF+3R0rGHSQ0iu0AxiGVAa+Lw8lSuAIpDLiziwgmCoKnhC8bJlx49fYQHKx
wT8uyIqL1tJVXmz4cFOxrPWy7TSAot2u2ZH091p7HF9gdfRZzgWJAZQvdc5n
+6P06nJvPfj65cWgbakqsmymeZpabaIpl9yctkuoNZncTZYb6WLDjWYtafJ9
t7udTwFNhVnStki+aAWJ3hr/2RekuyNrwL5199j23XPdlCsQR+Zh8GNetAL9
8d4X2TLZo3P5dbOOYh57g4/7A/f/Q/a1I1z/C8oNdeIUMUwRTYJRhH4LGli4
a9C2eL+1N4lCiqnAmvA0xEglRj+hlRmEpowiBtt4pkl17f7A6l9rda9Vr55F
Z6o+nc5mVNUMWU8ri0eY1LIs3xGV7XRXn24qMvi8Nt3VN2u8cP/qc6PWqfTI
iXrISM8VdMBj0TczAAuansL9K7Z0vqc2HQbMuVbHuTe0dexDbZWXXz+60CA3
L/T9qzV7kV1xlo2sCxi+y/Ecp1vup2FlORd/yYUBDrjOO0tdO5boDazaEAGj
BrCc22bqBQRSWNY5986GkyHhhGpPK9UOi1EDCpVLR8OHFqibliAL1NPAr8jC
yDn0yyxMRcU85xnKdvoZmcvZ9k9F9evkm4f/nduEl6vwqjBWQFaUmFHnOlOg
EJH9aYMHfMJaH2Ds6wl+gKyWvhB1EHE0pYAOGDhOTJMiMmNxClDy16T97iRz
XBCJI7AS6W+9NLXGYTckX9vGFtjGbbLM60VQFZ2qWyD9STRZS2YxLOqSLRiS
6EKrGiYLYPKa/BYaGEjy4DKbNz6+jTqdpdd498pg5+eq1TmD02w1oCKXyY+G
9jXy09AM3u/INKNnCU9CV1obS6WK2Ezrn1ClxbAAdgJJIrtOzg18GlO4PYjc
ZM+qMumY15rOSAb+jCaRwttpXxSJMmLkoeWJtYa0Pn/hyXfL6E2loYbmu/1H
30dGudbSYBxQeuSBAd5pcwx4VFhVUmovRFKh+MKvpcEcht0BIqNneoP9K3KT
jOg3s0exvrPQbGnGpadEG0JbqJ7eaxcd2DVqkaxlDMQTcaKeCJJvj8jmxd6I
uLyD+Zq6pJMbsUjeFr5wBj2hoVgaqxSW7+0GdzUUlL5Uczz3MB5O2vlQAdAg
8FsFjy6csa/nNXeUZNYQXFIUXQ4o+Prt8eGQqtJxEAc9iYd+fnjKbt7D89Nk
L6DQGu2h5N7Dm4kqn9b7GjgJwSITYu+MiPRvn/PAx6dXT76Gf74VtrMLuj0m
O1MmhjrHR6ZANZ7KVcVm8saFccMsGsmV7J0829dolp7vZfZnDzlq7jqvs46p
4JapfChYf9C7I15Pq6A2vM1nDm8DWUkJvbLd5tUk5gsxwWqACmY1Ic9QtFGs
QEaVoGKvK2Av2iVpyRYzuQhs7WPY/OCmiDlMMc0lBsWPiknfTFApEBplF38Q
uy8c55obKJpa0zSNRO0fa6DDkqpTiejD3bXIQFVkl9yaqXcALzqE+Cf0yoIs
wOFPY0kRbYU0UOt0n9PZ/hJVoMOyOHr/6dMwkdI6evNdoDq+To+qsGyFDwqi
veri0YXrdQTiG0MLg7btZPGIKFOYymKtYSfbRuz7xo899HcYicPehw/w/z59
or586v403qSrfMqGWylCQG2kxcsmnmPepW+ZFNp0pHGdTJ8JgmujVk0N1TGQ
/oXWMLMheWOqzU92IJCQ6Xmc+6SUg5zoBIa9urwFCWMk0lpy/bfY+0OF3OrG
fClRnHNwB38BYUNcc0sK+7WKKDhvhFAv8ZDdpOIoiKID87qv5gJTWW3y4/a7
FQRJoW9K+CfyFhzBAs/L0VEhcEtEJQtP9jJb7TVomyGUN26dbSuTretsiw/A
aFpwzuzv2e/awEhyC0M7HTovNXDNoks8xbN9odBpXW9W3NuSnBm5Bn+0bEgc
nd0a5KEwln1H4JbqiKRQaOUuarvLp5vmy9GsKtcsXsf3TjohCp2Ea4ciiDfg
YpVta739Q20r8aMLrSpJFaAw8SwKZMY3OMSTkZlxjxwofjpr/2Wv8kS9K3Eb
YQWe06qY0lgg9Y272EhKsjYGbIvBzUqI2iCI0Oi0KufoHjhsFeAVCW+05u8/
B/NMLV85BhkkGKCxqQ56R4BXCHZ4F1sPJobuQujBJzVU63Ro1aHOeDoM02ZR
vvd9Zyj87ZUCGS32jsv+jUyaHwUeq2U0mC/Fbi0+Ru00RpKeX66TKloqT8Xv
GF+1emfC8BNvMpYtuD5IhKHN9aAoVNYxO6OowfrkwWsuUKoyfbfzlVT3kyKZ
h1T6z34uRQSlwWmn/dUNflgbys7dPjZSq09UNq5aFl39p3LlovYbnC7b64Ki
EUxHEB7D9uoQhTYeJbxhx2nRTbuWeJQ4IXTG0XSEV0jEW+Reopnt1egUwNZ1
RZcQV0VX91CxFMB8xGs8kvpMsUci0Xts8dq5yD7IVFJq6cxiN1oUcjnLWRBE
YsXKgYup9F7XIajLC1zX2zPa0xoXgcm/8Z4Rn1PkSbARx6V+crB5yLVtM75c
00BRc/OnZZsz452J6cWehCqSyO/lZm/0mm24mzsWKEb/yRJtoaS7Dgyp2RPx
nQdxMkhKWgzoYQPuoEdl4FikjqudMvmluAWqFZ9ySgEbQiZZEnT9CWlGtp9h
qFPtVhjUcpmpnkstLlVOkIgr4iPLrRqMWviAQGLKQ0kWPL7pulliLkBxlZGN
mYOHvTczCMO4P59TKdQXEwCo6ukATSGhArDeT/yAvx87W3S3zykjlafE8a6F
yzWmtOZQNttCyPUKSNZwaJUhNDz0+KqWWToTzaN/PHTURUk2hF9eAbSFqzeF
mnL9+VDJbUkKpGqjYUFISFdc+73tuq+pRiQ3YFJzks29f2LalUowMs3kk+f1
jqjbVBZrbm4PKNTEu1P2DK+7HnlYipVL/U32U4YIIQpt4GgGWaS3Ybuu640f
YcEy4h/Dtkyu34pMDsdC/grRYnf4LdIZpQ/dDhI4yhVyxl54DDFDmq2JNqUE
Jl7mpFUem4YGIbY40i5ho2h5Et3Shxdwi4bYGuUODv8c9ODodkf12bVFWkkW
B6YFas3y4gn3weUQAASkt77GQNCCBxKbTfZH/2hLiSBfQZ0Cu2nPRiY0kul0
9HY0flwx3DEIOfF8M11Y1dw3vo8rKxbzvFrxcjt7VUjEV6PTSu42VHEGVXqv
B8V9ILJ0EUml9+dBxPGcviXEOPdTRupPWx7y6pSENGJAxk2cPgoMGu6+1XsX
mXjruR9s3cvMuJ5e8Oy3WrjZ4Wb6SJ1c7O2P6I0B/EKfD57tj3g+z+75hWd7
9LE8/rV/8UJh5wN9GHIf7kdXHzNxlBTOMjTShc6jsbTLfKXm+FSpl1ob1bJJ
147VSwbrKqcgYlMc0JdBpWYrGK5CUoF9SZgZxkFxg1cCWFRmW9qq0+g2OS7y
rKj8ozKSs2k00RBatPBV9KriTA9tiwJuWccjC+BGQpydVQ+1xx9VoCYXYX/c
Bhvo8RCM47ZWcaEjZ57vQspocVb4BB5LW8LSky0fCuO530nezpVVPrzDvOGC
GSh0v+4hOLRIdu6ItxKjlX22LJs0nEhALR1CREKUeQiqgQ/1HNBMgkl3cyC4
Yq7FD7v6MAGi7dLrARw1HAB2d1nkDbYoyOM2jMHlzPyLlq5lAIW6oBbbbNXM
GG8p+GB7Am+TVgwaJy8hK00xjMD1QMd3cu/szTrKO6LF0Ikddqs6gZ5cVBrY
q8FSwZ0cWaI8YLA3ymeOQjjTEIKZcPPKVs4L0lQMDmi1jRRf3ZkvyR4S1t78
ZhKIou4Czp21GwAYYkf1TNEDrBFib4tl/i7rhnfQNeZCv5ZF2/R6lPO9OYID
3DHptl3uNlABt6vVgve/cuRm0ZOQww8OKHknqzuFg4DRVZullkf31XxkuVxm
iQg9FphgUsRFE4acKIgmLanaRNfTlvQ2icTU1UadwNx+A+0FYuZU47WvS8N1
ufP5UC1S7fU0Pj4cCbh4gLSejR8ZF9Oqq5XMsVJzCMPoKYdj101z4DBIHtez
VIKmJ1kUcWff0PHbUQKqsnaPkinizrSCOjEiG85wJk5L15u/oBngu6dpystL
TRL0IULcsCxUc2KQ+NM30Gr3ZvJ1UyLMdHu+5Y3yksbWBzGNcF5rb40+7Hd+
Oh9TD2vgqCZdFIUsDm33BE0BoWgNBYSLrw4bjAkWWgrh4sWz9YXJ12h4ooFY
B/AKyO58yYhwkV+EFyU9N2zxjLMRqcQ35U8QrmBzKidFs203FdrVvWTvTNNC
GHNemCPEc1J8jLy/HpfDkXFIfv8x2dpoQ6NoMZRBygKh/KkDuFDy9R7Hfw40
zAsrGazQYZRc8DfcVeu2SFSJXhD1e6hXkHpwhiQvKdjkQ6j8hQo2806pNQ2N
E8jJMjvErNAHeGqO7MlmHnhw9FpnW2v90ZUZOH9BenqUxBSe0MuTKE+CmBhi
2Ljze5aD5bgkUKw31BVF0vCswUZ2+UITkkKddh8fEmEcB3tEeViTEN5IQrYg
hSdSnHCCAcE+bS4U0ugPvTXRgHj/qElP+c74Wc44DKW3PWHkoWTPTUvmYC9a
T7VxsexvCq93aiToerkJYr3N53YhAdjHveBFHNu67YbW1VJVKmokHuTW4HaJ
60aduc4IRAE7XeyiGlX4ormWBp+cd6XamkoaKy0l7UNBluQlnB+KenkkjM5M
/peoPfKuet+0d04nfLGD2xbsplqNtuMJN8lctJ5BuisTK1N0rFHDhPaye8bQ
faiv8MykHTSK3sSztUDX0vsXJVCDaWtMAlRRc+z3BW6w3I469Na7rsntqMqR
gkHy3g7DpWYStQmFPInSUr3VTcHbsT3sXkQEwSRoSzqu7dJG7YpImsAuIVLc
J5pCJQsuCocc5IWlxkMKx2I2hlmyoWHGbqrkm9h4XmKJce4TmTEGKLuijfEe
fNYhcNmL6ldgKBeGweRFz7zuhUg7+I5wK1z/xYvqGTOkBzTQHxNlYC+qwR8T
+uzZi2r04iJUMfDlMkI1A1lEXvvYheShHO+OYFwJDj/zKhFb5o2JskupO7F8
Nt5JgjCR7UTqhGeGmPGE3mKcb6jYq7GtVbQ4CSkxpuBJtsXEwmuxRPooGj5x
baNotWDXn3rRe7CAdHSNdKNWSm4xanH6cqoxa4SGWnRrL4oiIsrHTmmocKao
H+3aG4N8YJD2reyRcGlevzE3owJEc6L+ZCfMfRJtRzfR/XXWTGI+io/cypzT
pa3dK747uipbVYdPfvx5YeFnt4WFn/WHhWsUGjeQWXDU6NbHkrsdseTnoema
L9gnia+Uv8Eg+fBBotU/ESXaatAKhaPSvghL+yK0uSRXq/WktGS53aN/Fnn0
mfWTD0wStPHbrgbFfn4kF6JBoQUTTe+Mcz57y9lud17DYjzJo0I6HDRis5uY
DQ04AJ0zzFzLHr+RLkldERQDWZGSK0lhlIPNRIlsziay3ZC0tkvusq2HkoOi
tTzfdDlYaSIcaTVE4rBaMSmKh0/bHPfGS+iVIwcDVsiM2gVIr6HoJdMKuyec
Yrco8jSIkFF9NJYcQy/rriR7UyTGPYrYHyFGYUWQe7buNodU9M7qoyukXqhZ
SUcgM/CKJWEzIHdLszvp2cZO0PTFgty0jv5NcbO0sK+eTXVFZmA2cdeoEOdP
ch1XiZIWX6YjuTGiIMo4I4MjkAaMGn29QdrNW3ecEL9KDdtuAmgLX2nWvsYZ
d5u1H/1ajbt3zNqJCerd1s7Ro9PbI/BOVWxpTTfQHKZzwv3XgvsgBnvUV8dT
85u4nI5iEkoUlunoRM0aXI+jUWc2pvyKYVPYrtszmkhgpbVEb8MOt2TAZo46
iCoVuqh52hmVYhS7DiVzaW0JG1pWc4DfNZcuYnso+XVfAqX8885U4v6WdpYq
uxZVJidVFbSC60W5NJelVw/u6L6cM5i3rrlUYOARxsmBr1kUWnzzFWPt6yIm
ZxdtcqaOSz5XSlt2KEf9XmnLZz5tuYnTli9eXvhpJXO50czlKFN4RxOSkCn8
Wf3F7FtfkFH7WV3F/Fuf1VDsc/KLGXztBOPPme22hOu7dBT70nZin5GcfHsD
nLs1Q7o5QVnA2ZuhfB7do/Y1uifxxkEzUD6HqtyVr2xHtV+odz3VSlRGEBcy
aVvm2aMlJLodcy/E4ZXSlueBER/dXQDQSIhfw5edoAh3m2hkyQgZJm6S42wN
5RBZwWET7aUMfEQEUAqZwkc6u87Kn8lB9sZTtKoQ/O9aZOB2xP47SUdmUP2L
aMcXUo7/pSUNPuPuZ56Sti6+uXARHnckXy1bcD8x/dNM59GeqEmVx1Sjasll
JqZt2NLBgh6Hubj3WhLpvZ6wSoAOfejFDBPj4iIVZo8YO+fNhEZvSqxAWMUA
Pa30NQlCLNKILljgov7c1QOHu9a8d7HgVuwX2N3Y0587055fdQVATmzcRf/i
OhRYB1OK1BqCoWJoVzvQSxYfCFVYj6FY8pQSKv/M7RTr1sv4ZY0hv6wr5Je1
hLyNU+/qAdnWuJI9AeOv0/LmpnJ3AtyXd4X80paQnwG8v1/+2dUAcjdUy7pD
C9uNIfmFno6QfRGf/6EUsB2PGZE+tpdLdHbbLIIGm+j2D21mL1kOZCb26PTk
3lC3MpqDiJrrELXd0lCXXHJGrvihKV1ag0TlYJg0eJoRqEX4qEfQuful+MIr
8WUX4suuQ08Hyt2SzqxPR/rfdWPhrbvUW7pFppntVmeex/dFZJfkSEPyjg5f
jijP3JfQQFdZvtQSxPkKKwjOy+lGvCK2WDCVPkPTNLdAiUrrwm2j1BjsaAK6
UaGxxezs4Dxsm6uqAWbk1eByH1MyEzrKjA2lcFspy/8TdvD/Asvl5j9o2qeR
Q7EKLJ/n/DbnWTYjuYYqkQCRmFbbtYYA5L5hAKyRbVPB6DrZOnaLcog01yWm
St8yd1q/05StWZ5eFgwUed5JtDTlwGovFnYHUF4Wh3cZeBhCR6EyrmsAFEdf
TgWVKBd/yXkw5l0zoq3fSN41qlQt+7Zfip+NQeGz0AoslpWLIZ8V1a+So6fc
eixGo3ta9UC7tiHh3E86zRJNPj4MABhPQ0hW/rDtkMEoVY58mXJC1rjbhLSL
zr09SD/clzE69Ur8AFobgM8Za4hp2Df7xXbUEnB7HJ/MGWG+KETeaCsaNZ/B
5UAhPGj/ilgE7cMjJ84jRPk23LrY7IV9Fe7VGewf3VXSAh7YUdFi7F92xide
UJ2ZhJyCM8nP6poMvV9cdsNttKhItgtXkyJ3zw9PtW9Qtzi5LGZE5SkU4blA
CfqFD2ps/tn0PCspSB5A8qpGhfokQq3XKbXNW5MfHB6+PTs4PxoBJDy+seuS
KSjaZE8l9QKhdaY4cRjunXV7IuItRhvMdaR0Dk9Nuq7FyM4KEJwCGQ2Gf18f
ghQeL3McHo3U6WiaTCy3uytRUMSyt3HjHjxeGwnKEuqe6gw7ik7A8EdRzYlE
iyvsXDCFZoZ5o/XYygZc6w9R0FnSxaVnDf1rjT9OTqkIHhciONKUcSzDz9ns
WGfc5gJrQus1N86DqbD5zbrCWrchu7WOiosS7+tbQu2rJpM3Ggmar3IepTlJ
PSZiW9N0jaJwq70XFtnS+p0fPvzz2c+HPzx+vI94L9XRQ0TSCUxzwgH6Q/6D
hF9c5RsgZyxnL6iEwRqAt3fy5M1g6CtlEX2YLrKVZP1oSG/tbzV1YnErvG6m
vwlczqLVX4SqSmDO71Lk/2a7ZtDJUAgi14SacETrpHGBFthC+SV5s1mRXAKv
ckJuqmZSDbd/wUEzQgU10KGm9/K/Ze3yXd0Im1jUGWoqAcgi1B8hxWzP5Tuu
WtXA6or8t41UKVdiQ/Fi2mcM4wCxWAymd1cYVQsbvWSve6eJBObOGP2Atxil
C7XL7YSiYz59WWpw42ckiDlKlzjohH9W8HSfj97uwqsZD0bxzwP/T99P7xcP
XPJRjkel24/3AYq+2daB9grWbyNJ+GOCD2NHrnbLro94deVDBtkLsc3ze8er
dZpXrCl+JHCO+0bBfx7s2sWDEN6z9SvbNQr+87bIn+eV/PGT+b317I2j+Hy3
6I9do9x+Rg92/O7/wjN685RxCdkcjb+P/2AKtp/x/aPwOxKz8Be5iW+Ci/mE
jQ04bntHlCD1++3o+VPBC97SbTui2fWvVTbLN6u/e0e/9xk9N4f0P2D8R3ff
UXxGATBf/SeekcPlvgnhIyRftWMmUCn/CT8j5k3iU14wDYW7vdz+Mar7M/WV
ESiPXUu7kHrtaWVkRaLcglDnoSwyjjbbFL6Ludey78/zy1+Zq2x/fe6Vbnr5
kNsP1ewxUGJ+0rJaDTlUrGLlhoKqiPYBjfvwwY5+8umTi2r4sv0rYmHchYZj
z5jChgGl70VWu1hkJyhKsp03fy+ydCalXUPvdu/rJKHZpXdmJcPEhKWERHcb
tJjMc9SImq1It9gvtp/pPNjJb3Z/02U6H3/axW8+nsI3VmY/oIZLddJDoj/m
8rfENxp2U+3G/c4ojeUUEaPAb35WyNBXjFt9a6lbzCH8XrZus/n9Zug+2PlN
Z0fnT01n1o//DalQPxGCb6TmCP35798qvZIdESiJQn/cj5aqRAh/ByJFPfYQ
9WN23YVuvOHWN/tfPya9hFrrrVNqXtgL3RtHWb/TeiaPIur7u0H39VPTcg/h
4gslxdD9SqBbirTwkpf2+TsKL8IfVFY4+fbJ4HNHCS/+B2HdyVNT+g3hcvTo
yM9v4HL/o3RYXaTrDElBXjwVfubkxjV32xE12sFmkjhK+v4pFVH6PU/6xB/1
g+Tjo50nDf83+ieMrkxe059v10/lLz0jAcyYng124DZcdJSPJ/DYK1RI6qcG
XyiCW2fcAd2wlhMPMv7rd4TL2Z3hEt2ALlzOsvk4efMbw+Xx10+EUrVHeYn0
gG/BrXD5Bw+YCEZwG/d4bhQk4DUd8/Z7ZM8Lv0FB6OVAoCuD3j6KoZhtiS6M
+XudEQlmyQEWilAW70BZS7CUoxj82HKHRJuEF1+KmJ0de2SCwbR9bsUXytzE
Tw9c8t/oHLlHYEoyIA6q8pxL/iFJhB136pe1ozNJ5rxd6MSDE/Px6DSrRgeY
j46X5g2dRT4PCKkFTUyRhj/CXfAlpvulxxOVHunexsIj55dYU8qhZMumEkf8
Exaf1IKIuE1rFdNo/euSZUF0rpZY/Tr3topZxqFoWr7T1eVyw65ZOpXHCRvG
8nE2Tl6f4Cm9PoOb+IaKog3x3ye7Hnk+dFxReJFSIomUk5d4YO5cxkp1004k
Ofd24XJZXmK2bMtGYzKHavUl+zoP5AkiT0zDQXhOc6MkCD2nvrj8dt5sGJjj
Vr80Ap1fR80WU9Y3MIaWQ3mlqZwpgUXVurmTN0KDSrVQUyo+Jz6ZyQaNORK4
ngJqRHW0xJbnS2bVmzVtqazUQaWdv044tRfgLamZmBjlrrhVmx4l2q/9ZUxe
mT5gLXSiykO2TZhzB6I3BT+3NBmNnUpw2bIr7UvFt027l5IXy/YfxjsOuiPS
0bUaZTml0xSdDXoK9zvLKccagGAmcdEk6mcU7Jl5+yCH1GvuENx3LWWX3LuU
bl732t4HNKx+/91DMqzm83atdbzgGCSq5fNhlJk05uRahCwuECi3A56bjIK+
L7QpC16yxVGzTRkLdWGmFMyUbg738oiSwhASYucNmq0fgLaDrpvR+dnByzen
r87O0cXjU5Qj8lJL6z9s6TYTw28aVRXi0zBF2GHacnYjemD+k0NnJUCJNUtR
4GVn4ixs962Lq0Xp81peaJI5D3U4DaQsvDT2w8aHb1dDRAjRbjUhLaIokTKH
jinaZ1GaBeHVOeLbTBbrA1ZoNXPYesW9a8xmXjHpMCUg4xqOWJseoYh2YRid
733YYzgeznYr4a6Irs9rGnImJBWYLueWXLkbmv3uEak27bqpS4SgzoCNHk3O
hVAo5/Sfj0fPx3nWzLH8Ugb/pOvResXFjbR5ySQXW/bcVy4NqdvkO8xrF7pU
tC5cG0PVn5HOZnVodOvRW9BeElK2Jhuf6jBqVXaxZiwzZkDICPHo2a+fS2+U
+aZBeQMuKJz2gZS94KXjWdbTTV33QTHkhEanhI4sStrjD5xm/xAI8Nvzw1PG
7TTgkm8VGtfDID+dtgpZlUXOSeTaPpZqtIVASUR0KpFE1e+nGfmx944LuFWj
54dUxlQzi8wTtcNHQLLBR4hAUWcn7rIYNaOvJWWF7gklpqO/WQ1cdjcxKt7o
X5GgLyy6ns18FXHdrNb5lMD7pGabFhejotjOKuVmWo0WFjAXzPmu6ueWV7e8
UyBfpvmyDlUlIgkgJt6IdOF0hdrYk6XLI0nh9RQYlLxm9jx2B0nUjBZWMA8C
XEekiCDb6h4r6EkMase2WgmfeKmY/kqLLou8EkcbhBnS42+4/+SUy0BEQDtV
WzY9vxMK3CC2JeuyweALqjoXZ7ihSOFfGgGxySojg1GvdKYzyEzoJZLLOOzH
1ApmNlOHhbYkRU2mWwLHpSYl5YrcttT+Bq8NiB1D1/Hk3XiIY+xix7EDLbZp
Yn1qQ1/iXhpxJBKBmsUncmdj5v0wQd++hmfdwJrlMvvOAyJwOqC6XG1Jj3aK
nKcqmGCGQA7vtJZ8e1/DWj3XUl9v4l3vUan515zozfjoKW5JHFG4KR505OlX
R2s3TEu7eXeiFDTxGwM+XCh1SU3QvC5xhxXSjcEbtyxJZMjkIWTijbRp6gYl
MLW8yquy8CUFqQ4uU1EiURzNwlxBCusz69TZaqb1+BE9Gson8FH8gevuu54m
P2Z9/CpieDlvMq6uDbxRm41IlW7NwQS1KVTi3dVdAqvvEOPkyx4lmu+88XLE
fFyIZyGe5K9c/5JSPC1qYu1OWp1SBLgeWBU3fgpOKVtyhQgkjtiuRqKLGbbR
Ar1ojSNl0rYWpKwGF1NxgmmrSIgyXp/wX8mSCbdAtEH1BSUenfRggxkVjVJv
EzDAnTYccRYugkIFn9ZVLvV2L0E6A3HiEskNYUsd8u55kcjYpM5s0HHa1ycR
ZRDBHMK5kILSGMzhEbku8aJTwZkamzJNt91D5abLdQgy2UHNcbhiFoRYLkRr
TtUXhP2JezP58BYqzFIWPsSFWz7iIN2YBxAno9vGfc2xqbBPn5VumFIMxOCf
KNbEeKnQgdJry2tVIAgFuMz54S0KlfupfAYzZJX9serGptCxAs0Usk2qmQuP
e1JraAV129whKqRdHuNuEBSk4anECpJnC/mPJfDWEICXn4qX+b6LOlvdJj1c
JbEx04Udmr2woOjVll0TU7NCamgXSd5dBYEwVT8+eYMag+kRydiSk/sMFRLe
LYkUwnn1nmuovmcMgEfXGRB6xCe+ZsjUPbBJ2PMXqabYwOTVGokniS1otjyg
9zDOD44rK7C7uFxjbB3f92yn9ntHH8J+2eXyikKQJIGcm7ig+vcuX69NJDYb
T2pTwMh3zaxcaArR9wZeOhI8uJ1BXPKGaOhry5+wHytfQmb0SjxZzmwNTu0c
aa1cYnC9qdbUep1qIOELi3TmWOKZNlyJZkk9vPCJtMqkThrXtanTeebNTX7i
pjQbzAZRX0ZeuZfHZfphPABhPeuVsm/niwdiVYC4ZWoIfVWFtaKzqc2gcKAZ
t8PBsRQRWBob1VkhnfJ6OSxqpOGmacl6smHUm5rKrHqBuB+zQhswEhDk3IQ9
ENN77U0AHPtHD464EGTvorT/sCNlW8tv+K7IDBmNbvZ2PD145Z2CFbE5w3lU
9sVnIiRiGYxbx7OgHVXTxMoG7SaSdQmfVlSXhoOf26ROSTcOJ6USgfezkTJN
ZI9UHJB3RmGjTlq0rLS5EC4cr24L5z2rAR0de51UObcyoQ55iNyyTFumXOUS
35NlGdoEqoKhPaSpboUJZE0x+wLIiLQxioGuh8L0g0lXCACi99E3+moyB9wK
1fEA2yQAfig6RCxHmahHrP0hPbEy0rykqhF2w8IUCBWgJJPFlMTgEjKmZOv5
OVks6BHU9kgAxnAsEn/FLOjMG305hSMchqpotOgrfD46PTv+y8HhvwnrECOK
QwhE+0OCcZmVcPbK1LTqJxnKaiZUQAWxnCq3uruS6jBUnQpuEtzI49MwSMkG
mAn1n0w4vLehsiQg/QnXknK7sJq4xtcePvhXrMtWDQxBoJ6JIgxRf9NanTwq
CaJt6HLRBCGsl00rdzebDPyQTsqoH87n9uyBTLTBoQg/6kHie9wtooJVzr1E
xIVPMSpriMDS0PxVWr9jqkm037aXCQMMTWAsOvzS5WUJYsRi5WtOLnGT2MCr
nGHUEy4i8skICreQBgmCM8XiZGIxY7IzB/UDKRfuOe8US2kXXO7ON3IHwZSN
1diAh+up9qAulb/nk/UGU+2Z583R8PcS67VoWsdBSMVhIITar0Ea0PbXCn6+
a0jg3wHDcNSJXd0oaAWsMBLdFB7j4n3TiuLMtBapMTNKOWaulFsHm12cn8c4
mnB76DrY5xAz51h0r7MXz/3h+ayiAoCRzMhF0DuvcQEaTzU1UH1GxYJ9UyZe
HOjJcBFVGOa2pijDPZdW9PhkewLJlPoln818gKBXBLgJdmg86DTQsK89A3XK
KlegMvNVbuXrcgq+FF7Ge1qlI7Y3tdNdvfGPWwxmBllzDSWnmwlSN1+vFclM
m1A0398hvlLR7lAe8IxLQgRpTaZMqmCVuTOYwQ/oCKewt7+qEftA+k0Bf4AA
n2UrLiZIalt4EpU7uiXoxsGer6kn50FygAPOZzEITAkVMsR4OoAUpmzEdbV7
U9rdIgSM/gGd40x6w8UMp4lHx6yG66jDA4XpptuynWTvGbVmpmarMxUNMrJj
5/WCNSP2z+ZXWO+xY0QtfR1ZjLssGtaQATnJwIfUgwpJm65mwRgQjGiUUZdP
c24lr/LSaEReZ1BSqJrVdUqbrxesxAfdGgthf/jwD+gU/eab78nu+xLNNl6p
RWWXvDSkOxjNlDd1Waba4EjqSKr7E8VtJzW36cw6Djt/ZnhzQBjISZqnDkF2
dM4x87Siq0HpHaWTwalN9bPj5z5jewU4w2G4qT0xKmqGKMeiNNyiZb5Ar35P
Fx5sO5IXFJmCOE4Gv+za1ZvJiJ0Z2qABySF31kFFn31ksRE/dnqilZJ9hZJ1
KEHLeaOkTO0VjQYa7BlyB7QUO7cj6AfShsxFQAh+jlZTA5ZSpDEMhkH4Li9X
ZY52HenWjG/sarasvm+bLkjVubnBkBpCnF29xATZ7+Nj89lRtCq2IWFkOkkB
akXSQtyIOMGAo877awyz3UqvEa65HLokhBZ9DfYLEFvUHEbOKkC/IiqZD4/k
WCggvQR+/dOmMe1ltUIeBUpI3zR0n5EcyBTYLK3OYC6m1aSaIOoQy85F1CRC
KZ2U36PGR90V+TZUeU2WwYjwMwB4FcF/FSyVXkusM9/XtYw4CcClkwMtTNd4
aXAVSIiRWkn/YirZp9Ngv7ZlOuWC1i7nysz0xjZBEVLkJwJ06OAm3C3nfhvU
DhMximzTaP3kHK3uYoBWqAgWNt2yThbTBa4xZppIkI8PXh70uLSsrXOVvsvk
VPHciM/ja+QWO0R9GbkzlgVHw0moHbbOyjVHxLMS7n1UU32HNFMNDdH5qETm
i7TCnPzjBaiyw+QIA89rJPor+nyc4+c/ZvLxGGgmvvT/gGKRHFTv3pX2lb/C
p+MUP+28cLTCUgBvmmwNdGWYvKqQugyTDD8e1/zxjyV9qq88X+Ww9uQ8f7co
i/JqmJyAQPVmjYTiHFFbArlA/m7kkR+B26IpMpsh7vM495ODVtNS6cq9AZrv
o0BYiilJTuajI+L5L39Sg1BexbAcJocLak4EEtovG5h2ldKjUTVwdvacMOsE
tCMjUT4tQf6Zot6DZjry+8Hkf94UfyPzk+NTFB8JZuSzrRGj07JrdryBtrOe
b5YgLVyKNQUu6P8HbyfSeskoAQA=

-->

</rfc>
