<?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.29 (Ruby 3.4.4) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-opik-quic-qmux-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title>QMux</title>
    <seriesInfo name="Internet-Draft" value="draft-opik-quic-qmux-01"/>
    <author fullname="Kazuho Oku">
      <organization>Fastly</organization>
      <address>
        <email>kazuhooku@gmail.com</email>
      </address>
    </author>
    <author fullname="Lucas Pardue">
      <organization>Cloudflare</organization>
      <address>
        <email>lucas@lucaspardue.com</email>
      </address>
    </author>
    <author fullname="Jana Iyengar">
      <organization>Netflix</organization>
      <address>
        <email>jri.ietf@gmail.com</email>
      </address>
    </author>
    <author fullname="Eric Kinnear">
      <organization>Apple</organization>
      <address>
        <email>ekinnear@apple.com</email>
      </address>
    </author>
    <date year="2025" month="November" day="14"/>
    <workgroup>QUIC</workgroup>
    <keyword>internet-draft</keyword>
    <abstract>
      <?line 24?>

<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.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Discussion of this document takes place on the
    QUIC Working Group mailing list (quic@ietf.org),
    which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/quic/"/>.</t>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/kazuho/draft-opik-quic-qmux"/>.</t>
    </note>
  </front>
  <middle>
    <?line 31?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>QUIC version 1 <xref target="QUIC"/> is a bi-directional, authenticated
transport-layer protocol built on top of UDP <xref target="UDP"/>. The protocol
provides multiplexed flow-controlled streams without head-of-line blocking as a
core service. It also offers low-latency connection establishment and efficient
loss recovery.</t>
      <t>However, there are downsides to QUIC.</t>
      <t>One downside is that QUIC, being based on UDP, is not as universally accessible
as TCP <xref target="TCP"/>, due to occasionally being blocked by middleboxes.</t>
      <t>Another downside is that QUIC is computationally more expensive compared to TLS
<xref target="TLS13"/> over TCP. This increased cost is partly because QUIC encrypts
each packet, which is smaller than the encryption unit of TLS, leading to more
overhead, and partly because UDP is less optimized within computing
infrastructures.</t>
      <t>Due to these limitations, applications are often served using both QUIC and TCP.
QUIC is employed to provide the optimal user experience, while TCP acts as a
fallback for ensuring network reachability and computational efficiency as
needed.</t>
      <t>One such example is HTTP, which has different bindings for QUIC (HTTP/3
<xref target="HTTP3"/>) and TCP (HTTP/2 <xref target="HTTP2"/>). Recently, security
concerns have prompted proposals to revise HTTP/2
(<xref target="h2-stream-limits"/>), which has sparked
discussions about the costs of maintaining multiple HTTP versions.</t>
      <t>Another example is WebTransport, a superset of HTTP. Because HTTP has different
bindings for QUIC and TCP, WebTransport defines its own extensions for the two
HTTP variants (<xref target="webtrans-h3"/>,
<xref target="webtrans-h2"/>).</t>
      <t>To reduce or eliminate the costs associated with duplicated efforts in providing
services on top of both transport protocols, this document specifies a polyfill
that allows application protocols built on QUIC to run on transport protocols
that provide single bi-directional, byte-oriented stream such as TCP or TLS.</t>
      <t>The specified polyfill provides a compatibility layer for the set of operations
(i.e., API) required by QUIC, as specified in Section <xref target="QUIC" section="2.4" sectionFormat="bare"/> and Section <xref target="QUIC" section="5.3" sectionFormat="bare"/> of <xref target="QUIC"/>.</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?>

</section>
    <section anchor="the-protocol">
      <name>The Protocol</name>
      <t>QMux can be used on any transport that provides a bi-directional, byte-oriented
stream that is ordered and reliable; for details, see <xref target="transport-properties"/>.</t>
      <t>QUIC frames are sent directly on top of the transport.</t>
      <t>The frames are not encrypted. It is the task of the transport (e.g., TLS) to
provide confidentially and integrity.</t>
      <t>QUIC packet headers are not used.</t>
      <t>For exchanging the Transport Parameters, a new frame called
QX_TRANSPORT_PARAMETERS frame is defined.</t>
      <section anchor="transport-properties">
        <name>Properties of Underlying Transport</name>
        <t>QMux is designed to work on top of transport layer protocols that provide the
following capabilities:</t>
        <dl>
          <dt>In-order delivery of bytes in both direction:</dt>
          <dd>
            <t>Underlying transport provides a byte-oriented and bi-directional stream that
deliver the bytes in order; i.e., bytes that were sent in one order become
available to the receiving side in the same order.</t>
          </dd>
          <dt>Guaranteed delivery:</dt>
          <dd>
            <t>If the transport runs on top of a lossy network, that transport recovers the
bytes lost; e.g., by retransmitting them. This requires buffering and
reassembly, in order to achieve the first bullet point (in-order delivery).</t>
          </dd>
          <dt>Congestion control:</dt>
          <dd>
            <t>When used on a shared network, the transport is congestion controlled.
Implementations of QMux simply write outgoing frames to the transport when
that transport permits.</t>
          </dd>
          <dt>Confidentially and Integrity:</dt>
          <dd>
            <t>Unless used upon endpoints between which tampering or monitoring is a
non-concern, the transport provides confidentially and integrity protection.</t>
          </dd>
        </dl>
        <t>TLS over TCP provides all these capabilities.</t>
        <t>UNIX sockets are an example that provides only the first two. Congestion control
is not employed, as UNIX sockets do not face a shared bottleneck.
Confidentiality and integrity protection are deemed unnecessary in environments
where the operating system is trusted.</t>
      </section>
    </section>
    <section anchor="quic-frames">
      <name>QUIC Frames</name>
      <t>In QMux, the following QUIC frames can be used, as if they were sent or received
in the application packet number space:</t>
      <ul spacing="normal">
        <li>
          <t>PADDING</t>
        </li>
        <li>
          <t>RESET_STREAM</t>
        </li>
        <li>
          <t>STOP_SENDING</t>
        </li>
        <li>
          <t>STREAM</t>
        </li>
        <li>
          <t>MAX_DATA</t>
        </li>
        <li>
          <t>MAX_STREAM_DATA</t>
        </li>
        <li>
          <t>MAX_STREAMS</t>
        </li>
        <li>
          <t>DATA_BLOCKED</t>
        </li>
        <li>
          <t>STREAM_DATA_BLOCKED</t>
        </li>
        <li>
          <t>STREAMS_BLOCKED</t>
        </li>
        <li>
          <t>CONNECTION_CLOSE</t>
        </li>
      </ul>
      <t>The frame formats are identical to those in QUIC version 1. Likewise, the
meaning and requirements for the use of these frames are consistent with QUIC
version 1, with the exception to the specific changes made to the STREAM frames,
as detailed in <xref target="stream-frames"/>.</t>
      <t>Use of other frames defined in QUIC version 1 is prohibited for various reasons.
ACK frames are not used because the underlying transport guarantees delivery.
Frames related to the cryptographic handshake are not used because an underlying
security layer can provide equivalent features. Use of frames that communicate
Connection IDs and those related to path migration is forbidden.</t>
      <t>The full list of prohibited frames is:</t>
      <ul spacing="normal">
        <li>
          <t>PING</t>
        </li>
        <li>
          <t>ACK</t>
        </li>
        <li>
          <t>CRYPTO</t>
        </li>
        <li>
          <t>NEW_TOKEN</t>
        </li>
        <li>
          <t>NEW_CONNECTION_ID</t>
        </li>
        <li>
          <t>RETIRE_CONNECTION_ID</t>
        </li>
        <li>
          <t>PATH_CHALLENGE</t>
        </li>
        <li>
          <t>PATH_REPONSE</t>
        </li>
        <li>
          <t>HANDSHAKE_DONE</t>
        </li>
      </ul>
      <t>Endpoints <bcp14>MUST NOT</bcp14> send prohibited frames. If an endpoint receives one it <bcp14>MUST</bcp14>
close the connection with an error of type FRAME_ENCODING_ERROR.</t>
      <section anchor="stream-frames">
        <name>STREAM Frames</name>
        <t>While the frame format remains unchanged, there are two differences in the
handling of STREAM frames between QUIC version 1 and QMux.</t>
        <section anchor="stream-frames-without-the-length-field">
          <name>STREAM Frames without the Length Field</name>
          <t>In QMux, when a STREAM frame that omits the Length field is used, the size of
that STREAM frame is determined by the maximum frame size, as regulated by the
<tt>max_frame_size</tt> Transport Parameter (<xref target="max_frame_size"/>).</t>
          <t>This behavior contrasts with that of QUIC version 1, where the absence of the
Length field implies that the STREAM frame extends to the end of the QUIC packet
payload.</t>
          <t>This variation arises due to the characteristics of the underlying transports of
QMux, which may not have, or provide visibility into, the packet boundaries.</t>
        </section>
        <section anchor="ordering-of-stream-frames">
          <name>Ordering of STREAM frames</name>
          <t>For each stream being sent, senders <bcp14>MUST</bcp14> send stream payload in order.</t>
          <t>When receiving a STREAM frame that carries a payload not immediately following
the payload of the previous STREAM frame for the same Stream ID, receivers <bcp14>MUST</bcp14>
close connection with an error of type PROTOCOL_VIOLATION_ERROR.</t>
          <t>This change from QUIC version 1 eliminates the need for implementations to
buffer and reassemble the stream payload. As a result, the payload being
received can be directly passed to the application as it is read from the
transport. This efficiency is due to the underlying transport's guarantee of
in-order delivery.</t>
          <t>These changes do not impact the senders' capability to interleave STREAM frames
from multiple streams.</t>
        </section>
      </section>
      <section anchor="qxtransportparameters-frames">
        <name>QX_TRANSPORT_PARAMETERS Frames</name>
        <t>In QMux, Transport Parameters are exchanged as frames.</t>
        <t>QX_TRANSPORT_PARAMETERS frames are formatted as shown in
<xref target="fig-qx-transport-parameters"/>.</t>
        <figure anchor="fig-qx-transport-parameters">
          <name>QX_TRANSPORT_PARAMETERS Frame Format</name>
          <artwork><![CDATA[
QX_TRANSPORT_PARAMETERS Frame {
  Type (i) = 0x3f5153300d0a0d0a,
  Length (i),
  Transport Parameters (..),
}
]]></artwork>
        </figure>
        <t>QX_TRANSPORT_PARAMETERS frames contain the following fields:</t>
        <dl>
          <dt>Length:</dt>
          <dd>
            <t>A variable-length integer specifying the length of the Transport Parameters
field in this QX_TRANSPORT_PARAMETERS frame.</t>
          </dd>
          <dt>Transport Parameters:</dt>
          <dd>
            <t>The Transport Parameters. The encoding of the payload is as defined in
<xref section="18" sectionFormat="of" target="QUIC"/>.</t>
          </dd>
        </dl>
        <t>The QX_TRANSPORT_PARAMETERS frame is the first frame sent by endpoints.
Endpoints <bcp14>MUST</bcp14> send the QX_TRANSPORT_PARAMETERS frame as soon as the underlying
transport becomes available. Note neither endpoint needs to wait for the
peer's Transport Parameters before sending its own, as Transport Parameters are
a unilateral declaration of an endpoint's capabilities
(<xref section="7.4" sectionFormat="of" target="QUIC"/>).</t>
        <t>If the first frame being received by an endpoint is not a
QX_TRANSPORT_PARAMETERS frame, the endpoint <bcp14>MUST</bcp14> close the connection with an
error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>The frame type (0x3f5153300d0a0d0a; "\xffQMX\r\n\r\n" on wire) has been chosen
so that it can be used to disambiguate QMux from HTTP/1.1 <xref target="HTTP1"/> and
HTTP/2.</t>
      </section>
      <section anchor="qxping-frames">
        <name>QX_PING Frames</name>
        <t>In QMux, QX_PING frames allow endpoints to test peer reachability above the
underlying transport.</t>
        <t>QX_PING frames are formatted as shown in <xref target="fig-qx-ping"/>.</t>
        <figure anchor="fig-qx-ping">
          <name>QX_PING Frame Format</name>
          <artwork><![CDATA[
QX_PING Frame {
  Type (i) = 0xTBD..0xTBD+1,
  Sequence Number (i),
}
]]></artwork>
        </figure>
        <t>Type 0xTBD is used for sending a ping (i.e., request the peer to respond). Type
0xTBD+1 is used in response.</t>
        <t>QX_PING frames contain the following fields:</t>
        <dl>
          <dt>Sequence Number:</dt>
          <dd>
            <t>A variable-length integer used to identify the ping.</t>
          </dd>
        </dl>
        <t>When sending QX_PING frames of type 0xTBD, endpoints <bcp14>MUST</bcp14> send monotonically
increasing values in the Sequence Number field, since that allows the endpoints
to identify to which ping the peer has responded.</t>
        <t>When sending QX_PING frames of type 0xTBD+1 in response, endpoints <bcp14>MUST</bcp14> echo the
Sequence Number that they received.</t>
        <t>When receiving multiple QX_PING frames of type 0xTBD before having the chance to
respond, an endpoint <bcp14>MAY</bcp14> only respond with one QX_PING frame of type 0xTBD+1
carrying the largest Sequence Number that the endpoint has received.</t>
      </section>
    </section>
    <section anchor="transport-parameters">
      <name>Transport Parameters</name>
      <t>QMux uses a subset of Transport Parameters defined in QUIC version 1. Also, one
new Transport Parameter specific to QMux is defined.</t>
      <section anchor="permitted-tps">
        <name>Permitted and Forbidden Transport Parameters</name>
        <t>In QMux, use of the following Transport Parameters is allowed.</t>
        <ul spacing="normal">
          <li>
            <t>max_idle_timeout</t>
          </li>
          <li>
            <t>initial_max_data</t>
          </li>
          <li>
            <t>initial_max_stream_data_bidi_local</t>
          </li>
          <li>
            <t>initial_max_stream_data_bidi_remote</t>
          </li>
          <li>
            <t>initial_max_stream_data_uni</t>
          </li>
          <li>
            <t>initial_max_streams_bidi</t>
          </li>
          <li>
            <t>initial_max_streams_uni</t>
          </li>
        </ul>
        <t>The definition of these Transport Parameters are unchanged.</t>
        <t>Use of other Transport Parameters defined in QUIC version 1 is prohibited. When
an endpoint receives one of the prohibited Transport Parameters, the endpoint
<bcp14>MUST</bcp14> close the connection with an error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>Endpoints <bcp14>MUST NOT</bcp14> send Transport Parameters that extend QUIC version 1, unless
they are specified to be compatible with QMux.</t>
        <t>When receiving Transport Parameters not defined in QUIC version 1, receivers
<bcp14>MUST</bcp14> ignore them unless they are specified to be usable on QMux.</t>
      </section>
      <section anchor="max_frame_size">
        <name>max_frame_size Transport Parameter</name>
        <t>The <tt>max_frame_size</tt> Transport Parameter (0xTBD) is a variable-length integer
specifying the maximum size of the QUIC frame that the peer can send, in the
unit of bytes.</t>
        <t>The initial value of the <tt>max_frame_size</tt> Transport Parameter is 16384.</t>
        <t>By sending the Transport Parameter, the maximum frame size can only be
increased. When receiving a value below the initial value, receivers <bcp14>MUST</bcp14> close
the connection with an error of type TRANSPORT_PARAMETER_ERROR.</t>
        <t>Endpoints <bcp14>MUST NOT</bcp14> send QUIC frames that exceed the maximum declared by the
peer.</t>
        <t>When receiving QUIC frames that exceed the declared maximum, receivers <bcp14>MUST</bcp14>
close the connection with an error of type FRAME_ENCODING_ERROR.</t>
      </section>
    </section>
    <section anchor="closing-the-connection">
      <name>Closing the Connection</name>
      <t>As is with QUIC version 1, a connection can be closed either by a
CONNECTION_CLOSE frame or by an idle timeout.</t>
      <t>Unlike QUIC version 1, there is no draining period; once an endpoint sends or
receives the CONNECTION_CLOSE frame or reaches the idle timeout, all the
resources allocated for the Service are freed and the underlying transport is
closed immediately.</t>
    </section>
    <section anchor="using-0-rtt">
      <name>Using 0-RTT</name>
      <t>TLS 1.3 introduced the concept of early data (also knows as 0-RTT data).</t>
      <t>When using QMux on top of TLS that supports early data, clients <bcp14>MAY</bcp14> use early
data when resuming a connection, by reusing certain Transport Parameters as
defined in <xref section="7.4.1" sectionFormat="of" target="QUIC"/>.</t>
      <t>Similarly, when accepting early data, the servers <bcp14>MUST</bcp14> send Transport Parameters
that obey to the restrictions defined in <xref section="7.4.1" sectionFormat="of" target="QUIC"/>.</t>
    </section>
    <section anchor="extensions">
      <name>Extensions</name>
      <t>Not all the extensions of QUIC version 1 can be used. Each extension have to
define its mapping for QMux, or explicitly allow the use; see <xref target="permitted-tps"/>.</t>
      <t>As is the case with QUIC version 1, use of extension frames have to be
negotiated before use; see <xref section="19.21" sectionFormat="of" target="QUIC"/>.</t>
      <t>This specification defines the mapping of the Unreliable Datagram Extension.</t>
      <section anchor="unreliable-datagram-extension">
        <name>Unreliable Datagram Extension</name>
        <t>The use of the Unreliable Datagram Extension <xref target="QUIC_DATAGRAM"/> is
permitted, with one modification:</t>
        <t>Similar to STREAM frames, when employing DATAGRAM frames of type 0x30 (i.e.,
DATAGRAM frames without the Length field), their size is determined by the
<tt>max_frame_size</tt> Transport Parameter (<xref target="max_frame_size"/>).</t>
        <t>Apart from this, the encoding and semantics of the Unreliable Datagram Extension
remain unchanged. The use of the extension is negotiated via the Transport
Parameters.</t>
        <t>As discussed in <xref section="5" sectionFormat="of" target="QUIC_DATAGRAM"/>, senders can drop DATAGRAM frames
if the transport is blocked by flow or congestion control.</t>
      </section>
    </section>
    <section anchor="version-agility">
      <name>Version Agility</name>
      <t>As new versions of QUIC are specified, there may be a desire to define their
reliable-byte-stream counterparts as different versions of QMux, and to provide
ways of negotiating the version to be used.</t>
      <t>QUIC establishes connections using packets carrying an explicit version number.
Using that field, Version-Independent Properties of
QUIC <xref target="QUIC-INVARIANTS"/> defines a version negotiation mechanism that
involves a retry. Compatible Version Negotiation for QUIC
<xref target="QUIC-CVN"/> defines another negotiation mechanism for switching
between compatible versions during connection establishment without retrying.</t>
      <t>By contrast, QMux does not establish connections by itself; the connections are
set up by the underlying substrate, and QMux exchanges only the Transport
Parameters after they are established.</t>
      <t>Due to these differences, the negotiation mechanisms used by QUIC and QMux will
differ.</t>
      <t>This section explores some options that future versions of QMux might employ for
version negotiation and upgrade.</t>
      <section anchor="negotiation-using-alpn">
        <name>Negotiation Using ALPN</name>
        <t>When a new QUIC version that provides a different interface to applications is
specified, application protocols developed for that version might be assigned a
new identifier for the TLS Application-Layer Protocol Negotiation (ALPN)
extension <xref target="ALPN"/>.</t>
        <t>Similarly, when TLS is the underlying transport, application protocols built on
top of the QMux counterparts of such QUIC versions can rely on ALPN to negotiate
both the application protocol and the underlying QMux version.</t>
        <t>When TLS is not the underlying transport, endpoints can use the first 8 bytes
exchanged on the transport (i.e., the type field of the
QX_TRANSPORT_PARAMETERS frame in the encoded form) to identify whether QMux is
in use.</t>
        <t>[TODO: discuss how endpoints should behave when the first 8 bytes received are
not QX_TRANSPORT_PARAMETERS.]</t>
      </section>
      <section anchor="in-band-upgrade">
        <name>In-band Upgrade</name>
        <t>A new version of QMux might first start communication using QMux version 1 and
then switch versions in-band during the session. The advantage of this approach
is that, even when TLS is not in use, no additional round-trip is incurred for
version negotiation.</t>
        <t>While QMux version 1 does not specify a concrete method, new versions might use
the version_information Transport Parameter (<xref section="3" sectionFormat="of" target="QUIC-CVN"/>) to
discover supported versions and coordinate the switch.</t>
      </section>
    </section>
    <section anchor="implementation-considerations">
      <name>Implementation Considerations</name>
      <t>Similar to HTTP/3 with Extensible Priorities <xref target="HTTP_PRIORITY"/>,
application protocols using QUIC may employ stream multiplexing along with a
system to tune the delivery sequence of QUIC streams.</t>
      <t>To alternate between QUIC streams of varying priorities in a timely manner, it
is advisable for QMux implementations to avoid creating deep buffers holding
QUIC frames. Instead, endpoints should wait for the transport layer to be ready
for writing. Upon becoming writable, they should write QUIC frames according to
the latest prioritization signals.</t>
      <t>Additionally, implementations may consider monitoring or adjusting the flow and
congestion control parameters of the underlying transport. This approach aims to
minimize data buffering within the transport layer before transmission. However,
improper adjustment of these parameters could potentially lead to lower
throughput.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>TODO</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="QUIC">
          <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="TLS13">
          <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="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>
        <reference anchor="QUIC_DATAGRAM">
          <front>
            <title>An Unreliable Datagram Extension to QUIC</title>
            <author fullname="T. Pauly" initials="T." surname="Pauly"/>
            <author fullname="E. Kinnear" initials="E." surname="Kinnear"/>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <date month="March" year="2022"/>
            <abstract>
              <t>This document defines an extension to the QUIC transport protocol to add support for sending and receiving unreliable datagrams over a QUIC connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9221"/>
          <seriesInfo name="DOI" value="10.17487/RFC9221"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="UDP">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <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="HTTP3">
          <front>
            <title>HTTP/3</title>
            <author fullname="M. Bishop" initials="M." role="editor" surname="Bishop"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The QUIC transport protocol has several features that are desirable in a transport for HTTP, such as stream multiplexing, per-stream flow control, and low-latency connection establishment. This document describes a mapping of HTTP semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC and describes how HTTP/2 extensions can be ported to HTTP/3.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9114"/>
          <seriesInfo name="DOI" value="10.17487/RFC9114"/>
        </reference>
        <reference anchor="HTTP2">
          <front>
            <title>HTTP/2</title>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <author fullname="C. Benfield" initials="C." role="editor" surname="Benfield"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This specification describes an optimized expression of the semantics of the Hypertext Transfer Protocol (HTTP), referred to as HTTP version 2 (HTTP/2). HTTP/2 enables a more efficient use of network resources and a reduced latency by introducing field compression and allowing multiple concurrent exchanges on the same connection.</t>
              <t>This document obsoletes RFCs 7540 and 8740.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9113"/>
          <seriesInfo name="DOI" value="10.17487/RFC9113"/>
        </reference>
        <reference anchor="h2-stream-limits">
          <front>
            <title>Using HTTP/3 Stream Limits in HTTP/2</title>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Lucas Pardue" initials="L." surname="Pardue">
              <organization>Cloudflare</organization>
            </author>
            <date day="6" month="November" year="2023"/>
            <abstract>
              <t>   A variant mechanism for managing stream limits is described for
   HTTP/2.  This scheme is based on that used in QUIC and is more robust
   against certain patterns of abuse.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-thomson-httpbis-h2-stream-limits-00"/>
        </reference>
        <reference anchor="webtrans-h3">
          <front>
            <title>WebTransport over HTTP/3</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   WebTransport [OVERVIEW] is a protocol framework that enables
   application clients constrained by the Web security model to
   communicate with a remote application server using a secure
   multiplexed transport.  This document describes a WebTransport
   protocol that is based on HTTP/3 [HTTP3] and provides support for
   unidirectional streams, bidirectional streams, and datagrams, all
   multiplexed within the same HTTP/3 connection.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http3-14"/>
        </reference>
        <reference anchor="webtrans-h2">
          <front>
            <title>WebTransport over HTTP/2</title>
            <author fullname="Alan Frindell" initials="A." surname="Frindell">
              <organization>Facebook Inc.</organization>
            </author>
            <author fullname="Eric Kinnear" initials="E." surname="Kinnear">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Tommy Pauly" initials="T." surname="Pauly">
              <organization>Apple Inc.</organization>
            </author>
            <author fullname="Martin Thomson" initials="M." surname="Thomson">
              <organization>Mozilla</organization>
            </author>
            <author fullname="Victor Vasiliev" initials="V." surname="Vasiliev">
              <organization>Google</organization>
            </author>
            <author fullname="Guowu Xie" initials="G." surname="Xie">
              <organization>Facebook Inc.</organization>
            </author>
            <date day="20" month="October" year="2025"/>
            <abstract>
              <t>   WebTransport defines a set of low-level communications features
   designed for client-server interactions that are initiated by Web
   clients.  This document describes a protocol that can provide many of
   the capabilities of WebTransport over HTTP/2.  This protocol enables
   the use of WebTransport when a UDP-based protocol is not available.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-webtrans-http2-13"/>
        </reference>
        <reference anchor="HTTP1">
          <front>
            <title>HTTP/1.1</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document specifies the HTTP/1.1 message syntax, message parsing, connection management, and related security concerns.</t>
              <t>This document obsoletes portions of RFC 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="99"/>
          <seriesInfo name="RFC" value="9112"/>
          <seriesInfo name="DOI" value="10.17487/RFC9112"/>
        </reference>
        <reference anchor="QUIC-INVARIANTS">
          <front>
            <title>Version-Independent Properties of QUIC</title>
            <author fullname="M. Thomson" initials="M." surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the properties of the QUIC transport protocol that are common to all versions of the protocol.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8999"/>
          <seriesInfo name="DOI" value="10.17487/RFC8999"/>
        </reference>
        <reference anchor="QUIC-CVN">
          <front>
            <title>Compatible Version Negotiation for QUIC</title>
            <author fullname="D. Schinazi" initials="D." surname="Schinazi"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="May" year="2023"/>
            <abstract>
              <t>QUIC does not provide a complete version negotiation mechanism but instead only provides a way for the server to indicate that the version the client chose is unacceptable. This document describes a version negotiation mechanism that allows a client and server to select a mutually supported version. Optionally, if the client's chosen version and the negotiated version share a compatible first flight format, the negotiation can take place without incurring an extra round trip. This document updates RFC 8999.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9368"/>
          <seriesInfo name="DOI" value="10.17487/RFC9368"/>
        </reference>
        <reference anchor="ALPN">
          <front>
            <title>Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension</title>
            <author fullname="S. Friedl" initials="S." surname="Friedl"/>
            <author fullname="A. Popov" initials="A." surname="Popov"/>
            <author fullname="A. Langley" initials="A." surname="Langley"/>
            <author fullname="E. Stephan" initials="E." surname="Stephan"/>
            <date month="July" year="2014"/>
            <abstract>
              <t>This document describes a Transport Layer Security (TLS) extension for application-layer protocol negotiation within the TLS handshake. For instances in which multiple application protocols are supported on the same TCP or UDP port, this extension allows the application layer to negotiate which protocol will be used within the TLS connection.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7301"/>
          <seriesInfo name="DOI" value="10.17487/RFC7301"/>
        </reference>
        <reference anchor="HTTP_PRIORITY">
          <front>
            <title>Extensible Prioritization Scheme for HTTP</title>
            <author fullname="K. Oku" initials="K." surname="Oku"/>
            <author fullname="L. Pardue" initials="L." surname="Pardue"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>This document describes a scheme that allows an HTTP client to communicate its preferences for how the upstream server prioritizes responses to its requests, and also allows a server to hint to a downstream intermediary how its responses should be prioritized when they are forwarded. This document defines the Priority header field for communicating the initial priority in an HTTP version-independent manner, as well as HTTP/2 and HTTP/3 frames for reprioritizing responses. These share a common format structure that is designed to provide future extensibility.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9218"/>
          <seriesInfo name="DOI" value="10.17487/RFC9218"/>
        </reference>
      </references>
    </references>
    <?line 501?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vc63IbN5b+j6fAyj9iZUmuLk5iy5NJaEmONZZJRaJzqSTF
AbtBCqNmg2l0S2JUyrPss+yT7bkAfWNTztbUTlVGZBMNHJzrdw4O3O/3RW7y
RB/Jne8/FPc7IrZRqpbwPc7UPO/blbnp/16YqP/7srjv7+2LSOV6YbP1kXR5
LO4WR/L7j2fHwqyyI5lnhcsP9vZe7R2IG72+s1l8JE2a6yzVeZ9mFC5XaTxV
iU1hkbV2YmWO5C+5jXrS2SzP9NzBp/USP/wmVJFf2+xIyL6U8yJJmLb36o/i
2srxTSEk/M9mC5WaP1RubHok3yqXJ2v6QS+VSY7kDQ23N8W3C3wwiOyyNeF5
ESknL1QWF7pjyuPEFvE8UZmuT5vgS9/S/6/ozY6J/6FSJc/WOl2orGPikc7n
ibmvz/qvzAwMPN5K62lmIvnepKnunHK4WiUNMvUNj/1W4S80oej3+1LNXJ6p
KBdicm2cBMEXS53m0q10ZOZGO4kaIW915mBiuT9ofZerzN6aWIO4LDwUM9OP
TaYjJEMloB2ZVksnXRFdS2Du5PyqJ/NrLR3sQjqdSzv3gyRohIxVrhaZWgq7
0hntxcFwlUsk20T+SaaTtSxWsL5JSfFq9Ane19LEMXBAPJNnaZ7ZuCCKhGiO
lg8P/4FPvr58e/xqb2/v8VECE5Rs7qInUQGBK0iAjgUwLHUrUNN+otY6QxaA
5tpEzgqTwI5SmdsVbuzjyQWs8A38wQW++vLl4+NATmD34Q0RuCeXRZIbkMy9
juU8sXf9yCLdSQLfAxPvDJhBkctrreK+nfcTk2o5S2wEsl0gd5WIbIZszW5N
pAfyDPiWOAukzGHHEqdNYAdptJYwfcr7kxqMcZYYd02CRyno+dxEBr6JxDpk
d4SyXQNv39k7DR9JhrAS2AKozF3qaA+5JWHAsHFaPUeOkgjxt56caSR2phxs
DBYH3vRwRGpz3EGRGhSOSkDAKoq0c2YGYkTNOSZewh8S1sGrw8fHngR7w2Vt
BOZHsoL3/ArIF1hjtva6MLP32gFtQ1gKiO+mD7+AbayKXOVhviXyVN+vNAy/
1fQz7DvGdUGdBagQ/Nk/RLJevnjxJegQcgsJRmHDhCaNQIC44ci6HJeACXKi
NFKF07wyiCVbr3IntAJbWSmgPu/Ju2sD3+AVtwRiYFogNSUL8uNRgsA1MiSy
rgS0AxkA5CHlAolBjemRaFsro4bC5AkwWlqYbGn+ADJR0cCymBEwlzDpPAOH
moEVFRlx8YQZD4TALAm8xwwDN9CwVFQQOweVI6WEqQtHwgER8K6RJuSUCNzX
y1Vi18xebx20XaIOPApQnZE0MlDQSBOHEk3qAW7MsRnMgVcz4KCcWxicuiLD
VSH8QDC6AX0GDquZSUy+JgIaEi+1H6xEOZFqHevY6zS5MX2vgEbSm3eTyUWQ
0TWsHBu0NDSjmUlRCo4ooL09x8H/dQj68g1+In15tb//4vFxN3DBjzmQfsyB
HwOqvjuQlzqCmZM1BEYdwY7yNZg7sCADPl+rW/IqyxU4KPywsmBEZJKZvjUg
I55ZPIeprw/67FL6JDj39Vn/ZACuZels2r/O89XMuH57EJBQ3ykGOzAvERsX
Fc6xsGfonVBYqOcONRKCT5rDf8j+4OKIlOCD6xZZY+yPejYJXhZUChgPAvfh
Al8fyDdeg2myBu/FJu89f3uNeWWs5+BBwT6R1jtwhPc52jhuBd/EjYDCCCZX
ZUalMBAZeKdnFAP614fEO4zU/eohcBCdk2iMPNgy8gBlC9EXBQVRChQdGIEs
T8FT15ipnLORwfhD5gmej81Mk7uG7aCf8RaDJuuDgKuFI7K6MniVQcihN++O
/UqubLKemyQRHIUTiCGubuLVLFX0I5aj5hUprb65Is8WzBtdAoi9HXRn61z3
LZp5XgbBCkiAtQCnwOMh8xBQeKLjkuQSmsA2yGnnxts8h+0gY69WFeIQz81A
D3pyeHG2C1IB4JtxIOEIRtofFgOePzxc+Uh6MHhBqha+fzE4hJnJtUHkF4hG
jm16i0iC7AWGnqAOGl6W9gGIWSJkdnLnw8eryU6P/8rRmD5fnsJsl6cn+Pnq
3fD8vPwg/Iird+OP5yfVp+rN4/GHD6ejE34ZnsrGI7HzYfjzDkeJnfHF5Gw8
Gp7v4Aab2oEuHYQ704zpV5lG8YCnBE5HmZkxU94cX/zPf++/QIAFPuxgf/8V
xEX+8nL/K3B64Et0yqvZFCISfwV5rAWoFyBVnAX0TUZqBcEFtRQZf42GitgD
2Pn5L8iZ347k32bRav/F3/0D3HDjYeBZ4yHxbPPJxsvMxI5HHcuU3Gw8b3G6
Se/w58b3wPfaw799Qzivv//ym78L0iFUk4uAIAXh8QhAAUik8KhKpeua2dWN
rQvdNgxNeEOjl0DuoIoa1R8FBbjbAFTUr8l2Yg2eHeXitAbRVqgYw4/OcnAg
pPXkDgA/LDXjAYdaxASA3Cv3RP42TOKtuvYaIkSPeSAeI7Yl4AbvKHez8b58
rgcLsGFwELuwQADaiHvn8BcskDFmGpMaLzCcBloZexHMRtgcFkfmwpC36KDv
AUCkC4JZsGoVUiB5BILBLFBdAXDc8Q5APojkxfc/TSeXw9HVxfhyMr0YXg4/
nE5OL6/8ILQyCkkx+YpnKGTPSMomUiAnWeOi1YIPzzr57tWCZnRmkTKeIvRT
Y3g5SzOPcQ2NwR2KuUXPj0uDOTJ0gmWOhDhL+6QhsE6C0H1NgQYUisIRRZxS
12D4UX0XjcBQKmfD66N8OlNKIhESXL8siaFclih6LdmL81Pa0Z0O6oeDUs0D
EQzbJWbL6hYUGhXcQ1vMfLS5RVo5U0ir3JVeBTl9V4DIgVYgNrCA9nnWVkiI
hvVgrCTmVusASntMYW04J12k4kAa7wJeyV9L1myIR+B6cTzAs9yr4tKnHD5q
YVBGVET5YRrDPJiIOL2cIYwMnMLdAiI2kNkRzXOTQZoyK0BlQTQW7EM+N205
I2iBYLaA7BFDnU9Xaes/giuvXBH4bEqXahuts4USrvY0CZqAlGcIBzHo+GwC
2EZq7Qz8ACEDjBYEUeQLixv0vsKLrloBIwtM1uIvWArCWt5F2yWcBZfgVZby
I9oRVR10GhNbgL2wKQ27ZWCcA35lZoOPWFqI65a+YU0BKEgBXnvE3uZCaQBP
+ScyULYDdI/nV2WiWTMgiJiclNUNFYZ/HJ39JB3mxDm7NJWWgLsZICgcV3oA
UhvITUkLn7SHfI3Cc2OR2NKAuQJQW2oBeIQ80amObgYNxodUrGuzXGbQoAnA
fyxbgDQUeBqDkrg1mU1RR5y4o5oEJ4uE5dBu1y7XSwoVWJb0rpUh6ltSGPRh
pFYsk8rT1eNWLb7SRg1Z97rmUUDi7C3AzXs/0YDJHFPSYjkDkUH2FGnQrc/l
xfDk5Gz0HXy6PL06nUyvJpenww/w9WoyvpheAWLgX8vnH4Y/TU+Gk6H/yM83
n1zBN3w4fXM+Pn5/elJOMe18elV7cjwejU6PEYdMj8/HV6e1SIxxf6m8ArHo
ILKxyVmnO8px8tzc6DtIQIm7YqlV6p1R8FEkuxKMY0rHsdw1oj9onTMgP+A0
pT9Ubi6X6fFDKovcR5qrIt4ReKweSQrZWGpTcengefd+oR7WmRjVBGTvU2D+
ndDMRyaQM1ZPoI/am9unWk9mryHxwGiGm8RE0haOHDGlv8Pj922YQ54mlGiI
K11BcxEijyud8kCwTiNSo9TQb5NQk11kagV+CrLlNAZzvNHdC6q0tp4ItQaP
EdAQAjBA+d2qBGUy14orQ9LzJzhj9CwQXZdFSskq2nyoO56dcArEqlOjGDK1
a7k0C07HkIfAuJmJQd8CLITYJBPQB1yqzmBe1Ti2LTYdYDBq9eXPF5MxfBid
/jidjN+fjvznmrqfnZAdTiBZ2Hh8MZy8mx5jinA6+u40PLg8vRiPrvDru+Ho
BDKI96fTk/EIbOa0jBEhJ0E/EW9SO0CooKqgEtyII4RicnpfRIl1oRxQcpCU
Hl/NMtAsNJv1Ssu3CCunp6PjMfqO6enl5fjSA0qv7l5JHp411VuIH6mWlrfM
HSjCOg5WZ9mG4nr9F+JDWXuJGH+hpaOSJRQK500rK2Nmy1RQFdANM6ltWkPt
G2k71+kCNv7W6CSueW+M8xBo6oux/lkM9PU35/gm6hX7c/IS5g/UWy5MNKYg
DJ0jWki5CoDDl+reLIulH4IvU1jI9KJgNeZx4p8wcEqDpjjon12pApaUmsN8
SQiB3Exfq1sD0qWwq7AS5F2dIuVvMpGY4GOgmjkUiPemorl1CNommGfbD3Id
LC6RFGqtT69q6ZFYqXViVRwIpQKZj9bg7l0ozZPKQuxXEWwVLNZELszW5dUc
FUy8PBFTLdWaXBRWOHsYZYP3uTUu1HPAaiyL0YfZmYW5gQ5CPqRNYwSvXero
EzqsufvMgs8PMKj3yGQRhJMNk/36QX73JYYeoPGA/lUZQ5cmRirLfF3Nv49b
M0tANljaA9xVwg/B2+FRnmErrOVi8GjMXNax8MsVk3d20gt+xFPvPcgnvcfF
5XgyPh6fT384G58Pyf8FD0JyZg8AS9tl24LLsiUbG1bOiTjTgvGQjnNa4mGA
z0hYbZv8HcghcgsiS5HkQcTMExKTCJgrILSyrrDCWcsAWIdiCN8o74CFYt4I
GkhVeuAUqnYMYBra3KW2n7kqHKMGb6RLHLicLlGIR8fAG7AMX4ckXfusQu5r
XJKqbInGAn9TcYnysqjuDwm9o99WaNiAvF2lC3LrvsRBpb0QqcTTBQx+kWMG
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
V+VIiD7/C65u75VpRQAA

-->

</rfc>
