Tools to work with the Google DNS over HTTPS API in R https://cinc.rud.is/web/packages/gdns/
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

430 lines
22 KiB

<!-- Generated by pkgdown: do not edit by hand -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>query. gdns</title>
<!-- jquery -->
<script src="https://code.jquery.com/jquery-3.1.0.min.js" integrity="sha384-nrOSfDHtoPMzJHjVTdCopGqIqeYETSXhZDFyniQ8ZHcVy08QesyHcnOUpMpqnmWq" crossorigin="anonymous"></script>
<!-- Bootstrap -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<!-- Font Awesome icons -->
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
<!-- pkgdown -->
<link href="../pkgdown.css" rel="stylesheet">
<script src="../pkgdown.js"></script>
<!-- mathjax -->
<script src='https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML'></script>
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<header>
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">gdns</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>
<a href="../index.html">Home</a>
</li>
<li>
<a href="../reference/index.html">Reference</a>
</li>
<li>
<a href="../news/index.html">News</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
</header>
<div class="page-header">
<h1>Perform DNS over HTTPS queries using Google</h1>
</div>
<div class="row">
<div class="col-md-9">
<p>Traditional DNS queries and responses are sent over UDP or TCP without
encryption. This is vulnerable to eavesdropping and spoofing (including
DNS-based Internet filtering). Responses from recursive resolvers to clients
are the most vulnerable to undesired or malicious changes, while
communications between recursive resolvers and authoritative nameservers
often incorporate additional protection.</p>
<p>To address this problem, Google Public DNS offers DNS resolution over an
encrypted HTTPS connection. DNS-over-HTTPS greatly enhances privacy and
security between a client and a recursive resolver, and complements DNSSEC
to provide end-to-end authenticated DNS lookups.</p>
<pre><span class='fu'>query</span>(<span class='no'>name</span>, <span class='kw'>type</span> <span class='kw'>=</span> <span class='st'>"1"</span>, <span class='kw'>edns_client_subnet</span> <span class='kw'>=</span> <span class='st'>"0.0.0.0/0"</span>)</pre>
<h2>Arguments</h2>
<dl class="dl-horizontal">
<dt>name</dt>
<dd>item to lookup. Valid characters are numbers, letters, hyphen, and dot. Length
must be between 1 and 255. Names with escaped or non-ASCII characters
are not supported. Internationalized domain names must use the
punycode format (e.g. &quot;<code>xn--qxam</code>&quot;).
If an IPv4 string is input, it will be transformed into
a proper format for reverse lookups.</dd>
<dt>type</dt>
<dd>RR type can be represented as a number in [1, 65535] or canonical
string (A, aaaa, etc). More information on RR types can be
found <a href = 'here'>http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml#dns-parameters-4</a>.
You can use <code>255</code> for an <code>ANY</code> query.</dd>
<dt>edns_client_subnet</dt>
<dd>The edns0-client-subnet option. Format is an IP
address with a subnet mask. Examples: <code>1.2.3.4/24</code>,
<code>2001:700:300::/48</code>.
If you are using DNS-over-HTTPS because of privacy concerns, and do
not want any part of your IP address to be sent to authoritative
nameservers for geographic location accuracy, use
<code>edns_client_subnet=0.0.0.0/0</code>. Google Public DNS normally sends
approximate network information (usually replacing the last part of
your IPv4 address with zeroes). <code>0.0.0.0/0</code> is the default.</dd>
</dl>
<div class="Value">
<h2>Value</h2>
<p>a <code>list</code> with the query result or <code>NULL</code> if an error occurred</p>
</div>
<div class="Details">
<h2>Details</h2>
<p>To perform vectorized queries with only answers (and no metadata) use
<code>bulk_query()</code>).</p>
</div>
<div class="References">
<h2>References</h2>
<p><a href = 'https://developers.google.com/speed/public-dns/docs/dns-over-https'>https://developers.google.com/speed/public-dns/docs/dns-over-https</a></p>
</div>
<h2 id="examples">Examples</h2>
<pre class="examples"><div class='input'><span class='fu'>query</span>(<span class='st'>"rud.is"</span>)</div><div class='output co'>#&gt; $Status
#&gt; [1] 0
#&gt;
#&gt; $TC
#&gt; [1] FALSE
#&gt;
#&gt; $RD
#&gt; [1] TRUE
#&gt;
#&gt; $RA
#&gt; [1] TRUE
#&gt;
#&gt; $AD
#&gt; [1] FALSE
#&gt;
#&gt; $CD
#&gt; [1] FALSE
#&gt;
#&gt; $Question
#&gt; name type
#&gt; 1 rud.is. 1
#&gt;
#&gt; $Answer
#&gt; name type TTL data
#&gt; 1 rud.is. 1 3599 104.236.112.222
#&gt;
#&gt; $Additional
#&gt; list()
#&gt;
#&gt; $edns_client_subnet
#&gt; [1] &quot;0.0.0.0/0&quot;
#&gt;
#&gt; $Comment
#&gt; [1] &quot;Response from dns.mwebdns.eu.(84.246.125.230)&quot;
#&gt;
#&gt; </div><div class='input'><span class='fu'>query</span>(<span class='st'>"example.com"</span>, <span class='st'>"255"</span>) <span class='co'># ANY query</span></div><div class='output co'>#&gt; $Status
#&gt; [1] 0
#&gt;
#&gt; $TC
#&gt; [1] FALSE
#&gt;
#&gt; $RD
#&gt; [1] TRUE
#&gt;
#&gt; $RA
#&gt; [1] TRUE
#&gt;
#&gt; $AD
#&gt; [1] TRUE
#&gt;
#&gt; $CD
#&gt; [1] FALSE
#&gt;
#&gt; $Question
#&gt; name type
#&gt; 1 example.com. 255
#&gt;
#&gt; $Answer
#&gt; name type TTL
#&gt; 1 example.com. 6 3599
#&gt; 2 example.com. 46 21599
#&gt; 3 example.com. 46 21599
#&gt; 4 example.com. 46 3599
#&gt; 5 example.com. 46 59
#&gt; 6 example.com. 46 21599
#&gt; 7 example.com. 46 3599
#&gt; 8 example.com. 46 3599
#&gt; 9 example.com. 46 3599
#&gt; 10 example.com. 47 3599
#&gt; 11 example.com. 2 21599
#&gt; 12 example.com. 2 21599
#&gt; 13 example.com. 28 21599
#&gt; 14 example.com. 1 21599
#&gt; 15 example.com. 16 59
#&gt; 16 example.com. 16 59
#&gt; 17 example.com. 48 3599
#&gt; 18 example.com. 48 3599
#&gt; 19 example.com. 48 3599
#&gt; data
#&gt; 1 sns.dns.icann.org. noc.dns.icann.org. 2015082669 7200 3600 1209600 3600
#&gt; 2 a 8 2 86400 1477364031 1475579385 1704 example.com. auGIKxU2oVxE9YE2ca9Xv5yuA2bP8uwIXW3t/d/wxGn6gnzuyVPefMHu5jT0z2ldwsqiB0+VGZpVguUeY7M22PCR0YwMGjB64/VQjsZQxAhaleVOLCRR2fya4EtOYvPRoWielQfDaS+4SBenCv0+nN8Gb3PMSsEe0ICjDSrzFRC0V7U=
#&gt; 3 ns 8 2 86400 1477484364 1475701785 1704 example.com. bY3Q/b0KCwv+fkMGpKABu3oT3y+u2xcCoykkPDJrkVGRM16Z4WojbemTYFR++pbsbuVHptz6uUtX3m94kbyvmaLvXTxy1bwY0b8F/0Rz9Se9jy5mIUiatTHftqlz434PC+UnQKNiWZBYsgQJegTJZJLlJ7/KaiIzjrhltRFWwqsOaUA=
#&gt; 4 soa 8 2 3600 1477543924 1475701785 1704 example.com. kWe1dnPv94cNlWhysZSKC3WC4/YlSTkG6/NZtFxxQcwPGlS7x+z4tRnNodhfLCpYw8D4loan0ybfWuRK/tzKminJsdt3lLqJxlXvcIzmEkI17xKUpcnD1jA0mhCfTptzLj4oCw4hhkC/d8JuD5jVmTskoiav36SV+cW1KngAY/UtPfw=
#&gt; 5 txt 8 2 60 1477325190 1475536185 1704 example.com. ZaMZnuA5mh+GSbmL3nJxDbVZEdAu0BC1I71FgOPojAgRT5i2pn4+obRCd+aUw3c/grt1xzciBdhyw9jMvzcyEwcxk2WDS+REkEwzBn1YKodoo1YCjcXVUZscugSXc+hq+eFaTcRlW/siqWq+cy77VVsjdKJTAJrcK12abkjOnRrqfww=
#&gt; 6 aaaa 8 2 86400 1477264070 1475449785 1704 example.com. M0ggDOmzYveQUd145aePLv19PwzYed7bDNsU74quoitB1nEZ8/r7ROdsT1m7VXi/BBimUVtezXBeVTc3/+2rEvhNsmX1WRrHN7seHzAiEt27TNogwn3e40YGCrwVIy+ypLRfZTi+Xlv/Ykd0H4Uvp0tW+69eel8MOlYRqSO5DMizMTc=
#&gt; 7 nsec 8 2 3600 1476958241 1475176185 1704 example.com. WnXb1Y/Qkn5CmiRir6a0KssPjiPbEq7Tko0rWsQQyFFPrT+JB/6YUKStJY5K+GN+M2tWGW3jrOSbTVei0GLxjE/3BBLoYtLqLURjEk3Ki3n5zP5c9FMyQPf3fCC0ac/kSxw5V3nTs3eSnu8p/quseV8BqkU/hYgm1qsvQOyXVUSFync=
#&gt; 8 dnskey 8 2 3600 1476561735 1474722585 31406 example.com. Oup7snCR/5iUmTuGyHfCfFCisTeqaJ8RHD6aE9wZQR2CCkKZHXO9dzfUL1gA6T35p4T0XeM+TMlv1uZhX157RnanPwyZluancmm5cNz5ub0vG7G/O4DxnSoLmATYoBJ7Ub9Ul4iWFUE7nvyJ23X2MhX6XTiplXYPnztiem6rJLV84JiemoKtvapWchRhFi4w4Y+BdjHfY7IRERjQYNhVuaus5+EeppIoot9srsj2suXePGC7dE0R8z9K/BTYvQi76kBlJzzF9fNNy5JvyZPEUpXATuRD7KfxBsWHaFajOnYOb1eDAL/C0H3hhjVBov2Pexp7YDIsJzIa2g8850LruQ==
#&gt; 9 dnskey 8 2 3600 1476561735 1474722585 45620 example.com. f+aO6V+QKA4XgTC0Vqow59jBP/NlX6f7EEbaoXts0lp7Vaj/DBrhnS/sT4BbJb3VK1MvuPmNre5t0eyOeNCjbjrwIM2uf41GFuBI0AFxQx7o2PIdf1vrXsDnUGsZrMkYMv4gr802S7MXsvMdMN5cM0AA5Zol888sLP1yrHIcfNxG8hoUn3dS0L6nd/OxkL70+NjHBTjBQLqkLsK92ryJ0CWrzcJElszBRqfQfYGV/sJ84Ko4tjnBqRuki/rmTW5KQYdE7NI+MvERtGnep7RHb02Luk7BFPPD3uh353EYSAOVHrMH4fte6mJGcj3vxErfSWakRUXQpovLNcqYZNxoGQ==
#&gt; 10 www.example.com. A NS SOA TXT AAAA RRSIG NSEC DNSKEY
#&gt; 11 a.iana-servers.net.
#&gt; 12 b.iana-servers.net.
#&gt; 13 2606:2800:220:1:248:1893:25c8:1946
#&gt; 14 93.184.216.34
#&gt; 15 &quot;v=spf1 -all&quot;
#&gt; 16 &quot;$Id: example.com 4415 2015-08-24 20:12:23Z davids $&quot;
#&gt; 17 256 3 8 AwEAAa3d68DfyIs03nGYpi3a9YX+f/wln3g6dhWWzjUUqp6CGXuaOdEHfS8zI/5JdGKi8Xoc4YmjPGfiCJIkCiQnMKn/QFygpZs41ANLdPp2jJlJhFA6IHE/xxTCxJfNhsdEAOGlMORN9Zu1XLUBo/IuCDUvUzZPgalivd/m9L+Jr4kxbg3v
#&gt; 18 257 3 8 AwEAAZ0aqu1rJ6orJynrRfNpPmayJZoAx9Ic2/Rl9VQWLMHyjxxem3VUSoNUIFXERQbj0A9Ogp0zDM9YIccKLRd6LmWiDCt7UJQxVdD+heb5Ec4qlqGmyX9MDabkvX2NvMwsUecbYBq8oXeTT9LRmCUt9KUt/WOi6DKECxoG/bWTykrXyBR8elD+SQY43OAVjlWrVltHxgp4/rhBCvRbmdflunaPIgu27eE2U4myDSLT8a4A0rB5uHG4PkOa9dIRs9y00M2mWf4lyPee7vi5few2dbayHXmieGcaAHrx76NGAABeY393xjlmDNcUkF1gpNWUla4fWZbbaYQzA93mLdrng+M=
#&gt; 19 257 3 8 AwEAAbOFAxl+Lkt0UMglZizKEC1AxUu8zlj65KYatR5wBWMrh18TYzK/ig6Y1t5YTWCO68bynorpNu9fqNFALX7bVl9/gybA0v0EhF+dgXmoUfRX7ksMGgBvtfa2/Y9a3klXNLqkTszIQ4PEMVCjtryl19Be9/PkFeC9ITjgMRQsQhmB39eyMYnal+f3bUxKk4fq7cuEU0dbRpue4H/N6jPucXWOwiMAkTJhghqgy+o9FfIp+tR/emKao94/wpVXDcPf5B18j7xz2SvTTxiuqCzCMtsxnikZHcoh1j4g+Y1B8zIMIvrEM+pZGhh/Yuf4RwCBgaYCi9hpiMWVvS4WBzx0/lU=
#&gt;
#&gt; $Additional
#&gt; list()
#&gt;
#&gt; $edns_client_subnet
#&gt; [1] &quot;0.0.0.0/0&quot;
#&gt;
#&gt; $Comment
#&gt; [1] &quot;Response from 199.43.135.53&quot;
#&gt;
#&gt; </div><div class='input'><span class='fu'>query</span>(<span class='st'>"microsoft.com"</span>, <span class='st'>"MX"</span>)</div><div class='output co'>#&gt; $Status
#&gt; [1] 0
#&gt;
#&gt; $TC
#&gt; [1] FALSE
#&gt;
#&gt; $RD
#&gt; [1] TRUE
#&gt;
#&gt; $RA
#&gt; [1] TRUE
#&gt;
#&gt; $AD
#&gt; [1] FALSE
#&gt;
#&gt; $CD
#&gt; [1] FALSE
#&gt;
#&gt; $Question
#&gt; name type
#&gt; 1 microsoft.com. 15
#&gt;
#&gt; $Answer
#&gt; name type TTL data
#&gt; 1 microsoft.com. 15 74 10 microsoft-com.mail.protection.outlook.com.
#&gt;
#&gt; $Additional
#&gt; list()
#&gt;
#&gt; $edns_client_subnet
#&gt; [1] &quot;0.0.0.0/0&quot;
#&gt;
#&gt; </div><div class='input'><span class='fu'>query</span>(<span class='st'>"google-public-dns-a.google.com"</span>, <span class='st'>"TXT"</span>)</div><div class='output co'>#&gt; $Status
#&gt; [1] 0
#&gt;
#&gt; $TC
#&gt; [1] FALSE
#&gt;
#&gt; $RD
#&gt; [1] TRUE
#&gt;
#&gt; $RA
#&gt; [1] TRUE
#&gt;
#&gt; $AD
#&gt; [1] FALSE
#&gt;
#&gt; $CD
#&gt; [1] FALSE
#&gt;
#&gt; $Question
#&gt; name type
#&gt; 1 google-public-dns-a.google.com. 16
#&gt;
#&gt; $Answer
#&gt; name type TTL data
#&gt; 1 google-public-dns-a.google.com. 16 21599 &quot;http://xkcd.com/1361/&quot;
#&gt;
#&gt; $Additional
#&gt; list()
#&gt;
#&gt; $edns_client_subnet
#&gt; [1] &quot;0.0.0.0/0&quot;
#&gt;
#&gt; $Comment
#&gt; [1] &quot;Response from 216.239.38.10&quot;
#&gt;
#&gt; </div><div class='input'><span class='fu'>query</span>(<span class='st'>"apple.com"</span>)</div><div class='output co'>#&gt; $Status
#&gt; [1] 0
#&gt;
#&gt; $TC
#&gt; [1] FALSE
#&gt;
#&gt; $RD
#&gt; [1] TRUE
#&gt;
#&gt; $RA
#&gt; [1] TRUE
#&gt;
#&gt; $AD
#&gt; [1] FALSE
#&gt;
#&gt; $CD
#&gt; [1] FALSE
#&gt;
#&gt; $Question
#&gt; name type
#&gt; 1 apple.com. 1
#&gt;
#&gt; $Answer
#&gt; name type TTL data
#&gt; 1 apple.com. 1 1002 17.172.224.47
#&gt; 2 apple.com. 1 1002 17.178.96.59
#&gt; 3 apple.com. 1 1002 17.142.160.59
#&gt;
#&gt; $Additional
#&gt; list()
#&gt;
#&gt; $edns_client_subnet
#&gt; [1] &quot;0.0.0.0/0&quot;
#&gt;
#&gt; </div><div class='input'><span class='fu'>query</span>(<span class='st'>"17.142.160.59"</span>, <span class='st'>"PTR"</span>)</div><div class='output co'>#&gt; $Status
#&gt; [1] 0
#&gt;
#&gt; $TC
#&gt; [1] FALSE
#&gt;
#&gt; $RD
#&gt; [1] TRUE
#&gt;
#&gt; $RA
#&gt; [1] TRUE
#&gt;
#&gt; $AD
#&gt; [1] FALSE
#&gt;
#&gt; $CD
#&gt; [1] FALSE
#&gt;
#&gt; $Question
#&gt; name type
#&gt; 1 59.160.142.17.in-addr.arpa. 12
#&gt;
#&gt; $Answer
#&gt; name type TTL data
#&gt; 1 59.160.142.17.in-addr.arpa. 12 2587 icloud.se.
#&gt; 2 59.160.142.17.in-addr.arpa. 12 2587 icloud.es.
#&gt; 3 59.160.142.17.in-addr.arpa. 12 2587 icloud.om.
#&gt; 4 59.160.142.17.in-addr.arpa. 12 2587 icloudo.com.
#&gt; 5 59.160.142.17.in-addr.arpa. 12 2587 icloud.ch.
#&gt; 6 59.160.142.17.in-addr.arpa. 12 2587 icloud.fr.
#&gt; 7 59.160.142.17.in-addr.arpa. 12 2587 icloude.com.
#&gt; 8 59.160.142.17.in-addr.arpa. 12 2587 camelspaceeffect.com.
#&gt; 9 59.160.142.17.in-addr.arpa. 12 2587 camelphat.com.
#&gt; 10 59.160.142.17.in-addr.arpa. 12 2587 alchemysynth.com.
#&gt; 11 59.160.142.17.in-addr.arpa. 12 2587 openni.org.
#&gt; 12 59.160.142.17.in-addr.arpa. 12 2587 swell.am.
#&gt; 13 59.160.142.17.in-addr.arpa. 12 2587 appleweb.net.
#&gt; 14 59.160.142.17.in-addr.arpa. 12 2587 apple.com.
#&gt; 15 59.160.142.17.in-addr.arpa. 12 2587 pv-apple-com.apple.com.
#&gt; 16 59.160.142.17.in-addr.arpa. 12 2587 ripmixburn.com.
#&gt; 17 59.160.142.17.in-addr.arpa. 12 2587 yessql.info.
#&gt; 18 59.160.142.17.in-addr.arpa. 12 2587 webobjects.info.
#&gt; 19 59.160.142.17.in-addr.arpa. 12 2587 ubnw.info.
#&gt; 20 59.160.142.17.in-addr.arpa. 12 2587 skyvines.info.
#&gt; 21 59.160.142.17.in-addr.arpa. 12 2587 shopdifferent.info.
#&gt; 22 59.160.142.17.in-addr.arpa. 12 2587 sherlock.info.
#&gt; 23 59.160.142.17.in-addr.arpa. 12 2587 quicktimetv.info.
#&gt; 24 59.160.142.17.in-addr.arpa. 12 2587 quicktimelive.info.
#&gt; 25 59.160.142.17.in-addr.arpa. 12 2587 powermac.info.
#&gt; 26 59.160.142.17.in-addr.arpa. 12 2587 powerbook.info.
#&gt; 27 59.160.142.17.in-addr.arpa. 12 2587 macosx.info.
#&gt; 28 59.160.142.17.in-addr.arpa. 12 2587 appleshare.info.
#&gt; 29 59.160.142.17.in-addr.arpa. 12 2587 applescript.info.
#&gt; 30 59.160.142.17.in-addr.arpa. 12 2587 applepaysupplies.info.
#&gt; 31 59.160.142.17.in-addr.arpa. 12 2587 applepaymerchantsupplies.info.
#&gt; 32 59.160.142.17.in-addr.arpa. 12 2587 applepay.info.
#&gt; 33 59.160.142.17.in-addr.arpa. 12 2587 applemasters.info.
#&gt; 34 59.160.142.17.in-addr.arpa. 12 2587 appleexpo.info.
#&gt; 35 59.160.142.17.in-addr.arpa. 12 2587 applecomputerinc.info.
#&gt; 36 59.160.142.17.in-addr.arpa. 12 2587 applecentre.info.
#&gt; 37 59.160.142.17.in-addr.arpa. 12 2587 airtunes.info.
#&gt; 38 59.160.142.17.in-addr.arpa. 12 2587 apple.by.
#&gt; 39 59.160.142.17.in-addr.arpa. 12 2587 apples-msk.ru.
#&gt;
#&gt; $Additional
#&gt; list()
#&gt;
#&gt; $edns_client_subnet
#&gt; [1] &quot;0.0.0.0/0&quot;
#&gt;
#&gt; </div></pre>
</div>
<div class="col-md-3">
</div>
</div>
<footer>
<p>Built by <a href="http://hadley.github.io/pkgdown/">pkgdown</a>. Styled with <a href="http://getbootstrap.com">Bootstrap 3</a>.</p>
</footer>
</div>
</body>
</html>