<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-mcmillion-keytrans-architecture-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title>Key Transparency Architecture</title>
    <seriesInfo name="Internet-Draft" value="draft-mcmillion-keytrans-architecture-01"/>
    <author fullname="Brendan McMillion">
      <organization/>
      <address>
        <email>brendanmcmillion@gmail.com</email>
      </address>
    </author>
    <date year="2023" month="December" day="05"/>
    <area>Security</area>
    <workgroup>Key Transparency</workgroup>
    <keyword>key transparency</keyword>
    <abstract>
      <?line 34?>

<t>This document defines the terminology and interaction patterns involved in the
deployment of Key Transparency (KT) in a general secure group messaging
infrastructure, and specifies the security properties that the protocol
provides. It also gives more general, non-prescriptive guidance on how to
securely apply KT to a number of common applications.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://bren2010.github.io/draft-kt-arch/draft-mcmillion-keytrans-architecture.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-mcmillion-keytrans-architecture/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Key Transparency Working Group mailing list (<eref target="mailto:keytrans@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/keytrans/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/keytrans/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/Bren2010/draft-kt-arch"/>.</t>
    </note>
  </front>
  <middle>
    <?line 42?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Before any information can be exchanged in an end-to-end encrypted system, two
things must happen. First, participants in the system must provide the service
operator with any public keys they wish to use to receive messages. Second, the
service operator must somehow distribute these public keys amongst the
participants that wish to communicate with each other.</t>
      <t>Typically this is done by having users upload their public keys to a simple
directory where other users can download them as necessary, or by providing
public keys in-band with the communication being secured. With this approach,
the service operator needs to be trusted to provide the correct public keys,
which means that the underlying encryption protocol can only protect users
against passive eavesdropping on their messages.</t>
      <t>However most messaging systems are designed such that all messages exchanged
between users flow through the service operator's servers, so it's extremely
easy for an operator to launch an active attack. That is, the service operator
can provide fake public keys which it knows the private keys for, associate
those public keys with a user's account without the user's knowledge, and then
use them to impersonate or eavesdrop on conversations with that user.</t>
      <t>Key Transparency (KT) solves this problem by requiring the service operator to
store user public keys in a cryptographically-protected append-only log. Any
malicious entries added to such a log will generally be visible to all
users, in which case a user can detect that they're being impersonated
by viewing the public keys attached to their account. However, if the service
operator attempts to conceal some entries of the log from some users but not
others, this creates a "forked view" which is permanent and easily detectable
with out-of-band communication.</t>
      <t>The critical improvement of KT over related protocols like Certificate
Transparency  <xref target="RFC6962"/> is that KT includes an efficient
protocol to search the log for entries related to a specific participant. This
means users don't need to download the entire log, which may be substantial, to
find all entries that are relevant to them. It also means that KT can better
preserve user privacy by only showing entries of the log to participants that
genuinely need to see them.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<dl>
        <dt><strong>End-to-end Encrypted Communication Service:</strong></dt>
        <dd>
          <t>A communications service that allows end-users to engage in text, voice,
video, or other forms of communication over the Internet, that uses public key
cryptography to ensure that communications are only accessible to their
intended recipients.</t>
        </dd>
        <dt><strong>End-user Device:</strong></dt>
        <dd>
          <t>The device at the final point in a digital communication, which may either
send or receive encrypted data in an end-to-end encrypted communication
service.</t>
        </dd>
        <dt><strong>End-user Identity:</strong></dt>
        <dd>
          <t>A unique and user-visible identity associated with an account (and therefore
one or more end-user devices) in an end-to-end encrypted communication
service. In the case where an end-user explicitly requests to communicate with
(or is informed they are communicating with) an end-user uniquely identified
by the name "Alice", the end-user identity is the string "Alice".</t>
        </dd>
        <dt><strong>User / Account:</strong></dt>
        <dd>
          <t>A single end-user of an end-to-end encrypted communication service, which may
be represented by several end-user identities and end-user devices. For
example, a user may be represented simultaneously by multiple identities
(email, phone number, username) and interact with the service on multiple
devices (phone, laptop).</t>
        </dd>
        <dt><strong>Service Operator:</strong></dt>
        <dd>
          <t>The primary organization that provides the infrastructure and software
resources necessary to operate an end-to-end encrypted communication service.</t>
        </dd>
        <dt><strong>Transparency Log:</strong></dt>
        <dd>
          <t>A specialized service capable of securely attesting to the information (such
as public keys) associated with a given end-user identity. The transparency
log is usually run either entirely or partially by the service operator.</t>
        </dd>
      </dl>
    </section>
    <section anchor="protocol-overview">
      <name>Protocol Overview</name>
      <t>From a networking perspective, KT follows a client-server architecture with a
central <em>Transparency Log</em>, acting as a server, which holds the authoritative
copy of all information and exposes endpoints that allow users to query or
modify stored data. Users coordinate with each other through the server by
uploading their own public keys and/or downloading the public keys of other
users. Users are expected to maintain relatively little state, limited only
to what is required to interact with the log and ensure that it is behaving
honestly.</t>
      <t>From an application perspective, KT works as a versioned key-value database.
Users insert key-value pairs into the database where, for example, the key is
their username and the value is their public key. Users can update a key by
inserting a new version with new data. They can also look up the most recent
version of a key or any past version. Users are considered to <strong>own</strong> a key if,
in the normal operation of the application, they should be the only one making
changes to it. From this point forward, "key" will refer to a lookup key in a
key-value database and "public key" or "private key" will be specified if
otherwise.</t>
      <t>KT does not require the use of a specific transport protocol. This is intended
to allow applications to layer KT on top of whatever transport protocol their
application already uses. In particular, this allows applications to continue
relying on their existing access control system.</t>
      <t>Applications may enforce arbitrary access control rules on top of KT such as
requiring a user to be logged in to make KT requests, only allowing a user to
lookup the keys of another user if they're "friends", or simply applying a rate
limit. Applications <bcp14>SHOULD</bcp14> prevent users from modifying keys that they don't
own. The exact mechanism for rejecting requests, and possibly explaining the
reason for rejection, is left to the application.</t>
    </section>
    <section anchor="user-interactions">
      <name>User Interactions</name>
      <t>As discussed in <xref target="protocol-overview"/>, KT follows a client-server architecture.
This means that all user interaction is directly with the transparency log. The
operations that can be executed by a user are as follows:</t>
      <ol spacing="normal" type="1"><li>
          <t><strong>Search:</strong> Performs a lookup on a specific key in the most recent version of
the log. Users may request either a specific version of the key, or the
most recent version available. If the key-version pair exists, the server
returns the corresponding value and a proof of inclusion.</t>
        </li>
        <li>
          <t><strong>Update:</strong> Adds a new key-value pair to the log, for which the server
returns a proof of inclusion. Note that this means that new values are added
to the log immediately and are not queued for later insertion with a batch of
other values.</t>
        </li>
        <li>
          <t><strong>Monitor:</strong> While Search and Update are run by the user as necessary,
monitoring is done in the background on a recurring basis. It both checks
that the log is continuing to behave honestly (all previously returned keys
remain in the tree) and that no changes have been made to keys owned by the
user without the user's knowledge.</t>
        </li>
      </ol>
      <t>These operations are executed over an application-provided transport layer,
where the transport layer enforces access control by blocking queries which are
not allowed:</t>
      <t>TODO diagram showing a search request over an application-provided transport
layer getting accepted / rejected</t>
      <section anchor="out-of-band-communication">
        <name>Out-of-Band Communication</name>
        <t>It is sometimes possible for a Transparency Log to present forked views of data
to different users. This means that, from an individual user's perspective, a
log may appear to be operating correctly in the sense that all of a user's
requests succeed and proofs verify correctly. However, the Transparency Log has
presented a view to the user that's not globally consistent with what it has
shown other users. As such, the log may be able to associate data with keys
without the key owner's awareness.</t>
        <t>The protocol is designed such that users always require subsequent queries to
prove consistency with previous queries. As such, users always stay on a
linearizable view of the log. If a user is ever presented with a forked view,
they hold on to this forked view forever and reject the output of any subsequent
queries that are inconsistent with it.</t>
        <t>This provides ample opportunity for users to detect when a fork has been
presented, but isn't in itself sufficient for detection. To detect forks, users
must either use <strong>out-of-band communication</strong> with other users or <strong>anonymous
communication</strong> with the Transparency Log.</t>
        <t>With out-of-band communication, two users gossip with each other to establish
that they both have the same view of the log's data. This gossip is able to
happen over any supported out-of-band channel, even if it is heavily
bandwidth-limited, such as scanning a QR code or talking over the phone.</t>
        <t>With anonymous communication, a single user accesses the Transparency Log over
an anonymous channel and tries to establish that the log is presenting the same
view of data over the anonymous channel as it does over authenticated channels.</t>
        <t>In the event that a fork is successfully detected, the user is able to produce
non-repudiable proof of log misbehavior which can be published.</t>
        <t>TODO diagram showing a user talking to a log over an authenticated &amp; anonymous
channel, gossipping with other users</t>
      </section>
    </section>
    <section anchor="deployment-modes">
      <name>Deployment Modes</name>
      <t>In the interest of satisfying the widest range of use-cases possible, three
different modes for deploying a Transparency Log are supported. Each mode has
slightly different requirements and efficiency considerations for both the
transparency log and the end-user.</t>
      <t><strong>Third-Party Management</strong> and <strong>Third-Party Auditing</strong> are two deployment modes
that require the transparency log to delegate part of its operation
to a third party. Users are able to run more efficiently as
long as they can assume that the transparency log and the third party won't
collude to trick them into accepting malicious results.</t>
      <t>With both third-party modes, all requests from end-users are initially routed to
the transparency log and the log coordinates with the third party
itself. End-users never contact the third party directly, however they will
need a signature public key from the third party to verify its assertions.</t>
      <t>With Third-Party Management, the third party performs the majority of the work
of actually storing and operating the service, and the transparency log only
signs new entries as they're added. With Third-Party Auditing, the transparency
log performs the majority of the work of storing and operating the service, and
obtains signatures from a lightweight third-party auditor at regular intervals
asserting that the tree has been constructed correctly.</t>
      <t><strong>Contact Monitoring</strong>, on the other hand, supports a single-party deployment
with no third party. The cost of this is that executing the background monitoring
protocol requires an amount of work that's proportional to the number of keys a
user has looked up in the past. As such, it's less suited to use-cases where
users look up a large number of ephemeral keys, but would work ideally in a
use-case where users look up a small number of keys repeatedly (for example, the
keys of regular contacts).</t>
      <table>
        <name>Comparison of deployment modes</name>
        <thead>
          <tr>
            <th align="left">Deployment Mode</th>
            <th align="left">Supports ephemeral keys?</th>
            <th align="left">Single party?</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td align="left">Contact Monitoring</td>
            <td align="left">No</td>
            <td align="left">Yes</td>
          </tr>
          <tr>
            <td align="left">Third-Party Auditing</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
          </tr>
          <tr>
            <td align="left">Third-Party Management</td>
            <td align="left">Yes</td>
            <td align="left">No</td>
          </tr>
        </tbody>
      </table>
      <section anchor="contact-monitoring">
        <name>Contact Monitoring</name>
        <t>TODO diagram showing user request going to transparency log, followed by
monitoring queries later.</t>
      </section>
      <section anchor="third-party-auditing">
        <name>Third-Party Auditing</name>
        <t>With the Third-Party Auditing deployment mode, the transparency log obtains
signatures from a lightweight third-party auditor attesting to the fact that the
tree has been constructed correctly. These signatures are
provided to users along with the responses for their queries.</t>
        <t>The third-party auditor is expected to run asynchronously, downloading and
authenticating a log's contents in the background, so as not to become a
bottleneck for the transparency log.</t>
        <t>TODO diagram showing a user request going to a transparency log and a response
with an auditor signature coming back. Batched changes going to auditor in
background.</t>
      </section>
      <section anchor="third-party-management">
        <name>Third-Party Management</name>
        <t>With the Third-Party Management deployment mode, a third party is responsible
for the majority of the work of storing and operating the log, while the
transparency log serves mainly to enforce access control and authenticate the addition
of new entries to the log. All user queries are initially sent by users directly
to the transparency log, and the log operator proxies them to the
third-party manager if they pass access control.</t>
        <t>TODO diagram showing user request going to transparency log, immediately being
proxied to manager with operator signature.</t>
      </section>
    </section>
    <section anchor="security-guarantees">
      <name>Security Guarantees</name>
      <t>A user that correctly verifies a proof from the Transparency Log (and does any
required monitoring afterwards) receives a guarantee that the Transparency Log
operator executed the key-value lookup correctly, and in a way that's globally
consistent with what it has shown all other users. That is, when a user searches
for a key, they're guaranteed that the result they receive represents the same
result that any other user searching for the same key would've seen. When a user
modifies a key, they're guaranteed that other users will see the modification
the next time they search for the key.</t>
      <t>If the Transparency Log operator does not execute a key-value lookup correctly,
then either:</t>
      <ol spacing="normal" type="1"><li>
          <t>The user will detect the error immediately and reject the proof, or</t>
        </li>
        <li>
          <t>The user will permanently enter an invalid state.</t>
        </li>
      </ol>
      <t>Depending on the exact reason that the user enters an invalid state, it will
either be detected by background monitoring or the next time that out-of-band
communication is available. Importantly, this means that users must stay
online for some bounded amount of time after entering an invalid state for it to
be successfully detected.</t>
      <t>Alternatively, instead of executing a lookup incorrectly, the Transparency Log
can attempt to prevent a user from learning about more recent states of the log.
This would allow the log to continue executing queries correctly, but on
outdated versions of data. To prevent this, applications configure an upper
bound on how stale a query response can be without being rejected.</t>
      <t>The exact caveats of the above guarantees depend naturally on the security of
underlying cryptographic primitives, and also the deployment mode that the
Transparency Log relies on:</t>
      <ul spacing="normal">
        <li>
          <t>Third-Party Management and Third-Party Auditing require an assumption that the
transparency log and the third-party manager/auditor do not collude
to trick users into accepting malicious results.</t>
        </li>
        <li>
          <t>Contact Monitoring requires an assumption that the user that owns a key and
all users that look up the key do the necessary monitoring afterwards.</t>
        </li>
      </ul>
      <t>In short, assuming that the underlying cryptographic primitives used are secure,
any deployment-specific assumptions hold (such as non-collusion), and that user
devices don't go permanently offline, then malicious behavior by the
Transparency Log is always detected within a bounded amount of time. The
parameters that determine the maximum amount of time before malicious behavior
is detected are as follows:</t>
      <ul spacing="normal">
        <li>
          <t>How stale an application allows query responses to be (ie, how long an
application is willing to go without seeing updates to the tree).</t>
        </li>
        <li>
          <t>How frequently users execute background monitoring.</t>
        </li>
        <li>
          <t>How frequently users exercise out-of-band communication.</t>
        </li>
        <li>
          <t>For third-party auditing: the maximum amount of lag that an auditor is allowed
to have, with respect to the most recent tree head.</t>
        </li>
      </ul>
      <section anchor="privacy-guarantees">
        <name>Privacy Guarantees</name>
        <t>For applications deploying KT, service operators expect to be able to control
when sensitive information is revealed. In particular, an operator can often
only reveal that a user is a member of their service, and information about that
user's account, to that user's friends or contacts.</t>
        <t>KT only allows users to learn whether or not a lookup key exists in the
Transparency Log if the user obtains a valid search proof for that key.
Similarly, KT only allows users to learn about the contents of a log entry if
the user obtains a valid search proof for the exact key and version stored at
that log entry.</t>
        <t>Applications are primarily able to manage the privacy of their data in KT by
relying on these properties when they enforce access control policies on the
queries issued by users, as discussed in <xref target="protocol-overview"/>. For example if
two users aren't friends, an application can block these users from searching
for each other's lookup keys. This prevents the two users from learning about
each other's existence. If the users were previously friends but no longer are,
the application can prevent the users from searching for each other's keys and
learning the contents of any subsequent account updates.</t>
        <t>Service operators also expect to be able to control sensitive population-level
metrics about their users. These metrics include the size of their userbase, the
frequency with which new users join, and the frequency with which existing users
update their keys.</t>
        <t>KT allows service operators to hide the total size of their userbase from
end-users and other outside observers. It also allows service operators to
obscure the rate at which changes are made to the tree by padding real changes
with fake ones, causing outsiders to observe a baseline constant rate of
changes. Note however, that this information is not obscured from a third-party
manager or auditor if one is used. Since the third-party plays a crucial role in
ensuring correct operation of the log, it necessarily is able to distinguish
real changes from fake ones, and therefore also the total number of real
keys.</t>
        <!--
Unresolved privacy aspects to consider:
- Whether hiding that a key has previously existed in the log or not, from new
  owners of that key.
- If you see 5 updates, is it possible to tell that those 5 updates are from the
  same person or not? Does this need to be hidden or not?

Please add more topics here if they come to mind. :)
-->

<section anchor="leakage-to-third-party">
          <name>Leakage to Third-Party</name>
          <t>In the event that a third-party auditor or manager is used, there's additional
information leaked to the third-party that's not visible to outsiders.</t>
          <t>In the case of a third-party auditor, the auditor is able to learn the total
number of distinct keys in the log. It is also able to distinguish between real
and fake modifications to the tree, and keep track of when individual keys are
modified. However, auditors are not able to learn the plaintext values of any
keys or values. This is because keys are masked with a VRF, and values are only
provided to auditors as commitments.</t>
          <t>In the case of a third-party manager, the manager generally learns everything
that the service operator would know. This includes the total set of plaintext
keys and values and their modification history. It also includes traffic
patterns, such as how often a specific key is looked up.</t>
        </section>
      </section>
    </section>
    <section anchor="implementation-guidance">
      <name>Implementation Guidance</name>
      <t>Fundamentally, KT can be thought of as guaranteeing that all the users of a
service agree on the contents of a key-value database. Using this guarantee,
that all users agree on a set of keys and values, to authenticate the
relationship between end-user identities and the end-users of a communication
service takes special care. Critically, in order to authenticate an end-user
identity, it must be both <em>unique</em> and <em>user-visible</em>. However, what exactly
constitutes a unique and user-visible identifier varies greatly from application
to application.</t>
      <t>Consider, for example, a communication service where users are uniquely
identified by a fixed username, but KT has been deployed using an internal UUID
as the lookup key. While the UUID might be unique, it is not user-visible. When
a user attempts to lookup a contact by username, the service operator must
translate the username into its UUID. Since this mapping (from username to UUID)
is unauthenticated, the service operator can manipulate it to eavesdrop on
conversations by returning the UUID for an account that it controls. From a
security perspective, this is equivalent to not using KT at all. An example of
this kind of application would be email.</t>
      <t>However in other applications, the use of internal UUIDs in KT may be
appropriate. For example, many applications don't have this type of fixed
username and instead use their UI (underpinned internally by a UUID) to indicate
to users whether a conversation is with a new person or someone they've
previously contacted. The fact that the UI behaves in this way makes the UUID a
user-visible identifer, even if a user may not be able to actually see it
written out. An example of this kind of application would be Slack.</t>
      <t>A <strong>primary end-user identity</strong> is one that is unique, user-visible, and unable
to change. (Or equivalently, if it changes, it appears in the application UI as
a new conversation with a new user.) A primary end-user identity should always
be a lookup key in KT, with the end-user's public keys as the associated value.</t>
      <t>A <strong>secondary end-user identity</strong> is one that is unique, user-visible, and able
to change without being interpreted as a different account due to its
association with a primary identity. Examples of this type of identity include
phone numbers, or most usernames. These identities are used solely for initial
user discovery, in which they're converted to a primary identity that's used by
the application from then on. A secondary end-user identity should be a lookup
key in KT, for the purpose of authenticating user discovery, with the primary
end-user identity as the associated value.</t>
      <t>While likely helpful to most common applications, the distinction between
handling primary and secondary identities is not a hard-and-fast rule.
Applications must be careful to ensure they fully capture the semantics of
identity in their application with the key-value structure they put in KT.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-normative-references">
      <name>Normative References</name>
      <reference anchor="RFC6962">
        <front>
          <title>Certificate Transparency</title>
          <author fullname="B. Laurie" initials="B." surname="Laurie">
            <organization/>
          </author>
          <author fullname="A. Langley" initials="A." surname="Langley">
            <organization/>
          </author>
          <author fullname="E. Kasper" initials="E." surname="Kasper">
            <organization/>
          </author>
          <date month="June" year="2013"/>
        </front>
        <seriesInfo name="DOI" value="10.17487/rfc6962"/>
        <refcontent>RFC Editor</refcontent>
      </reference>
      <reference anchor="RFC2119">
        <front>
          <title>Key words for use in RFCs to Indicate Requirement Levels</title>
          <author fullname="S. Bradner" initials="S." surname="Bradner"/>
          <date month="March" year="1997"/>
          <abstract>
            <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="2119"/>
        <seriesInfo name="DOI" value="10.17487/RFC2119"/>
      </reference>
      <reference anchor="RFC8174">
        <front>
          <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
          <author fullname="B. Leiba" initials="B." surname="Leiba"/>
          <date month="May" year="2017"/>
          <abstract>
            <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
          </abstract>
        </front>
        <seriesInfo name="BCP" value="14"/>
        <seriesInfo name="RFC" value="8174"/>
        <seriesInfo name="DOI" value="10.17487/RFC8174"/>
      </reference>
    </references>
    <?line 482?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA6Vc65Ibt5X+j6dAxlUraYqkIieby1QS71iSE5Uty7FG60pt
7Q+QDZLINLuZRveM6Mu77LPsk+35zjlAo0mOImddlWhIdgMHB+fynQswn89N
H/raX9mLL/3B3nSuiXvX+WZ1sNfdaht6v+qHzl+Ylev9pu0OVzY069aYql01
bkcvVp1b9/PdahfqOrTN/NYfegwzd8X7818+M3FY7kKM9Ex/2NOLr17efGGa
Ybf03ZWpaPgrs2qb6Js4xCvbd4M3d1f2V4bIcUTfW78autAfLsx9291uunbY
n6H6wtD89EB1Zezc0t+2L341d74ZaB5rH37fWiHv4juaJjQb+2c8iu93LtT0
fVrgfwTfrxdtt8FvWCz9tu37fbx6+hSP8vrv/CI99hRfPF127X30T9MgT/Hy
JvTbYUmvf040fPrLZ798Kky97ZmJeKQm/sS+mGGpjy7k5UVopy89/ah9WWz7
XX1hjBv6bduBZzSXteuhrmV3QVHlGvt69VrG4d+9sGIpP+Y5/mOD7xerdmdM
03Y719P6we1vv3j+m9//5tMr++LNqwXR/Oy3v/7db5/qt8ZAovLTxsznc+uW
kahd9cbcbEO0JG3Dzje9rfw6ND7afutt77tdaNq63RysayoSTPqG3iFK7N71
9KGJ9OVdW995/IqXTOX3dXvgsdq1PRH6x1/ePMGjzm58Q6PVNkLuvAiM3fkY
3YakAjR3jmgcmI8zJiDu/Sqsg5IXVWDtvmv3vuvle9fzj/Rd367a2tAfd6Hy
cWFf9dbVsSVpuKMndy0mFRpmtqEN3Hc+rrqwB5vsZgjE+ZW3tNZte2/71gih
NfFiv6f///KGvqR1iIZhsbQvO3ocPwdSZ2JTXAi3d6Gqam/MJ/ZV03dtNTAT
jfncr0GGaw427xGNsCKBWHrr36+2rtkIb+krEoZ5387pH/pz1R32Pf0UD7H3
u5nt71vTb4lztLQh9nZLZPhmYb8IXexntF/EoFXYu6aPulX6qjyubFLGdndh
5Q246vq2s/ekAkzkfljS0qD2vAUH+iVuwYYhevzT+ZUH92QbwXSyKm1TzVg0
dFybx+WZY7vz4HAVaLfDcuiZCBqvnMwRYzeRt9ZMlsIbnqjABgwNeO+FZu9W
W9vSSx1txM1hTz/VtHU9RJ6lvvF2eSBe3cEQ0SK6aAeSX1dhptBNF4zdjmG3
p52sAi2VlkAcoMG9zKEDYPeq9r5Jw+ysi7YhzhBPusPM0sKXB2U4JL2cIzTz
JSSdqcdejEuCYCw96BRBrBb2O3mKVkKb3bW02JkpNnBkdON9xQsgqSKVihAc
+lRu+qrtsKRyxTNzvw3EwJ0nBR5Va2gq39UHUKJiyAZBFY6X3zY1rxBWULhi
3MaFBoLmyEWRiHhHWliR5u4xUNsow7PkGPOX9t7fEVd3Lb2WDYNKLS2Z2E56
HTYNtGBYbYVC2uA8yKhBZun7e+8b3aJ1DZXeksnZbO05jj2K/BU9OyMBtaF/
hMH6zu/IABjv4sGSukIpM4+Jn7UbmhU0xcJK0iLJSLrV7cLegLIQZ2fnMuBY
2oq1u51KvmxB6O1tQ45NbVu4g4jz70QGGccY21Wg72j72yPVEeXlhdMi3GrV
Dk3P37aDbqj8hAlqX23U2NIvjWG9hgjT6kjyiR9tg6lpvXkDsXmk5GCWGL0k
vU72nrbyvBuIcBxRBJjWv6xpHtKMzv9jCB22+qwswxL3sJoY206Vh9bJAtlu
OrffirbPVQ5JStgkVnOWTvJqC3vdHMzO0QChHWiDyTbDibiqEv1gqXJ4lJZE
cqXugt4mPboLMRDJbBbq2rBgzUCD7NjKEeuE7WIRPCtD0qLDI1qBqHPBV5LT
Aw3s79PqJzYQwrQVykRZdDMXVlWFpl+ft+Dw1rt9H8VKkl+D4yXDm9fcyotY
6rprd/KjKAuZZPKPvWEbxzJM+7Ui0NiDV/aCJPCWqALZF0lcaUMJPLgGMADC
RBoTiG3CBEdsMywjJIHzdi0mb2LpYK5hlMi/YxfBI1IQn2HFjW1hGsgdg2vZ
+ERbB9Kf50ADa/YDZiJ29ocfFBT99BOI5N2gwUKzqocKyyEvu6Y3A01kskmD
KHjAupFHUABlXSJC/INAlFXpcKH/IRoxo8JT8jyPejbLeK30FhiWnAtmmSk3
d44FjvB97Gm4AMBCWkBArWJzlwgR+0fvEkX+jp5USdmN2Kcw5bRswRkAcgbg
BwZPtQoWhvhF0sjKEslBi70/kRa4kWOHbEhRBoKR9GZaYvRiSGhjCQU9h7lo
xFhg718AdQb+LBuPwAJRRrQXr9+9vbmYyb/26zf897cv//ru1bcvX+Dvt3+5
/uqr/IfRJ97+5c27r16Mf41vPn/z+vXLr1/Iy/StnXxlLl5f/+1CLODFm29u
Xr35+vqrC0FMJU4Gm8WfMiom9rGBiYR/ASKXAto+f/7N//7Ps1+T2P2C5O7T
Z89+T3InH35HGJ0+EHxoZDZmtHyEfTAwVq5jo1bDq+5DT1sIW8/bQbCUgAex
8/K/wJn/vrJ/WK72z379J/0CC558mXg2+ZJ5dvrNycvCxDNfnZkmc3Py/RGn
p/Re/23yOfG9+PIPn9UkUHb+7Hef/YlE6PLy5QiGX2Yw/HyClt6KFby6vDRX
9npqYGJ2LAk1wLvCO4iC0t76ZkMggreeXP/M3rX0+IyiLTjqlnGcwD4A95gC
gHF6tlBQk1eQkMb3s+wTY2HYacDCZx1k5oiQiJ8+ohpyx5JCtp9QTvJA7A9o
JAhjA+9FWC7sYcWApIRbrNkv/MgSKFrFn61CO9JCMrb7loYRb1qFDcRuSkVp
l3wAC2jmiJ1ouxwCjBFK5Xr3oQhmMjaPxBszpftVBXvRH9Jm0gv/GDwrDn6f
J28c9LkRElUpfMnY57HCm46jL5oRYQDCEaCKJALKmfjkXyGdtlxANUCARAg6
BA/t3yNCDH0tYMfH5Jin4QsN+JjIQqzCwaGvJOiCDBQzNxt++slkCuEPTSAM
oaC5ouGWByYLqQd7cU00+IuZOh19L/MvaJDdMxLTh3lP3uG5p/ZauJk2JNJj
dTEQqcNHcS3xrBAqEAonxj6pwRtEdwTAcfUJpQzYePjpvlHk20Iu/XuHiG2W
sJg603J0iumGmjyrJxBYs9PD57AfxYkmwWZwWoZi6S0ERuL+GY8Khj6Z5EjG
CC4D2CYPS2MplfYxDzaj0IEswP4JM1jtln2j6G3UVvLLO4ohSVg3rgnfCwPZ
TKQ0B085zZ1I6qRd9/eOpZ3W3Q4dJs9BKaRPsKL/ebvG9E4g1lftJosEsBCh
6+/BY10T+THAP4jHmE/pkXtjyNsm+nMu5DFAOBKApc0krTzRb87rNKeSvGDO
TbKUlpFLABgbGM53Q6OWTOFXDR4LsBG8fzgbjAia+SbhxDd3+N3fG/MFMLQj
Bvf3muUExid+ICycAXutW3E5FLHUsNNziTdtmT3UlZkVcBfJ/gmnL2ccadLw
DiPJEEmTtm1diTxI9pEMOWY3q3Z/YPUkWFFymrXo/b6FeyIusheIhXu02TOS
ZWEhNLu2CmvSTcRjYugX9p0kQVpCb6E5k4k5ibs98iFG0i4a91BsA4QziX6a
6iltSYLK5wIkWhPPILFYogTWkpYlESARTzrc9PQ/we3EEASDoe9rGDuil3Qx
7AIehp819Ma9RO8amMoop3oOkRJDNDrvwO8tvSSYDFQ9ktVfJAGZJAtPRASi
E2VnEVzTIzQ3rXR+52ryfWD3khzMwshCQ0P/9MUDexf4a9Wq9Lw4pJnEMMk6
9gq6KU4R/iezlnIBVsYUtzDJjOUtp+UM+4ptCI9Fuyo0sYCSMtyndQjX8IXI
zA3cGt7nIKVu21saiWfl5A8wBcVj6WXILk/AGZgDUkp9GrncdVQ7yArojl1e
kuhcXuqrYT0zmgblTHqtOq3js9aMWyOQHLh7qCtOom0VhsET7Bw03EiqiRUk
UMzHOyy5DcZTxG4ywNWMCxwXklAgBOI7CRyxaFoz00Z8MKf7LDHJyPcLrP+i
SAbpoAgVNVFO/mgtcft9gKAYkqqqheVv+yTOKQUkbM3xqxjMtutzcC1hrMAR
QZlGch9kGsqct2TCDrQwhOnEY6SI1qxFnM87HVnha6kLru68qw4MlhlOSZA5
1K7TDIRC9uOZadNJ3gZvYMQnqUX/PoiXEejMT3Y0uSQUiTnX5VAMbmEdgY67
ZSCqu8Pxq91QIxrOa6QFS84omjGLpcBDokWyEprQZ1N06/FOAoEzhfZY2eRN
o9KhWhoFXY1JZ837cFLpYk0helPFC45QOF+tJQsZEk7esIlb2MmKNaAjXITY
PGVKIcVi5vG6Zv41hyVpDEN6JU6WrMkKqVpoQog7tjCd/7sXFzWuEoJMfgaI
/cBgmMyxGnTim4vE0OJVqB/td+3XKaFRbvoCHpgh6auxPBVpMyMqCqshRmH3
Dz8kaZu36qZ/+umjPfFCymRF+gTeU1hfVMWQIeDKAEL55BhK6CFpR+KVyeZG
x8s1H0JFCnl1+2HKXExkXhnzbGEBErkkSgbtG99JBJqNCPRn1GQ1KUfW1I7W
FCVH9WDJfEL6db8SMCpGLAyxSiTLGraPhjo3ibtDwZaAH+lyfmmefoWjEvUs
UuQcVdI4xP4mjiUKshwNe38xjhAlB0MC57+WRB77AfMpuPSO/RG4dF1VUZ3Q
1EMmmeKEG8RO0NN5Ms5OZb9ue5+0Yiol7PMwlXgkziwzu/OcNuwosAOQraXK
iudgnon5A8kBKEJ+sVP/nr2ns0vXA1Tx/oktkKkW5ldY++u2CRI92O+2geCN
iAxP8k79NJKFhH0V3oq4lcUq2U8eh1PVWjNTcVq6FTcKcPYKpgWInh8kfxWk
5Lokyuxq61e3UeRMUw2KwNVcK/hnpORtwkkUqZOWwSAFCc1kGwQFRdkXwLlE
T995DcOE+eQN1CfzsEsUgHau4oyJmNH7RlRNRZcZ8KHSiOSlo7eF+grAVLXl
pM8U1801NqsKz8f+EfU1rw746KfkeuKxxyFal3W74pACMBzhrwgsgjvIDXsP
X5GduHnz4g3ZI7fp3C6ncF1KZSf1/jiKjZC18X12oRwVPlUrTWJtPvnEvpGE
/ufYg0kyzphXjIVRV+jDDhmwVtNXXEizx6GN1Cc5RLdFhYFdHxARsAd5JcJP
2VkpQBnVbybuy0FAqkAromgvbekEbDsDcYTR06yrOGvdZFqvVkfrbEnRRjPm
DgU7ycgmp3QICqyQ/mZ3B7MRYQ8RMOXhitINRj1hwpaQxJiocMyCZDwEGxAF
jwTPbep2ycEq417CNFrm0/il58EkdVyUqwkEMKXbWVZLTZG4VN1KkbZk8nhI
1r9SURiOkzZxjRGJBtLgqFWcDPNgPk4rtgI0XH3vDjnG4mIH+Nj0WcwJBnER
aFzfSr1sshDp0WJNk8EpvjuwpTJIJrsufM9rZKaOJQ12Uep7iWLGrOMeqO0t
RJJr7gcOtwUKihconsDfXtSsUn2RCGLo90MvYO5QLNnkJaeKDjmbo00l+Ka9
Ozn1w6EcCS30lRSvlxp1jtq1AokSgy4AEsFWcZSxGZf7QkR5Coa1j75eE2mp
KMZDykjs+m7yuBgwKsMNd3YocEBsQcHXQ6U+ck9SCyxaKGiOy0sCuM1hR9tq
zj5/Tl+IJd99sK7IfTI6yQYGaH+anmgtaS8JRohbM0Jd9mPsRlj9ERkfyQ1J
fopmQx4dgYrokZGOnGRvsd+8U3AaJbnksRpfzyB3DXC95BC23t2F+mDwzH2o
+u1csxSzFHHYSBCyERP/129p2RUntXtXs7PI1QhOOCZGZR4fs8mlhK5gAnZC
ml08MVIY2sCDjIPJIsQVq/KOXD0BASp9ueRPzDWJuWxzMvFnpojgEAe1wtkB
jQs9Z9EzN2GJNCUvwY0olihBUEsdI9ryUpHaS9NSNgPJGu65fQuutpl3fj+Q
f8UvGRayAQ1Rcj4ZTSq65+A9bn21eNA7i1XXTdPMwGZ00pPV/ZstdCTJjQje
PpUFSr1CqPRi7M97TSISM2M4jmFAQPpOUhAl4sNP9zAvhOmBpfAzDTZHaWN0
4uAVgS8zeuQdBldrgRlldSey49jWqyIs7EvoIV4VZ1WHzRZOdxxW/QPo17y/
WqbVIed7FJdhbtZagLvjICyntVK+WDLZ29BV829cR7bztWvchidC0oienv58
TTsPicWPwHD3rS1aH3n1Yj3KNMsJFWyWa7+Bd0WGgwMLWlmGl5xigUPpKn7g
UCa4kkwCwkvxKplpxBKRQI1khvucXotx2PlR/x7kSjGhvecgn/w3WiTYvXVh
dcvVfEkuChjEBo+9NCRJQ83FR7Yzug9gnwzKDJoxdsp4icHaWIIVvxc0A09h
hiRwzQcJx99j7jkWUfi4IiNejaQtz9WwewbIduqbSw6kmH6GVlCvtujA2TbD
DQ6wlhuaEInfMUEnCzoejBimKBAbTTsiQV1m1XkZnJ2Ms09hPwf27u8t98Kq
O0Lq2ABXrHqpcESN4LjTIMPaoqYxG/f+mLecB8cCI8ezuU0q5pwTx7Xaj3hO
SWYnAzPg/qdLYFv0UZSbdomkfhw3QuWJ7CeMyL3H/09E0IE47o0iEdwgsyg2
kILoaHRfeKasLN5nxMTGhitsXBpLcB5G5LlK0escN19ezjQNqdaYbDU7brZ7
MTtbJWy0I9Il1bRTA3DDuRCx1KmVlamUKDSxp4jOxxB+bGpSu8Q9T27HhXFk
acF1DSrQV92ycLo6BR1jt7NUZbjWwlxB7ol4MexTiIS0fIHEuYeyRiwbh6C1
mNGRcCQshZuc/6etc92mnNPvyehwGZj7Uxmr3nNOnukm48/Czgn0NLbW34+H
jjvYnqPlkENHW1uF1MNxecSkxGsSFrUWEUXbH4/9qtX/frRv0y5Pif8MPwnE
4m2lz+bH+QP//Wgf+mV+/A6NYk8lUGn5urXn//vR/o02ofhMo5xT5DOPTkaZ
TnA8ymjOft4oP1xZPkXzx4vn7Y64FaIkH48d7oX9ibMQp+t/AG6x8KZEyKZN
JegjAzjT3CunikyRDkthGufnFjz1OaapYWfsfI6nR8s4NZZihcXAmX/FwB3V
19eu6EQ1H2PXrGS9irmRbhrTRG0OtNuEOzGRpGujAkEpw6QYXXID5+hF0F0U
bIFuXDw0q23XNpwHnE3KwLD+BS4WoCnxGFTUFyceRpPIbd1OEiec7Fmh4dUZ
AiokaI0ngKMkn+bvP4zdT8TJnUcrLnPH5AYlZcAIJogqSaeii/xz5Hs1qEFS
c5whMa4x4wpP5XFUvwckstDPE5mcgFCphjP1QP8msern+/DU5lr78zCdU/CR
i/a19sZpTW6aF2WOFsGRRItVxU2lQEIlchmz7+SfUh0nKfMUdnL+cXlIbbsK
BI2OcGopShyau69JT97rqaWdTm4mYJj5nqt4fEbiaIEPCd3HWrCyysBt50aI
0pYImV/ixUR1lkLpcknnA+2fB0fD9x6x4/WYhSxypIxvmZcaF2cgfBL/cS8e
R++uOZjcYVEYWbcm44rKeXySmgsx8CZRMQK048HH9vecns+VJy7/aLksEz7T
Fi4a/t4dEgxKeVXzgbyqtuRyKrjMreaDH5p1Y25JAp7YJ5lvLp8lJJ2XVY3r
klhKRCO1V+b+tTimTPJzyG00h4ISnRLsTKrKGSxpsyb89OgOcBrnxb4bCZX2
HtnHDxJZpu64BUG7vaVwnCoADB/9eyIwcAyKhgopRSSa0ExijBYIT9NMaTdz
B4Nuq5D30J5i3tTdJcXTm5TWYVrzwQwKn7sOVvSoIFckbFmaUetEdXE6TD7v
gJI2wggpOxBRoZLGIloagUQv1UsNB6RirjXv8YRVlEY09qhHowBIS+Sp6dWl
zxkrrg6dQ/1anZ2wH/s25h2nOVZOeBUl2x0QrGtYRY5LnLLtcpSvdwdD0SI6
tbGnfIhkCVoQI+cYgwlgtZZFimeYLpPfD/DNho8+nMnPoWOjRme1dnHh8A1p
p6s4UsihUK6KI4eeFf2sveAUiZyU0fITJwtVbdmI1SSxkmRdovTBWRetdTPd
5dkIbRqQAEX6ZJJrKBpVClKTCyroRIQDBzb0Faf8tGSey2CcgU+EYmtm044Y
mmUdNtIFSoEPSalZpoItTl0S0TUUSFr6EiJJ+cpU4ZGDSqnSp9BNZHfl7ihk
yssmttwVBgIFH4i8ZU/CHrVNBTR1J+3aFCcKJ8e3uN81YHe1aYTbw3puW5/A
kxHMnliNztd8YqUh3Z8/hHYw9llonpJ3KXe2HztupWT84Qza1L8/TTitatl8
aUrN2DGpNmgn3z/Lqs3PxXiTiP6U2sJVk69So87o2eZuFtXpsgPvlvt81Hyk
fuGz/lmS7OQJu34mBEzyJx+xy6BBOiCkOXhm4MfGzZ7nFpRxfVEqb49TGQSJ
eeYs9ORJQmRqqEzqu5YDWJt2Yrfb9Rq2i61DU7A9J/O1U+BEyEIuMWZTDNVh
JHHe/kkTEI1BbrjPfMfbOHOv3tO9D7thd2w5l3Jo/JQ8E4r5T7qG5ig1J32f
Np5qK93UBqTzwo+D57ynlWwyjjmU7wZx+Qo8iaHJZhAGYIDKnSYZc3OLxkKJ
WXdS76wTvk4O/awT+9Bb3SpE/6HjhHMcBziNNmnYqwd4XbtNglJlZKrtFaK0
qAfOBAyCbQwTWkU+YxOUBNjkmCQk+0YP15U4GsRN7PZYNPnyZnbSd54CZN2i
VAfQWMEw2ESHAmvVpMmbAzey2DXytUdtleVpZj7FTZrdGG5JlHeUH2NNjHBA
yp9JcD9JJk+ay5fSKeB6Mz2JPBOOqX4+QlKD2xcBWVKGTRpXx97IdIoSjabw
x0DXjIVw1B0tMGU3rfSVpespTlV3PdrGlEN2VpGIwFONYVo1noxS35LJIqbB
RX+YtLRwPyYjuFkEvgLxKFqRzc+hIDleNd65xU6b8InBasJ1/OPGVhgGOUeC
E7lJdMRFKcgV+cybmg5w0UKXh6O+2ujL6zdY8BjZPxCm71sYLe2Zpe1IiCeQ
ORf8queo3ce0b/IZn5SkZT7m4j52mAy8CtPs2OIxvkEfla6haHbNoRKHZ2Nj
wKNYSFXqNVLkpfel5NnPQEUzGYmFkmRw7IfU6Mnz7uSGt6QMcgabTbB0hMpF
D8dLGoHg+SXZkyWlsxUmU3siqpPWlHyITu06SdfbE+PEMO1DFqowTvt2P9TS
dVYT8bUhf0hQKI6KE4poGnuVHtBD24Imw/d+FFg8jo55ydurv0jNQlKQRzpI
OPT3NjRj3ubsw7lzXKroeshB5mJhYPuk+n9qq+Eo0jUbfYvjlOfJ5c0yRQEU
MF3s2tCjsk3mQVpSi9tsPjCrocdXg5ae5WxXn/oRNIXoGEhUvnTPfDsJUmcM
KXH4Ux6WNCVfUIH+zBlJ3BDZEgh1slIlkdtTo+dQkFPKOI7ONBDe1wG1cXY7
dsClDtojjwWbrmupUtK7cOUm5a/gRJOnXvPRjCCQcoFSy8qfAPN9DcyGSyMG
nFSzJJpwl4bP8BR9f6eHQySp1mdIDFtadIlUIjADeohKHgr1BQ8nR1HH+EbE
ZKxOYQyjovaHX8zn5l2DY3x88VKy144BSDoEwTtyRbjnO/WN21BlOC7QH3mr
wtaITUoXOUkGk/2ptlGSyuCsLJr8NNxLznAOI3ZoB877/HsyDdy1TyzKjZ6Q
MV/XaZ9xUUl+mCUxpQlxkhbpKbkXQ6n4zL5o020h6VYBsiy0rMrnZ4z5hgxZ
5NSvBOd9u4ex4Bpgyq9yrh9OLzQkGldPzHz+J0CzT+xX3t2yH2zLePB889C5
0gVOEadkrojeTLb3UczZaNrJUr6J3tt8qcdk0KK3s7hsJGvb2NPEZU5GFWdo
klxHiWB1IMEnWdrMKG0ivYIxYiEPbHWC2vczom7TLTssrhBtlvQyCzgJBET8
b73fI45e3coxIT9p1xUH1fmUjKyKllldVMw986dL47MlOL+f2vDFo2kxN3fM
56NNSw+r5vO0tJ3xdmz7/M9vvxCii6Z+bo8oS2EjWdJWF/qdHsT/4H6p4Mw0
HhEpGq+c4TVJO+qBL/rKzYmnd+RIygld62ll6YKTwgd5DnMyg0yCAnltTboF
q9xAUjggzcPogcaxO4f+I5PuhhtbExE+cjRxci6l6BuQMsMrYDnwS2b7s97D
RiESRYOOf6gVdWuSCuEmSp9gaBxTT6OxY5OTABGeyjeRuQ38nWakpvj8zDlL
+y7KoKGYZmYmx4HiOKZLLD5i7ExkZFqrMnIalRRkG/ZZjx467N4XjWtK7/Qq
grTAnvQvpoPYxLCOVvFcL9WRjCkpQaVnEEuSirsETDpJzQ6PE71LLx1dl3LN
gPbHlRcxXBZqei+9KY4rZwwGQj/I5UEfvsaB1B0ayhHCBhcO1dpTVeBebpCb
HAd7rs7v6ITrEYuy0pTtIVDndHOCGW9OkMNY6/DeV/lcrKRmSQpz5VxCdn4k
Z7Q5PV3bd+9evTDSL1UEEQs9l4Nv8QT5I8jxMtEw095fWLaSO1KkMel4WHG1
k47tciebBlRC8FlTgf2Usmudyqb56C/nIdGlBupGDIX8v5MO08e8HfkFehyP
PkEmamgmzaoPTA8dJlsXOAjwkvGfXC1mpleLLdMhoBSqMOP0LrYUm6Sz1xpt
RD2M68x4ZWR5+iP1UCF9Sirq5eIk4bpkYKxoOC4My+Fmi7Cd3rrFNUxQwSIW
u0/nhPnGiOIuu5DOXpTJntxoLMfKCpmJGnbLiQzDt/wR3EMxqQx9Z2Dh4SiB
xAlObVhHg9hhz+OzFJvJ6e5UNhliCmrevbKPOV1Lm9z4KhMlNyE42WQ5Bl/J
NVu5AySlYtzkTjhJE7ILReQ1AjuUiFrJdx4e3aGlJONRlWF4/JvjphVQKIfF
Yr6bCSXbHdu7LBfSnnZsVWAaUnd9cSsINrw89pJbJz3k0tyT4MCDEf46kgP7
z+XgbY0ODtTLLy/TJR4nN1VcXoJNwg25cSDZgXIVgj9Iu9B40acjbgv7+E1X
SDAbdz48oJEHGxM53ZQhXUkqMdRFI9sz2bli27hP+om9tg8uIR2Rl2w4SnfH
J9uRzsz9Qen9R3F614NeWzFe8cGeU/kX+UrR/zcHp/w7KnVNL/Xii5BSB3oy
MtXg5ag/N4syoQW7EofGW0heirzELDBJI8crdwRImfJ+mTiTm4lin61sToSU
oEBcGO55qVG35uqpNLFIhyaSaUicHYorClM5X7Y7X2F3THqKQ3j85eEk8ZSi
Nlz7ucC1Lw/vT3GDQpILU8hFSnDuhw7XkLA2TRu7jteSJUmJNqdTPixM4n1x
YyBxbOvr/XrgPlfm9pnLfMVOp+BI7mNlnGbQz8slkMQ7vnIn86HYKHXnjiwz
AX96bL7G7RW4SGBxdAGBAi2ANiUsXy2C3nKuha/cvk8ZnkjOBpyChJlCqNSm
T+xSYtuIcsfrgnh4nEvjXVFUfv31tX0+OV9xfHP0lmtv8qSewl/oZdMo52CU
61U6SMsBkfnhSoTcV3+8WFMs4S9+0jYntyqO3P4fAlHjHkZdAAA=

-->

</rfc>
