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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>


<rfc ipr="trust200902" docName="draft-lcurley-qmux-websocket-00" category="info" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="qmux-ws">QMux over WebSocket</title>

    <author fullname="Luke Curley">
      <organization></organization>
      <address>
        <email>kixelated@gmail.com</email>
      </address>
    </author>

    <date year="2026" month="August" day="03"/>

    <area>wit</area>
    <workgroup>moq</workgroup>
    

    <abstract>


<?line 28?>

<t>QMux <xref target="qmux"></xref> is a polyfill that runs QUIC applications over an ordered, reliable byte-stream transport such as TCP with TLS.
This document defines a binding for QMux over WebSocket <xref target="RFC6455"></xref>.
A WebSocket binding lets QUIC applications reach environments where UDP is blocked and where only an HTTP/WebSocket stack is available, including web browsers that lack WebTransport.</t>



    </abstract>



  </front>

  <middle>


<?line 34?>

<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?>

<t>This document uses the terms QMux Record, QMux Frame, and transport parameter as defined in <xref target="qmux"></xref>, and the terms WebSocket connection, message, frame, and subprotocol as defined in <xref target="RFC6455"></xref>.</t>

</section>
<section anchor="introduction"><name>Introduction</name>
<t>QMux <xref target="qmux"></xref> lets an application written against the QUIC stream and datagram API run over an ordered, reliable byte-stream transport.
It defines a binding over TCP and over TLS, but a WebSocket binding is out of scope for the QUIC working group charter.</t>

<t>A WebSocket binding is nevertheless useful: WebSocket <xref target="RFC6455"></xref> is available where UDP is blocked, in web browsers that lack WebTransport, and behind HTTP load balancers that cannot route raw TCP or QUIC.</t>

<t>This document specifies how to carry QMux over WebSocket: the message framing, the subprotocol negotiation used in place of TLS ALPN, keep-alive behavior, connection close, and datagrams.
All other QMux semantics (in-order STREAM frame delivery, stream identifiers, flow control, and transport parameters) apply unchanged from <xref target="qmux"></xref>.</t>

<t>This binding is application agnostic: any QUIC application that can run over QMux can run over QMux over WebSocket.
Media over QUIC Transport <xref target="moqt"></xref> is the motivating use case, but nothing in this document is specific to it.</t>

</section>
<section anchor="websocket-binding-overview"><name>WebSocket Binding Overview</name>
<t>A QMux-over-WebSocket connection is an ordinary WebSocket connection <xref target="RFC6455"></xref> whose binary messages carry QMux frames, taking the place of the underlying byte-stream transport in <xref target="qmux"></xref>.</t>

<t>Both the QMux Record layer and the WebSocket message layer provide self-delimiting messages over a reliable, ordered byte stream.
The two layers are therefore collapsed: instead of prefixing each Record with its <spanx style="verb">Size</spanx>, the binding relies on the WebSocket message boundary to delimit it.</t>

</section>
<section anchor="establishing-a-connection"><name>Establishing a Connection</name>
<t>A client establishes a QMux-over-WebSocket connection by opening a WebSocket connection per <xref target="RFC6455"></xref> (the opening handshake over HTTP/1.1) or per <xref target="RFC9220"></xref> (the bootstrapping mechanism over HTTP/2 or HTTP/3).</t>

<t>The <spanx style="verb">ws</spanx> URI scheme is used over an unencrypted transport and the <spanx style="verb">wss</spanx> URI scheme is used over a TLS-encrypted transport.
Deployments <bcp14>SHOULD</bcp14> use <spanx style="verb">wss</spanx>; an application that expects a TLS transport when running natively over QUIC <bcp14>SHOULD</bcp14> require <spanx style="verb">wss</spanx> here.</t>

<t>How the underlying connection is authenticated and authorized is out of scope for this document, as it is for <xref target="qmux"></xref>.</t>

</section>
<section anchor="subprotocol-negotiation"><name>Subprotocol Negotiation</name>
<t>QMux over TCP/TLS uses TLS ALPN <xref target="RFC8446"></xref> to agree on the application protocol.
WebSocket has no ALPN exchange, so this binding uses the WebSocket subprotocol negotiation of <xref target="RFC6455"></xref> Section 1.9 (the <spanx style="verb">Sec-WebSocket-Protocol</spanx> header) in its place, carrying the same application protocol identifier.</t>

<t>The subprotocol identifier is exactly the identifier the application would use as its ALPN over native QUIC, for example <spanx style="verb">moq-transport-18</spanx>.
It also determines the QMux wire-format version, so there is no separate QMux version negotiation (see <xref target="versions"/>).</t>

<t>A client offers one or more identifiers in the <spanx style="verb">Sec-WebSocket-Protocol</spanx> request header, in decreasing order of preference, one per protocol version it is willing to use.
A server selects at most one, in its own order of preference, and echoes it in the response header; if it supports none of the offered identifiers, it <bcp14>MUST</bcp14> fail the handshake.
A client <bcp14>MUST</bcp14> treat a response value it did not offer as a failed handshake per <xref target="RFC6455"></xref>, and this binding additionally requires a selection: a client <bcp14>MUST</bcp14> treat the absence of a <spanx style="verb">Sec-WebSocket-Protocol</spanx> response header as a failed handshake too, since without one no QMux version was agreed.</t>

</section>
<section anchor="framing"><name>Record Framing</name>
<t>Each WebSocket binary message carries exactly one QMux Record's <spanx style="verb">Frames</spanx> field: one or more QMux frames concatenated, as defined in <xref target="qmux"></xref>.
Because the WebSocket framing layer already delimits each message, the QMux Record <spanx style="verb">Size</spanx> field is redundant: it <bcp14>MUST NOT</bcp14> be transmitted and <bcp14>MUST NOT</bcp14> be expected by the receiver.</t>

<t>A QMux-over-WebSocket record is therefore:</t>

<figure><artwork><![CDATA[
WebSocket Binary Message {
  Frames (..),
}
]]></artwork></figure>

<t>The frames inside a message are encoded exactly as in <xref target="qmux"></xref>, including the in-order STREAM frame requirement: for each QUIC stream, a sender <bcp14>MUST</bcp14> send that stream's payload in order, so a receiver can deliver payload to the application as it arrives without reassembly.</t>

<t>An endpoint <bcp14>MAY</bcp14> place multiple frames in a single binary message and <bcp14>MAY</bcp14> split a logical sequence of frames across multiple messages, subject to the constraint that each STREAM frame's payload bytes are delivered in order.
An empty binary message (zero frames) is permitted and carries no frames; a receiver <bcp14>MUST</bcp14> accept it and treat it as a no-op.</t>

<t>The maximum size of a binary message is bounded by the <spanx style="verb">max_record_size</spanx> transport parameter defined in <xref target="qmux"></xref> and by any WebSocket implementation limits.
An endpoint <bcp14>MUST NOT</bcp14> send a binary message whose payload exceeds the peer's advertised <spanx style="verb">max_record_size</spanx>, and <bcp14>MAY</bcp14> treat receipt of an oversized message as a connection error.</t>

</section>
<section anchor="websocket-message-types"><name>WebSocket Message Types</name>
<t>This binding uses WebSocket message and control frames as follows:</t>

<t><list style="symbols">
  <t><em>Binary messages</em> carry QMux frames as defined in <xref target="framing"/>.</t>
  <t><em>Text messages</em> <bcp14>MUST NOT</bcp14> be sent. A receiver <bcp14>MUST</bcp14> treat a text message as a connection error and close the WebSocket connection.</t>
  <t><em>Close frames</em> terminate the connection as defined in <xref target="close"/>.</t>
  <t><em>Ping and Pong frames</em> are used for keep-alive as defined in <xref target="keepalive"/> and are otherwise handled by the WebSocket layer; they carry no QMux frames.</t>
</list></t>

<t>The first QMux frame sent by each endpoint <bcp14>MUST</bcp14> be the <spanx style="verb">QX_TRANSPORT_PARAMETERS</spanx> frame, exactly as required by <xref target="qmux"></xref>; this binding does not change that requirement.</t>

</section>
<section anchor="versions"><name>QMux Version</name>
<t>The QMux version is not signaled on the wire.
As with QMux over TLS, it is implied by the negotiated application protocol: each application protocol that runs over QMux specifies which QMux version each of its identifiers uses.
An application protocol used with this binding <bcp14>MUST</bcp14> select a QMux version that provides the Record layer (see <xref target="framing"/>), i.e. <xref target="qmux"></xref> or later.</t>

</section>
<section anchor="keepalive"><name>Keep-Alive and Idle Timeout</name>
<t>A WebSocket connection has no built-in idle timeout: if the peer's host crashes without a TCP FIN, the local socket can remain "open" for hours.</t>

<t>To detect a dead peer, an endpoint <bcp14>SHOULD</bcp14> send WebSocket Ping frames <xref target="RFC6455"></xref> periodically and <bcp14>SHOULD</bcp14> close the connection if no WebSocket frame of any kind is received within a timeout, a small multiple of the ping interval.
Reasonable defaults are a 5-second ping interval and a 30-second timeout, but the values are a local policy decision.
Receipt of any WebSocket frame from the peer (binary, Ping, or Pong) resets the idle timer.</t>

<t>This keep-alive operates at the WebSocket layer and is separate from the QMux <spanx style="verb">max_idle_timeout</spanx> transport parameter and <spanx style="verb">QX_PING</spanx> frame, either of which an endpoint <bcp14>MAY</bcp14> also use.</t>

</section>
<section anchor="datagrams"><name>Datagrams</name>
<t>QMux datagrams are supported.
They are negotiated and encoded exactly as in <xref target="qmux"></xref>: an endpoint advertises the datagram transport parameter and carries QMux DATAGRAM frames inside binary messages, like any other frame (<xref target="framing"/>).</t>

</section>
<section anchor="close"><name>Connection Close</name>
<t>An endpoint terminates a QMux-over-WebSocket connection by sending a WebSocket Close frame <xref target="RFC6455"></xref> and then closing the underlying transport.</t>

<t>A QMux <spanx style="verb">CONNECTION_CLOSE</spanx> frame, if sent, conveys the QMux-level error code and reason and <bcp14>SHOULD</bcp14> be sent in a final binary message before the WebSocket Close frame.
Because the WebSocket layer provides its own connection close, there is no draining period: an endpoint <bcp14>MAY</bcp14> close immediately after sending its Close frame.</t>

<t>Receipt of a WebSocket Close frame, or loss of the underlying transport, terminates the QMux connection and all of its streams.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>
<t>This binding inherits the security considerations of QMux <xref target="qmux"></xref>, WebSocket <xref target="RFC6455"></xref>, and, when <spanx style="verb">wss</spanx> is used, TLS <xref target="RFC8446"></xref>.</t>

<t>Carrying QMux over WebSocket does not add or remove any QMux-level security property.
In particular, this binding provides no transport-layer confidentiality or integrity of its own; deployments that require those properties <bcp14>MUST</bcp14> use <spanx style="verb">wss</spanx> (WebSocket over TLS).</t>

<t>The keep-alive mechanism in <xref target="keepalive"/> causes an endpoint to send periodic Ping frames.
An endpoint <bcp14>SHOULD</bcp14> bound the rate at which it sends and responds to Ping/Pong frames to avoid amplification or resource-exhaustion concerns.</t>

<t>Because a server selects the subprotocol from a client-supplied list, a server <bcp14>MUST</bcp14> validate the selected identifier against its own supported set and <bcp14>MUST NOT</bcp14> echo an arbitrary client-supplied value, as required by <xref target="RFC6455"></xref>.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>
<t>This document has no IANA actions.</t>

<t>This binding defines no subprotocol identifiers of its own: the <spanx style="verb">Sec-WebSocket-Protocol</spanx> value is the application protocol identifier, which is owned by the application protocol's specification (for example, <xref target="moqt"></xref>).
Whether those identifiers are registered in the WebSocket Subprotocol Name Registry <xref target="RFC6455"></xref> is therefore up to each application protocol, not this document.</t>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">




<reference anchor="qmux">
   <front>
      <title>QMux</title>
      <author fullname="Kazuho Oku" initials="K." surname="Oku">
         <organization>Fastly</organization>
      </author>
      <author fullname="Lucas Pardue" initials="L." surname="Pardue">
         <organization>Cloudflare</organization>
      </author>
      <author fullname="Jana Iyengar" initials="J." surname="Iyengar">
         <organization>Netflix</organization>
      </author>
      <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
         <organization>Apple</organization>
      </author>
      <date day="6" month="July" year="2026"/>
      <abstract>
	 <t>   This document specifies QMux version 1.  QMux version 1 provides,
   over bi-directional streams such as TLS, the same set of stream and
   datagram operations that applications rely upon in QUIC version 1.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Discussion of this document takes place on the QUIC Working Group
   mailing list (quic@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/quic/.

   Source for this draft and an issue tracker can be found at
   https://github.com/quicwg/qmux.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-quic-qmux-02"/>
   
</reference>
<reference anchor="RFC6455">
  <front>
    <title>The WebSocket Protocol</title>
    <author fullname="I. Fette" initials="I." surname="Fette"/>
    <author fullname="A. Melnikov" initials="A." surname="Melnikov"/>
    <date month="December" year="2011"/>
    <abstract>
      <t>The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code. The security model used for this is the origin-based security model commonly used by web browsers. The protocol consists of an opening handshake followed by basic message framing, layered over TCP. The goal of this technology is to provide a mechanism for browser-based applications that need two-way communication with servers that does not rely on opening multiple HTTP connections (e.g., using XMLHttpRequest or s and long polling). [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6455"/>
  <seriesInfo name="DOI" value="10.17487/RFC6455"/>
</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>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC8446">
  <front>
    <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
    <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
    <date month="August" year="2018"/>
    <abstract>
      <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
      <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8446"/>
  <seriesInfo name="DOI" value="10.17487/RFC8446"/>
</reference>
<reference anchor="RFC9220">
  <front>
    <title>Bootstrapping WebSockets with HTTP/3</title>
    <author fullname="R. Hamilton" initials="R." surname="Hamilton"/>
    <date month="June" year="2022"/>
    <abstract>
      <t>The mechanism for running the WebSocket Protocol over a single stream of an HTTP/2 connection is equally applicable to HTTP/3, but the HTTP-version-specific details need to be specified. This document describes how the mechanism is adapted for HTTP/3.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9220"/>
  <seriesInfo name="DOI" value="10.17487/RFC9220"/>
</reference>

<reference anchor="moqt">
   <front>
      <title>Media over QUIC Transport</title>
      <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
         <organization>Cisco</organization>
      </author>
      <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
         <organization>Google</organization>
      </author>
      <author fullname="Ian Swett" initials="I." surname="Swett">
         <organization>Google</organization>
      </author>
      <author fullname="Alan Frindell" initials="A." surname="Frindell">
         <organization>Meta</organization>
      </author>
      <date day="6" month="July" year="2026"/>
      <abstract>
	 <t>   This document defines Media over QUIC Transport (MOQT), a publish/
   subscribe protocol that runs over QUIC and WebTransport.  MOQT
   leverages the features of these transports, such as streams,
   datagrams, priorities, and partial reliability.  MOQT operates both
   point-to-point and through intermediate relays, enabling scalable
   low-latency delivery.  Despite its name, MOQT is media agnostic and
   can be used for a wide range of use cases.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-moq-transport-19"/>
   
</reference>



    </references>

</references>


<?line 182?>

<section numbered="false" anchor="acknowledgments"><name>Acknowledgments</name>

<t>QMux is the work of the QUIC working group; this document only defines a WebSocket binding for it.
Thanks to the Media over QUIC working group for motivating a transport that works where UDP does not.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA5Va63bjthH+z6dAvT+yzpGUONmkiTZNq7W9iU99i61tmpOT
s4ZIyEJNEQxBWVZ8nGfps/TJ+s0AIEGJ3qb7Yy1eAAzm8s03Aw6Hw6TWda7G
Yu+Hs9WDMPeqEj+q2bVJ71S9l8jZrFL3ePrrcvUwXNu9JJW1ujXVZix0MTdJ
kpm0kEtMkFVyXg/zdFXlajN076uZ5YmGn36a2NVsqa3Vpqg3Jd4/OZ6+FeKF
kLk1WEAXmSoV/ivqvYHYU5muTaVlThcnkzf4Yyr8upq+3UuK1XKmqnGSQZZx
AvE+T2Sl5FisdZ2sTXV3W5lVORZL82uSyFW9MHhZDBOBf/NVnjuBT1d3Shyy
uPxELaXOx+JOP6gcE2d/u6Ubo9Qsk6Qw1VLW+h7LCUF7g/zDo5FW9Xz460qn
vF88unp7+OWrL74YJwlpJxqDB1+9evWl//n1Z599Sj8hYB3NhMthXcnClqaq
k2Q4HAo5s7iT4ort8zOt84vQVkhRmnwz13ku6oWsRbUqrPjh3cmhkGWZa5gJ
mrbOoLKA8jJVqWwgKpVrOcuVmG1qNcTkSi5Fs6iwq3QhpBXTw0vS5kJMT69H
yXSBFWHp1RLmEZma60KRCDNYTRe3AlsVPf4jfvb6+GWUTKLbYViu6j6ZIRKE
UMW9rkxBK1qxXkB68e7okrY+y2maDNvK/ANT5Bva5ffT6eUn7Tq2lukdK+se
lqRdD+C1ab7i1eGdYlaZtVWVdTrM6XUMnwZ1jJwRljrLcpUkL8ShKe4hEItJ
yx+RKjRfQ0lK3KmNgANmVuydvbuekvPSX3F+wb+vjrHbq+Mj+n39/eT0tPmR
+Deuv794d3rU/mpHHl6cnR2fH7nBuCs6t5K9s8lPeEJC7V1cTk8uziene9gt
dhbbDnEiaiNmCo9qVZWVqkmTNsmUTSs9wwXGvDm8/M+/D16Jx8c/wYKfHRx8
/fTkL746+PMrXEDvhVuNde8u6wVCCaZUsqJZJHwzlaWuEeIDciq7MOtCkMWg
2I9/Js38MhbfzNLy4NW3/gZtuHMz6Kxzk3W2e2dnsFNiz62eZRptdu5vabor
7+SnznXQe3Tzm7/miBUxPPjqr98myVYgrawiz4NFVLW0LoKuVAr/GbiLtxWQ
yqm5DdFS0t2a4tr6WGSjOWzwbzeTttGQmqJQKfnqQCyVtfIWU8/bFQDQZWVq
k5p8e+Y2jCkIToq6MtmKp+rAEsczwjCKZrGudF0r3LuVurA1S8Yh76GHVgaO
y1sIIiaXJwRk/y9qjZKTPlTiWQjI2E354vR6IGYrhEEPGsEyBo/MXNjUlIpB
rZGWsgq9xJlFpAtZQb1QRx+sYaJCYTkMzqFnMjOyzrgPFzvg1ItyhFh/BKqc
DWdqASEYB0VuJG7IXBZpMyyVRWGQLLBRJSq5ZvUQeGOPo233tKVK9VxDp4hb
Qo1UVtWmD+jHrCjvVOxT0APjQcerCjCHWju/gFLYt0rsRJHSYRsxOb08HwBE
VTmUOTIn7Ufea1MNIu8VaW6s99ngORYJBmhjsKLPRBbpHECdWvFSF0N2JHE9
vTqenDmfh7/QCtVmEDxRE/eg/VZAq3mOLWNNeHr+bADafXb1jVgV8IjiFjua
V2bpwyHoM3KLODDkbWEsBBxj9s1OFmzM1cYDb2v3TtcSo+QM1En65zRp4yHi
Z6Ib7HJsLZjiHmtBMtgCE5NOKTbgIAuWdzt34Ld3iZS8QdcODlq3fuN3eoHF
77VaIzpIxCEJM+wDItYJh7kuJFyr9502WNYLGJ70Se96b7OxV7JlYb1acrDS
Nhv/oosV+GWVb+hZP/1pYBRbewM9OABocRlxt2FochDbyht83z2Hx9/DneCE
+XxIjrbUrOhGZgdwDawNAtKxWN4hR8wo6rVxk1qXuwkigEwwmMlzWSKKiInb
WiHYsUsk9Ll+oLWYRHmpmclpgPPNtf5N3bjIDH5JQpBIxTNbmhmojTQOm/u9
NLY/BsWa5dqyw0iiR95qMH2KaeE1KrzC2Pw//GG2EYDews3W+0YJxbUe8ZJE
DiMQgpldSLB6Vi+TwYPRwT4BXBhGzNsPmxlTE7kuS2caCmFtl9Hgz2gk//p8
n6NZiZu1vRHvrk6QIxYKKKKtQ7KQsVaFKtJqUxKrat0q+AtGf2g4YeCwZ/wo
OVJlbjaOC3sCQ0HL873eTrkMHeoBoUrpmIG1FYWYGiEIa6zg+gQA1sKFn71S
KGuqILGnbN9TGuiG0VYso9YiEKUi0fFzV33B6bJn8msEMMwRNeMMPWsCEX52
HWWR8zaLJC0CIpF9QjtlThVyCZuc6q5fyHmRKZQKfh4rLEw9SlqXW0CWwrhZ
1IODd6QK40QOsdMwuKjoeCbhYd+t3157nR2MvnbOeIM7bUgML/0MpHoJZe8T
MlEAM5wNHOYFiLOUzvr2E6U0776xcO1D0rh6QJUJT6AJoyfbqlqbVZ6x77Gt
rFMQW8A5E3vRgA2IKZclaM1Np64FFb5hwkaFPwCFaCoTtwZq13C8oaueBSa2
zFhZ80SPNNvFKsrCtR/h3+ro+6WFsR8f/SP79LTPdM2jkpnPCVINuDkkXRKg
Rvnf5b4PWIXCA8DmrcMcLVMpUNsy8WS24dEYMhdkMlqqdLnB6T8I7Tx+jUqe
DWpIu1Qvg+yRWpFDXCADkUEYaJ5B8AYqp3oXo9ADoBnlAsrtplIwQAHTOalf
Cz2np3ZVkl1IrUWTKVk/FLQxKcLLXKLNQVj5rQZxR61m+Q1KYDUnOL/kvcxX
iibIdEYMwy1ATiR5OizVwncH40NBE0WdzDKuuVFgbgJS0UROVXgATtUjDvvy
zJKGaJvyQ+btaOoZMWtj4JeapqMEy+AGDcI7O065ptEEPZnDMp+T3zqWLB5f
eL78lBxTyu7UExHR4ZinRB0ildaKqMlHyO5cLwKvYa8cvCD27ogfEWgTQheE
0oPeKnKUvFGppDDvgpsXNdCgHHrNNoEVWMc5mtpymzs58uGEI5eHfxGzKFA+
BM+ianumXLpaUuHoskj8zCU2pkreq1NFRJ6ju49eVG51R3sdeRonye+//550
mCup+syr+jERrvZG9TAa7Q+SJ36fIdTrEJyLGJ5szEPsDK5lMogWTCRtXJi3
rScG2d6qxHszpcOxA1FSaVQwD9jPKQE7rdBvl/Hdc7hBKTdc+2kPDgyeslEU
1xC++mnerc0O1LtkTE53r2zj4YRxqK1m+YYUXmDLWWk0BdrkJ0+2l6u81gT8
japIZuw73ybvzrgYaLEs4UVubrF8jl0BX32c+llkWhkU083kgUsPKKn9Cy4R
9gDvJlpHMjkmRBqMlRypiOi2I9ZeIapV24i3tyzrzbbUL39TlfFy7ZNjlZTD
Gm8NgVqEd17H2meryTRVZc365dKS4IkuCGcKMzSlz9dL+aCXqyW095vHrC1R
CBWJn7fxcIMx753Pv7cccH2to52Id+2DDRejbVxoSuDkjM4lXJiPunYPscme
uCOgq9mCvsGkgIMu15dKVTCFzKhVookF74g+aBzEqYiVWDKHlK4GtkwtG3ci
/UWUVFWVqbar1BDk002pbLdEZzq3WwGxUV0voPFG4qh5btYWWDIUH7/pFqUf
71alWzj7+Bhg/2lEE0zVQx0NjxEPiq1HYrLlQiHF1tHAfgU4+alpsoXm7Yss
wiG/4qT9WDheRhTLB1WYc3sfPLPfxSWnZyx3aehYwE9F8cVlDgFa1N3Znoke
8ZOnJ1c8UGufQHutrSMbeevn7TY4Gb3m7rNXe0jBTgAfS3NdgT6191mvNJs/
boj9eeZ2ffPDP99Prybn15cXV9P3l5Orydnx9Pjq+ib0TSOg98jN8rmQet1l
LZlhTKiFKyb8sU2L985PWb5/eOrw+KKhr7yFDq/Qbjarb0GEqIZ0LI/YMyLU
IXbUIuLep+OaFNW61WRgzQRfPVXE2Cmot8Boj57ahlTbNlwvdLroCs1TmTmz
15hwU+QxrvQuw87D++lo1CdAIn2+tdCsw4L5NoyDm04DxxcHTQjuQzUjNQpY
CDelI0APHX8nj504j4VXnsALxVQvFaXDxxet03aawVHA+FJyttJ5PSTmThPU
boIxkfAIDRdE8dNKcrsk5FzJbdq3J+eOU+WGU6RfhxqCdHRZiD1qhOxxkGFY
xX7vKizWT0YtIlqGULX1d1/wM3q34nMge+Bqy1bkOW0yytB83paFwS24xP2A
Oe26yx1dEkOKuaM2NXNAxjRnXSYKXjHMc5Z0hNRkfF+alK45CfOgqBglVyAk
KAWofw4wkXjZJXQpvhha2BzrdEY4ZBGffxqeNgtS85MW4FolTOKUXRo4JRHd
VFuGy6s4E212dslt4GBW8dLlxAFrlQ+yCR73qcygExNXcnufqELbOMJJ2JVq
Xa4Be6CPd0TN2VATN6tzSHBWpfnf+532MwKahPDu8uT8uxbfNHfUsUsXy3KL
8HENz/UqBcpR6MYjLJrO/JNr0jTXrFdfc1JJNCXYpnsxDFH5+gEuPe4I0jAI
p8rmNOm5XQZ+xnIdTaaT764CNWx4/VaTeQDqc6fY1O6MwZn5ZQwhTgdtC1S4
fPr4wiXIDmlqkusf64lScG73RKNsHUWo7zS6Q5JQakT9uqin6MslcXN4cX5+
fEhHl+8PTy+ujxvrI4It9+VSOvbetC2aYa7uVe7ZBZmJ1604EmNc8OTFVQBI
9IikLXo4c83srldHW3uuEO302W3TDNk9JYqbRhlVBaQFh2PjHXd2OKaXSzpD
qakxKuc192D8EQ6W6QjXwYH+HXC851S67B5C1O3pXeQRTeTGpItAi064XOp0
tZ71zVGVriqNMgW+R85byfBBQnz6VEAR2qONDSPSzgiaPTrPHfSdWDIlH7g2
smsO+x72gLuuTcMVoh2GJmXfpyENG5JZRhpCDjP3LsIiD2sEhaVhtBpF50lB
4VzrdJXLatAlBI0/wNhtw9H5CrY6d4wDoIoZTcUp4Zan92qFC70GyLe99pij
4YJLGScJAQjzj6YPL162uwuMKxwbRGDeHjTscF52dNvxytq4zBwyb5yYu3VY
CDmqBl1jhFKBrD1yU6MP71ofqdTfojrM8ISfRHSdO+X3RsPfiCbOAxljG1nw
ilQN1cMCorowM3S8XJArhkiV263L7XNgzk+hQzekXMB0NNfWpX03mrWLXKyz
UIS4+Tpdyea7goAATWbB23W3eUQNUT4rqWYa3gEU2paAM/9gh81vff4wOZ/0
hlpzUOoJH78oOX7t9mFw+FqBWtm9PXkb+eT4w81o31u1z55rRNMOgjvwxG0N
0Dfso/a817fUo67+wB8nw8N/XCjOiS4+4i1QWq/ULewaOitdFO8c61Aiu+KX
q033C4n20HNVkns+W48MGFE6h0pkM/qGaybTO7LeJL0rzBr10i1HePI4dl8T
quwve3PQGbX35L+18wqlLz8CdO9+CvJ664ycv4ZqP0XZ/TiEVEinp1OAwJ0N
PavtQ/vu5yZzbuI2x/UyYjYMUPR2/I1cwNZR8l85pBDr4SkAAA==

-->

</rfc>

