<?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.21 (Ruby 3.4.1) -->


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

<!ENTITY RFC1035 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.1035.xml">
<!ENTITY RFC3597 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3597.xml">
<!ENTITY RFC7493 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7493.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC7208 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7208.xml">
<!ENTITY RFC8552 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8552.xml">
<!ENTITY I-D.kowalik-domainconnect SYSTEM "https://bib.ietf.org/public/rfc/bibxml3/reference.I-D.kowalik-domainconnect.xml">
]>


<rfc ipr="trust200902" docName="draft-hoffman-duj-00" category="std" consensus="true" submissionType="IETF">
  <front>
    <title abbrev="DNS Update with JSON">DNS Update with JSON</title>

    <author initials="P." surname="Hoffman" fullname="Paul Hoffman">
      <organization>ICANN</organization>
      <address>
        <email>paul.hoffman@icann.org</email>
      </address>
    </author>

    <date year="2025" month="January" day="30"/>

    
    
    

    <abstract>


<?line 34?>

<t>It is common for service providers such as certificate authorities and social media providers to want users to update the users' zones to prove that they control those zones, or to add other features.
Currently, service providers tell users to do this using human language describing the resource record type and data values to enter into the zone.
This document describes a text format, called "DNS update with JSON" or "DUJ", for such a service provider to give to a user, with the expectation that the user would copy and paste the text to their DNS operator to update the user's zone.
DNS operators who know how to handle DUJ strings will make the update process easier and more predictable for their users.</t>



    </abstract>



  </front>

  <middle>


<?line 41?>

<section anchor="introduction"><name>Introduction</name>

<t>There are many scenarios where someone gives instructions to a human to update their DNS zone in order to prove that they control those zones, or to add other features.
For example, someone suggesting that you add an SPF <xref target="RFC7208"/> record to a zone might say "add a TXT record with the value "v=spf1 a:mail.yourname.example ip4:192.0.2.49" to your zone".
The expectation is that you are either able to edit your zone file directly and understand the format of the records, or you use a DNS operator who has an interface for you to be able to add and modify records in your zone.</t>

<t>This document proposes a method for giving a human a string that can be copy-and-pasted to give a precise update for a zone.
The protocol, called "DNS update with JSON" or "DUJ", specifies a string format in I-JSON <xref target="RFC7493"/> that represents the addition and deletion of records in a DNS zone.
It is designed for DNS operators who accept strings in their interface for zone updates.
The format self-identifies a string as DUJ, and the protocol lists what is and is not acceptable for DUJ strings.
Using DUJ makes the update process more reliable for DNS operators and their users.</t>

<section anchor="use-case"><name>DUJ Use Case</name>

<t>DUJ is specifically targeted at improving the current common scenario of a user being told by an application service or a helpful friend to modify their DNS zone.
DUJ is not intended for any automatic zone updates.</t>

<t>DUJ is intended only for users who copy-and-paste.
DUJ strings can be typed by users, but doing so can easily introduce errors that might negatively affect their DNS zone.
Because DUJ strings contain quoted text, and some typing systems might automatically unhelpfully convert quotation marks into "smart quotes", for some users typing DUJ strings might be impossible.</t>

<t>Different, more elaborate protocols for automatic updates, may be proposed separately.
For example, DomainConnect (<xref target="DomainConnect"/>, <xref target="I-D.kowalik-domainconnect"/>) defines an automated protocol that includes user affirmation before updates.
DUJ is purposely more limited and less less ambitious than those protocols, with the assumption that it will be much easier to deploy.
Service providers might allow manual updates as they do today, manual updates by DUJ, and automated updates with a protocol like DomainConnect.</t>

</section>
<section anchor="design"><name>DUJ Design</name>

<t>This format is explicitly only meant for the use cases in <xref target="use-case"/>.
If the designer of an automated protocol is thinking of re-using DUJ in that protocol, they should not.
DUJ is specifically designed for copy-and-paste by end users.
It would be trivial to design a better format for describing automated DNS updates.</t>

<t>The design choice to use JSON arrays instead of objects is to increase security and reliability.
This is to prevent key-value pairs to be added that might cause users or operators to possibly process the DUJ strings incorrectly or to misinterpret them.
For example, it is not possible to include comments in a DUJ string such as "For DKIM".
The reason for this is that such comments could be used by an attacker to convince a user to make a change that they otherwise might not by adding a comment such as "Urgent security update".</t>

<t>Another explicit design for DUJ is that it is not extensible.
If there is a reason to create a later version, the first string can be changed to one that includes a new version identifier.</t>

</section>
<section anchor="bcp-14-language"><name>BCP 14 Language</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>
<section anchor="specification"><name>Specification</name>

<t>An example of a DUJ string is:</t>

<figure><artwork><![CDATA[
["DUJ", [["add", "mail.yourname.example", "TXT",
 "v=spf1 a:mail.yourname.example ip4:192.0.2.49"]]
]]></artwork></figure>

<t>A DUJ string <bcp14>MUST</bcp14> be a JSON array with two values. The first value is the string "DUJ".
The second value is a an array, called the "update array", which lists all the updates.
The update array <bcp14>MUST</bcp14> have a length of at least 1.</t>

<t>The arrays in the update array are called "action templates".
Every action template is an array of at least four values: "action", "FQDN", "RRtype", and "Rdata".</t>

<section anchor="action"><name>Action</name>

<t>The action is a string specifying the action to be taken.
The action string <bcp14>MUST</bcp14> be either "add" or "delete"; no other values are allowed.</t>

</section>
<section anchor="fqdn"><name>FQDN</name>

<t>The FQDN is a string that is a fully-qualified domain name.
The FQDN string <bcp14>MUST NOT</bcp14> have a trailing period.</t>

<t>Note that the FQDN might be a zone that does not yet exist because it is being created by an "add" action.
A common example of this is adding an "underscore name" <xref target="RFC8552"/> such as "_smimecert" and "_xmpp".</t>

<t>The FQDN <bcp14>MUST NOT</bcp14> contain a wildcard.</t>

</section>
<section anchor="rrtype"><name>RRtype</name>

<t>The RRtype is a string with the name of the resource record type for the action.
The RRtype's name is given in the "TYPE" column of the "Resource Record (RR) TYPEs" IANA registry <xref target="TYPES-REGISTRY"/>.</t>

<t>To specify an RRtype that is not yet in the registry, use the format specified in <xref target="RFC3597"/>.
For example:</t>

<figure><artwork><![CDATA[
["DUJ", [["add", "yourname.example", "TYPE4321", "\# 4 0A000001"]]
]]></artwork></figure>

</section>
</section>
<section anchor="rdata"><name>Rdata</name>

<t>Rdata consists of one or more strings that with the record's data.
The strings are expressed in the same manner as the display format defined for the RRtype.
If there is no data for the record, this is specified with an empty string ("").</t>

<t>Some RRtypes require multiple character-strings, where "character-string" is defined in Section 5.1 of <xref target="RFC1035"/>.
In such a case, each character-string is a separate JSON string.
For example:</t>

<figure><artwork><![CDATA[
["DUJ", [["add", "yourname.example", "WALLET", "ETH",
  "0xb775599c76b4672B0D820E3AA534F7cF9312c263"]]
]]></artwork></figure>

</section>
<section anchor="processing"><name>Processing</name>

<t>This section defines rules for DNS operators who allow updates with DUJ to process DUJ strings they receive.</t>

<t>The update array is an ordered list of action templates.
The DNS operator <bcp14>MUST</bcp14> process each action template in the order it appears in the update array.
However, the DNS operator does so only after verifying all the contents of the DUJ string.</t>

<t>The DNS operator <bcp14>SHOULD</bcp14> be able to handle <xref target="RFC3597"/> RRtypes.
However, they may have a local policy to not allow users to add or delete unknown RRtypes.</t>

<t>A DNS operator <bcp14>MAY</bcp14> reject any DUJ string for any reason.
If the DUJ was received from a user interface, the DNS operator <bcp14>SHOULD</bcp14> clearly describe why a DUJ was rejected.</t>

<section anchor="string-verification"><name>String Verification</name>

<t>The DNS operator <bcp14>MUST</bcp14> not process any DUJ string where any of the following rules are not met:</t>

<t><list style="symbols">
  <t>The DUJ string <bcp14>MUST</bcp14> be valid I-JSON.</t>
  <t>The first element of the DUJ string <bcp14>MUST</bcp14> be "DUJ".</t>
  <t>The update array <bcp14>MUST</bcp14> have at least one action template.</t>
  <t>Every action template <bcp14>MUST</bcp14> meet the following rules:
  <list style="symbols">
      <t>There <bcp14>MUST</bcp14> be four or more elements</t>
      <t>The action element <bcp14>MUST</bcp14> be either the exact string "add" or "delete"</t>
      <t>The FQDN <bcp14>MUST</bcp14> be a valid fully-qualified domain name</t>
      <t>The FQDN <bcp14>MUST NOT</bcp14> end with "."</t>
      <t>The FQDN <bcp14>MUST NOT</bcp14> contain a wildcard</t>
      <t>The RRtype <bcp14>MUST</bcp14> be recognized, or be in the format specified in <xref target="RFC3597"/></t>
      <t>The Rdata <bcp14>MUST</bcp14> be appropriate for the given RRtype</t>
    </list></t>
</list></t>

</section>
<section anchor="action-processing"><name>Action Processing</name>

<t>After verifying the DUJ string, the DNS operator processes each action template in order.
When processing an action template, the DNS operator <bcp14>MUST</bcp14> verify:</t>

<t><list style="symbols">
  <t>that the  user is authorized to change the zone named in the FQDN</t>
  <t>that, for "delete" actions, that the exact record described in the action template exists</t>
  <t>that, for "add" actions, that the exact record described in the action template does not already exist</t>
</list></t>

<t>A DNS operator <bcp14>SHOULD</bcp14> tell a user about every change made from a DUJ.</t>

</section>
</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<t>This document contains no actions for IANA.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>A DUJ has no cryptographic protection.
It is, by design, only as secure and the current common scenario where a service tells a user to manually copy and paste some data (the RRtype and Rdata values) into an interface run by the DNS operator.</t>

<t>When a service gives the user a DUJ string, the authenticity of the source of the DUJ string and the integrity of the DUJ string is only as strong as the user's connection to the service.
When a user pastes a DUJ string to a DNS operator, the authenticity of the source of the DUJ string and the integrity of the DUUS is only as strong as the user's connection to the DNS operator.</t>

</section>


  </middle>

  <back>


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

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

&RFC1035;
&RFC3597;
&RFC7493;
&RFC2119;
&RFC8174;


    </references>

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

&RFC7208;
&RFC8552;
&I-D.kowalik-domainconnect;
<reference anchor="DomainConnect" target="https://www.domainconnect.org/">
  <front>
    <title>DomainConnect</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>
<reference anchor="TYPES-REGISTRY" target="https://www.iana.org/assignments/dns-parameters/">
  <front>
    <title>Domain Name System (DNS) Parameters</title>
    <author >
      <organization></organization>
    </author>
    <date />
  </front>
</reference>


    </references>

</references>


<?line 217?>

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

<t>Andy Newton and Gavin Brown contributed to an early version of this draft.</t>

</section>


  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA61a6XIbxxH+v08xgX5YSgEQT1NkHDswSVl0JErmEUfluFyD
3QEw5h7wzi4piEU/S54lT5avu2f2AKEcTlQlCdido8+vv57BaDSKKlul5kid
nF+q62WiK6PubLVQ316+PY/0dFqa20+8TIo41xmmJqWeVaNFMZtlOh8l9c+j
ra3ILssjVZW1q3a2tg63diJXTzPrnC3yarXErLPTq5dRrKsj5aokinRdLYry
KFJqhL9K2dwdqXdj9UqW5Wey3Ttdp73HRTnXuf2oK6yNdY8n5+f83GTapkdq
ifFjL92fbKzzfIwZUZQXZYY5t4Y2vXh5vL21u+8/7u4fHviPB3uHu0dRZPPZ
2vCDna0X/uOL/f0d+ng2OhnfFHc6tTejpMDueVzkuYkrennCD47bB0oF03ff
yAtdzg0ss6iqpTt6/vzu7m7cW5A0eM5DySlHaqZTZ/D96v2708vRxek3Z5dX
F+837KLOYUN1uXKVydRT+PUZ7FniWWVK98m9rc41b6nhwHmembxyz5PcjZbN
3MfSRKPRSOmpq0oNtaKzSlmn4iLLilzBmMqZ8tbGRi3L4tYmWEK5Ol4ojUGm
rOwMrkK8SVzYyhqndJ4oV8RWpyozidWdqVWh7nReqdr5b7WEa7Uw8uwz9bHI
Db+iWfRGV/R6BZnyqixSfCmckWFDBBUN1UmiCgwq1czoqi6NG0fHdVnCAOlq
uEGFyqRpK0RSYFFoXTubz9WiRgSqVOfzWs+NSoyLSzulNyQl1i7qMqYPcVEm
irKENYYeWt3qtBbpsTXEsXlV8DQSdxxd0S5IyJpcE1Ymi0GgD5WS2B2qWKep
SdSA8rley+cBqTw4uf52MBT3sDMeqUgizC3ZD9ZhTYeyBgljPiwRnJyIjX15
jLor6jSBpZcr1mmpnXcOyye62JKBpliaUldi/zUvfua8vt1xTt0tCnWTF3dq
gb+YtcAWqVHQBdhSwsAYYuGXTN/4tWRZ6BQb55TRzkJGEiwrSnqO6IIeUyxC
phDZ2KtjCevMJtghip6oM4qdpI5J5wh+MJiv8ReuXikXm1yXtiAR6YUrMgP5
2YCOIA4AyTOdmFMipKe3NwqpjQnwkffB/xjEL/HKfNDZMjXDRixXz+fGVRKR
WHhV1DwZMl2+e6nu7z3sPTw0QUpSs2yZnS8q5fRKDXiKuvrrVRjVxAdHsRrc
/tEtZ9tKHxFAj7FLScg+9vIou9w72j7cGW+Nd8Z7hwPahMbwPgOK9X6gIfJb
aWFkY1lX9h7lS2Krdr6aWTxOLCRDBrPL65wyt6KPJKPkiipmPitJAzElbYAg
gG69MKXoW2hCJ8pKU850LGFD4yHA1DSyiDEpyhI7W4XFya+NgONoLZnh6CVc
SrkMpF0UCa+NCCI3hZDRPtDFEqhxtCtl2wjbjTjbkiZzCTdNbF2TB7SgbpCE
86Iq4iL9zwHDwR1AbJbSS+LtCN3ORjTchw/KKcKHxSwN5HBUS9jUMI5lhzLo
mdTwF/ihYybdJMPYFxRgHSqSEas8hgUdx2ZZNTBgc59TfU9xZIh+TkzgpXcm
nY0Ae3m1ph38Dc2HKkRNMJlKratoa83S0Wv8lxeVl6TBlA44jaNrrg/0iCDK
bcIoBqbSpLZdoaesF6SDU0+e8IrX8POxxj/3T/BmFOPjQxTRGwjm/UZuXvnK
D1OS7BkDvq9NsZS8UL0DrJFzpAYg3HhsAZCfUlopvVymVMHJh6GGcJgtTLqc
gcHNSmtyDkqfDX2wGwcRyXbkLWSpOJmAFaygIDYWr7kuTGomFDkUo1lSkykk
+mkh+4T48JlDtZcV4VlDNa1RVAvS0BU8hioGFrYe/AE6ZUle4LgWKMzNnOki
ocxsBrh5pODXJtaEJz0BAONE036pC05ZVMeh5z0Zy8VCMH1zfqPGFuzEOvcG
Trkm3IJK8WLiiUyXN07Iw8Dhi7wzLtR82sSzF9mqK5tsB/MgOAoQQQQiWdxC
O4qOocSoSfW0KH3ock44cVvjMu8tjEe1mJqAcNDREJ8EhVqtFageQ1ZP7+97
Dx4ehgCXT5Lvh4dnQImZzZlBBjmwXZOz7DWMT2ugicQzXGaZ7xcUEDNSrAky
H2PLuiSxYWfWO7WZ5eSBs1LKWP5HZ1MCtZpDI/fVuTFMhzqBWdfZsmVOKFrM
WWCfjJiY5yhEKs0yLWChy0fk08dDmoIGoSrU4MleaMIrpgnESItEr4brAxDs
DaC1JgpvWUzdRTkwqZ4TWsA5YUQG3Ag0P/iCFuqBo+INaLBUfzk9M0PM3RMt
rrAEUgzW9/cNZj0A8aUme8gvGX42OpQpgc1vKIK5gIzqBmGtN3Bb5NgwbsEM
FWgz3giOvTrThxCyHUGZB17UJWG7BCQl6jSszG5js2g8rojBe3vQcp1OoFWm
LbmOOUHQW8WLgtxOLBGm4tKqy1KvhFAanZDKxfRnOMWxJQqK7dJQDXAGUG4r
IT5STWyK776DsL4/MreE9jdmNRLGttRWGpopl2kCphboBMQENaBMW5JoKcGJ
VVPGyH9dTKEsLT0ZE7aaWcfFGVIwZGZrWGCrUBUCCHkNKXu5QjGjELLQ7NT0
lgNa7OTPZ288kyS7+Ia0CiYg3Xh8s1ocHFo701S4qtLxjeQkIS1EMKEckh7U
bGh4C/1el6gzE78j9uXrBDShBcF+mND5PVuBr1GV6XtwnQQFxI8mudD6kFAh
QgK/CLq0JkM5MblHbskmIBfxlGAH0gUfqfFGp0pxigpChzZDIceIg8CmGprJ
GnIlp1rcB1ONOngX1lANkyoFLr4+fqe299Rr3xJLmCPskEBE+AZvri+vUJr4
f3X+lj9fnH53fXZxekKfL19NXr9uPkR+xOWrt9evT9pP7czjt2/enJ6fyGQ8
Vb1H0eDN5P1AIHDw9t3V2dvzyeuBAEaXkVOTIbnQBCrhvotC353QHOj2j79D
ufv734H37mxvH4L3ypcX2wd7+IKeMJfdGAblK8VIBPJkdMkxjBIQ66WtNFUL
hANw6i5X5DeY8Pc/kGV+PFJfTOPl9t6X/gEp3HsYbNZ7yDZ7/OTRZDHihkcb
tmms2Xu+Zum+vJP3ve/B7p2HX3yVonir0faLr76MqOe+DMAsTfckD+gghLST
9dYdRdGvv/4a/eAblR9+oPaU3L+x96QXaFwRC/9tl/rjj7xPNOluz84gzOzA
tC/5d4U/0xmrqyaxBG2twKRfgwUXrAIEFIiWZpRmGKJFm06NJg5868BvoNHd
wgJKpDGheGq7C9/sdMeLzAvNfWJq8jmEJatW+IJip7Z9MWpKTrdZkRUoP0Lj
qGOhNAY2ow2hySnQAIP6L6RZ8gt095tRYyyWOgrLkZdefndyzkl9QWQ9ZO0F
HZYNBFwm7ZlM2M12Ojip7qvQ4gR5OK8rYHc+7s5cc6g/Y+BY4jaY+1Uz+ANQ
1p+1+BM7MgYzMpOIWCS4CEWfeiJVoWtUzN9Hv4CgEVqiHZbDWw7Adm5XKMox
77WqRMDSC1RiW9C250XVliCZ25B5f37Db5PCSJ1YGaoViBiMkPouNUTaPKkQ
oQ6KEcROY8S/bxI7KRkKa6hxmCOHLjERZ1JqIKcDdJAOYGxK308us5mh4+CB
+PenD9lyORh37NcoHzonTbw5iXXp7S0BIjPkc8/mDQEnMdpTnw1nsYGgBk3b
BT9zMhvr0gFLHrJiQMfxA0iW1lke1h5chMUvZPGnFxfP+ODeDdTZ5HyCTeew
PHLk/r5/nk8cOLoqQuiSIb1GIXKC77wAYaUhU8XO6VY4r0mEZPsrD1q/w7U+
CZ0bUROS7u3ubNPnvz1Re2prskV/thtkfMLJGUX8H7nLMSIRWc35bIDbqEAM
WaPGOeIH2JnmejD0A/nI7wOdJDlRh7GT3IEOh7oEaX1UYh2QZhUsIB1h0nhV
DNlnRchlljWMESmGTTy3VpT+CEGPFm4VQuvpYPAMDrukplqWd1jil9rS8XCd
VpbSA+yJ7kdMOfIKDf1Z8WD9zUCOu0Rs6HlpBJr2x9tkRPYi3WFxp5SH83vq
nYboHonNri3o88A33VKi5M1vD4PvwSBOmW2dXr2iMqoGWx+mBwf7+4eH8cHn
073PD3a+3jp5sbN1ujuZ7O/uvTyIXx7ubu/EO5/vtqGi3km/AFl8++i8tqGT
L2v015869OMOuNe7UlGWU3NuQ7otCLNyuNYgdT2y9MqZVCY+eIfhqYxygVor
bBKUvYNhhqb2joHcsV70JFrlUB8IK7xvY1UdR69QQ27puqVa34hh2xVCI/XM
s3Zf3ELFJ3zkXsbjUGsCr3RvSc/wOmfX/lKlAxYhqPuirfhYJxCIAkQAjRra
kxUtwgeh4p1wR8a3E6Uc+ELlnC5y8nZpIlQ9o07ew1nU3PJBYIdshbNB6WSa
0wIacadd8DAyviyy0Kc1x8AbrOpNEIOHlHIAwOQeEbbyJFOWJVlCcb8UUf5C
1m/46ebA4A7WB8eaJgIA9ND7alaQzeiVhD1hHs3PTIXsHDGD3EA7QUFs4o/f
x36YEE0Ym1uZR7HQzPW0UyZ9iiAGkkYAvhbbNHUz0+P5mZHufl01/gGAkmu0
IApTwFAfvOQujAvLB43WGJrcSmJMQ6fXKVuzUEsnmBWJ8f4FEdswkXgInQQx
5AzGm9beTFWagb6eBzGo4sxz+9EkfAM1bSDj39Txdj0uYI1WSzprLW249KGV
hLEEltTw5h4CT9YwpR8zG3LHB7b5NO4x5o2j79H0htGeG64N3rA6qyPScPg3
zNYntQu/GvgoxxLNGYxcjLL3GqrAfFzWkEPwEBheEDds15dI8qSw1+13W4ig
JRNo11+7w5V/+8INTdcpwC5ZyU6PoNIDGP8kweOdnhY1sp/z0lsl04kJmAif
jvlSm2joMTG0hNYiYdevJX0MM0ny+rCGNJXXuAznVevrSIdMN6Y5HTatllUx
L/USTSqfyRpPr/l6b0g9hpxqDX15c3ISZpqrt09dTnkUbW6fyA6ud0BHB+B8
TdL7VQJfgnDaPG2JIb+/6PwU45ncovQufcs6J3nX4xXm4DBvRZH7/+bHEfpR
MlH80lFZTAb0IO27hseQHQxBgszLzozeQUhrvqos5Aaz87MKf1fiW2DeTmQd
B9lZUraQ65+x8G8Auvr+f1W4vvwNwq+Zn36yMdXxDcXlJCaGkZpk7gtJNMmR
QufmrvJ3z9/oWzq/K4mH8M8q7LT29+d89UdsIJxohu6WfwM3jv4J8F1Yg1En
AAA=

-->

</rfc>

