summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/luatexdir/luasocket
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2013-03-21 09:16:59 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2013-03-21 09:16:59 +0000
commit388463b9fa865c3b2311508c41647b0f3c532031 (patch)
tree1cdfbf5552d0783ecbcc52017e49567e5042af33 /Build/source/texk/web2c/luatexdir/luasocket
parentabd0b00a4e8c1ac6f5b20c7474d70ef579129991 (diff)
Import MetaPost 1.800 and LuaTeX beta-0.75.0 from LuaTeX repository r4604
git-svn-id: svn://tug.org/texlive/trunk@29453 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/luatexdir/luasocket')
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/LICENSE4
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/NEW44
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/README4
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html69
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html14
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/http.html35
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/index.html102
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html86
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html8
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html8
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html18
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html37
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html26
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html93
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html195
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html169
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/doc/url.html25
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua45
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua3
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua107
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua9
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua69
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln58
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/makefile77
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua1
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua3
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c17
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h5
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c36
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h6
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/except.c4
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/except.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua5
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c823
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/headers.lua99
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/headers_lua.c194
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/http.lua11
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c1163
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/inet.c420
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/inet.h21
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/io.c2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/io.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua7
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c771
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c28
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c6
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h10
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/mbox.lua88
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/mbox_lua.c147
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/mime.c96
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/mime.h6
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c208
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/options.c147
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/options.h43
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/select.c64
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/select.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/serial.c191
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua15
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c578
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/socket.h6
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua51
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c397
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c252
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h3
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c22
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua4
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c302
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/udp.c262
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/udp.h3
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/unix.c46
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/unix.h5
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/url.lua135
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c716
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c124
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h7
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c46
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h13
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/test/README2
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua190
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua9
-rw-r--r--Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua14
93 files changed, 5558 insertions, 3593 deletions
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/LICENSE b/Build/source/texk/web2c/luatexdir/luasocket/LICENSE
index 8c3cfe5bcad..5bd3478897d 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/LICENSE
+++ b/Build/source/texk/web2c/luatexdir/luasocket/LICENSE
@@ -1,5 +1,5 @@
-LuaSocket 2.0.2 license
-Copyright © 2004-2007 Diego Nehab
+LuaSocket 2.1 license
+Copyright © 2004-2012 Diego Nehab
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/NEW b/Build/source/texk/web2c/luatexdir/luasocket/NEW
index 0191ccd500d..76b84487037 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/NEW
+++ b/Build/source/texk/web2c/luatexdir/luasocket/NEW
@@ -2,13 +2,37 @@ What's New
This is just a bug-fix/update release.
- * Improved: http.request() now supports deprecated HTTP/0.9
- servers (Florian Berger)
- * Fixed: could return "timedout" instead of "timeout" (Leo Leo)
- * Fixed: crash when reading '*a' on closed socket (Paul Ducklin);
- * Fixed: return values are consistent when reading from closed sockets;
- * Fixed: case sensitivity in headers of multipart messages in
- smtp.message() (Graham Henstridge);
- * Fixed a couple instances of error() being called instead of base.error(). These would cause an error when an error was reported. :) (Ketmar Dark);
- * Fixed: test script now uses pairs() iterator instead of the old
- Lua syntax (Robert Dodier).
+ * Fixed: manual sample of HTTP authentication now uses correct
+ "authorization" header (Alexandre Ittner);
+ * Fixed: failure on bind() was destroying the socket (Sam Roberts);
+ * Fixed: receive() returns immediatelly if prefix can satisfy
+ bytes requested (M Joonas Pihlaja);
+ * Fixed: multicast didn't work on Windows, or anywhere
+ else for that matter (Herbert Leuwer, Adrian Sietsma);
+ * Fixed: select() now reports an error when called with more
+ sockets than FD_SETSIZE (Lorenzo Leonini);
+ * Fixed: manual links to home.html changed to index.html (Robert Hahn);
+ * Fixed: mime.unb64() would return an empty string on results that started
+ with a null character (Robert Raschke);
+ * Fixed: HTTP now automatically redirects on 303 and 307 (Jonathan Gray);
+ * Fixed: calling sleep() with negative numbers could
+ block forever, wasting CPU. Now it returns immediately (MPB);
+ * Improved: FTP commands are now sent in upper case to
+ help buggy servers (Anders Eurenius);
+ * Improved: known headers now sent in canonic
+ capitalization to help buggy servers (Joseph Stewart);
+ * Improved: Clarified tcp:receive() in the manual (MPB);
+ * Improved: Decent makefiles (LHF).
+ * Fixed: RFC links in documentation now point to IETF (Cosmin Apreutesei).
+
+
+ Yuri's bug?
+ Dahlberg
+ Sam Roberts
+ Thomas Harning Jr.
+ Sebastien Perin
+ remove getn in all files
+ ltn12.pump.all(
+ ltn12.source.file(io.open("original.png")),
+ ltn12.sink.file(io.open("copy.png", "wb"))
+ )
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/README b/Build/source/texk/web2c/luatexdir/luasocket/README
index 5d65f882fce..e9dc323bfc6 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/README
+++ b/Build/source/texk/web2c/luatexdir/luasocket/README
@@ -1,5 +1,5 @@
-This is the LuaSocket 2.0.1. It has been tested on WinXP, Mac OS X,
-and Linux. Please use the Lua mailing list to report any bugs
+This is the LuaSocket 2.1. It has been tested on --[[WinXP--]], Mac OS X,
+and --[[Linux--]]. Please use the Lua mailing list to report any bugs
(or "features") you encounter.
Have fun,
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html
index f4c3b07d2b7..c4a0472e23e 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/dns.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -39,12 +39,16 @@
<h2 id=dns>DNS</h2>
<p>
-Name resolution functions return <em>all</em> information obtained from the
-resolver in a table of the form:
+IPv4 name resolution functions
+<a href=#toip><tt>dns.toip</tt></a>
+and
+<a href=#tohostname><tt>dns.tohostname</tt></a>
+return <em>all</em> information obtained from
+the resolver in a table of the form:
</p>
<blockquote><tt>
-resolved = {<br>
+resolved4 = {<br>
&nbsp;&nbsp;name = <i>canonic-name</i>,<br>
&nbsp;&nbsp;alias = <i>alias-list</i>,<br>
&nbsp;&nbsp;ip = <i>ip-address-list</i><br>
@@ -55,6 +59,53 @@ resolved = {<br>
Note that the <tt>alias</tt> list can be empty.
</p>
+<p>
+The more general name resolution function
+<a href=#getaddrinfo><tt>dns.getaddrinfo</tt></a>, which
+supports both IPv6 and IPv4,
+returns <em>all</em> information obtained from
+the resolver in a table of the form:
+</p>
+
+<blockquote><tt>
+resolved6 = {<br>
+&nbsp;&nbsp;[1] = {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;family = <i>family-name-1</i>,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;addr = <i>address-1</i><br>
+&nbsp;&nbsp;},<br>
+&nbsp;&nbsp;...<br>
+&nbsp;&nbsp;[n] = {<br>
+&nbsp;&nbsp;&nbsp;&nbsp;family = <i>family-name-n</i>,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;addr = <i>address-n</i><br>
+&nbsp;&nbsp;}<br>
+}
+</tt> </blockquote>
+
+<p>
+Here, <tt>family</tt> contains the string <tt>"inet"</tt> for IPv4
+addresses, and <tt>"inet6"</tt> for IPv6 addresses.
+</p>
+
+<!-- getaddrinfo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id=getaddrinfo>
+socket.dns.<b>getaddrinfo(</b>address<b>)</b>
+</p>
+
+<p class=description>
+Converts from host name to address.
+</p>
+
+<p class=parameters>
+<tt>Address</tt> can be an IPv4 or IPv6 address or host name.
+</p>
+
+<p class=return>
+The function returns a table with all information returned by
+the resolver. In case of error, the function returns <b><tt>nil</tt></b>
+followed by an error message.
+</p>
+
<!-- gethostname ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class=name id=gethostname>
@@ -72,7 +123,7 @@ socket.dns.<b>tohostname(</b>address<b>)</b>
</p>
<p class=description>
-Converts from IP address to host name.
+Converts from IPv4 address to host name.
</p>
<p class=parameters>
@@ -93,7 +144,7 @@ socket.dns.<b>toip(</b>address<b>)</b>
</p>
<p class=description>
-Converts from host name to IP address.
+Converts from host name to IPv4 address.
</p>
<p class=parameters>
@@ -113,8 +164,8 @@ message.
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html
index 9884f31339d..3f23a4a93cc 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/ftp.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -42,7 +42,7 @@
FTP (File Transfer Protocol) is a protocol used to transfer files
between hosts. The <tt>ftp</tt> namespace offers thorough support
to FTP, under a simple interface. The implementation conforms to
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc0959.txt">RFC 959</a>.
+<a href="http://www.ietf.org/rfc/rfc959.txt">RFC 959</a>.
</p>
<p>
@@ -70,8 +70,8 @@ local ftp = require("socket.ftp")
<p>
URLs MUST conform to
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc1738.txt">RFC
-1738</a>, that is, an URL is a string in the form:
+<a href="http://www.ietf.org/rfc/rfc1738.txt">RFC 1738</a>,
+that is, an URL is a string in the form:
</p>
<blockquote>
@@ -270,8 +270,8 @@ f, e = ftp.put{
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html
index 0acac13feec..cd41c0ddb9e 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/http.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -36,7 +36,7 @@
<!-- http +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<h2 id=http>HTTP</h2>
+<h2 id="http">HTTP</h2>
<p>
HTTP (Hyper Text Transfer Protocol) is the protocol used to exchange
@@ -45,8 +45,7 @@ namespace offers full support for the client side of the HTTP
protocol (i.e.,
the facilities that would be used by a web-browser implementation). The
implementation conforms to the HTTP/1.1 standard,
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2616.txt">RFC
-2616</a>.
+<a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>.
</p>
<p>
@@ -67,8 +66,7 @@ local http = require("socket.http")
<p>
URLs must conform to
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc1738.txt">RFC
-1738</a>,
+<a href="http://www.ietf.org/rfc/rfc1738.txt">RFC 1738</a>,
that is, an URL is a string in the form:
</p>
@@ -97,8 +95,9 @@ headers = {<br>
</blockquote>
<p>
-Field names are case insensitive (as specified by the standard) and all
-functions work with lowercase field names.
+Field names are case insensitive (as specified by the standard) and all
+functions work with lowercase field names (but see
+<a href=socket.html#headers.canonic><tt>socket.headers.canonic</tt></a>).
Field values are left unmodified.
</p>
@@ -119,9 +118,10 @@ the HTTP module:
<li> <tt>USERAGENT</tt>: default user agent reported to server.
</ul>
+
<!-- http.request ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=request>
+<p class=name id="request">
http.<b>request(</b>url [, body]<b>)</b><br>
http.<b>request{</b><br>
&nbsp;&nbsp;url = <i>string</i>,<br>
@@ -199,8 +199,7 @@ it usually returns a message body (a web page informing the
URL was not found or some other useless page). To make sure the
operation was successful, check the returned status <tt>code</tt>. For
a list of the possible values and their meanings, refer to <a
-href="http://www.cs.princeton.edu/~diego/rfc/rfc2616.txt">RFC
-2616</a>.
+href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a>.
</p>
<p class=description>
@@ -259,7 +258,7 @@ r, c, h = http.request {
-- }
</pre>
-<p class=note id=post>
+<p class=note id="post">
Note: When sending a POST request, simple interface adds a
"<tt>Content-type: application/x-www-form-urlencoded</tt>"
header to the request. This is the type used by
@@ -267,7 +266,7 @@ HTML forms. If you need another type, use the generic
interface.
</p>
-<p class=note id=authentication>
+<p class=note id="authentication">
Note: Some URLs are protected by their
servers from anonymous download. For those URLs, the server must receive
some sort of authentication along with the request or it will deny
@@ -278,7 +277,7 @@ download and return status "401&nbsp;Authentication Required".
The HTTP/1.1 standard defines two authentication methods: the Basic
Authentication Scheme and the Digest Authentication Scheme, both
explained in detail in
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2068.txt">RFC 2068</a>.
+<a href="http://www.ietf.org/rfc/rfc2068.txt">RFC 2068</a>.
</p>
<p class=note>The Basic Authentication Scheme sends
@@ -304,7 +303,7 @@ b, c, h = http.request("http://fulano:silva@www.example.com/private/index.html")
-- the request directly.
r, c = http.request {
url = "http://www.example.com/private/index.html",
- headers = { authentication = "Basic " .. (mime.b64("fulano:silva")) }
+ headers = { authorization = "Basic " .. (mime.b64("fulano:silva")) }
}
</pre>
@@ -314,8 +313,8 @@ r, c = http.request {
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html
index 57a790714ac..d8ee4a492d2 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/index.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -78,8 +78,8 @@ LuaSocket.
</p>
<p>
-Copyright &copy; 2004-2007 Diego Nehab. All rights reserved. <br>
-Author: <A href="http://www.cs.princeton.edu/~diego">Diego Nehab</a>
+Copyright &copy; 1999-2012 Diego Nehab. All rights reserved. <br>
+Author: <A href="http://www.impa.br/~diego">Diego Nehab</a>
</p>
<!-- download +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -87,25 +87,18 @@ Author: <A href="http://www.cs.princeton.edu/~diego">Diego Nehab</a>
<h2 id=download>Download</h2>
<p>
-LuaSocket version 2.0.2 is now available for download! It is
-compatible with Lua&nbsp;5.1, and has
+LuaSocket version 2.1-rc1 is now available for download!
+It is compatible with Lua&nbsp;5.1 and 5.2, and has
been tested on Windows&nbsp;XP, Linux, and Mac OS X. Chances
are it works well on most UNIX distributions and Windows flavors.
</p>
<p>
The library can be downloaded in source code from the
-<a href=http://luaforge.net/projects/luasocket/>LuaSocket
-project page</a> at LuaForge.
-Besides the full C and Lua source code for the library, the distribution
-contains several examples, this user's manual and basic test procedures.
-</p>
-
-<p>
-Danilo Tuler is maintaining Win32 binaries for LuaSocket, which are also
-available from LuaForge. These are compatible with the
-<a href=http://luaforge.net/projects/luabinaries>LuaBinaries</a>,
-also available from LuaForge.
+<a href="https://github.com/diegonehab/luasocket/downloads">LuaSocket
+project page</a> at GitHub. Besides the full C and Lua source code
+for the library, the distribution contains several examples,
+this user's manual and basic test procedures.
</p>
<p> Take a look at the <a
@@ -118,14 +111,13 @@ manual to find out how to properly install the library.
<h2 id=thanks>Special thanks</h2>
<p>
-Throughout LuaSocket's history, many people gave suggestions that helped
-improve it. For that, I thank the Lua community.
-Special thanks go to
-David Burgess, who has helped push the library to a new level of quality and
-from whom I have learned a lot of stuff that doesn't show up in RFCs.
-Special thanks also to Carlos Cassino, who played a big part in the
-extensible design seen in the C core of LuaSocket 2.0. Mike Pall
-has been helping a lot too! Thanks to you all!
+This marks the first release of LuaSocket that
+wholeheartedly embraces the open-source development
+philosophy. After a long hiatus, Matthew Wild finally
+convinced me it was time for a release including IPv6
+and Lua 5.2 support. Special thanks to Sam Roberts, Florian
+Zeitz, and Paul Aurich, Liam Devine, and everybody else that
+has helped bring this library back to life.
</p>
<!-- whatsnew +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -133,44 +125,30 @@ has been helping a lot too! Thanks to you all!
<h2 id=new>What's New</h2>
<p>
-2.0.2 is just a bug-fix/update release.
+Main changes for LuaSocket&nbsp;2.1-rc1 are IPv6 support
+and Lua&nbsp;5.2 compatibility.
</p>
<ul>
-<li> Improved: http.request() now supports deprecated
-HTTP/0.9 servers (Florian Berger);
-<li> Fixed: could return "timedout" instead of "timeout" (Leo Leo);
-<li> Fixed: crash when reading '*a' on closed socket (Paul Ducklin);
-<li> Fixed: return values are consistent when reading from closed sockets;
-<li> Fixed: case sensitivity in headers of multipart
-messages in smtp.message() (Graham Henstridge);
-<li> Fixed a couple instances of error() being called instead of
-base.error(). These would cause an error when an error was
-reported :) (Ketmar Dark);
-<li> Fixed: test script now uses pairs() iterator instead
-of the old Lua syntax (Robert Dodier).
-</ul>
-
-<p>
-2.0.1 is just a bug-fix/update release.
-</p>
-
+<li> Added: Compatible with Lua&nbsp;5.2 (using <tt>LUA_COMPAT_MODULE</tt>);
+<li> Added: IPv6 support;
<ul>
-<li> Updated: now using <tt>compat-5.1r5</tt>;
-<li> Improved: <tt>http.request</tt> is more robust to
-malformed URLs (Adrian Sietsma);
-<li> Improved: the simple <tt>http.request</tt> interface sends a
-"<tt>Content-type: application/x-www-form-urlencoded</tt>"
-header (William Trenker);
-<li> Improved: <tt>http.request</tt> is robust to evil
-servers that send inappropriate 100-continue messages
-(David Burgess);
-<li> Fixed: <tt>http.request</tt> was using the old host header during
-redirects (Florian Berger);
-<li> Fixed: sample <tt>unix.c</tt> had fallen through the
-cracks during development (Matthew Percival);
-<li> Fixed: error code was not being propagated correctly in
-ftp.lua (David Burgess).
+<li> <tt>Socket.connect</tt> and <tt>socket.bind</tt> support IPv6 addresses;
+<li> <tt>Getpeername</tt> and <tt>getsockname</tt> support
+IPv6 addresses, and return the socket family as a third value;
+<li> URL module updated to support IPv6 host names;
+<li> New <tt>socket.tcp6</tt> and <tt>socket.udp6</tt> functions;
+<li> New <tt>socket.dns.getaddrinfo</tt> function;
+</ul>
+<li> Added: <tt>getoption</tt> method;
+<li> Fixed: <tt>url.unescape</tt> was returning additional values;
+<li> Fixed: <tt>mime.qp</tt>, <tt>mime.unqp</tt>,
+ <tt>mime.b64</tt>, and <tt>mime.unb64</tt> could
+ mistaking their own stack slots for functions arguments;
+<li> Fixed: Receiving zero-length datagram is now possible;
+<li> Improved: Hidden all internal library symbols;
+<li> Improved: Better error messages;
+<li> Improved: Better documentation of socket options.
</ul>
<!-- old ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -179,7 +157,7 @@ ftp.lua (David Burgess).
<p>
All previous versions of the LuaSocket library can be downloaded <a
-href="http://www.cs.princeton.edu/~diego/professional/luasocket/old">
+href="http://www.impa.br/~diego/software/luasocket/old">
here</a>. Although these versions are no longer supported, they are
still available for those that have compatibility issues.
</p>
@@ -190,7 +168,7 @@ still available for those that have compatibility issues.
<hr>
<center>
<p class=bar>
-<a href="home.html#download">download</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -198,7 +176,7 @@ still available for those that have compatibility issues.
<p>
<small>
Last modified by Diego Nehab on <br>
-Wed Oct 3 02:07:59 BRT 2007
+Mon Apr 16 21:58:56 HKT 2012
</small>
</p>
</center>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html
index 0288f4af31a..37c309b5d24 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/installation.html
@@ -25,8 +25,8 @@ Installation">
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -39,24 +39,16 @@ Installation">
<h2>Installation</h2>
-<p> LuaSocket 2.0.2 uses the new package system for Lua 5.1.
-All Lua library developers are encouraged to update their libraries so that
-all libraries can coexist peacefully and users can benefit from the
-standardization and flexibility of the standard.
-</p>
-
-<p>
-Those stuck with Lua 5.0 will need the
-<a href=http://www.keplerproject.org/compat/>compat-5.1</a>
-module. It is maintained by
-<a href=http://www.keplerproject.org/>The Kepler
-Project</a>'s team, and implements the Lua 5.1 package proposal
-on top of Lua 5.0. </p>
+<p> LuaSocket 2.1-rc still uses Lua&nbsp;5.1's package
+system. Users that have already made the switch to
+Lua&nbsp;5.2 should leave the default
+<tt>LUA_COMPAT_MODULE</tt> defined when compiling their Lua
+distribution for compatibility with LuaSocket. </p>
-<p> Here we will only describe the standard distribution.
-If the standard doesn't meet your needs, we refer you to the
-Lua discussion list, where any question about the package
-scheme will likely already have been answered. </p>
+<p> Here we describe the standard distribution. If the
+standard doesn't meet your needs, we refer you to the Lua
+discussion list, where any question about the package scheme
+will likely already have been answered. </p>
<h3>Directory structure</h3>
@@ -64,14 +56,19 @@ scheme will likely already have been answered. </p>
directories, one for system dependent files, and another for system
independent files. Let's call these directories <tt>&lt;CDIR&gt;</tt>
and <tt>&lt;LDIR&gt;</tt>, respectively.
-For instance, in my laptop, I use '<tt>/usr/local/lib/lua/5.0</tt>' for
-<tt>&lt;CDIR&gt;</tt> and '<tt>/usr/local/share/lua/5.0</tt>' for
-<tt>&lt;LDIR&gt;</tt>. On Windows, sometimes only one directory is used, say
-'<tt>c:\program files\lua\5.0</tt>'. Here is the standard LuaSocket
+For example, in my laptp, Lua&nbsp;5.1 is configured to
+use '<tt>/usr/local/lib/lua/5.1</tt>' for
+<tt>&lt;CDIR&gt;</tt> and '<tt>/usr/local/share/lua/5.1</tt>' for
+<tt>&lt;LDIR&gt;</tt>. On Windows, <tt>&lt;CDIR&gt;</tt>
+usually points to the directory where the Lua executable is
+found, and <tt>&lt;LDIR&gt;</tt> points to a
+<tt>lua/</tt> directory inside <tt>&lt;CDIR&gt;</tt>. (These
+settings can be overridden by environment variables
+<tt>LUA_PATH</tt> and <tt>LUA_CPATH</tt>. See the Lua
+documentation for details.) Here is the standard LuaSocket
distribution directory structure:</p>
<pre class=example>
-&lt;LDIR&gt;/compat-5.1.lua
&lt;LDIR&gt;/ltn12.lua
&lt;LDIR&gt;/socket.lua
&lt;CDIR&gt;/socket/core.dll
@@ -88,33 +85,6 @@ distribution directory structure:</p>
would be replaced by <tt>core.so</tt>.
</p>
-<p> In order for the interpreter to find all LuaSocket components, three
-environment variables need to be set. The first environment variable tells
-the interpreter to load the <tt>compat-5.1.lua</tt> module at startup: </p>
-
-<pre class=example>
-LUA_INIT=@&lt;LDIR&gt;/compat-5.1.lua
-</pre>
-
-<p>
-This is only need for Lua&nbsp;5.0! Lua&nbsp;5.1 comes with
-the package system built in, of course.
-</p>
-
-<p>
-The other two environment variables instruct the compatibility module to
-look for dynamic libraries and extension modules in the appropriate
-directories and with the appropriate filename extensions.
-</p>
-
-<pre class=example>
-LUA_PATH=&lt;LDIR&gt;/?.lua;?.lua
-LUA_CPATH=&lt;CDIR&gt;/?.dll;?.dll
-</pre>
-
-<p> Again, naturally, on Unix systems the shared library extension would be
-<tt>.so</tt> instead of <tt>.dll</tt>.</p>
-
<h3>Using LuaSocket</h3>
<p> With the above setup, and an interpreter with shared library support,
@@ -122,19 +92,19 @@ it should be easy to use LuaSocket. Just fire the interpreter and use the
<tt>require</tt> function to gain access to whatever module you need:</p>
<pre class=example>
-Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
+Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
&gt; socket = require("socket")
&gt; print(socket._VERSION)
---&gt; LuaSocket 2.0.2
+--&gt; LuaSocket 2.1-rc1
</pre>
<p> Each module loads their dependencies automatically, so you only need to
load the modules you directly depend upon: </p>
<pre class=example>
-Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
+Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
&gt; http = require("socket.http")
-&gt; print(http.request("http://www.cs.princeton.edu/~diego/professional/luasocket"))
+&gt; print(http.request("http://www.impa.br/~diego/software/luasocket"))
--&gt; homepage gets dumped to terminal
</pre>
@@ -144,8 +114,8 @@ Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -153,7 +123,7 @@ Lua 5.1.2 Copyright (C) 1994-2007 Lua.org, PUC-Rio
<p>
<small>
Last modified by Diego Nehab on <br>
-Thu Apr 20 00:25:30 EDT 2006
+Mon Apr 16 21:01:42 HKT 2012
</small>
</p>
</center>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html
index eff63676750..fd22f483deb 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/introduction.html
@@ -25,8 +25,8 @@ Library, Support">
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -314,8 +314,8 @@ and many others are covered by the <a href=reference.html>reference manual</a>.
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html
index 001395030af..7e2f49a8c4c 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/ltn12.html
@@ -25,8 +25,8 @@ Pump, Support, Library">
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -411,8 +411,8 @@ Creates and returns a source that produces the contents of a
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html
index d7faf52cbcb..ae136fd85d1 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/mime.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -44,11 +44,11 @@ content transfer encodings, such as Base64 and Quoted-Printable.
It also provides functions to break text into lines and change
the end-of-line convention.
MIME is described mainly in
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2045.txt">RFC 2045</a>,
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2046.txt">2046</a>,
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2047.txt">2047</a>,
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2047.txt">2048</a>, and
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2048.txt">2049</a>.
+<a href="http://www.ietf.org/rfc/rfc2045.txt">RFC 2045</a>,
+<a href="http://www.ietf.org/rfc/rfc2046.txt">2046</a>,
+<a href="http://www.ietf.org/rfc/rfc2047.txt">2047</a>,
+<a href="http://www.ietf.org/rfc/rfc2047.txt">2048</a>, and
+<a href="http://www.ietf.org/rfc/rfc2048.txt">2049</a>.
</p>
<p>
@@ -457,8 +457,8 @@ marker.
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html
index b329f57f58b..e9bb5eb6fcc 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/reference.html
@@ -25,8 +25,8 @@ Support, Manual">
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -42,9 +42,10 @@ Support, Manual">
<blockquote>
<a href="dns.html">DNS (in socket)</a>
<blockquote>
-<a href="dns.html#toip">toip</a>,
+<a href="dns.html#getaddrinfo">getaddrinfo</a>,
+<a href="dns.html#gethostname">gethostname</a>,
<a href="dns.html#tohostname">tohostname</a>,
-<a href="dns.html#gethostname">gethostname</a>.
+<a href="dns.html#toip">toip</a>.
</blockquote>
</blockquote>
@@ -108,9 +109,9 @@ Support, Manual">
<a href="mime.html">MIME</a>
<blockquote>
<a href="mime.html#high">high-level</a>:
-<a href="mime.html#normalize">normalize</a>,
<a href="mime.html#decode">decode</a>,
<a href="mime.html#encode">encode</a>,
+<a href="mime.html#normalize">normalize</a>,
<a href="mime.html#stuff">stuff</a>,
<a href="mime.html#wrap">wrap</a>.
</blockquote>
@@ -120,10 +121,10 @@ Support, Manual">
<a href="mime.html#dot">dot</a>,
<a href="mime.html#eol">eol</a>,
<a href="mime.html#qp">qp</a>,
-<a href="mime.html#wrp">wrp</a>,
-<a href="mime.html#qpwrp">qpwrp</a>.
+<a href="mime.html#qpwrp">qpwrp</a>,
<a href="mime.html#unb64">unb64</a>,
<a href="mime.html#unqp">unqp</a>,
+<a href="mime.html#wrp">wrp</a>.
</blockquote>
</blockquote>
@@ -142,19 +143,27 @@ Support, Manual">
<blockquote>
<a href="socket.html">Socket</a>
<blockquote>
+<a href="socket.html#bind">bind</a>,
+<a href="socket.html#connect">connect</a>,
+<a href="socket.html#connect">connect4</a>,
+<a href="socket.html#connect">connect6</a>,
<a href="socket.html#debug">_DEBUG</a>,
<a href="dns.html#dns">dns</a>,
<a href="socket.html#gettime">gettime</a>,
+<a href="socket.html#headers.canonic">headers.canonic</a>,
<a href="socket.html#newtry">newtry</a>,
<a href="socket.html#protect">protect</a>,
<a href="socket.html#select">select</a>,
<a href="socket.html#sink">sink</a>,
<a href="socket.html#skip">skip</a>,
<a href="socket.html#sleep">sleep</a>,
+<a href="socket.html#setsize">_SETSIZE</a>,
<a href="socket.html#source">source</a>,
-<a href="tcp.html#tcp">tcp</a>,
+<a href="tcp.html#socket.tcp">tcp</a>,
+<a href="tcp.html#socket.tcp6">tcp6</a>,
<a href="socket.html#try">try</a>,
-<a href="udp.html#udp">udp</a>,
+<a href="udp.html#socket.udp">udp</a>,
+<a href="udp.html#socket.udp6">udp6</a>,
<a href="socket.html#version">_VERSION</a>.
</blockquote>
</blockquote>
@@ -168,11 +177,16 @@ Support, Manual">
<a href="tcp.html#bind">bind</a>,
<a href="tcp.html#close">close</a>,
<a href="tcp.html#connect">connect</a>,
+<a href="tcp.html#dirty">dirty</a>,
+<a href="tcp.html#getfd">getfd</a>,
+<a href="tcp.html#getoption">getoption</a>,
<a href="tcp.html#getpeername">getpeername</a>,
<a href="tcp.html#getsockname">getsockname</a>,
<a href="tcp.html#getstats">getstats</a>,
+<a href="tcp.html#listen">listen</a>,
<a href="tcp.html#receive">receive</a>,
<a href="tcp.html#send">send</a>,
+<a href="tcp.html#setfd">setfd</a>,
<a href="tcp.html#setoption">setoption</a>,
<a href="tcp.html#setstats">setstats</a>,
<a href="tcp.html#settimeout">settimeout</a>,
@@ -186,6 +200,7 @@ Support, Manual">
<a href="udp.html">UDP (in socket)</a>
<blockquote>
<a href="udp.html#close">close</a>,
+<a href="udp.html#getoption">getoption</a>,
<a href="udp.html#getpeername">getpeername</a>,
<a href="udp.html#getsockname">getsockname</a>,
<a href="udp.html#receive">receive</a>,
@@ -220,8 +235,8 @@ Support, Manual">
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html
index 27dd4736b4b..bbbff8047b9 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/smtp.html
@@ -25,8 +25,8 @@ Library, Support">
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -48,14 +48,13 @@ control (if you bother to read the code).
</p>
<p>The implementation conforms to the Simple Mail Transfer Protocol,
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2821.txt">RFC 2821</a>.
+<a href="http://www.ietf.org/rfc/rfc2821.txt">RFC 2821</a>.
Another RFC of interest is <a
-href="http://www.cs.princeton.edu/~diego/rfc/rfc2822.txt">RFC 2822</a>,
+href="http://www.ietf.org/rfc/rfc2822.txt">RFC 2822</a>,
which governs the Internet Message Format.
Multipart messages (those that contain attachments) are part
of the MIME standard, but described mainly
-in <a href="http://www.cs.princeton.edu/~diego/rfc/rfc2046.txt">RFC
-2046</a>
+in <a href="http://www.ietf.org/rfc/rfc2046.txt">RFC 2046</a>
<p> In the description below, good understanding of <a
href="http://lua-users.org/wiki/FiltersSourcesAndSinks"> LTN012, Filters
@@ -91,8 +90,9 @@ headers = {<br>
</blockquote>
<p>
-Field names are case insensitive (as specified by the standard) and all
-functions work with lowercase field names.
+Field names are case insensitive (as specified by the standard) and all
+functions work with lowercase field names (but see
+<a href=socket.html#headers.canonic><tt>socket.headers.canonic</tt></a>).
Field values are left unmodified.
</p>
@@ -196,7 +196,7 @@ part of the message and will not be sent to anyone.
</p>
<p class=note>
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2822.txt">RFC 2822</a>
+<a href="http://www.ietf.org/rfc/rfc2822.txt">RFC 2822</a>
has two <em>important and short</em> sections, "3.6.3. Destination address
fields" and "5. Security considerations", explaining the proper
use of these headers. Here is a summary of what it says:
@@ -236,9 +236,9 @@ exactly what you <em>don't</em> want to happen!
<p class=note>
I hope this clarifies the issue. Otherwise, please refer to
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2821.txt">RFC 2821</a>
+<a href="http://www.ietf.org/rfc/rfc2821.txt">RFC 2821</a>
and
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2822.txt">RFC 2822</a>.
+<a href="http://www.ietf.org/rfc/rfc2822.txt">RFC 2822</a>.
</p>
<pre class=example>
@@ -398,8 +398,8 @@ r, e = smtp.send{
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html
index ba4b7303e32..b9303cb505a 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/socket.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -73,14 +73,19 @@ set to <tt><b>true</b></tt>.
<!-- connect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class=name id=connect>
-socket.<b>connect(</b>address, port [, locaddr, locport]<b>)</b>
+socket.<b>connect[46](</b>address, port [, locaddr] [, locport] [, family]<b>)</b>
</p>
<p class=description>
This function is a shortcut that creates and returns a TCP client object
-connected to a remote <tt>host</tt> at a given <tt>port</tt>. Optionally,
+connected to a remote <tt>address</tt> at a given <tt>port</tt>. Optionally,
the user can also specify the local address and port to bind
-(<tt>locaddr</tt> and <tt>locport</tt>).
+(<tt>locaddr</tt> and <tt>locport</tt>), or restrict the socket family
+to "<tt>inet</tt>" or "<tt>inet6</tt>".
+Without specifying <tt>family</tt> to <tt>connect</tt>, whether a tcp or tcp6
+connection is created depends on your system configuration. Two variations
+of connect are defined as simple helper functions that restrict the
+<tt>family</tt>, <tt>socket.connect4</tt> and <tt>socket.connect6</tt>.
</p>
<!-- debug ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -94,6 +99,47 @@ This constant is set to <tt><b>true</b></tt> if the library was compiled
with debug support.
</p>
+<!-- get time +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id=gettime>
+socket.<b>gettime()</b>
+</p>
+
+<p class=description>
+Returns the time in seconds, relative to the origin of the
+universe. You should subtract the values returned by this function
+to get meaningful values.
+</p>
+
+<pre class=example>
+t = socket.gettime()
+-- do stuff
+print(socket.gettime() - t .. " seconds elapsed")
+</pre>
+
+<!-- socket.headers ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id="headers.canonic">
+socket.headers.<b>canonic</b></p>
+
+<p> The <tt>socket.headers.canonic</tt> table
+is used by the HTTP and SMTP modules to translate from
+lowercase field names back into their canonic
+capitalization. When a lowercase field name exists as a key
+in this table, the associated value is substituted in
+whenever the field name is sent out.
+</p>
+
+<p>
+You can obtain the <tt>headers</tt> namespace if case run-time
+modifications are required by running:
+</p>
+
+<pre class=example>
+-- loads the headers module
+local headers = require("headers")
+</pre>
+
<!-- newtry +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class=name id=newtry>
@@ -200,6 +246,15 @@ changed status.
</p>
<p class=note>
+<b>Note: </b>: <tt>select</tt> can monitor a limited number
+of sockets, as defined by the constant <tt>socket._SETSIZE</tt>. This
+number may be as high as 1024 or as low as 64 by default,
+depending on the system. It is usually possible to change this
+at compile time. Invoking <tt>select</tt> with a larger
+number of sockets will raise an error.
+</p>
+
+<p class=note>
<b>Important note</b>: a known bug in WinSock causes <tt>select</tt> to fail
on non-blocking TCP sockets. The function may return a socket as
writable even though the socket is <em>not</em> ready for sending.
@@ -217,6 +272,10 @@ method or <tt>accept</tt> might block forever.
it to <tt>select</tt>, it will be ignored.
</p>
+<p class=note>
+<b>Using select with non-socket objects</b>: Any object that implements <tt>getfd</tt> and <tt>dirty</tt> can be used with <tt>select</tt>, allowing objects from other libraries to be used within a <tt>socket.select</tt> driven loop.
+</p>
+
<!-- sink ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class=name id=sink>
@@ -288,7 +347,8 @@ Freezes the program execution during a given amount of time.
</p>
<p class=parameters>
-<tt>Time</tt> is the number of seconds to sleep for.
+<tt>Time</tt> is the number of seconds to sleep for. If
+<tt>time</tt> is negative, the function returns immediately.
</p>
<!-- source +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -323,24 +383,17 @@ side closes the connection.
The function returns a source with the appropriate behavior.
</p>
-<!-- time ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+<!-- setsize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=gettime>
-socket.<b>gettime()</b>
+<p class=name id=setsize>
+socket.<b>_SETSIZE</b>
</p>
<p class=description>
-Returns the time in seconds, relative to the origin of the
-universe. You should subtract the values returned by this function
-to get meaningful values.
+The maximum number of sockets that the <a
+href=#select><tt>select</tt></a> function can handle.
</p>
-<pre class=example>
-t = socket.gettime()
--- do stuff
-print(socket.gettime() - t .. " seconds elapsed")
-</pre>
-
<!-- try ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class=name id=try>
@@ -385,8 +438,8 @@ This constant has a string describing the current LuaSocket version.
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html
index a16a09ed538..151a4c993c1 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/tcp.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -36,16 +36,16 @@
<!-- tcp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<h2 id=tcp>TCP</h2>
+<h2 id="tcp">TCP</h2>
<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=socket.tcp>
+<p class=name id="socket.tcp">
socket.<b>tcp()</b>
</p>
<p class=description>
-Creates and returns a TCP master object. A master object can
+Creates and returns an IPv4 TCP master object. A master object can
be transformed into a server object with the method
<a href=#listen><tt>listen</tt></a> (after a call to <a
href=#bind><tt>bind</tt></a>) or into a client object with
@@ -58,9 +58,34 @@ In case of success, a new master object is returned. In case of error,
<b><tt>nil</tt></b> is returned, followed by an error message.
</p>
+<!-- socket.tcp6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id="socket.tcp6">
+socket.<b>tcp6()</b>
+</p>
+
+<p class=description>
+Creates and returns an IPv6 TCP master object. A master object can
+be transformed into a server object with the method
+<a href=#listen><tt>listen</tt></a> (after a call to <a
+href=#bind><tt>bind</tt></a>) or into a client object with
+the method <a href=#connect><tt>connect</tt></a>. The only other
+method supported by a master object is the
+<a href=#close><tt>close</tt></a> method.</p>
+
+<p class=return>
+In case of success, a new master object is returned. In case of error,
+<b><tt>nil</tt></b> is returned, followed by an error message.
+</p>
+
+<p class=note>
+Note: The TCP object returned will have the option
+"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
+</p>
+
<!-- accept +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=accept>
+<p class=name id="accept">
server:<b>accept()</b>
</p>
@@ -87,7 +112,7 @@ might block until <em>another</em> client shows up.
<!-- bind +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=bind>
+<p class=name id="bind">
master:<b>bind(</b>address, port<b>)</b>
</p>
@@ -100,7 +125,9 @@ local host.
<tt>Port</tt> must be an integer number in the range [0..64K).
If <tt>address</tt>
is '<tt>*</tt>', the system binds to all local interfaces
-using the <tt>INADDR_ANY</tt> constant. If <tt>port</tt> is 0, the system automatically
+using the <tt>INADDR_ANY</tt> constant or
+<tt>IN6ADDR_ANY_INIT</tt>, according to the family.
+If <tt>port</tt> is 0, the system automatically
chooses an ephemeral port.
</p>
@@ -116,7 +143,7 @@ is available and is a shortcut for the creation of server sockets.
<!-- close ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=close>
+<p class=name id="close">
master:<b>close()</b><br>
client:<b>close()</b><br>
server:<b>close()</b>
@@ -139,7 +166,7 @@ automatically closed before destruction, though.
<!-- connect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=connect>
+<p class=name id="connect">
master:<b>connect(</b>address, port<b>)</b>
</p>
@@ -180,9 +207,18 @@ href=socket.html#select><tt>socket.select</tt></a> with the socket in the
established.
</p>
+<p class=note>
+Note: Starting with LuaSocket 2.1, the host name resolution
+depends on whether the socket was created by <a
+href=#socket.tcp><tt>socket.tcp</tt></a> or <a
+href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from
+the appropriate family are tried in succession until the
+first success or until the last failure.
+</p>
+
<!-- getpeername ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=getpeername>
+<p class=name id="getpeername">
client:<b>getpeername()</b>
</p>
@@ -191,8 +227,9 @@ Returns information about the remote side of a connected client object.
</p>
<p class=return>
-Returns a string with the IP address of the peer, followed by the
-port number that peer is using for the connection.
+Returns a string with the IP address of the peer, the
+port number that peer is using for the connection,
+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
In case of error, the method returns <b><tt>nil</tt></b>.
</p>
@@ -202,7 +239,7 @@ Note: It makes no sense to call this method on server objects.
<!-- getsockname ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=getsockname>
+<p class=name id="getsockname">
master:<b>getsockname()</b><br>
client:<b>getsockname()</b><br>
server:<b>getsockname()</b>
@@ -213,13 +250,15 @@ Returns the local address information associated to the object.
</p>
<p class=return>
-The method returns a string with local IP address and a number with
-the port. In case of error, the method returns <b><tt>nil</tt></b>.
+The method returns a string with local IP address, a number with
+the local port,
+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
+In case of error, the method returns <b><tt>nil</tt></b>.
</p>
<!-- getstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=getstats>
+<p class=name id="getstats">
master:<b>getstats()</b><br>
client:<b>getstats()</b><br>
server:<b>getstats()</b><br>
@@ -237,7 +276,7 @@ and the age of the socket object in seconds.
<!-- listen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=listen>
+<p class=name id="listen">
master:<b>listen(</b>backlog<b>)</b>
</p>
@@ -265,7 +304,7 @@ method returns <b><tt>nil</tt></b> followed by an error message.
<!-- receive ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=receive>
+<p class=name id="receive">
client:<b>receive(</b>[pattern [, prefix]]<b>)</b>
</p>
@@ -297,12 +336,12 @@ of any received data before return.
<p class=return>
If successful, the method returns the received pattern. In case of error,
-the method returns <tt><b>nil</b></tt> followed by an error message which
-can be the string '<tt>closed</tt>' in case the connection was
+the method returns <tt><b>nil</b></tt> followed by an error
+message, followed by a (possibly empty) string containing
+the partial that was received. The error message can be
+the string '<tt>closed</tt>' in case the connection was
closed before the transmission was completed or the string
'<tt>timeout</tt>' in case there was a timeout during the operation.
-Also, after the error message, the function returns the partial result of
-the transmission.
</p>
<p class=note>
@@ -316,7 +355,7 @@ too.
<!-- send +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=send>
+<p class=name id="send">
client:<b>send(</b>data [, i [, j]]<b>)</b>
</p>
@@ -354,7 +393,7 @@ instead of calling the method several times.
<!-- setoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=setoption>
+<p class=name id="setoption">
client:<b>setoption(</b>option [, value]<b>)</b><br>
server:<b>setoption(</b>option [, value]<b>)</b>
</p>
@@ -392,21 +431,53 @@ used in validating addresses supplied in a call to
<a href=#bind><tt>bind</tt></a> should allow reuse of local addresses;
<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
-disables the Nagle's algorithm for the connection.
+disables the Nagle's algorithm for the connection;
+<li> '<tt>ipv6-v6only</tt>':
+Setting this option to <tt>true</tt> restricts an <tt>inet6</tt> socket to
+sending and receiving only IPv6 packets.
</ul>
<p class=return>
-The method returns 1 in case of success, or <b><tt>nil</tt></b> otherwise.
+The method returns 1 in case of success, or <b><tt>nil</tt></b>
+followed by an error message otherwise.
</p>
<p class=note>
Note: The descriptions above come from the man pages.
</p>
+<!-- getoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id="getoption">
+client:<b>getoption(</b>option)</b><br>
+server:<b>getoption(</b>option)</b>
+</p>
+
+<p class=description>
+Gets options for the TCP object.
+See <a href=#setoption><tt>setoption</tt></a> for description of the
+option names and values.
+</p>
+
+<p class=parameters>
+<tt>Option</tt> is a string with the option name.
+<ul>
+
+<li> '<tt>keepalive</tt>'
+<li> '<tt>linger</tt>'
+<li> '<tt>reuseaddr</tt>'
+<li> '<tt>tcp-nodelay</tt>'
+</ul>
+
+<p class=return>
+The method returns the option <tt>value</tt> in case of success, or
+<b><tt>nil</tt></b> followed by an error message otherwise.
+</p>
+
<!-- setstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=setstats>
+<p class=name id="setstats">
master:<b>setstats(</b>received, sent, age<b>)</b><br>
client:<b>setstats(</b>received, sent, age<b>)</b><br>
server:<b>setstats(</b>received, sent, age<b>)</b><br>
@@ -429,7 +500,7 @@ The method returns 1 in case of success and <tt><b>nil</b></tt> otherwise.
<!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=settimeout>
+<p class=name id="settimeout">
master:<b>settimeout(</b>value [, mode]<b>)</b><br>
client:<b>settimeout(</b>value [, mode]<b>)</b><br>
server:<b>settimeout(</b>value [, mode]<b>)</b>
@@ -486,7 +557,7 @@ contained verbs making their imperative nature obvious.
<!-- shutdown +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=shutdown>
+<p class=name id="shutdown">
client:<b>shutdown(</b>mode<b>)</b><br>
</p>
@@ -508,14 +579,74 @@ This is the default mode;
This function returns 1.
</p>
+<!-- dirty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id="dirty">
+master:<b>dirty()</b><br>
+client:<b>dirty()</b><br>
+server:<b>dirty()</b>
+</p>
+
+<p class=description>
+Check the read buffer status.
+</p>
+
+<p class=return>
+Returns <tt>true</tt> if there is any data in the read buffer, <tt>false</tt> otherwise.
+</p>
+
+<p class=note>
+Note: <b>This is an internal method, any use is unlikely to be portable.</b>
+</p>
+
+<!-- getfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id="getfd">
+master:<b>getfd()</b><br>
+client:<b>getfd()</b><br>
+server:<b>getfd()</b>
+</p>
+
+<p class=description>
+Returns the underling socket descriptor or handle associated to the object.
+</p>
+
+<p class=return>
+The descriptor or handle. In case the object has been closed, the return will be -1.
+</p>
+
+<p class=note>
+Note: <b>This is an internal method, any use is unlikely to be portable.</b>
+</p>
+
+<!-- setfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class=name id="setfd">
+master:<b>setfd(</b>fd<b>)</b><br>
+client:<b>setfd(</b>fd<b>)</b><br>
+server:<b>setfd(</b>fd<b>)</b>
+</p>
+
+<p class=description>
+Sets the underling socket descriptor or handle associated to the object. The current one is simply replaced, not closed, and no other change to the object state is made.
+</p>
+
+<p class=return>
+No return value.
+</p>
+
+<p class=note>
+Note: <b>This is an internal method, any use is unlikely to be portable.</b>
+</p>
+
<!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<div class=footer>
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html
index 688649decb9..554fa317688 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/udp.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -37,7 +37,7 @@
<!-- udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<h2 id=udp>UDP</h2>
+<h2 id="udp">UDP</h2>
<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -46,10 +46,12 @@ socket.<b>udp()</b>
</p>
<p class="description">
-Creates and returns an unconnected UDP object. Unconnected objects support the
+Creates and returns an unconnected IPv4 UDP object.
+Unconnected objects support the
<a href="#sendto"><tt>sendto</tt></a>,
<a href="#receive"><tt>receive</tt></a>,
<a href="#receivefrom"><tt>receivefrom</tt></a>,
+<a href="#getoption"><tt>getoption</tt></a>,
<a href="#getsockname"><tt>getsockname</tt></a>,
<a href="#setoption"><tt>setoption</tt></a>,
<a href="#settimeout"><tt>settimeout</tt></a>,
@@ -66,6 +68,44 @@ returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
an error message.
</p>
+<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class="name" id="socket.udp6">
+socket.<b>udp6()</b>
+</p>
+
+<p class="description">
+Creates and returns an unconnected IPv6 UDP object.
+Unconnected objects support the
+<a href="#sendto"><tt>sendto</tt></a>,
+<a href="#receive"><tt>receive</tt></a>,
+<a href="#receivefrom"><tt>receivefrom</tt></a>,
+<a href="#getoption"><tt>getoption</tt></a>,
+<a href="#getsockname"><tt>getsockname</tt></a>,
+<a href="#setoption"><tt>setoption</tt></a>,
+<a href="#settimeout"><tt>settimeout</tt></a>,
+<a href="#setpeername"><tt>setpeername</tt></a>,
+<a href="#setsockname"><tt>setsockname</tt></a>, and
+<a href="#close"><tt>close</tt></a>.
+The <a href="#setpeername"><tt>setpeername</tt></a>
+is used to connect the object.
+</p>
+
+<p class="return">
+In case of success, a new unconnected UDP object
+returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
+an error message.
+</p>
+
+<p class=note>
+Note: The TCP object returned will have the option
+"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
+</p>
+
+
+
+<!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
<!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class="name" id="close">
@@ -100,8 +140,12 @@ Retrieves information about the peer
associated with a connected UDP object.
</p>
-<p class="return">
-Returns the IP address and port number of the peer.
+
+<p class=return>
+Returns a string with the IP address of the peer, the
+port number that peer is using for the connection,
+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
+In case of error, the method returns <b><tt>nil</tt></b>.
</p>
<p class="note">
@@ -119,10 +163,12 @@ unconnected:<b>getsockname()</b>
Returns the local address information associated to the object.
</p>
-<p class="return">
-The method returns a string with local IP
-address and a number with the port. In case of error, the method
-returns <b><tt>nil</tt></b>.
+
+<p class=return>
+The method returns a string with local IP address, a number with
+the local port,
+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
+In case of error, the method returns <b><tt>nil</tt></b>.
</p>
<p class="note">
@@ -177,6 +223,40 @@ address and port as extra return values (and is therefore slightly less
efficient).
</p>
+<!-- getoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+<p class="name" id="getoption">
+connected:<b>getoption()</b><br>
+unconnected:<b>getoption()</b>
+</p>
+
+<p class="description">
+Gets an option value from the UDP object.
+See <a href=#setoption><tt>setoption</tt></a> for
+description of the option names and values.
+</p>
+
+<p class="parameters"><tt>Option</tt> is a string with the option name.
+<ul>
+<li> '<tt>dontroute</tt>'
+<li> '<tt>broadcast</tt>'
+<li> '<tt>reuseaddr</tt>'
+<li> '<tt>reuseport</tt>'
+<li> '<tt>ip-multicast-loop</tt>'
+<li> '<tt>ipv6-v6only</tt>'
+<li> '<tt>ip-multicast-if</tt>'
+<li> '<tt>ip-multicast-ttl</tt>'
+<li> '<tt>ip-add-membership</tt>'
+<li> '<tt>ip-drop-membership</tt>'
+</ul>
+</p>
+
+<p class=return>
+The method returns the option <tt>value</tt> in case of
+success, or
+<b><tt>nil</tt></b> followed by an error message otherwise.
+</p>
+
<!-- send ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class="name" id="send">
@@ -284,6 +364,15 @@ is recommended when the same peer is used for several transmissions
and can result in up to 30% performance gains.
</p>
+<p class=note>
+Note: Starting with LuaSocket 2.1, the host name resolution
+depends on whether the socket was created by <a
+href=#socket.udp><tt>socket.udp</tt></a> or <a
+href=#socket.udp6><tt>socket.udp6</tt></a>. Addresses from
+the appropriate family are tried in succession until the
+first success or until the last failure.
+</p>
+
<!-- setsockname +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<p class="name" id="setsockname">
@@ -332,23 +421,57 @@ only modify an option if you are sure you need it.</p>
name, and <tt>value</tt> depends on the option being set:
</p>
-<ul>
-<li>'<tt>dontroute</tt>': Setting this option to <tt>true</tt>
-indicates that outgoing messages should bypass the standard routing
-facilities;</li>
-<li>'<tt>broadcast</tt>': Setting this option to <tt>true</tt>
-requests permission to send broadcast datagrams on the
-socket.</li>
-</ul>
+<ul>
+<li> '<tt>dontroute</tt>': Indicates that outgoing
+messages should bypass the standard routing facilities.
+Receives a boolean value;
+<li> '<tt>broadcast</tt>': Requests permission to send
+broadcast datagrams on the socket.
+Receives a boolean value;
+<li> '<tt>reuseaddr</tt>': Indicates that the rules used in
+validating addresses supplied in a <tt>bind()</tt> call
+should allow reuse of local addresses.
+Receives a boolean value;
+<li> '<tt>reuseport</tt>': Allows completely duplicate
+bindings by multiple processes if they all set
+'<tt>reuseport</tt>' before binding the port.
+Receives a boolean value;
+<li> '<tt>ip-multicast-loop</tt>':
+Specifies whether or not a copy of an outgoing multicast
+datagram is delivered to the sending host as long as it is a
+member of the multicast group.
+Receives a boolean value;
+<li> '<tt>ipv6-v6only</tt>':
+Specifies whether to restrict <tt>inet6</tt> sockets to
+sending and receiving only IPv6 packets.
+Receive a boolean value;
+<li> '<tt>ip-multicast-if</tt>':
+Sets the interface over which outgoing multicast datagrams
+are sent.
+Receives an IP address;
+<li> '<tt>ip-multicast-ttl</tt>':
+Sets the Time To Live in the IP header for outgoing
+multicast datagrams.
+Receives a number;
+<li> '<tt>ip-add-membership</tt>':
+Joins the multicast group specified.
+Receives a table with fields
+<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
+IP address;
+<li> '<tt>ip-drop-membership</tt>': Leaves the multicast
+group specified.
+Receives a table with fields
+<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
+IP address.
+</ul>
<p class="return">
The method returns 1 in case of success, or
<b><tt>nil</tt></b> followed by an error message otherwise.
</p>
-<p class="note">
-Note: The descriptions above come from the man
-pages.
+<p class=note>
+Note: The descriptions above come from the man pages.
</p>
<!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
@@ -397,8 +520,8 @@ imperative nature obvious.
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html b/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html
index e87126fa316..6ff673da565 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html
+++ b/Build/source/texk/web2c/luatexdir/luasocket/doc/url.html
@@ -24,8 +24,8 @@
</td></tr>
</table>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#download">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#download">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
@@ -36,14 +36,13 @@
<!-- url ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<h2 id=url>URL</h2>
+<h2 id="url">URL</h2>
<p>
The <tt>url</tt> namespace provides functions to parse, protect,
and build URLs, as well as functions to compose absolute URLs
from base and relative URLs, according to
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2396.txt">RFC
-2396</a>.
+<a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>.
</p>
<p>
@@ -70,7 +69,7 @@ An URL is defined by the following grammar:
<!-- absolute +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=absolute>
+<p class=name id="absolute">
url.<b>absolute(</b>base, relative<b>)</b>
</p>
@@ -91,7 +90,7 @@ The function returns a string with the absolute URL.
<p class=note>
Note: The rules that
govern the composition are fairly complex, and are described in detail in
-<a href="http://www.cs.princeton.edu/~diego/rfc/rfc2396.txt">RFC 2396</a>.
+<a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>.
The example bellow should give an idea of what the rules are.
</p>
@@ -126,7 +125,7 @@ g;x?y#s = http://a/b/c/g;x?y#s
<!-- build ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=build>
+<p class=name id="build">
url.<b>build(</b>parsed_url<b>)</b>
</p>
@@ -147,7 +146,7 @@ The function returns a string with the built URL.
<!-- build_path +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=build_path>
+<p class=name id="build_path">
url.<b>build_path(</b>segments, unsafe<b>)</b>
</p>
@@ -201,7 +200,7 @@ code = url.escape("/#?;")
<!-- parse ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=parse>
+<p class=name id="parse">
url.<b>parse(</b>url, default<b>)</b>
</p>
@@ -266,7 +265,7 @@ parsed_url = url.parse("ftp://root:passwd@unsafe.org/pub/virus.exe;type=i")
<!-- parse_path +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-<p class=name id=parse_path>
+<p class=name id="parse_path">
url.<b>parse_path(</b>path<b>)</b>
</p>
@@ -310,8 +309,8 @@ The function returns the decoded string.
<hr>
<center>
<p class=bar>
-<a href="home.html">home</a> &middot;
-<a href="home.html#down">download</a> &middot;
+<a href="index.html">home</a> &middot;
+<a href="index.html#down">download</a> &middot;
<a href="installation.html">installation</a> &middot;
<a href="introduction.html">introduction</a> &middot;
<a href="reference.html">reference</a>
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua
index f75c4232db6..11eeb2d2d74 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/b64.lua
@@ -2,7 +2,6 @@
-- Little program to convert to and from Base64
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: b64.lua,v 1.8 2004/06/16 04:28:21 diego Exp $
-----------------------------------------------------------------------------
local ltn12 = require("ltn12")
local mime = require("mime")
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua
index a989f8c271e..d2e4266e809 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/check-links.lua
@@ -3,7 +3,6 @@
-- non-blocking I/O via the dispatcher module.
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $$
-----------------------------------------------------------------------------
local url = require("socket.url")
local dispatch = require("dispatch")
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua
index c082c24c0db..8c5b711c139 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/dict.lua
@@ -2,7 +2,6 @@
-- Little program to download DICT word definitions
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: dict.lua,v 1.22 2005/11/22 08:33:29 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -44,48 +43,48 @@ function metat.__index:check(ok)
end
function metat.__index:getdef()
- local line = socket.try(self.tp:receive())
- local def = {}
- while line ~= "." do
- table.insert(def, line)
- line = socket.try(self.tp:receive())
- end
- return table.concat(def, "\n")
+ local line = socket.try(self.tp:receive())
+ local def = {}
+ while line ~= "." do
+ table.insert(def, line)
+ line = socket.try(self.tp:receive())
+ end
+ return table.concat(def, "\n")
end
function metat.__index:define(database, word)
database = database or "!"
- socket.try(self.tp:command("DEFINE", database .. " " .. word))
+ socket.try(self.tp:command("DEFINE", database .. " " .. word))
local code, count = self:check(150)
- local defs = {}
- for i = 1, count do
- self:check(151)
- table.insert(defs, self:getdef())
- end
- self:check(250)
+ local defs = {}
+ for i = 1, count do
+ self:check(151)
+ table.insert(defs, self:getdef())
+ end
+ self:check(250)
return defs
end
function metat.__index:match(database, strat, word)
database = database or "!"
strat = strat or "."
- socket.try(self.tp:command("MATCH", database .." ".. strat .." ".. word))
+ socket.try(self.tp:command("MATCH", database .." ".. strat .." ".. word))
self:check(152)
- local mat = {}
- local line = socket.try(self.tp:receive())
+ local mat = {}
+ local line = socket.try(self.tp:receive())
while line ~= '.' do
database, word = socket.skip(2, string.find(line, "(%S+) (.*)"))
if not mat[database] then mat[database] = {} end
table.insert(mat[database], word)
- line = socket.try(self.tp:receive())
- end
- self:check(250)
+ line = socket.try(self.tp:receive())
+ end
+ self:check(250)
return mat
end
function metat.__index:quit()
- self.tp:command("QUIT")
- return self:check(221)
+ self.tp:command("QUIT")
+ return self:check(221)
end
function metat.__index:close()
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua
index 3ef1e72b690..cc8cb23c882 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/dispatch.lua
@@ -2,7 +2,6 @@
-- A hacked dispatcher module
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $$
-----------------------------------------------------------------------------
local base = _G
local table = require("table")
@@ -54,7 +53,7 @@ function socket.protect(f)
local results = {coroutine.resume(co, base.unpack(arg))}
local status = table.remove(results, 1)
if not status then
- if type(results[1]) == 'table' then
+ if base.type(results[1]) == 'table' then
return nil, results[1][1]
else base.error(results[1]) end
end
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua
index b90be79d8f9..eeaf0ce0327 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/eol.lua
@@ -2,7 +2,6 @@
-- Little program to adjust end of line markers.
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: eol.lua,v 1.8 2005/11/22 08:33:29 diego Exp $
-----------------------------------------------------------------------------
local mime = require("mime")
local ltn12 = require("ltn12")
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua
index 3df6a451262..4196f000b09 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/get.lua
@@ -2,7 +2,6 @@
-- Little program to download files from URLs
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: get.lua,v 1.25 2007/03/12 04:08:40 diego Exp $
-----------------------------------------------------------------------------
local socket = require("socket")
local http = require("socket.http")
@@ -12,53 +11,53 @@ local ltn12 = require("ltn12")
-- formats a number of seconds into human readable form
function nicetime(s)
- local l = "s"
- if s > 60 then
- s = s / 60
- l = "m"
- if s > 60 then
- s = s / 60
- l = "h"
- if s > 24 then
- s = s / 24
- l = "d" -- hmmm
- end
- end
- end
- if l == "s" then return string.format("%5.0f%s", s, l)
- else return string.format("%5.2f%s", s, l) end
+ local l = "s"
+ if s > 60 then
+ s = s / 60
+ l = "m"
+ if s > 60 then
+ s = s / 60
+ l = "h"
+ if s > 24 then
+ s = s / 24
+ l = "d" -- hmmm
+ end
+ end
+ end
+ if l == "s" then return string.format("%5.0f%s", s, l)
+ else return string.format("%5.2f%s", s, l) end
end
-- formats a number of bytes into human readable form
function nicesize(b)
- local l = "B"
- if b > 1024 then
- b = b / 1024
- l = "KB"
- if b > 1024 then
- b = b / 1024
- l = "MB"
- if b > 1024 then
- b = b / 1024
- l = "GB" -- hmmm
- end
- end
- end
- return string.format("%7.2f%2s", b, l)
+ local l = "B"
+ if b > 1024 then
+ b = b / 1024
+ l = "KB"
+ if b > 1024 then
+ b = b / 1024
+ l = "MB"
+ if b > 1024 then
+ b = b / 1024
+ l = "GB" -- hmmm
+ end
+ end
+ end
+ return string.format("%7.2f%2s", b, l)
end
-- returns a string with the current state of the download
local remaining_s = "%s received, %s/s throughput, %2.0f%% done, %s remaining"
local elapsed_s = "%s received, %s/s throughput, %s elapsed "
function gauge(got, delta, size)
- local rate = got / delta
- if size and size >= 1 then
- return string.format(remaining_s, nicesize(got), nicesize(rate),
- 100*got/size, nicetime((size-got)/rate))
- else
- return string.format(elapsed_s, nicesize(got),
- nicesize(rate), nicetime(delta))
- end
+ local rate = got / delta
+ if size and size >= 1 then
+ return string.format(remaining_s, nicesize(got), nicesize(rate),
+ 100*got/size, nicetime((size-got)/rate))
+ else
+ return string.format(elapsed_s, nicesize(got),
+ nicesize(rate), nicetime(delta))
+ end
end
-- creates a new instance of a receive_cb that saves to disk
@@ -89,10 +88,10 @@ end
-- determines the size of a http file
function gethttpsize(u)
- local r, c, h = http.request {method = "HEAD", url = u}
- if c == 200 then
- return tonumber(h["content-length"])
- end
+ local r, c, h = http.request {method = "HEAD", url = u}
+ if c == 200 then
+ return tonumber(h["content-length"])
+ end
end
-- downloads a file using the http protocol
@@ -101,7 +100,7 @@ function getbyhttp(u, file)
-- only print feedback if output is not stdout
if file then save = ltn12.sink.chain(stats(gethttpsize(u)), save) end
local r, c, h, s = http.request {url = u, sink = save }
- if c ~= 200 then io.stderr:write(s or c, "\n") end
+ if c ~= 200 then io.stderr:write(s or c, "\n") end
end
-- downloads a file using the ftp protocol
@@ -114,29 +113,29 @@ function getbyftp(u, file)
gett.sink = save
gett.type = "i"
local ret, err = ftp.get(gett)
- if err then print(err) end
+ if err then print(err) end
end
-- determines the scheme
function getscheme(u)
- -- this is an heuristic to solve a common invalid url poblem
- if not string.find(u, "//") then u = "//" .. u end
- local parsed = url.parse(u, {scheme = "http"})
- return parsed.scheme
+ -- this is an heuristic to solve a common invalid url poblem
+ if not string.find(u, "//") then u = "//" .. u end
+ local parsed = url.parse(u, {scheme = "http"})
+ return parsed.scheme
end
-- gets a file either by http or ftp, saving as <name>
function get(u, name)
local fout = name and io.open(name, "wb")
- local scheme = getscheme(u)
- if scheme == "ftp" then getbyftp(u, fout)
- elseif scheme == "http" then getbyhttp(u, fout)
- else print("unknown scheme" .. scheme) end
+ local scheme = getscheme(u)
+ if scheme == "ftp" then getbyftp(u, fout)
+ elseif scheme == "http" then getbyhttp(u, fout)
+ else print("unknown scheme" .. scheme) end
end
-- main program
arg = arg or {}
if table.getn(arg) < 1 then
- io.write("Usage:\n lua get.lua <remote-url> [<local-file>]\n")
- os.exit(1)
+ io.write("Usage:\n lua get.lua <remote-url> [<local-file>]\n")
+ os.exit(1)
else get(arg[1], arg[2]) end
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua
index 32699209c6b..25f0b95e15e 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/lp.lua
@@ -3,7 +3,6 @@
-- LuaSocket toolkit.
-- Author: David Burgess
-- Modified by Diego Nehab, but David is in charge
--- RCS ID: $Id: lp.lua,v 1.14 2005/11/21 07:04:44 diego Exp $
-----------------------------------------------------------------------------
--[[
if you have any questions: RFC 1179
@@ -268,11 +267,11 @@ send = socket.protect(function(option)
local class = string.sub(option.class or localip or localhost,1,31)
local _,_,ctlfn = string.find(file,".*[%/%\\](.*)")
ctlfn = string.sub(ctlfn or file,1,131)
- local cfile =
- string.format("H%-s\nC%-s\nJ%-s\nP%-s\n%.1s%-s\nU%-s\nN%-s\n",
- localhost,
+ local cfile =
+ string.format("H%-s\nC%-s\nJ%-s\nP%-s\n%.1s%-s\nU%-s\nN%-s\n",
+ localhost,
class,
- option.job or "LuaSocket",
+ option.job or "LuaSocket",
user,
fmt, lpfile,
lpfile,
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua
index a4c0cad5933..523238b18f2 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/qp.lua
@@ -2,7 +2,6 @@
-- Little program to convert to and from Quoted-Printable
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: qp.lua,v 1.5 2004/06/17 21:46:22 diego Exp $
-----------------------------------------------------------------------------
local ltn12 = require("ltn12")
local mime = require("mime")
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua b/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua
index 94eaf3424d8..ed99cd164b0 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/etc/tftp.lua
@@ -2,7 +2,6 @@
-- TFTP support for the Lua language
-- LuaSocket toolkit.
-- Author: Diego Nehab
--- RCS ID: $Id: tftp.lua,v 1.16 2005/11/22 08:33:29 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -35,18 +34,18 @@ local OP_INV = {"RRQ", "WRQ", "DATA", "ACK", "ERROR"}
-- Packet creation functions
-----------------------------------------------------------------------------
local function RRQ(source, mode)
- return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0)
+ return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0)
end
local function WRQ(source, mode)
- return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0)
+ return char(0, OP_RRQ) .. source .. char(0) .. mode .. char(0)
end
local function ACK(block)
- local low, high
- low = math.mod(block, 256)
- high = (block - low)/256
- return char(0, OP_ACK, high, low)
+ local low, high
+ low = math.mod(block, 256)
+ high = (block - low)/256
+ return char(0, OP_ACK, high, low)
end
local function get_OP(dgram)
@@ -58,16 +57,16 @@ end
-- Packet analysis functions
-----------------------------------------------------------------------------
local function split_DATA(dgram)
- local block = byte(dgram, 3)*256 + byte(dgram, 4)
- local data = string.sub(dgram, 5)
- return block, data
+ local block = byte(dgram, 3)*256 + byte(dgram, 4)
+ local data = string.sub(dgram, 5)
+ return block, data
end
local function get_ERROR(dgram)
- local code = byte(dgram, 3)*256 + byte(dgram, 4)
- local msg
- _,_, msg = string.find(dgram, "(.*)\000", 5)
- return string.format("error code %d: %s", code, msg)
+ local code = byte(dgram, 3)*256 + byte(dgram, 4)
+ local msg
+ _,_, msg = string.find(dgram, "(.*)\000", 5)
+ return string.format("error code %d: %s", code, msg)
end
-----------------------------------------------------------------------------
@@ -77,40 +76,40 @@ local function tget(gett)
local retries, dgram, sent, datahost, dataport, code
local last = 0
socket.try(gett.host, "missing host")
- local con = socket.try(socket.udp())
+ local con = socket.try(socket.udp())
local try = socket.newtry(function() con:close() end)
-- convert from name to ip if needed
- gett.host = try(socket.dns.toip(gett.host))
- con:settimeout(1)
+ gett.host = try(socket.dns.toip(gett.host))
+ con:settimeout(1)
-- first packet gives data host/port to be used for data transfers
local path = string.gsub(gett.path or "", "^/", "")
path = url.unescape(path)
retries = 0
- repeat
- sent = try(con:sendto(RRQ(path, "octet"), gett.host, gett.port))
- dgram, datahost, dataport = con:receivefrom()
+ repeat
+ sent = try(con:sendto(RRQ(path, "octet"), gett.host, gett.port))
+ dgram, datahost, dataport = con:receivefrom()
retries = retries + 1
- until dgram or datahost ~= "timeout" or retries > 5
- try(dgram, datahost)
+ until dgram or datahost ~= "timeout" or retries > 5
+ try(dgram, datahost)
-- associate socket with data host/port
- try(con:setpeername(datahost, dataport))
+ try(con:setpeername(datahost, dataport))
-- default sink
local sink = gett.sink or ltn12.sink.null()
-- process all data packets
- while 1 do
+ while 1 do
-- decode packet
- code = get_OP(dgram)
- try(code ~= OP_ERROR, get_ERROR(dgram))
+ code = get_OP(dgram)
+ try(code ~= OP_ERROR, get_ERROR(dgram))
try(code == OP_DATA, "unhandled opcode " .. code)
-- get data packet parts
- local block, data = split_DATA(dgram)
+ local block, data = split_DATA(dgram)
-- if not repeated, write
if block == last+1 then
- try(sink(data))
+ try(sink(data))
last = block
end
-- last packet brings less than 512 bytes of data
- if string.len(data) < 512 then
+ if string.len(data) < 512 then
try(con:send(ACK(block)))
try(con:close())
try(sink(nil))
@@ -118,13 +117,13 @@ local function tget(gett)
end
-- get the next packet
retries = 0
- repeat
- sent = try(con:send(ACK(last)))
- dgram, err = con:receive()
+ repeat
+ sent = try(con:send(ACK(last)))
+ dgram, err = con:receive()
retries = retries + 1
- until dgram or err ~= "timeout" or retries > 5
- try(dgram, err)
- end
+ until dgram or err ~= "timeout" or retries > 5
+ try(dgram, err)
+ end
end
local default = {
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln b/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln
index a674c33caab..0e5cdc73f00 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln
+++ b/Build/source/texk/web2c/luatexdir/luasocket/luasocket.sln
@@ -1,37 +1,35 @@
-Microsoft Visual Studio Solution File, Format Version 8.00
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "socket", "socket.vcproj", "{66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "socket", "socket.vcxproj", "{66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mime", "mime.vcproj", "{128E8BD0-174A-48F0-8771-92B1E8D18713}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libluasocket", "libluasocket.vcproj", "{599EAD40-60EE-4043-9C14-AE090A8A092D}"
- ProjectSection(ProjectDependencies) = postProject
- EndProjectSection
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mime", "mime.vcxproj", "{128E8BD0-174A-48F0-8771-92B1E8D18713}"
EndProject
Global
- GlobalSection(SolutionConfiguration) = preSolution
- Debug = Debug
- Release = Release
- EndGlobalSection
- GlobalSection(ProjectConfiguration) = postSolution
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug.ActiveCfg = Debug|Win32
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug.Build.0 = Debug|Win32
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release.ActiveCfg = Release|Win32
- {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release.Build.0 = Release|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug.ActiveCfg = Debug|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug.Build.0 = Debug|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release.ActiveCfg = Release|Win32
- {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release.Build.0 = Release|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Debug.ActiveCfg = Debug|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Debug.Build.0 = Debug|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Release.ActiveCfg = Release|Win32
- {599EAD40-60EE-4043-9C14-AE090A8A092D}.Release.Build.0 = Release|Win32
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|Win32.Build.0 = Debug|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|x64.ActiveCfg = Debug|x64
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Debug|x64.Build.0 = Debug|x64
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|Win32.ActiveCfg = Release|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|Win32.Build.0 = Release|Win32
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|x64.ActiveCfg = Release|x64
+ {66E3CE14-884D-4AEA-9F20-15A0BEAF8C5A}.Release|x64.Build.0 = Release|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|Win32.ActiveCfg = Debug|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|Win32.Build.0 = Debug|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|x64.ActiveCfg = Debug|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Debug|x64.Build.0 = Debug|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|Win32.ActiveCfg = Release|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|Win32.Build.0 = Release|Win32
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|x64.ActiveCfg = Release|x64
+ {128E8BD0-174A-48F0-8771-92B1E8D18713}.Release|x64.Build.0 = Release|x64
EndGlobalSection
- GlobalSection(ExtensibilityAddIns) = postSolution
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/makefile b/Build/source/texk/web2c/luatexdir/luasocket/makefile
index 6d700392a0a..f9fa6fe7803 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/makefile
+++ b/Build/source/texk/web2c/luatexdir/luasocket/makefile
@@ -1,51 +1,34 @@
-#------
-# Load configuration
+# luasocket makefile
#
-include config
-
-#------
-# Hopefully no need to change anything below this line
+# see src/makefile for description of how to customize the build
#
-INSTALL_SOCKET_SHARE=$(INSTALL_TOP_SHARE)/socket
-INSTALL_SOCKET_LIB=$(INSTALL_TOP_LIB)/socket
-INSTALL_MIME_SHARE=$(INSTALL_TOP_SHARE)/mime
-INSTALL_MIME_LIB=$(INSTALL_TOP_LIB)/mime
+# Targets:
+# install install system independent support
+# install-unix also install unix-only support
+# install-both install both lua5.1 and lua5.2 socket support
+# print print the build settings
-all clean:
- cd src; $(MAKE) $@
+PLAT?= linux
+PLATS= macosx linux win32
+
+all: $(PLAT)
+
+$(PLATS) none install install-unix local clean:
+ $(MAKE) -C src $@
+
+print:
+ $(MAKE) -C src $@
+
+test:
+ lua test/hello.lua
+
+install-both:
+ $(MAKE) clean
+ @cd src; $(MAKE) $(PLAT) LUAV=5.1
+ @cd src; $(MAKE) install-unix LUAV=5.1
+ $(MAKE) clean
+ @cd src; $(MAKE) $(PLAT) LUAV=5.2
+ @cd src; $(MAKE) install-unix LUAV=5.2
+
+.PHONY: test
-#------
-# Files to install
-#
-TO_SOCKET_SHARE:= \
- http.lua \
- url.lua \
- tp.lua \
- ftp.lua \
- smtp.lua
-
-TO_TOP_SHARE:= \
- ltn12.lua \
- socket.lua \
- mime.lua
-
-TO_MIME_SHARE:=
-
-#------
-# Install LuaSocket according to recommendation
-#
-install: all
- cd src; mkdir -p $(INSTALL_TOP_SHARE)
- cd src; $(INSTALL_DATA) $(TO_TOP_SHARE) $(INSTALL_TOP_SHARE)
- cd src; mkdir -p $(INSTALL_SOCKET_SHARE)
- cd src; $(INSTALL_DATA) $(TO_SOCKET_SHARE) $(INSTALL_SOCKET_SHARE)
- cd src; mkdir -p $(INSTALL_SOCKET_LIB)
- cd src; $(INSTALL_EXEC) $(SOCKET_SO) $(INSTALL_SOCKET_LIB)/core.$(EXT)
- #cd src; mkdir -p $(INSTALL_MIME_SHARE)
- #cd src; $(INSTALL_DATA) $(TO_MIME_SHARE) $(INSTALL_MIME_SHARE)
- cd src; mkdir -p $(INSTALL_MIME_LIB)
- cd src; $(INSTALL_EXEC) $(MIME_SO) $(INSTALL_MIME_LIB)/core.$(EXT)
-
-#------
-# End of makefile
-#
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua
index 883730c3a4c..49a187119f8 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/cddb.lua
@@ -32,7 +32,7 @@ end
local host = socket.dns.gethostname()
local query = "%s?cmd=cddb+read+%s+%s&hello=LuaSocket+%s+LuaSocket+2.0&proto=6"
local url = string.format(query, server, arg[1], arg[2], host)
-local body, headers, code = http.get(url)
+local body, headers, code = http.request(url)
if code == 200 then
local data, code, error = parse(body)
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua
index 90ab39e9713..f81e37c4884 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/daytimeclnt.lua
@@ -2,7 +2,6 @@
-- UDP sample: daytime protocol client
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: daytimeclnt.lua,v 1.11 2004/06/21 06:07:57 diego Exp $
-----------------------------------------------------------------------------
local socket = require"socket"
host = host or "127.0.0.1"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua
index 038be4c239d..bb22557a0be 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/echoclnt.lua
@@ -2,7 +2,6 @@
-- UDP sample: echo protocol client
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: echoclnt.lua,v 1.10 2005/01/02 22:44:00 diego Exp $
-----------------------------------------------------------------------------
local socket = require("socket")
host = host or "localhost"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua
index 2697ca46d69..ea564e246d7 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/echosrvr.lua
@@ -2,7 +2,6 @@
-- UDP sample: echo protocol server
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: echosrvr.lua,v 1.12 2005/11/22 08:33:29 diego Exp $
-----------------------------------------------------------------------------
local socket = require("socket")
host = host or "127.0.0.1"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua
index 9260fbb0f35..77db2d539b7 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/listener.lua
@@ -2,7 +2,6 @@
-- TCP sample: Little program to dump lines received at a given port
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: listener.lua,v 1.11 2005/01/02 22:44:00 diego Exp $
-----------------------------------------------------------------------------
local socket = require("socket")
host = host or "*"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua
index 2b059b15871..3d5e2f8d1be 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/lpr.lua
@@ -29,7 +29,7 @@ end
do
local opt = {}
local pat = "[%s%c%p]*([%w]*)=([\"]?[%w%s_!@#$%%^&*()<>:;]+[\"]\?\.?)"
- for i = 2, table.getn(arg), 1 do
+ for i = 2, #arg, 1 do
string.gsub(arg[i], pat, function(name, value) opt[name] = value end)
end
if not arg[2] then
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua
index 607ff31989b..d5a36cbe256 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/talker.lua
@@ -2,7 +2,6 @@
-- TCP sample: Little program to send text lines to a given host/port
-- LuaSocket sample files
-- Author: Diego Nehab
--- RCS ID: $Id: talker.lua,v 1.9 2005/01/02 22:44:00 diego Exp $
-----------------------------------------------------------------------------
local socket = require("socket")
host = host or "localhost"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua b/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua
index f474302e0a2..5babb7e1ea1 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/samples/tinyirc.lua
@@ -2,7 +2,6 @@
-- Select sample: simple text line server
-- LuaSocket sample files.
-- Author: Diego Nehab
--- RCS ID: $Id: tinyirc.lua,v 1.14 2005/11/22 08:33:29 diego Exp $
-----------------------------------------------------------------------------
local socket = require("socket")
host = host or "*"
@@ -32,7 +31,7 @@ function newset()
insert = function(set, value)
if not reverse[value] then
table.insert(set, value)
- reverse[value] = table.getn(set)
+ reverse[value] = #set
end
end,
remove = function(set, value)
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c
index 9514970119f..de625e9d743 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Auxiliar routines for class hierarchy manipulation
* LuaSocket toolkit
-*
-* RCS ID: $Id: auxiliar.c,v 1.14 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include <string.h>
#include <stdio.h>
@@ -24,7 +22,7 @@ int auxiliar_open(lua_State *L) {
* Creates a new class with given methods
* Methods whose names start with __ are passed directly to the metatable.
\*-------------------------------------------------------------------------*/
-void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func) {
+void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func) {
luaL_newmetatable(L, classname); /* mt */
/* create __index table to place methods */
lua_pushstring(L, "__index"); /* mt,"__index" */
@@ -81,7 +79,7 @@ void auxiliar_add2group(lua_State *L, const char *classname, const char *groupna
\*-------------------------------------------------------------------------*/
int auxiliar_checkboolean(lua_State *L, int objidx) {
if (!lua_isboolean(L, objidx))
- luaL_typerror(L, objidx, lua_typename(L, LUA_TBOOLEAN));
+ auxiliar_typeerror(L, objidx, lua_typename(L, LUA_TBOOLEAN));
return lua_toboolean(L, objidx);
}
@@ -147,3 +145,14 @@ void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) {
void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) {
return luaL_checkudata(L, objidx, classname);
}
+
+/*-------------------------------------------------------------------------*\
+* Throws error when argument does not have correct type.
+* Used to be part of lauxlib in Lua 5.1, was dropped from 5.2.
+\*-------------------------------------------------------------------------*/
+int auxiliar_typeerror (lua_State *L, int narg, const char *tname) {
+ const char *msg = lua_pushfstring(L, "%s expected, got %s", tname,
+ luaL_typename(L, narg));
+ return luaL_argerror(L, narg, msg);
+}
+
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h
index 18b849554ff..ea9901333de 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/auxiliar.h
@@ -27,15 +27,13 @@
*
* The mapping from class name to the corresponding metatable and the
* reverse mapping are done using lauxlib.
-*
-* RCS ID: $Id: auxiliar.h,v 1.9 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include "lua.h"
#include "lauxlib.h"
int auxiliar_open(lua_State *L);
-void auxiliar_newclass(lua_State *L, const char *classname, luaL_reg *func);
+void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func);
void auxiliar_add2group(lua_State *L, const char *classname, const char *group);
void auxiliar_setclass(lua_State *L, const char *classname, int objidx);
void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx);
@@ -44,5 +42,6 @@ void *auxiliar_getclassudata(lua_State *L, const char *groupname, int objidx);
void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx);
int auxiliar_checkboolean(lua_State *L, int objidx);
int auxiliar_tostring(lua_State *L);
+int auxiliar_typeerror(lua_State *L, int narg, const char *tname);
#endif /* AUXILIAR_H */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c
index 73f4ffa85e6..4ef4e8eb5c4 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Input/Output interface for Lua programs
* LuaSocket toolkit
-*
-* RCS ID: $Id: buffer.c,v 1.28 2007/06/11 23:44:54 diego Exp $
\*=========================================================================*/
#include "lua.h"
#include "lauxlib.h"
@@ -42,7 +40,7 @@ int buffer_open(lua_State *L) {
* Initializes C structure
\*-------------------------------------------------------------------------*/
void buffer_init(p_buffer buf, p_io io, p_timeout tm) {
- buf->first = buf->last = 0;
+ buf->first = buf->last = 0;
buf->io = io;
buf->tm = tm;
buf->received = buf->sent = 0;
@@ -53,8 +51,8 @@ void buffer_init(p_buffer buf, p_io io, p_timeout tm) {
* object:getstats() interface
\*-------------------------------------------------------------------------*/
int buffer_meth_getstats(lua_State *L, p_buffer buf) {
- lua_pushnumber(L, buf->received);
- lua_pushnumber(L, buf->sent);
+ lua_pushnumber(L, (lua_Number) buf->received);
+ lua_pushnumber(L, (lua_Number) buf->sent);
lua_pushnumber(L, timeout_gettime() - buf->birthday);
return 3;
}
@@ -63,8 +61,8 @@ int buffer_meth_getstats(lua_State *L, p_buffer buf) {
* object:setstats() interface
\*-------------------------------------------------------------------------*/
int buffer_meth_setstats(lua_State *L, p_buffer buf) {
- buf->received = (long) luaL_optnumber(L, 2, buf->received);
- buf->sent = (long) luaL_optnumber(L, 3, buf->sent);
+ buf->received = (long) luaL_optnumber(L, 2, (lua_Number) buf->received);
+ buf->sent = (long) luaL_optnumber(L, 3, (lua_Number) buf->sent);
if (lua_isnumber(L, 4)) buf->birthday = timeout_gettime() - lua_tonumber(L, 4);
lua_pushnumber(L, 1);
return 1;
@@ -80,7 +78,9 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
const char *data = luaL_checklstring(L, 2, &size);
long start = (long) luaL_optnumber(L, 3, 1);
long end = (long) luaL_optnumber(L, 4, -1);
+#ifdef LUASOCKET_DEBUG
p_timeout tm = timeout_markstart(buf->tm);
+#endif
if (start < 0) start = (long) (size+start+1);
if (end < 0) end = (long) (size+end+1);
if (start < 1) start = (long) 1;
@@ -90,9 +90,9 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
if (err != IO_DONE) {
lua_pushnil(L);
lua_pushstring(L, buf->io->error(buf->io->ctx, err));
- lua_pushnumber(L, sent+start-1);
+ lua_pushnumber(L, (lua_Number) (sent+start-1));
} else {
- lua_pushnumber(L, sent+start-1);
+ lua_pushnumber(L, (lua_Number) (sent+start-1));
lua_pushnil(L);
lua_pushnil(L);
}
@@ -111,7 +111,9 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
luaL_Buffer b;
size_t size;
const char *part = luaL_optlstring(L, 3, "", &size);
+#ifdef LUASOCKET_DEBUG
p_timeout tm = timeout_markstart(buf->tm);
+#endif
/* initialize buffer with optional extra prefix
* (useful for concatenating previous partial results) */
luaL_buffinit(L, &b);
@@ -122,9 +124,15 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
if (p[0] == '*' && p[1] == 'l') err = recvline(buf, &b);
else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b);
else luaL_argcheck(L, 0, 2, "invalid receive pattern");
- /* get a fixed number of bytes (minus what was already partially
- * received) */
- } else err = recvraw(buf, (size_t) lua_tonumber(L, 2)-size, &b);
+ /* get a fixed number of bytes (minus what was already partially
+ * received) */
+ } else {
+ double n = lua_tonumber(L, 2);
+ size_t wanted = (size_t) n;
+ luaL_argcheck(L, n >= 0, 2, "invalid receive pattern");
+ if (size == 0 || wanted > size)
+ err = recvraw(buf, wanted-size, &b);
+ }
/* check if there was an error */
if (err != IO_DONE) {
/* we can't push anyting in the stack before pushing the
@@ -166,7 +174,7 @@ static int sendraw(p_buffer buf, const char *data, size_t count, size_t *sent) {
size_t total = 0;
int err = IO_DONE;
while (total < count && err == IO_DONE) {
- size_t done;
+ size_t done = 0;
size_t step = (count-total <= STEPSIZE)? count-total: STEPSIZE;
err = io->send(io->ctx, data+total, step, &done, tm);
total += done;
@@ -225,7 +233,7 @@ static int recvline(p_buffer buf, luaL_Buffer *b) {
pos = 0;
while (pos < count && data[pos] != '\n') {
/* we ignore all \r's */
- if (data[pos] != '\r') luaL_putchar(b, data[pos]);
+ if (data[pos] != '\r') luaL_addchar(b, data[pos]);
pos++;
}
if (pos < count) { /* found '\n' */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h
index baf93caa031..1281bb39149 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/buffer.h
@@ -14,8 +14,6 @@
*
* The module is built on top of the I/O abstraction defined in io.h and the
* timeout management is done with the timeout.h interface.
-*
-* RCS ID: $Id: buffer.h,v 1.12 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include "lua.h"
@@ -31,8 +29,8 @@ typedef struct t_buffer_ {
size_t sent, received; /* bytes sent, and bytes received */
p_io io; /* IO driver used for this buffer */
p_timeout tm; /* timeout management for this buffer */
- size_t first, last; /* index of first and last bytes of stored data */
- char data[BUF_SIZE]; /* storage space for buffer data */
+ size_t first, last; /* index of first and last bytes of stored data */
+ char data[BUF_SIZE]; /* storage space for buffer data */
} t_buffer;
typedef t_buffer *p_buffer;
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/except.c b/Build/source/texk/web2c/luatexdir/luasocket/src/except.c
index 5faa5be0039..1d1ade0ee00 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/except.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/except.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Simple exception support
* LuaSocket toolkit
-*
-* RCS ID: $Id: except.c,v 1.8 2005/09/29 06:11:41 diego Exp $
\*=========================================================================*/
#include <stdio.h>
@@ -21,7 +19,7 @@ static int finalize(lua_State *L);
static int do_nothing(lua_State *L);
/* except functions */
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{"newtry", global_newtry},
{"protect", global_protect},
{NULL, NULL}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/except.h b/Build/source/texk/web2c/luatexdir/luasocket/src/except.h
index 81efb29be53..1e7a2455e70 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/except.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/except.h
@@ -24,8 +24,6 @@
*
* With these two function, it's easy to write functions that throw
* exceptions on error, but that don't interrupt the user script.
-*
-* RCS ID: $Id: except.h,v 1.2 2005/09/29 06:11:41 diego Exp $
\*=========================================================================*/
#include "lua.h"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua
index 598f65dcaf0..5aa646b1767 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp.lua
@@ -2,7 +2,6 @@
-- FTP support for the Lua language
-- LuaSocket toolkit.
-- Author: Diego Nehab
--- RCS ID: $Id: ftp.lua,v 1.45 2007/07/11 19:25:47 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -212,8 +211,8 @@ local function tput(putt)
end
local default = {
- path = "/",
- scheme = "ftp"
+ path = "/",
+ scheme = "ftp"
}
local function parse(u)
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c
index b359db30b5c..6c158328cc2 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ftp_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c ftp.lua ftp_lua"
+ * This file is auto-generated by "lua2c ftp.lua ftp_lua"
*/
#include "lua.h"
@@ -15,455 +15,452 @@ int luatex_ftp_lua_open (lua_State *L) {
32, 76,117, 97, 32,108, 97,110,103,117, 97,103,101, 10, 45, 45, 32, 76,117, 97,
83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,
117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45,
- 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,102,116,112, 46,108,
-117, 97, 44,118, 32, 49, 46, 52, 53, 32, 50, 48, 48, 55, 47, 48, 55, 47, 49, 49,
- 32, 49, 57, 58, 50, 53, 58, 52, 55, 32,100,105,101,103,111, 32, 69,120,112, 32,
- 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
- 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45,
- 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100,
- 32,105,109,112,111,114,116, 32,100,101,112,101,110,100,101,110, 99,105,101,115,
- 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,
-111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108,
- 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97,
- 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61,
- 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,
-111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40,
- 34,109, 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116,
- 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41,
- 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32,114,101,113,117,105,114,101,
- 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111, 99, 97,108,
- 32,116,112, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,
-116, 46,116,112, 34, 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61,
- 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,109,111,
-100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,102,116,112, 34, 41, 10, 10,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,
+101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,
+112,111,114,116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
- 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,115, 10, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,
+108, 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97,
+ 98,108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101,
+ 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,
+113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,
+108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,
+116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,
+114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111,
+ 99, 97,108, 32,117,114,108, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,
+111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111, 99, 97,108, 32,116,112,
+ 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,116,
+112, 34, 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,
+113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,109,111,100,117,108,
+101, 40, 34,115,111, 99,107,101,116, 46,102,116,112, 34, 41, 10, 10, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,114,
+111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,115, 10, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,
-116,105,109,101,111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 32, 98,
-101,102,111,114,101, 32,116,104,101, 32,112,114,111,103,114, 97,109, 32,103,105,
-118,101,115, 32,117,112, 32,111,110, 32, 97, 32, 99,111,110,110,101, 99,116,105,
-111,110, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100,
-101,102, 97,117,108,116, 32,112,111,114,116, 32,102,111,114, 32,102,116,112, 32,
-115,101,114,118,105, 99,101, 10, 80, 79, 82, 84, 32, 61, 32, 50, 49, 10, 45, 45,
- 32,116,104,105,115, 32,105,115, 32,116,104,101, 32,100,101,102, 97,117,108,116,
- 32, 97,110,111,110,121,109,111,117,115, 32,112, 97,115,115,119,111,114,100, 46,
- 32,117,115,101,100, 32,119,104,101,110, 32,110,111, 32,112, 97,115,115,119,111,
-114,100, 32,105,115, 10, 45, 45, 32,112,114,111,118,105,100,101,100, 32,105,110,
- 32,117,114,108, 46, 32,115,104,111,117,108,100, 32, 98,101, 32, 99,104, 97,110,
-103,101,100, 32,116,111, 32,121,111,117,114, 32,101, 45,109, 97,105,108, 46, 10,
- 85, 83, 69, 82, 32, 61, 32, 34,102,116,112, 34, 10, 80, 65, 83, 83, 87, 79, 82,
- 68, 32, 61, 32, 34, 97,110,111,110,121,109,111,117,115, 64, 97,110,111,110,121,
-109,111,117,115, 46,111,114,103, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,116,105,109,
+101,111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 32, 98,101,102,111,
+114,101, 32,116,104,101, 32,112,114,111,103,114, 97,109, 32,103,105,118,101,115,
+ 32,117,112, 32,111,110, 32, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 10,
+ 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101,102, 97,
+117,108,116, 32,112,111,114,116, 32,102,111,114, 32,102,116,112, 32,115,101,114,
+118,105, 99,101, 10, 80, 79, 82, 84, 32, 61, 32, 50, 49, 10, 45, 45, 32,116,104,
+105,115, 32,105,115, 32,116,104,101, 32,100,101,102, 97,117,108,116, 32, 97,110,
+111,110,121,109,111,117,115, 32,112, 97,115,115,119,111,114,100, 46, 32,117,115,
+101,100, 32,119,104,101,110, 32,110,111, 32,112, 97,115,115,119,111,114,100, 32,
+105,115, 10, 45, 45, 32,112,114,111,118,105,100,101,100, 32,105,110, 32,117,114,
+108, 46, 32,115,104,111,117,108,100, 32, 98,101, 32, 99,104, 97,110,103,101,100,
+ 32,116,111, 32,121,111,117,114, 32,101, 45,109, 97,105,108, 46, 10, 85, 83, 69,
+ 82, 32, 61, 32, 34,102,116,112, 34, 10, 80, 65, 83, 83, 87, 79, 82, 68, 32, 61,
+ 32, 34, 97,110,111,110,121,109,111,117,115, 64, 97,110,111,110,121,109,111,117,
+115, 46,111,114,103, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101,118,101,
-108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101,118,101,108, 32, 70,
+ 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32,
- 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10,
-102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,101,114,
- 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,
-108,111, 99, 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,
-121, 40,116,112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,114, 44,
- 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 44, 32, 84, 73, 77, 69, 79,
- 85, 84, 44, 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,102, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116,
- 97, 98,108,101, 40,123, 32,116,112, 32, 61, 32,116,112, 32,125, 44, 32,109,101,
-116, 97,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,
-101, 32,101,118,101,114,121,116,104,105,110,103, 32,103,101,116,115, 32, 99,108,
-111,115,101,100, 32,105,110, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110,
- 10, 32, 32, 32, 32,102, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46,
-110,101,119,116,114,121, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,102, 58,
- 99,108,111,115,101, 40, 41, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116,
-117,114,110, 32,102, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
-109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112,111,114,116, 99,111,
-110,110,101, 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121,
- 40,115,101,108,102, 46,115,101,114,118,101,114, 58,115,101,116,116,105,109,101,
-111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,
-108,102, 46,100, 97,116, 97, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,
-101,108,102, 46,115,101,114,118,101,114, 58, 97, 99, 99,101,112,116, 40, 41, 41,
- 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,100,
- 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79,
- 85, 84, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,
-101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 99,111,110,
-110,101, 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97,
- 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101,116, 46,116,
- 99,112, 40, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,
-101,108,102, 46,100, 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40,
- 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,
-114,121, 40,115,101,108,102, 46,100, 97,116, 97, 58, 99,111,110,110,101, 99,116,
- 40,115,101,108,102, 46,112, 97,115,118,116, 46,105,112, 44, 32,115,101,108,102,
- 46,112, 97,115,118,116, 46,112,111,114,116, 41, 41, 10,101,110,100, 10, 10,102,
-117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,
-120, 58,108,111,103,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,
-114,100, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,
-102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,117,115,101,114, 34, 44,
- 32,117,115,101,114, 32,111,114, 32, 85, 83, 69, 82, 41, 41, 10, 32, 32, 32, 32,
-108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,
-115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101,
- 99,107,123, 34, 50, 46, 46, 34, 44, 32, 51, 51, 49,125, 41, 10, 32, 32, 32, 32,
-105,102, 32, 99,111,100,101, 32, 61, 61, 32, 51, 51, 49, 32,116,104,101,110, 10,
- 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,
-102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,112, 97,115,115, 34, 44,
- 32,112, 97,115,115,119,111,114,100, 32,111,114, 32, 80, 65, 83, 83, 87, 79, 82,
- 68, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121,
- 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34,
- 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,
-110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,
-116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 40, 41, 10, 32,
- 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,
- 99,111,109,109, 97,110,100, 40, 34,112, 97,115,118, 34, 41, 41, 10, 32, 32, 32,
+ 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123,
+ 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10,102,117,110,
+ 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,101,114, 44, 32,112,
+111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99,
+ 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116,
+112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,114, 44, 32,112,111,
+114,116, 32,111,114, 32, 80, 79, 82, 84, 44, 32, 84, 73, 77, 69, 79, 85, 84, 44,
+ 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+102, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,
+101, 40,123, 32,116,112, 32, 61, 32,116,112, 32,125, 44, 32,109,101,116, 97,116,
+ 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,101,
+118,101,114,121,116,104,105,110,103, 32,103,101,116,115, 32, 99,108,111,115,101,
+100, 32,105,110, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, 10, 32, 32,
+ 32, 32,102, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,
+116,114,121, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,102, 58, 99,108,111,
+115,101, 40, 41, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110,
+ 32,102, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116,
+ 97,116, 46, 95, 95,105,110,100,101,120, 58,112,111,114,116, 99,111,110,110,101,
+ 99,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,
+108,102, 46,115,101,114,118,101,114, 58,115,101,116,116,105,109,101,111,117,116,
+ 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,
+100, 97,116, 97, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102,
+ 46,115,101,114,118,101,114, 58, 97, 99, 99,101,112,116, 40, 41, 41, 10, 32, 32,
+ 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,100, 97,116, 97,
+ 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41,
+ 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,
+116, 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 99,111,110,110,101, 99,
+116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97, 32, 61, 32,
+115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101,116, 46,116, 99,112, 40,
+ 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102,
+ 46,100, 97,116, 97, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77,
+ 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,
+115,101,108,102, 46,100, 97,116, 97, 58, 99,111,110,110,101, 99,116, 40,115,101,
+108,102, 46,112, 97,115,118,116, 46,105,112, 44, 32,115,101,108,102, 46,112, 97,
+115,118,116, 46,112,111,114,116, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,
+116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,108,
+111,103,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41,
+ 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,
+112, 58, 99,111,109,109, 97,110,100, 40, 34,117,115,101,114, 34, 44, 32,117,115,
+101,114, 32,111,114, 32, 85, 83, 69, 82, 41, 41, 10, 32, 32, 32, 32,108,111, 99,
+ 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,115,101,108,
+102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123,
+ 34, 50, 46, 46, 34, 44, 32, 51, 51, 49,125, 41, 10, 32, 32, 32, 32,105,102, 32,
+ 99,111,100,101, 32, 61, 61, 32, 51, 51, 49, 32,116,104,101,110, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,
+112, 58, 99,111,109,109, 97,110,100, 40, 34,112, 97,115,115, 34, 44, 32,112, 97,
+115,115,119,111,114,100, 32,111,114, 32, 80, 65, 83, 83, 87, 79, 82, 68, 41, 41,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,
+108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,
+ 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49,
+ 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116,
+ 46, 95, 95,105,110,100,101,120, 58,112, 97,115,118, 40, 41, 10, 32, 32, 32, 32,
+115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,
+109, 97,110,100, 40, 34,112, 97,115,118, 34, 41, 41, 10, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61, 32,115,101,
+108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,
+ 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,
+ 97,116,116,101,114,110, 32, 61, 32, 34, 40, 37,100, 43, 41, 37, 68, 40, 37,100,
+ 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,
+100, 43, 41, 37, 68, 40, 37,100, 43, 41, 34, 10, 32, 32, 32, 32,108,111, 99, 97,
+108, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 44, 32,112, 49, 44, 32,112, 50,
+ 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,
+114,105,110,103, 46,102,105,110,100, 40,114,101,112,108,121, 44, 32,112, 97,116,
+116,101,114,110, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,
+ 97, 32, 97,110,100, 32, 98, 32, 97,110,100, 32, 99, 32, 97,110,100, 32,100, 32,
+ 97,110,100, 32,112, 49, 32, 97,110,100, 32,112, 50, 44, 32,114,101,112,108,121,
+ 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32,123,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 32, 61, 32,115,116,114,105,110,103,
+ 46,102,111,114,109, 97,116, 40, 34, 37,100, 46, 37,100, 46, 37,100, 46, 37,100,
+ 34, 44, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 41, 44, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,112,111,114,116, 32, 61, 32,112, 49, 42, 50, 53, 54, 32, 43, 32,
+112, 50, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32,115,101,108,102,
+ 46,115,101,114,118,101,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32,115,101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115,101, 40, 41,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114,118,101,114,
+ 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,
+101,116,117,114,110, 32,115,101,108,102, 46,112, 97,115,118,116, 46,105,112, 44,
+ 32,115,101,108,102, 46,112, 97,115,118,116, 46,112,111,114,116, 10,101,110,100,
+ 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,
+110,100,101,120, 58,112,111,114,116, 40,105,112, 44, 32,112,111,114,116, 41, 10,
+ 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32,110,105,108,
+ 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,105,112, 32,116,104,101,110, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115,
+101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,103,101,116, 99,
+111,110,116,114,111,108, 40, 41, 58,103,101,116,115,111, 99,107,110, 97,109,101,
+ 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114,
+118,101,114, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111, 99,107,101,
+116, 46, 98,105,110,100, 40,105,112, 44, 32, 48, 41, 41, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115,101,108,102, 46,116,
+114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,103,101,116,115,111,
+ 99,107,110, 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,
+108,102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,115,
+101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10,
+ 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,108,
+ 32, 61, 32,109, 97,116,104, 46,109,111,100, 40,112,111,114,116, 44, 32, 50, 53,
+ 54, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,104, 32, 61, 32, 40,112,
+111,114,116, 32, 45, 32,112,108, 41, 47, 50, 53, 54, 10, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32, 97,114,103, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+ 98, 40,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37,115, 44,
+ 37,100, 44, 37,100, 34, 44, 32,105,112, 44, 32,112,104, 44, 32,112,108, 41, 44,
+ 32, 34, 37, 46, 34, 44, 32, 34, 44, 34, 41, 10, 32, 32, 32, 32,115,101,108,102,
+ 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100,
+ 40, 34,112,111,114,116, 34, 44, 32, 97,114,103, 41, 41, 10, 32, 32, 32, 32,115,
+101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,
+107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110,
+ 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116,
+ 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,115,101,110,100,
+116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102,
+ 46,112, 97,115,118,116, 32,111,114, 32,115,101,108,102, 46,115,101,114,118,101,
+114, 44, 32, 34,110,101,101,100, 32,112,111,114,116, 32,111,114, 32,112, 97,115,
+118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,
+116,104,101,114,101, 32,105,115, 32, 97, 32,112, 97,115,118,116, 32,116, 97, 98,
+108,101, 44, 32,119,101, 32, 97,108,114,101, 97,100,121, 32,115,101,110,116, 32,
+ 97, 32, 80, 65, 83, 86, 32, 99,111,109,109, 97,110,100, 10, 32, 32, 32, 32, 45,
+ 45, 32,119,101, 32,106,117,115,116, 32,103,101,116, 32,116,104,101, 32,100, 97,
+116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 32,105,110,116,111, 32,115,
+101,108,102, 46,100, 97,116, 97, 10, 32, 32, 32, 32,105,102, 32,115,101,108,102,
+ 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112, 97,115,
+118, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 45,
+ 45, 32,103,101,116, 32,116,104,101, 32,116,114, 97,110,115,102,101,114, 32, 97,
+114,103,117,109,101,110,116, 32, 97,110,100, 32, 99,111,109,109, 97,110,100, 10,
+ 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117,109,101,110,116, 32, 61,
+ 32,115,101,110,100,116, 46, 97,114,103,117,109,101,110,116, 32,111,114, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101,115, 99, 97,112,101, 40,
+115,116,114,105,110,103, 46,103,115,117, 98, 40,115,101,110,100,116, 46,112, 97,
+116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47, 92, 92, 93, 34, 44, 32,
+ 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103,117,109,101,110,116,
+ 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114,103,117,109,101,110,116,
+ 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108,
+ 32, 99,111,109,109, 97,110,100, 32, 61, 32,115,101,110,100,116, 46, 99,111,109,
+109, 97,110,100, 32,111,114, 32, 34,115,116,111,114, 34, 10, 32, 32, 32, 32, 45,
+ 45, 32,115,101,110,100, 32,116,104,101, 32,116,114, 97,110,115,102,101,114, 32,
+ 99,111,109,109, 97,110,100, 32, 97,110,100, 32, 99,104,101, 99,107, 32,116,104,
+101, 32,114,101,112,108,121, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121,
+ 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 99,111,109,
+109, 97,110,100, 44, 32, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32,
32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,121, 32, 61,
32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,
-101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,
-108, 32,112, 97,116,116,101,114,110, 32, 61, 32, 34, 40, 37,100, 43, 41, 37, 68,
- 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 37,
- 68, 40, 37,100, 43, 41, 37, 68, 40, 37,100, 43, 41, 34, 10, 32, 32, 32, 32,108,
-111, 99, 97,108, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 44, 32,112, 49, 44,
- 32,112, 50, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44,
- 32,115,116,114,105,110,103, 46,102,105,110,100, 40,114,101,112,108,121, 44, 32,
-112, 97,116,116,101,114,110, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,
-114,121, 40, 97, 32, 97,110,100, 32, 98, 32, 97,110,100, 32, 99, 32, 97,110,100,
- 32,100, 32, 97,110,100, 32,112, 49, 32, 97,110,100, 32,112, 50, 44, 32,114,101,
-112,108,121, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32,
- 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 32, 61, 32,115,116,114,
-105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37,100, 46, 37,100, 46, 37,100,
- 46, 37,100, 34, 44, 32, 97, 44, 32, 98, 44, 32, 99, 44, 32,100, 41, 44, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,112,111,114,116, 32, 61, 32,112, 49, 42, 50, 53, 54,
- 32, 43, 32,112, 50, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32,115,
-101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,115,101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115,
-101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,115,101,114,
-118,101,114, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,112, 97,115,118,116, 46,
-105,112, 44, 32,115,101,108,102, 46,112, 97,115,118,116, 46,112,111,114,116, 10,
-101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46,
- 95, 95,105,110,100,101,120, 58,112,111,114,116, 40,105,112, 44, 32,112,111,114,
-116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,112, 97,115,118,116, 32, 61, 32,
-110,105,108, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,105,112, 32,116,104,
-101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32,
- 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,103,
-101,116, 99,111,110,116,114,111,108, 40, 41, 58,103,101,116,115,111, 99,107,110,
- 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,
-115,101,114,118,101,114, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,111,
- 99,107,101,116, 46, 98,105,110,100, 40,105,112, 44, 32, 48, 41, 41, 10, 32, 32,
- 32, 32, 32, 32, 32, 32,105,112, 44, 32,112,111,114,116, 32, 61, 32,115,101,108,
-102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101,114, 58,103,101,
-116,115,111, 99,107,110, 97,109,101, 40, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,115,101,114,118,101,
-114, 58,115,101,116,116,105,109,101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84,
- 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108,
- 32,112,108, 32, 61, 32,109, 97,116,104, 46,109,111,100, 40,112,111,114,116, 44,
- 32, 50, 53, 54, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,104, 32, 61,
- 32, 40,112,111,114,116, 32, 45, 32,112,108, 41, 47, 50, 53, 54, 10, 32, 32, 32,
- 32,108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,115,116,114,105,110,103, 46,
-103,115,117, 98, 40,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34,
- 37,115, 44, 37,100, 44, 37,100, 34, 44, 32,105,112, 44, 32,112,104, 44, 32,112,
-108, 41, 44, 32, 34, 37, 46, 34, 44, 32, 34, 44, 34, 41, 10, 32, 32, 32, 32,115,
-101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109,
- 97,110,100, 40, 34,112,111,114,116, 34, 44, 32, 97,114,103, 41, 41, 10, 32, 32,
- 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,
-104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,
-117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
-109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,115,
-101,110,100,116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,
-101,108,102, 46,112, 97,115,118,116, 32,111,114, 32,115,101,108,102, 46,115,101,
-114,118,101,114, 44, 32, 34,110,101,101,100, 32,112,111,114,116, 32,111,114, 32,
-112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32,
-105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,112, 97,115,118,116, 32,
-116, 97, 98,108,101, 44, 32,119,101, 32, 97,108,114,101, 97,100,121, 32,115,101,
-110,116, 32, 97, 32, 80, 65, 83, 86, 32, 99,111,109,109, 97,110,100, 10, 32, 32,
- 32, 32, 45, 45, 32,119,101, 32,106,117,115,116, 32,103,101,116, 32,116,104,101,
- 32,100, 97,116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 32,105,110,116,
-111, 32,115,101,108,102, 46,100, 97,116, 97, 10, 32, 32, 32, 32,105,102, 32,115,
-101,108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,
-112, 97,115,118, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32,
- 32, 32, 45, 45, 32,103,101,116, 32,116,104,101, 32,116,114, 97,110,115,102,101,
-114, 32, 97,114,103,117,109,101,110,116, 32, 97,110,100, 32, 99,111,109,109, 97,
+101, 99,107,123, 34, 50, 46, 46, 34, 44, 32, 34, 49, 46, 46, 34,125, 41, 10, 32,
+ 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32,110,111,
+116, 32, 97, 32, 97, 32,112, 97,115,118,116, 32,116, 97, 98,108,101, 44, 32,116,
+104,101,110, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,115,101,114,118,101,
+114, 10, 32, 32, 32, 32, 45, 45, 32, 97,110,100, 32,119,101, 32, 97,108,114,101,
+ 97,100,121, 32,115,101,110,116, 32, 97, 32, 80, 79, 82, 84, 32, 99,111,109,109,
+ 97,110,100, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,108,102, 46,
+112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,111,114,116,
+ 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45,
+ 32,103,101,116, 32,116,104,101, 32,115,105,110,107, 44, 32,115,111,117,114, 99,
+101, 32, 97,110,100, 32,115,116,101,112, 32,102,111,114, 32,116,104,101, 32,116,
+114, 97,110,115,102,101,114, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116,
+101,112, 32, 61, 32,115,101,110,100,116, 46,115,116,101,112, 32,111,114, 32,108,
+116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,108,
+111, 99, 97,108, 32,114,101, 97,100,116, 32, 61, 32,123,115,101,108,102, 46,116,
+112, 46, 99,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,101, 99,107,
+115,116,101,112, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,114, 99, 44,
+ 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, 99,104,101,
+ 99,107, 32,115,116, 97,116,117,115, 32,105,110, 32, 99,111,110,116,114,111,108,
+ 32, 99,111,110,110,101, 99,116,105,111,110, 32,119,104,105,108,101, 32,100,111,
+119,110,108,111, 97,100,105,110,103, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32,114,101, 97,100,121,116, 32, 61, 32,115,111, 99,107,101,116, 46,
+115,101,108,101, 99,116, 40,114,101, 97,100,116, 44, 32,110,105,108, 44, 32, 48,
+ 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,114,101, 97,100,121,116, 91,
+116,112, 93, 32,116,104,101,110, 32, 99,111,100,101, 32, 61, 32,115,101,108,102,
+ 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34,
+ 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,
+101,116,117,114,110, 32,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41,
+ 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,
+105,110,107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107, 40, 34, 99,
+108,111,115,101, 45,119,104,101,110, 45,100,111,110,101, 34, 44, 32,115,101,108,
+102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32, 45, 45, 32,116,114, 97,110,115,
+102,101,114, 32, 97,108,108, 32,100, 97,116, 97, 32, 97,110,100, 32, 99,104,101,
+ 99,107, 32,101,114,114,111,114, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,
+121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,101,110,
+100,116, 46,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32, 99,104,101,
+ 99,107,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,
+110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41,
+ 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,
+116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100,
+ 10, 32, 32, 32, 32, 45, 45, 32,100,111,110,101, 32,119,105,116,104, 32,100, 97,
+116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 10, 32, 32, 32, 32,115,101,
+108,102, 46,100, 97,116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,
+ 45, 45, 32,102,105,110,100, 32,111,117,116, 32,104,111,119, 32,109, 97,110,121,
+ 32, 98,121,116,101,115, 32,119,101,114,101, 32,115,101,110,116, 10, 32, 32, 32,
+ 32,108,111, 99, 97,108, 32,115,101,110,116, 32, 61, 32,115,111, 99,107,101,116,
+ 46,115,107,105,112, 40, 49, 44, 32,115,101,108,102, 46,100, 97,116, 97, 58,103,
+101,116,115,116, 97,116,115, 40, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,
+100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,116,117,114,
+110, 32,115,101,110,116, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+ 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,
+118,101, 40,114,101, 99,118,116, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,
+114,121, 40,115,101,108,102, 46,112, 97,115,118,116, 32,111,114, 32,115,101,108,
+102, 46,115,101,114,118,101,114, 44, 32, 34,110,101,101,100, 32,112,111,114,116,
+ 32,111,114, 32,112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10, 32, 32, 32,
+ 32,105,102, 32,115,101,108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,
+115,101,108,102, 58,112, 97,115,118, 99,111,110,110,101, 99,116, 40, 41, 32,101,
110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117,109,101,110,
-116, 32, 61, 32,115,101,110,100,116, 46, 97,114,103,117,109,101,110,116, 32,111,
+116, 32, 61, 32,114,101, 99,118,116, 46, 97,114,103,117,109,101,110,116, 32,111,
114, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101,115, 99, 97,
-112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,115,101,110,100,116,
+112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,114,101, 99,118,116,
46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47, 92, 92, 93,
34, 44, 32, 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103,117,109,
101,110,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114,103,117,109,
101,110,116, 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111,
- 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,115,101,110,100,116, 46,
- 99,111,109,109, 97,110,100, 32,111,114, 32, 34,115,116,111,114, 34, 10, 32, 32,
- 32, 32, 45, 45, 32,115,101,110,100, 32,116,104,101, 32,116,114, 97,110,115,102,
-101,114, 32, 99,111,109,109, 97,110,100, 32, 97,110,100, 32, 99,104,101, 99,107,
- 32,116,104,101, 32,114,101,112,108,121, 10, 32, 32, 32, 32,115,101,108,102, 46,
-116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40,
- 99,111,109,109, 97,110,100, 44, 32, 97,114,103,117,109,101,110,116, 41, 41, 10,
- 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,114,101,112,108,
-121, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112,
- 58, 99,104,101, 99,107,123, 34, 50, 46, 46, 34, 44, 32, 34, 49, 46, 46, 34,125,
- 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115,
- 32,110,111,116, 32, 97, 32, 97, 32,112, 97,115,118,116, 32,116, 97, 98,108,101,
- 44, 32,116,104,101,110, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,115,101,
-114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32, 97,110,100, 32,119,101, 32, 97,
-108,114,101, 97,100,121, 32,115,101,110,116, 32, 97, 32, 80, 79, 82, 84, 32, 99,
-111,109,109, 97,110,100, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,
-108,102, 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,
-111,114,116, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32,
- 32, 45, 45, 32,103,101,116, 32,116,104,101, 32,115,105,110,107, 44, 32,115,111,
-117,114, 99,101, 32, 97,110,100, 32,115,116,101,112, 32,102,111,114, 32,116,104,
-101, 32,116,114, 97,110,115,102,101,114, 10, 32, 32, 32, 32,108,111, 99, 97,108,
- 32,115,116,101,112, 32, 61, 32,115,101,110,100,116, 46,115,116,101,112, 32,111,
-114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32,
- 32, 32,108,111, 99, 97,108, 32,114,101, 97,100,116, 32, 61, 32,123,115,101,108,
-102, 46,116,112, 46, 99,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,
-101, 99,107,115,116,101,112, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,
-114, 99, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,
- 99,104,101, 99,107, 32,115,116, 97,116,117,115, 32,105,110, 32, 99,111,110,116,
-114,111,108, 32, 99,111,110,110,101, 99,116,105,111,110, 32,119,104,105,108,101,
- 32,100,111,119,110,108,111, 97,100,105,110,103, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,108,111, 99, 97,108, 32,114,101, 97,100,121,116, 32, 61, 32,115,111, 99,107,
-101,116, 46,115,101,108,101, 99,116, 40,114,101, 97,100,116, 44, 32,110,105,108,
- 44, 32, 48, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,114,101, 97,100,
-121,116, 91,116,112, 93, 32,116,104,101,110, 32, 99,111,100,101, 32, 61, 32,115,
-101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,
-107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,115,116,101,112, 40,115,114, 99, 44, 32,115,
-110,107, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,
-108, 32,115,105,110,107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107,
- 40, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110,101, 34, 44, 32,
-115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32, 45, 45, 32,116,114,
- 97,110,115,102,101,114, 32, 97,108,108, 32,100, 97,116, 97, 32, 97,110,100, 32,
- 99,104,101, 99,107, 32,101,114,114,111,114, 10, 32, 32, 32, 32,115,101,108,102,
- 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,
-115,101,110,100,116, 46,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32,
- 99,104,101, 99,107,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102, 32,115,
-116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46,
- 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,
-108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,
-101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,100,111,110,101, 32,119,105,116,104,
- 32,100, 97,116, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 10, 32, 32, 32,
- 32,115,101,108,102, 46,100, 97,116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32,
- 32, 32, 32, 45, 45, 32,102,105,110,100, 32,111,117,116, 32,104,111,119, 32,109,
- 97,110,121, 32, 98,121,116,101,115, 32,119,101,114,101, 32,115,101,110,116, 10,
- 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110,116, 32, 61, 32,115,111, 99,
-107,101,116, 46,115,107,105,112, 40, 49, 44, 32,115,101,108,102, 46,100, 97,116,
- 97, 58,103,101,116,115,116, 97,116,115, 40, 41, 41, 10, 32, 32, 32, 32,115,101,
-108,102, 46,100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32,115,101,110,116, 10,101,110,100, 10, 10,102,117,110, 99,116,
-105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101,
- 99,101,105,118,101, 40,114,101, 99,118,116, 41, 10, 32, 32, 32, 32,115,101,108,
-102, 46,116,114,121, 40,115,101,108,102, 46,112, 97,115,118,116, 32,111,114, 32,
-115,101,108,102, 46,115,101,114,118,101,114, 44, 32, 34,110,101,101,100, 32,112,
-111,114,116, 32,111,114, 32,112, 97,115,118, 32,102,105,114,115,116, 34, 41, 10,
- 32, 32, 32, 32,105,102, 32,115,101,108,102, 46,112, 97,115,118,116, 32,116,104,
-101,110, 32,115,101,108,102, 58,112, 97,115,118, 99,111,110,110,101, 99,116, 40,
- 41, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,114,103,117,
-109,101,110,116, 32, 61, 32,114,101, 99,118,116, 46, 97,114,103,117,109,101,110,
-116, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,114,108, 46,117,110,101,
-115, 99, 97,112,101, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,114,101,
- 99,118,116, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 32, 34, 94, 91, 47,
- 92, 92, 93, 34, 44, 32, 34, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,
-103,117,109,101,110,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32, 97,114,
-103,117,109,101,110,116, 32, 61, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32,
- 32,108,111, 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,114,101, 99,
-118,116, 46, 99,111,109,109, 97,110,100, 32,111,114, 32, 34,114,101,116,114, 34,
- 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,
-112, 58, 99,111,109,109, 97,110,100, 40, 99,111,109,109, 97,110,100, 44, 32, 97,
-114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
- 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102,
- 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50, 46,
- 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,108,102,
- 46,112, 97,115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,111,114,
-116, 99,111,110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,108,
-111, 99, 97,108, 32,115,111,117,114, 99,101, 32, 61, 32,115,111, 99,107,101,116,
- 46,115,111,117,114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101,
-100, 34, 44, 32,115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32,108,
-111, 99, 97,108, 32,115,116,101,112, 32, 61, 32,114,101, 99,118,116, 46,115,116,
-101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,
-112, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50,
- 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,114,101,
- 99,118,116, 46,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10, 32, 32, 32,
- 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101,
- 44, 32, 34, 49, 46, 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116,
-114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46,
- 46, 34, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,
-116, 97, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,
-100, 97,116, 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,116,117,114,
-110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,
-116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,119,100, 40,100,105,114, 41,
- 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,
-112, 58, 99,111,109,109, 97,110,100, 40, 34, 99,119,100, 34, 44, 32,100,105,114,
- 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102,
- 46,116,112, 58, 99,104,101, 99,107, 40, 50, 53, 48, 41, 41, 10, 32, 32, 32, 32,
-114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
-111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,116,121,112,
-101, 40,116,121,112,101, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121,
- 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,116,121,
-112,101, 34, 44, 32,116,121,112,101, 41, 41, 10, 32, 32, 32, 32,115,101,108,102,
- 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 50,
- 48, 48, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,
-100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,
-105,110,100,101,120, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,108,111,
- 99, 97,108, 32, 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,
-115,101,108,102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44,
- 32, 34, 50, 46, 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,
-110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41,
- 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,
-116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100,
- 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,
-117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,
-120, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,
-121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,113,
-117,105,116, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,
+ 99, 97,108, 32, 99,111,109,109, 97,110,100, 32, 61, 32,114,101, 99,118,116, 46,
+ 99,111,109,109, 97,110,100, 32,111,114, 32, 34,114,101,116,114, 34, 10, 32, 32,
+ 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,
+111,109,109, 97,110,100, 40, 99,111,109,109, 97,110,100, 44, 32, 97,114,103,117,
+109,101,110,116, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,
+101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112,
+ 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50, 46, 46, 34,125,
+ 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,101,108,102, 46,112, 97,
+115,118,116, 32,116,104,101,110, 32,115,101,108,102, 58,112,111,114,116, 99,111,
+110,110,101, 99,116, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,
+108, 32,115,111,117,114, 99,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,111,
+117,114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101,100, 34, 44,
+ 32,115,101,108,102, 46,100, 97,116, 97, 41, 10, 32, 32, 32, 32,108,111, 99, 97,
+108, 32,115,116,101,112, 32, 61, 32,114,101, 99,118,116, 46,115,116,101,112, 32,
+111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32,
+ 32, 32, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,
+109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,114,101, 99,118,116,
+ 46,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10, 32, 32, 32, 32,105,102,
+ 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,100,101, 44, 32, 34,
+ 49, 46, 46, 34, 41, 32,116,104,101,110, 32,115,101,108,102, 46,116,114,121, 40,
115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41,
+ 41, 32,101,110,100, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116, 97, 58,
+ 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,100, 97,116,
+ 97, 32, 61, 32,110,105,108, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49,
+ 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116,
+ 46, 95, 95,105,110,100,101,120, 58, 99,119,100, 40,100,105,114, 41, 10, 32, 32,
+ 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,
+111,109,109, 97,110,100, 40, 34, 99,119,100, 34, 44, 32,100,105,114, 41, 41, 10,
+ 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112,
+ 58, 99,104,101, 99,107, 40, 50, 53, 48, 41, 41, 10, 32, 32, 32, 32,114,101,116,
+117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,116,121,112,101, 40,116,
+121,112,101, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,
+108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,116,121,112,101, 34,
+ 44, 32,116,121,112,101, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,
+121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 50, 48, 48, 41,
41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,
102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,
-101,120, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,105,102, 32,115,101,
-108,102, 46,100, 97,116, 97, 32,116,104,101,110, 32,115,101,108,102, 46,100, 97,
-116, 97, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,105,
-102, 32,115,101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 32,115,
-101,108,102, 46,115,101,114,118,101,114, 58, 99,108,111,115,101, 40, 41, 32,101,
-110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,
-112, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45,
+101,120, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108,
+ 32, 99,111,100,101, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,
+102, 46,116,112, 58, 99,104,101, 99,107,123, 34, 49, 46, 46, 34, 44, 32, 34, 50,
+ 46, 46, 34,125, 41, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,
+102,105,110,100, 40, 99,111,100,101, 44, 32, 34, 49, 46, 46, 34, 41, 32,116,104,
+101,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,
+ 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 32,101,110,100, 10, 32, 32,
+ 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,
+116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,113,
+117,105,116, 40, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,
+101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40, 34,113,117,105,116,
+ 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,
+102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10, 32,
+ 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110,
+ 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,
+ 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,105,102, 32,115,101,108,102, 46,
+100, 97,116, 97, 32,116,104,101,110, 32,115,101,108,102, 46,100, 97,116, 97, 58,
+ 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115,
+101,108,102, 46,115,101,114,118,101,114, 32,116,104,101,110, 32,115,101,108,102,
+ 46,115,101,114,118,101,114, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10,
+ 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,112, 58, 99,
+108,111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104,
- 32,108,101,118,101,108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,
+118,101,108, 32, 70, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,
-117,110, 99,116,105,111,110, 32,111,118,101,114,114,105,100,101, 40,116, 41, 10,
- 32, 32, 32, 32,105,102, 32,116, 46,117,114,108, 32,116,104,101,110, 10, 32, 32,
- 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,117,114,108, 46,
-112, 97,114,115,101, 40,116, 46,117,114,108, 41, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,
-114,115, 40,116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32,117, 91,105, 93, 32, 61, 32,118, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,
-100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,117, 10, 32,
- 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,116, 32,101,110,100,
- 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110,
- 32,116,112,117,116, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,112,117,116,116,
- 32, 61, 32,111,118,101,114,114,105,100,101, 40,112,117,116,116, 41, 10, 32, 32,
- 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,112,117,116,116, 46,104,111,
-115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,
-101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,
-101,110, 40,112,117,116,116, 46,104,111,115,116, 44, 32,112,117,116,116, 46,112,
-111,114,116, 44, 32,112,117,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32,
- 32, 32,102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,
-103,105,110, 40,112,117,116,116, 46,117,115,101,114, 44, 32,112,117,116,116, 46,
-112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,112,117,116,
-116, 46,116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,112,
-117,116,116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,
-112, 97,115,118, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110,
-116, 32, 61, 32,102, 58,115,101,110,100, 40,112,117,116,116, 41, 10, 32, 32, 32,
- 32,102, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,102, 58, 99,108,111,115,
-101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,110,116, 10,
-101,110,100, 10, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32, 61,
- 32,123, 10, 9,112, 97,116,104, 32, 61, 32, 34, 47, 34, 44, 10, 9,115, 99,104,
-101,109,101, 32, 61, 32, 34,102,116,112, 34, 10,125, 10, 10,108,111, 99, 97,108,
- 32,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 40,117, 41, 10, 32,
- 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,111, 99,107,101,116, 46,
-116,114,121, 40,117,114,108, 46,112, 97,114,115,101, 40,117, 44, 32,100,101,102,
- 97,117,108,116, 41, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,
-121, 40,116, 46,115, 99,104,101,109,101, 32, 61, 61, 32, 34,102,116,112, 34, 44,
- 32, 34,119,114,111,110,103, 32,115, 99,104,101,109,101, 32, 39, 34, 32, 46, 46,
- 32,116, 46,115, 99,104,101,109,101, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32,
- 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, 46,104,111,115,116, 44,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,
+116,105,111,110, 32,111,118,101,114,114,105,100,101, 40,116, 41, 10, 32, 32, 32,
+ 32,105,102, 32,116, 46,117,114,108, 32,116,104,101,110, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,117,114,108, 46,112, 97,114,
+115,101, 40,116, 46,117,114,108, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111,
+114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,
+116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,117, 91,
+105, 93, 32, 61, 32,118, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,117, 10, 32, 32, 32, 32,
+101,108,115,101, 32,114,101,116,117,114,110, 32,116, 32,101,110,100, 10,101,110,
+100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,116,112,
+117,116, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,112,117,116,116, 32, 61, 32,
+111,118,101,114,114,105,100,101, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,115,
+111, 99,107,101,116, 46,116,114,121, 40,112,117,116,116, 46,104,111,115,116, 44,
32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,101, 34, 41,
- 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116, 32, 61, 32, 34, 94,116,
-121,112,101, 61, 40, 46, 41, 36, 34, 10, 32, 32, 32, 32,105,102, 32,116, 46,112,
- 97,114, 97,109,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,116,
- 46,116,121,112,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40,
- 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,116, 46,112, 97,114,
- 97,109,115, 44, 32,112, 97,116, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,
-111, 99,107,101,116, 46,116,114,121, 40,116, 46,116,121,112,101, 32, 61, 61, 32,
- 34, 97, 34, 32,111,114, 32,116, 46,116,121,112,101, 32, 61, 61, 32, 34,105, 34,
- 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110,118, 97,108,
-105,100, 32,116,121,112,101, 32, 39, 34, 32, 46, 46, 32,116, 46,116,121,112,101,
- 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
- 32,114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10,108,111, 99, 97,108,
- 32,102,117,110, 99,116,105,111,110, 32,115,112,117,116, 40,117, 44, 32, 98,111,
-100,121, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,117,116,116, 32, 61,
- 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,112,117,116,116, 46,115,
-111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101,
- 46,115,116,114,105,110,103, 40, 98,111,100,121, 41, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 10,101,110,100, 10,
- 10,112,117,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99,
-116, 40,102,117,110, 99,116,105,111,110, 40,112,117,116,116, 44, 32, 98,111,100,
-121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,
-112,117,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104,
-101,110, 32,114,101,116,117,114,110, 32,115,112,117,116, 40,112,117,116,116, 44,
- 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,
-114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 32,101,110,100, 10,101,110,
-100, 41, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,116,
-103,101,116, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,103,101,116,116, 32, 61,
- 32,111,118,101,114,114,105,100,101, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,
-115,111, 99,107,101,116, 46,116,114,121, 40,103,101,116,116, 46,104,111,115,116,
- 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,101, 34,
- 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110,
- 40,103,101,116,116, 46,104,111,115,116, 44, 32,103,101,116,116, 46,112,111,114,
-116, 44, 32,103,101,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,
-102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105,
-110, 40,103,101,116,116, 46,117,115,101,114, 44, 32,103,101,116,116, 46,112, 97,
-115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,103,101,116,116, 46,
-116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,103,101,116,
-116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,112, 97,
-115,118, 40, 41, 10, 32, 32, 32, 32,102, 58,114,101, 99,101,105,118,101, 40,103,
-101,116,116, 41, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, 41, 10, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101, 40, 41, 10,101,
-110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,
-103,101,116, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,103,101,116,
-116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,103,101,116,116, 46,115,
-105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97, 98,
-108,101, 40,116, 41, 10, 32, 32, 32, 32,116,103,101,116, 40,103,101,116,116, 41,
- 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, 46, 99,111,
-110, 99, 97,116, 40,116, 41, 10,101,110,100, 10, 10, 99,111,109,109, 97,110,100,
- 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99,116, 40,102,117,
-110, 99,116,105,111,110, 40, 99,109,100,116, 41, 10, 32, 32, 32, 32, 99,109,100,
-116, 32, 61, 32,111,118,101,114,114,105,100,101, 40, 99,109,100,116, 41, 10, 32,
- 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 99,109,100,116, 46,104,
+ 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110, 40,
+112,117,116,116, 46,104,111,115,116, 44, 32,112,117,116,116, 46,112,111,114,116,
+ 44, 32,112,117,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102,
+ 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105,110,
+ 40,112,117,116,116, 46,117,115,101,114, 44, 32,112,117,116,116, 46,112, 97,115,
+115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,112,117,116,116, 46,116,
+121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,112,117,116,116,
+ 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,112, 97,115,
+118, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,101,110,116, 32, 61,
+ 32,102, 58,115,101,110,100, 40,112,117,116,116, 41, 10, 32, 32, 32, 32,102, 58,
+113,117,105,116, 40, 41, 10, 32, 32, 32, 32,102, 58, 99,108,111,115,101, 40, 41,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,110,116, 10,101,110,100,
+ 10, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32, 61, 32,123, 10,
+ 32, 32, 32, 32,112, 97,116,104, 32, 61, 32, 34, 47, 34, 44, 10, 32, 32, 32, 32,
+115, 99,104,101,109,101, 32, 61, 32, 34,102,116,112, 34, 10,125, 10, 10,108,111,
+ 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 40,117,
+ 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,111, 99,107,
+101,116, 46,116,114,121, 40,117,114,108, 46,112, 97,114,115,101, 40,117, 44, 32,
+100,101,102, 97,117,108,116, 41, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116,
+ 46,116,114,121, 40,116, 46,115, 99,104,101,109,101, 32, 61, 61, 32, 34,102,116,
+112, 34, 44, 32, 34,119,114,111,110,103, 32,115, 99,104,101,109,101, 32, 39, 34,
+ 32, 46, 46, 32,116, 46,115, 99,104,101,109,101, 32, 46, 46, 32, 34, 39, 34, 41,
+ 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, 46,104,111,
+115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,109,
+101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116, 32, 61, 32,
+ 34, 94,116,121,112,101, 61, 40, 46, 41, 36, 34, 10, 32, 32, 32, 32,105,102, 32,
+116, 46,112, 97,114, 97,109,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,116, 46,116,121,112,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,
+105,112, 40, 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,116, 46,
+112, 97,114, 97,109,115, 44, 32,112, 97,116, 41, 41, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116, 46,116,121,112,101, 32,
+ 61, 61, 32, 34, 97, 34, 32,111,114, 32,116, 46,116,121,112,101, 32, 61, 61, 32,
+ 34,105, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110,
+118, 97,108,105,100, 32,116,121,112,101, 32, 39, 34, 32, 46, 46, 32,116, 46,116,
+121,112,101, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,
+ 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10,108,111,
+ 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,112,117,116, 40,117, 44,
+ 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,117,116,
+116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,112,117,116,
+116, 46,115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,
+114, 99,101, 46,115,116,114,105,110,103, 40, 98,111,100,121, 41, 10, 32, 32, 32,
+ 32,114,101,116,117,114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 10,101,
+110,100, 10, 10,112,117,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,
+116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,112,117,116,116, 44, 32,
+ 98,111,100,121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,
+112,101, 40,112,117,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34,
+ 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,112,117,116, 40,112,117,
+116,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,
+101,116,117,114,110, 32,116,112,117,116, 40,112,117,116,116, 41, 32,101,110,100,
+ 10,101,110,100, 41, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,
+110, 32,116,103,101,116, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,103,101,116,
+116, 32, 61, 32,111,118,101,114,114,105,100,101, 40,103,101,116,116, 41, 10, 32,
+ 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,103,101,116,116, 46,104,
111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,116,110, 97,
-109,101, 34, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,
- 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 34,109,105,115,115,105,
-110,103, 32, 99,111,109,109, 97,110,100, 34, 41, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,102, 32, 61, 32,111,112,101,110, 40, 99,109,100,116, 46,104,111,115,
-116, 44, 32, 99,109,100,116, 46,112,111,114,116, 44, 32, 99,109,100,116, 46, 99,
-114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102, 58,103,114,101,101,116, 40, 41,
- 10, 32, 32, 32, 32,102, 58,108,111,103,105,110, 40, 99,109,100,116, 46,117,115,
-101,114, 44, 32, 99,109,100,116, 46,112, 97,115,115,119,111,114,100, 41, 10, 32,
- 32, 32, 32,102, 46,116,114,121, 40,102, 46,116,112, 58, 99,111,109,109, 97,110,
-100, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 99,109,100,116,
- 46, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,105,102, 32, 99,
-109,100,116, 46, 99,104,101, 99,107, 32,116,104,101,110, 32,102, 46,116,114,121,
- 40,102, 46,116,112, 58, 99,104,101, 99,107, 40, 99,109,100,116, 46, 99,104,101,
- 99,107, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40,
- 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101,
- 40, 41, 10,101,110,100, 41, 10, 10,103,101,116, 32, 61, 32,115,111, 99,107,101,
-116, 46,112,114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,103,
-101,116,116, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,
-101, 40,103,101,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32,
-116,104,101,110, 32,114,101,116,117,114,110, 32,115,103,101,116, 40,103,101,116,
-116, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,116,
-103,101,116, 40,103,101,116,116, 41, 32,101,110,100, 10,101,110,100, 41, 10, 10,
-
+109,101, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,111,
+112,101,110, 40,103,101,116,116, 46,104,111,115,116, 44, 32,103,101,116,116, 46,
+112,111,114,116, 44, 32,103,101,116,116, 46, 99,114,101, 97,116,101, 41, 10, 32,
+ 32, 32, 32,102, 58,103,114,101,101,116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,
+111,103,105,110, 40,103,101,116,116, 46,117,115,101,114, 44, 32,103,101,116,116,
+ 46,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,105,102, 32,103,101,
+116,116, 46,116,121,112,101, 32,116,104,101,110, 32,102, 58,116,121,112,101, 40,
+103,101,116,116, 46,116,121,112,101, 41, 32,101,110,100, 10, 32, 32, 32, 32,102,
+ 58,112, 97,115,118, 40, 41, 10, 32, 32, 32, 32,102, 58,114,101, 99,101,105,118,
+101, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,102, 58,113,117,105,116, 40, 41,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,111,115,101, 40,
+ 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,
+110, 32,115,103,101,116, 40,117, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+103,101,116,116, 32, 61, 32,112, 97,114,115,101, 40,117, 41, 10, 32, 32, 32, 32,
+108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,103,101,116,
+116, 46,115,105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,
+116, 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,116,103,101,116, 40,103,101,
+116,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101,
+ 46, 99,111,110, 99, 97,116, 40,116, 41, 10,101,110,100, 10, 10, 99,111,109,109,
+ 97,110,100, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99,116,
+ 40,102,117,110, 99,116,105,111,110, 40, 99,109,100,116, 41, 10, 32, 32, 32, 32,
+ 99,109,100,116, 32, 61, 32,111,118,101,114,114,105,100,101, 40, 99,109,100,116,
+ 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40, 99,109,100,
+116, 46,104,111,115,116, 44, 32, 34,109,105,115,115,105,110,103, 32,104,111,115,
+116,110, 97,109,101, 34, 41, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,
+114,121, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 34,109,105,
+115,115,105,110,103, 32, 99,111,109,109, 97,110,100, 34, 41, 10, 32, 32, 32, 32,
+108,111, 99, 97,108, 32,102, 32, 61, 32,111,112,101,110, 40, 99,109,100,116, 46,
+104,111,115,116, 44, 32, 99,109,100,116, 46,112,111,114,116, 44, 32, 99,109,100,
+116, 46, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,102, 58,103,114,101,101,
+116, 40, 41, 10, 32, 32, 32, 32,102, 58,108,111,103,105,110, 40, 99,109,100,116,
+ 46,117,115,101,114, 44, 32, 99,109,100,116, 46,112, 97,115,115,119,111,114,100,
+ 41, 10, 32, 32, 32, 32,102, 46,116,114,121, 40,102, 46,116,112, 58, 99,111,109,
+109, 97,110,100, 40, 99,109,100,116, 46, 99,111,109,109, 97,110,100, 44, 32, 99,
+109,100,116, 46, 97,114,103,117,109,101,110,116, 41, 41, 10, 32, 32, 32, 32,105,
+102, 32, 99,109,100,116, 46, 99,104,101, 99,107, 32,116,104,101,110, 32,102, 46,
+116,114,121, 40,102, 46,116,112, 58, 99,104,101, 99,107, 40, 99,109,100,116, 46,
+ 99,104,101, 99,107, 41, 41, 32,101,110,100, 10, 32, 32, 32, 32,102, 58,113,117,
+105,116, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 58, 99,108,
+111,115,101, 40, 41, 10,101,110,100, 41, 10, 10,103,101,116, 32, 61, 32,115,111,
+ 99,107,101,116, 46,112,114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,
+110, 40,103,101,116,116, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,
+116,121,112,101, 40,103,101,116,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,
+103, 34, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,103,101,116, 40,
+103,101,116,116, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,
+110, 32,116,103,101,116, 40,103,101,116,116, 41, 32,101,110,100, 10,101,110,100,
+ 41, 10, 10,
0 };
return luaL_dostring(L, (const char*)B);
} /* end of embedded lua code */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/headers.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/headers.lua
new file mode 100644
index 00000000000..41794baeef0
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/headers.lua
@@ -0,0 +1,99 @@
+-----------------------------------------------------------------------------
+-- Canonic header field capitalization
+-- LuaSocket toolkit.
+-- Author: Diego Nehab
+-----------------------------------------------------------------------------
+module("socket.headers")
+
+canonic = {
+ ["accept"] = "Accept",
+ ["accept-charset"] = "Accept-Charset",
+ ["accept-encoding"] = "Accept-Encoding",
+ ["accept-language"] = "Accept-Language",
+ ["accept-ranges"] = "Accept-Ranges",
+ ["action"] = "Action",
+ ["alternate-recipient"] = "Alternate-Recipient",
+ ["age"] = "Age",
+ ["allow"] = "Allow",
+ ["arrival-date"] = "Arrival-Date",
+ ["authorization"] = "Authorization",
+ ["bcc"] = "Bcc",
+ ["cache-control"] = "Cache-Control",
+ ["cc"] = "Cc",
+ ["comments"] = "Comments",
+ ["connection"] = "Connection",
+ ["content-description"] = "Content-Description",
+ ["content-disposition"] = "Content-Disposition",
+ ["content-encoding"] = "Content-Encoding",
+ ["content-id"] = "Content-ID",
+ ["content-language"] = "Content-Language",
+ ["content-length"] = "Content-Length",
+ ["content-location"] = "Content-Location",
+ ["content-md5"] = "Content-MD5",
+ ["content-range"] = "Content-Range",
+ ["content-transfer-encoding"] = "Content-Transfer-Encoding",
+ ["content-type"] = "Content-Type",
+ ["date"] = "Date",
+ ["diagnostic-code"] = "Diagnostic-Code",
+ ["dsn-gateway"] = "DSN-Gateway",
+ ["etag"] = "ETag",
+ ["expect"] = "Expect",
+ ["expires"] = "Expires",
+ ["final-log-id"] = "Final-Log-ID",
+ ["final-recipient"] = "Final-Recipient",
+ ["from"] = "From",
+ ["host"] = "Host",
+ ["if-match"] = "If-Match",
+ ["if-modified-since"] = "If-Modified-Since",
+ ["if-none-match"] = "If-None-Match",
+ ["if-range"] = "If-Range",
+ ["if-unmodified-since"] = "If-Unmodified-Since",
+ ["in-reply-to"] = "In-Reply-To",
+ ["keywords"] = "Keywords",
+ ["last-attempt-date"] = "Last-Attempt-Date",
+ ["last-modified"] = "Last-Modified",
+ ["location"] = "Location",
+ ["max-forwards"] = "Max-Forwards",
+ ["message-id"] = "Message-ID",
+ ["mime-version"] = "MIME-Version",
+ ["original-envelope-id"] = "Original-Envelope-ID",
+ ["original-recipient"] = "Original-Recipient",
+ ["pragma"] = "Pragma",
+ ["proxy-authenticate"] = "Proxy-Authenticate",
+ ["proxy-authorization"] = "Proxy-Authorization",
+ ["range"] = "Range",
+ ["received"] = "Received",
+ ["received-from-mta"] = "Received-From-MTA",
+ ["references"] = "References",
+ ["referer"] = "Referer",
+ ["remote-mta"] = "Remote-MTA",
+ ["reply-to"] = "Reply-To",
+ ["reporting-mta"] = "Reporting-MTA",
+ ["resent-bcc"] = "Resent-Bcc",
+ ["resent-cc"] = "Resent-Cc",
+ ["resent-date"] = "Resent-Date",
+ ["resent-from"] = "Resent-From",
+ ["resent-message-id"] = "Resent-Message-ID",
+ ["resent-reply-to"] = "Resent-Reply-To",
+ ["resent-sender"] = "Resent-Sender",
+ ["resent-to"] = "Resent-To",
+ ["retry-after"] = "Retry-After",
+ ["return-path"] = "Return-Path",
+ ["sender"] = "Sender",
+ ["server"] = "Server",
+ ["smtp-remote-recipient"] = "SMTP-Remote-Recipient",
+ ["status"] = "Status",
+ ["subject"] = "Subject",
+ ["te"] = "TE",
+ ["to"] = "To",
+ ["trailer"] = "Trailer",
+ ["transfer-encoding"] = "Transfer-Encoding",
+ ["upgrade"] = "Upgrade",
+ ["user-agent"] = "User-Agent",
+ ["vary"] = "Vary",
+ ["via"] = "Via",
+ ["warning"] = "Warning",
+ ["will-retry-until"] = "Will-Retry-Until",
+ ["www-authenticate"] = "WWW-Authenticate",
+ ["x-mailer"] = "X-Mailer",
+}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/headers_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/headers_lua.c
new file mode 100644
index 00000000000..412f4064533
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/headers_lua.c
@@ -0,0 +1,194 @@
+/*
+ * This file is auto-generated by "lua2c headers.lua headers_lua"
+ */
+
+#include "lua.h"
+#include "lauxlib.h"
+
+int luatex_headers_lua_open (lua_State *L) {
+ static unsigned char B[] = {
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+ 32, 67, 97,110,111,110,105, 99, 32,104,101, 97,100,101,114, 32,102,105,101,108,
+100, 32, 99, 97,112,105,116, 97,108,105,122, 97,116,105,111,110, 10, 45, 45, 32,
+ 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45,
+ 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97,
+ 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,104,101, 97,100,101,
+114,115, 34, 41, 10, 10, 99, 97,110,111,110,105, 99, 32, 61, 32,123, 10, 32, 32,
+ 32, 32, 91, 34, 97, 99, 99,101,112,116, 34, 93, 32, 61, 32, 34, 65, 99, 99,101,
+112,116, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97, 99, 99,101,112,116, 45, 99,104,
+ 97,114,115,101,116, 34, 93, 32, 61, 32, 34, 65, 99, 99,101,112,116, 45, 67,104,
+ 97,114,115,101,116, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97, 99, 99,101,112,116,
+ 45,101,110, 99,111,100,105,110,103, 34, 93, 32, 61, 32, 34, 65, 99, 99,101,112,
+116, 45, 69,110, 99,111,100,105,110,103, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97,
+ 99, 99,101,112,116, 45,108, 97,110,103,117, 97,103,101, 34, 93, 32, 61, 32, 34,
+ 65, 99, 99,101,112,116, 45, 76, 97,110,103,117, 97,103,101, 34, 44, 10, 32, 32,
+ 32, 32, 91, 34, 97, 99, 99,101,112,116, 45,114, 97,110,103,101,115, 34, 93, 32,
+ 61, 32, 34, 65, 99, 99,101,112,116, 45, 82, 97,110,103,101,115, 34, 44, 10, 32,
+ 32, 32, 32, 91, 34, 97, 99,116,105,111,110, 34, 93, 32, 61, 32, 34, 65, 99,116,
+105,111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97,108,116,101,114,110, 97,116,
+101, 45,114,101, 99,105,112,105,101,110,116, 34, 93, 32, 61, 32, 34, 65,108,116,
+101,114,110, 97,116,101, 45, 82,101, 99,105,112,105,101,110,116, 34, 44, 10, 32,
+ 32, 32, 32, 91, 34, 97,103,101, 34, 93, 32, 61, 32, 34, 65,103,101, 34, 44, 10,
+ 32, 32, 32, 32, 91, 34, 97,108,108,111,119, 34, 93, 32, 61, 32, 34, 65,108,108,
+111,119, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97,114,114,105,118, 97,108, 45,100,
+ 97,116,101, 34, 93, 32, 61, 32, 34, 65,114,114,105,118, 97,108, 45, 68, 97,116,
+101, 34, 44, 10, 32, 32, 32, 32, 91, 34, 97,117,116,104,111,114,105,122, 97,116,
+105,111,110, 34, 93, 32, 61, 32, 34, 65,117,116,104,111,114,105,122, 97,116,105,
+111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 98, 99, 99, 34, 93, 32, 61, 32, 34,
+ 66, 99, 99, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99, 97, 99,104,101, 45, 99,111,
+110,116,114,111,108, 34, 93, 32, 61, 32, 34, 67, 97, 99,104,101, 45, 67,111,110,
+116,114,111,108, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99, 99, 34, 93, 32, 61, 32,
+ 34, 67, 99, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,109,109,101,110,116,115,
+ 34, 93, 32, 61, 32, 34, 67,111,109,109,101,110,116,115, 34, 44, 10, 32, 32, 32,
+ 32, 91, 34, 99,111,110,110,101, 99,116,105,111,110, 34, 93, 32, 61, 32, 34, 67,
+111,110,110,101, 99,116,105,111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,
+110,116,101,110,116, 45,100,101,115, 99,114,105,112,116,105,111,110, 34, 93, 32,
+ 61, 32, 34, 67,111,110,116,101,110,116, 45, 68,101,115, 99,114,105,112,116,105,
+111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,100,
+105,115,112,111,115,105,116,105,111,110, 34, 93, 32, 61, 32, 34, 67,111,110,116,
+101,110,116, 45, 68,105,115,112,111,115,105,116,105,111,110, 34, 44, 10, 32, 32,
+ 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,101,110, 99,111,100,105,110,103,
+ 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 69,110, 99,111,100,105,
+110,103, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,105,
+100, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 73, 68, 34, 44, 10,
+ 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,108, 97,110,103,117, 97,
+103,101, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 76, 97,110,103,
+117, 97,103,101, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116,
+ 45,108,101,110,103,116,104, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116,
+ 45, 76,101,110,103,116,104, 34, 44, 10, 32, 32, 32, 32, 91, 34, 99,111,110,116,
+101,110,116, 45,108,111, 99, 97,116,105,111,110, 34, 93, 32, 61, 32, 34, 67,111,
+110,116,101,110,116, 45, 76,111, 99, 97,116,105,111,110, 34, 44, 10, 32, 32, 32,
+ 32, 91, 34, 99,111,110,116,101,110,116, 45,109,100, 53, 34, 93, 32, 61, 32, 34,
+ 67,111,110,116,101,110,116, 45, 77, 68, 53, 34, 44, 10, 32, 32, 32, 32, 91, 34,
+ 99,111,110,116,101,110,116, 45,114, 97,110,103,101, 34, 93, 32, 61, 32, 34, 67,
+111,110,116,101,110,116, 45, 82, 97,110,103,101, 34, 44, 10, 32, 32, 32, 32, 91,
+ 34, 99,111,110,116,101,110,116, 45,116,114, 97,110,115,102,101,114, 45,101,110,
+ 99,111,100,105,110,103, 34, 93, 32, 61, 32, 34, 67,111,110,116,101,110,116, 45,
+ 84,114, 97,110,115,102,101,114, 45, 69,110, 99,111,100,105,110,103, 34, 44, 10,
+ 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,116,121,112,101, 34, 93,
+ 32, 61, 32, 34, 67,111,110,116,101,110,116, 45, 84,121,112,101, 34, 44, 10, 32,
+ 32, 32, 32, 91, 34,100, 97,116,101, 34, 93, 32, 61, 32, 34, 68, 97,116,101, 34,
+ 44, 10, 32, 32, 32, 32, 91, 34,100,105, 97,103,110,111,115,116,105, 99, 45, 99,
+111,100,101, 34, 93, 32, 61, 32, 34, 68,105, 97,103,110,111,115,116,105, 99, 45,
+ 67,111,100,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,100,115,110, 45,103, 97,116,
+101,119, 97,121, 34, 93, 32, 61, 32, 34, 68, 83, 78, 45, 71, 97,116,101,119, 97,
+121, 34, 44, 10, 32, 32, 32, 32, 91, 34,101,116, 97,103, 34, 93, 32, 61, 32, 34,
+ 69, 84, 97,103, 34, 44, 10, 32, 32, 32, 32, 91, 34,101,120,112,101, 99,116, 34,
+ 93, 32, 61, 32, 34, 69,120,112,101, 99,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,
+101,120,112,105,114,101,115, 34, 93, 32, 61, 32, 34, 69,120,112,105,114,101,115,
+ 34, 44, 10, 32, 32, 32, 32, 91, 34,102,105,110, 97,108, 45,108,111,103, 45,105,
+100, 34, 93, 32, 61, 32, 34, 70,105,110, 97,108, 45, 76,111,103, 45, 73, 68, 34,
+ 44, 10, 32, 32, 32, 32, 91, 34,102,105,110, 97,108, 45,114,101, 99,105,112,105,
+101,110,116, 34, 93, 32, 61, 32, 34, 70,105,110, 97,108, 45, 82,101, 99,105,112,
+105,101,110,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,102,114,111,109, 34, 93, 32,
+ 61, 32, 34, 70,114,111,109, 34, 44, 10, 32, 32, 32, 32, 91, 34,104,111,115,116,
+ 34, 93, 32, 61, 32, 34, 72,111,115,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,105,
+102, 45,109, 97,116, 99,104, 34, 93, 32, 61, 32, 34, 73,102, 45, 77, 97,116, 99,
+104, 34, 44, 10, 32, 32, 32, 32, 91, 34,105,102, 45,109,111,100,105,102,105,101,
+100, 45,115,105,110, 99,101, 34, 93, 32, 61, 32, 34, 73,102, 45, 77,111,100,105,
+102,105,101,100, 45, 83,105,110, 99,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,105,
+102, 45,110,111,110,101, 45,109, 97,116, 99,104, 34, 93, 32, 61, 32, 34, 73,102,
+ 45, 78,111,110,101, 45, 77, 97,116, 99,104, 34, 44, 10, 32, 32, 32, 32, 91, 34,
+105,102, 45,114, 97,110,103,101, 34, 93, 32, 61, 32, 34, 73,102, 45, 82, 97,110,
+103,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,105,102, 45,117,110,109,111,100,105,
+102,105,101,100, 45,115,105,110, 99,101, 34, 93, 32, 61, 32, 34, 73,102, 45, 85,
+110,109,111,100,105,102,105,101,100, 45, 83,105,110, 99,101, 34, 44, 10, 32, 32,
+ 32, 32, 91, 34,105,110, 45,114,101,112,108,121, 45,116,111, 34, 93, 32, 61, 32,
+ 34, 73,110, 45, 82,101,112,108,121, 45, 84,111, 34, 44, 10, 32, 32, 32, 32, 91,
+ 34,107,101,121,119,111,114,100,115, 34, 93, 32, 61, 32, 34, 75,101,121,119,111,
+114,100,115, 34, 44, 10, 32, 32, 32, 32, 91, 34,108, 97,115,116, 45, 97,116,116,
+101,109,112,116, 45,100, 97,116,101, 34, 93, 32, 61, 32, 34, 76, 97,115,116, 45,
+ 65,116,116,101,109,112,116, 45, 68, 97,116,101, 34, 44, 10, 32, 32, 32, 32, 91,
+ 34,108, 97,115,116, 45,109,111,100,105,102,105,101,100, 34, 93, 32, 61, 32, 34,
+ 76, 97,115,116, 45, 77,111,100,105,102,105,101,100, 34, 44, 10, 32, 32, 32, 32,
+ 91, 34,108,111, 99, 97,116,105,111,110, 34, 93, 32, 61, 32, 34, 76,111, 99, 97,
+116,105,111,110, 34, 44, 10, 32, 32, 32, 32, 91, 34,109, 97,120, 45,102,111,114,
+119, 97,114,100,115, 34, 93, 32, 61, 32, 34, 77, 97,120, 45, 70,111,114,119, 97,
+114,100,115, 34, 44, 10, 32, 32, 32, 32, 91, 34,109,101,115,115, 97,103,101, 45,
+105,100, 34, 93, 32, 61, 32, 34, 77,101,115,115, 97,103,101, 45, 73, 68, 34, 44,
+ 10, 32, 32, 32, 32, 91, 34,109,105,109,101, 45,118,101,114,115,105,111,110, 34,
+ 93, 32, 61, 32, 34, 77, 73, 77, 69, 45, 86,101,114,115,105,111,110, 34, 44, 10,
+ 32, 32, 32, 32, 91, 34,111,114,105,103,105,110, 97,108, 45,101,110,118,101,108,
+111,112,101, 45,105,100, 34, 93, 32, 61, 32, 34, 79,114,105,103,105,110, 97,108,
+ 45, 69,110,118,101,108,111,112,101, 45, 73, 68, 34, 44, 10, 32, 32, 32, 32, 91,
+ 34,111,114,105,103,105,110, 97,108, 45,114,101, 99,105,112,105,101,110,116, 34,
+ 93, 32, 61, 32, 34, 79,114,105,103,105,110, 97,108, 45, 82,101, 99,105,112,105,
+101,110,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,112,114, 97,103,109, 97, 34, 93,
+ 32, 61, 32, 34, 80,114, 97,103,109, 97, 34, 44, 10, 32, 32, 32, 32, 91, 34,112,
+114,111,120,121, 45, 97,117,116,104,101,110,116,105, 99, 97,116,101, 34, 93, 32,
+ 61, 32, 34, 80,114,111,120,121, 45, 65,117,116,104,101,110,116,105, 99, 97,116,
+101, 34, 44, 10, 32, 32, 32, 32, 91, 34,112,114,111,120,121, 45, 97,117,116,104,
+111,114,105,122, 97,116,105,111,110, 34, 93, 32, 61, 32, 34, 80,114,111,120,121,
+ 45, 65,117,116,104,111,114,105,122, 97,116,105,111,110, 34, 44, 10, 32, 32, 32,
+ 32, 91, 34,114, 97,110,103,101, 34, 93, 32, 61, 32, 34, 82, 97,110,103,101, 34,
+ 44, 10, 32, 32, 32, 32, 91, 34,114,101, 99,101,105,118,101,100, 34, 93, 32, 61,
+ 32, 34, 82,101, 99,101,105,118,101,100, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,
+101, 99,101,105,118,101,100, 45,102,114,111,109, 45,109,116, 97, 34, 93, 32, 61,
+ 32, 34, 82,101, 99,101,105,118,101,100, 45, 70,114,111,109, 45, 77, 84, 65, 34,
+ 44, 10, 32, 32, 32, 32, 91, 34,114,101,102,101,114,101,110, 99,101,115, 34, 93,
+ 32, 61, 32, 34, 82,101,102,101,114,101,110, 99,101,115, 34, 44, 10, 32, 32, 32,
+ 32, 91, 34,114,101,102,101,114,101,114, 34, 93, 32, 61, 32, 34, 82,101,102,101,
+114,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,109,111,116,101, 45,109,
+116, 97, 34, 93, 32, 61, 32, 34, 82,101,109,111,116,101, 45, 77, 84, 65, 34, 44,
+ 10, 32, 32, 32, 32, 91, 34,114,101,112,108,121, 45,116,111, 34, 93, 32, 61, 32,
+ 34, 82,101,112,108,121, 45, 84,111, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,
+112,111,114,116,105,110,103, 45,109,116, 97, 34, 93, 32, 61, 32, 34, 82,101,112,
+111,114,116,105,110,103, 45, 77, 84, 65, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,
+101,115,101,110,116, 45, 98, 99, 99, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,
+116, 45, 66, 99, 99, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110,116,
+ 45, 99, 99, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116, 45, 67, 99, 34, 44,
+ 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110,116, 45,100, 97,116,101, 34, 93,
+ 32, 61, 32, 34, 82,101,115,101,110,116, 45, 68, 97,116,101, 34, 44, 10, 32, 32,
+ 32, 32, 91, 34,114,101,115,101,110,116, 45,102,114,111,109, 34, 93, 32, 61, 32,
+ 34, 82,101,115,101,110,116, 45, 70,114,111,109, 34, 44, 10, 32, 32, 32, 32, 91,
+ 34,114,101,115,101,110,116, 45,109,101,115,115, 97,103,101, 45,105,100, 34, 93,
+ 32, 61, 32, 34, 82,101,115,101,110,116, 45, 77,101,115,115, 97,103,101, 45, 73,
+ 68, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110,116, 45,114,101,112,
+108,121, 45,116,111, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116, 45, 82,101,
+112,108,121, 45, 84,111, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101,110,
+116, 45,115,101,110,100,101,114, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116,
+ 45, 83,101,110,100,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,115,101,
+110,116, 45,116,111, 34, 93, 32, 61, 32, 34, 82,101,115,101,110,116, 45, 84,111,
+ 34, 44, 10, 32, 32, 32, 32, 91, 34,114,101,116,114,121, 45, 97,102,116,101,114,
+ 34, 93, 32, 61, 32, 34, 82,101,116,114,121, 45, 65,102,116,101,114, 34, 44, 10,
+ 32, 32, 32, 32, 91, 34,114,101,116,117,114,110, 45,112, 97,116,104, 34, 93, 32,
+ 61, 32, 34, 82,101,116,117,114,110, 45, 80, 97,116,104, 34, 44, 10, 32, 32, 32,
+ 32, 91, 34,115,101,110,100,101,114, 34, 93, 32, 61, 32, 34, 83,101,110,100,101,
+114, 34, 44, 10, 32, 32, 32, 32, 91, 34,115,101,114,118,101,114, 34, 93, 32, 61,
+ 32, 34, 83,101,114,118,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,115,109,116,
+112, 45,114,101,109,111,116,101, 45,114,101, 99,105,112,105,101,110,116, 34, 93,
+ 32, 61, 32, 34, 83, 77, 84, 80, 45, 82,101,109,111,116,101, 45, 82,101, 99,105,
+112,105,101,110,116, 34, 44, 10, 32, 32, 32, 32, 91, 34,115,116, 97,116,117,115,
+ 34, 93, 32, 61, 32, 34, 83,116, 97,116,117,115, 34, 44, 10, 32, 32, 32, 32, 91,
+ 34,115,117, 98,106,101, 99,116, 34, 93, 32, 61, 32, 34, 83,117, 98,106,101, 99,
+116, 34, 44, 10, 32, 32, 32, 32, 91, 34,116,101, 34, 93, 32, 61, 32, 34, 84, 69,
+ 34, 44, 10, 32, 32, 32, 32, 91, 34,116,111, 34, 93, 32, 61, 32, 34, 84,111, 34,
+ 44, 10, 32, 32, 32, 32, 91, 34,116,114, 97,105,108,101,114, 34, 93, 32, 61, 32,
+ 34, 84,114, 97,105,108,101,114, 34, 44, 10, 32, 32, 32, 32, 91, 34,116,114, 97,
+110,115,102,101,114, 45,101,110, 99,111,100,105,110,103, 34, 93, 32, 61, 32, 34,
+ 84,114, 97,110,115,102,101,114, 45, 69,110, 99,111,100,105,110,103, 34, 44, 10,
+ 32, 32, 32, 32, 91, 34,117,112,103,114, 97,100,101, 34, 93, 32, 61, 32, 34, 85,
+112,103,114, 97,100,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,117,115,101,114, 45,
+ 97,103,101,110,116, 34, 93, 32, 61, 32, 34, 85,115,101,114, 45, 65,103,101,110,
+116, 34, 44, 10, 32, 32, 32, 32, 91, 34,118, 97,114,121, 34, 93, 32, 61, 32, 34,
+ 86, 97,114,121, 34, 44, 10, 32, 32, 32, 32, 91, 34,118,105, 97, 34, 93, 32, 61,
+ 32, 34, 86,105, 97, 34, 44, 10, 32, 32, 32, 32, 91, 34,119, 97,114,110,105,110,
+103, 34, 93, 32, 61, 32, 34, 87, 97,114,110,105,110,103, 34, 44, 10, 32, 32, 32,
+ 32, 91, 34,119,105,108,108, 45,114,101,116,114,121, 45,117,110,116,105,108, 34,
+ 93, 32, 61, 32, 34, 87,105,108,108, 45, 82,101,116,114,121, 45, 85,110,116,105,
+108, 34, 44, 10, 32, 32, 32, 32, 91, 34,119,119,119, 45, 97,117,116,104,101,110,
+116,105, 99, 97,116,101, 34, 93, 32, 61, 32, 34, 87, 87, 87, 45, 65,117,116,104,
+101,110,116,105, 99, 97,116,101, 34, 44, 10, 32, 32, 32, 32, 91, 34,120, 45,109,
+ 97,105,108,101,114, 34, 93, 32, 61, 32, 34, 88, 45, 77, 97,105,108,101,114, 34,
+ 44, 10,125, 10,
+ 0 };
+ return luaL_dostring(L, (const char*)B);
+} /* end of embedded lua code */
+
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua
index ad8db1ee065..4c7e7d80e30 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/http.lua
@@ -2,7 +2,6 @@
-- HTTP/1.1 client support for the Lua language.
-- LuaSocket toolkit.
-- Author: Diego Nehab
--- RCS ID: $Id: http.lua,v 1.71 2007/10/13 23:55:20 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -13,6 +12,7 @@ local url = require("socket.url")
local ltn12 = require("ltn12")
local mime = require("mime")
local string = require("string")
+local headers = require("socket.headers")
local base = _G
local table = require("table")
module("socket.http")
@@ -123,10 +123,11 @@ function metat.__index:sendrequestline(method, uri)
return self.try(self.c:send(reqline))
end
-function metat.__index:sendheaders(headers)
+function metat.__index:sendheaders(tosend)
+ local canonic = headers.canonic
local h = "\r\n"
- for i, v in base.pairs(headers) do
- h = i .. ": " .. v .. "\r\n" .. h
+ for f, v in base.pairs(tosend) do
+ h = (canonic[f] or f) .. ": " .. v .. "\r\n" .. h
end
self.try(self.c:send(h))
return 1
@@ -254,7 +255,7 @@ local function shouldredirect(reqt, code, headers)
return headers.location and
string.gsub(headers.location, "%s", "") ~= "" and
(reqt.redirect ~= false) and
- (code == 301 or code == 302) and
+ (code == 301 or code == 302 or code == 303 or code == 307) and
(not reqt.method or reqt.method == "GET" or reqt.method == "HEAD")
and (not reqt.nredirects or reqt.nredirects < 5)
end
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c
index fa287503798..1fd892e6f6c 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/http_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c http.lua http_lua"
+ * This file is auto-generated by "lua2c http.lua http_lua"
*/
#include "lua.h"
@@ -15,608 +15,611 @@ int luatex_http_lua_open (lua_State *L) {
112,111,114,116, 32,102,111,114, 32,116,104,101, 32, 76,117, 97, 32,108, 97,110,
103,117, 97,103,101, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,
116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32,
- 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73,
- 68, 58, 32, 36, 73,100, 58, 32,104,116,116,112, 46,108,117, 97, 44,118, 32, 49,
- 46, 55, 49, 32, 50, 48, 48, 55, 47, 49, 48, 47, 49, 51, 32, 50, 51, 58, 53, 53,
- 58, 50, 48, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45,
+ 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108,
- 97,114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,
-116, 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,
+109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,
+112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108,
- 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,
-111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32,
-114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34,
- 41, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,
-105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109,
-105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34,
- 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,
-117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108,
- 32, 98, 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98,
-108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34,
- 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,104,116,116,
-112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,111, 99,
+107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,
+116, 34, 41, 10,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32,114,101,113,117,
+105,114,101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10,108,111,
+ 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40,
+ 34,108,116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109,105,109,101, 32,
+ 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34, 41, 10,108,111,
+ 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101,
+ 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32,104,101, 97,
+100,101,114,115, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,
+101,116, 46,104,101, 97,100,101,114,115, 34, 41, 10,108,111, 99, 97,108, 32, 98,
+ 97,115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98,108,101,
+ 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,
+109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,104,116,116,112, 34,
+ 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,
-110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,116,
+115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+ 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32,116,105,109,101,111,117,
+116, 32,105,110, 32,115,101, 99,111,110,100,115, 10, 84, 73, 77, 69, 79, 85, 84,
+ 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,112,111,114,
+116, 32,102,111,114, 32,100,111, 99,117,109,101,110,116, 32,114,101,116,114,105,
+101,118, 97,108, 10, 80, 79, 82, 84, 32, 61, 32, 56, 48, 10, 45, 45, 32,117,115,
+101,114, 32, 97,103,101,110,116, 32,102,105,101,108,100, 32,115,101,110,116, 32,
+105,110, 32,114,101,113,117,101,115,116, 10, 85, 83, 69, 82, 65, 71, 69, 78, 84,
+ 32, 61, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79, 78, 10, 10,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 10, 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32,116,105,109,101,
-111,117,116, 32,105,110, 32,115,101, 99,111,110,100,115, 10, 84, 73, 77, 69, 79,
- 85, 84, 32, 61, 32, 54, 48, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,112,
-111,114,116, 32,102,111,114, 32,100,111, 99,117,109,101,110,116, 32,114,101,116,
-114,105,101,118, 97,108, 10, 80, 79, 82, 84, 32, 61, 32, 56, 48, 10, 45, 45, 32,
-117,115,101,114, 32, 97,103,101,110,116, 32,102,105,101,108,100, 32,115,101,110,
-116, 32,105,110, 32,114,101,113,117,101,115,116, 10, 85, 83, 69, 82, 65, 71, 69,
- 78, 84, 32, 61, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79, 78,
- 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+ 32, 82,101, 97,100,115, 32, 77, 73, 77, 69, 32,104,101, 97,100,101,114,115, 32,
+102,114,111,109, 32, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 44, 32,117,
+110,102,111,108,100,105,110,103, 32,119,104,101,114,101, 32,110,101,101,100,101,
+100, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
- 45, 45, 32, 82,101, 97,100,115, 32, 77, 73, 77, 69, 32,104,101, 97,100,101,114,
-115, 32,102,114,111,109, 32, 97, 32, 99,111,110,110,101, 99,116,105,111,110, 44,
- 32,117,110,102,111,108,100,105,110,103, 32,119,104,101,114,101, 32,110,101,101,
-100,101,100, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,114,101, 99,
-101,105,118,101,104,101, 97,100,101,114,115, 40,115,111, 99,107, 44, 32,104,101,
- 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,
-101, 44, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 44, 32,101,114,114, 10,
- 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100,101,114,
-115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,102,
-105,114,115,116, 32,108,105,110,101, 10, 32, 32, 32, 32,108,105,110,101, 44, 32,
-101,114,114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41,
- 10, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,
-117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32,
- 32, 45, 45, 32,104,101, 97,100,101,114,115, 32,103,111, 32,117,110,116,105,108,
- 32, 97, 32, 98,108, 97,110,107, 32,108,105,110,101, 32,105,115, 32,102,111,117,
-110,100, 10, 32, 32, 32, 32,119,104,105,108,101, 32,108,105,110,101, 32,126, 61,
- 32, 34, 34, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,103,101,
-116, 32,102,105,101,108,100, 45,110, 97,109,101, 32, 97,110,100, 32,118, 97,108,
-117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32,118, 97,108,
-117,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,
-115,116,114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94,
- 40, 46, 45, 41, 58, 37,115, 42, 40, 46, 42, 41, 34, 41, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,105,102, 32,110,111,116, 32, 40,110, 97,109,101, 32, 97,110,100,
- 32,118, 97,108,117,101, 41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,
-110,105,108, 44, 32, 34,109, 97,108,102,111,114,109,101,100, 32,114,101,112,111,
-110,115,101, 32,104,101, 97,100,101,114,115, 34, 32,101,110,100, 10, 32, 32, 32,
- 32, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,108,
-111,119,101,114, 40,110, 97,109,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45,
- 45, 32,103,101,116, 32,110,101,120,116, 32,108,105,110,101, 32, 40,118, 97,108,
-117,101, 32,109,105,103,104,116, 32, 98,101, 32,102,111,108,100,101,100, 41, 10,
- 32, 32, 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 32, 61,
+108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,114,101, 99,101,105,
+118,101,104,101, 97,100,101,114,115, 40,115,111, 99,107, 44, 32,104,101, 97,100,
+101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44,
+ 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 44, 32,101,114,114, 10, 32, 32,
+ 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100,101,114,115, 32,
+111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,102,105,114,
+115,116, 32,108,105,110,101, 10, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,
+114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32,
+ 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,
+110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 45,
+ 45, 32,104,101, 97,100,101,114,115, 32,103,111, 32,117,110,116,105,108, 32, 97,
+ 32, 98,108, 97,110,107, 32,108,105,110,101, 32,105,115, 32,102,111,117,110,100,
+ 10, 32, 32, 32, 32,119,104,105,108,101, 32,108,105,110,101, 32,126, 61, 32, 34,
+ 34, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,
+102,105,101,108,100, 45,110, 97,109,101, 32, 97,110,100, 32,118, 97,108,117,101,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32,118, 97,108,117,101,
+ 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,
+114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 46,
+ 45, 41, 58, 37,115, 42, 40, 46, 42, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,105,102, 32,110,111,116, 32, 40,110, 97,109,101, 32, 97,110,100, 32,118,
+ 97,108,117,101, 41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,
+108, 44, 32, 34,109, 97,108,102,111,114,109,101,100, 32,114,101,112,111,110,115,
+101, 32,104,101, 97,100,101,114,115, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,108,111,119,
+101,114, 40,110, 97,109,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,
+103,101,116, 32,110,101,120,116, 32,108,105,110,101, 32, 40,118, 97,108,117,101,
+ 32,109,105,103,104,116, 32, 98,101, 32,102,111,108,100,101,100, 41, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 32, 61, 32,115,
+111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110,
+ 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32, 45, 45, 32,117,110,102,111,108,100, 32, 97,110,121, 32,102,111,108,100,
+101,100, 32,118, 97,108,117,101,115, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,
+105,108,101, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,108,105,110,101,
+ 44, 32, 34, 94, 37,115, 34, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,118, 97,108,117,101, 32, 61, 32,118, 97,108,117,101, 32, 46, 46,
+ 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,105,
+110,101, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,
+104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,
+101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32, 45, 45, 32,115, 97,118,101, 32,112, 97,105,114, 32,105,110, 32,
+116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,104,101, 97,
+100,101,114,115, 91,110, 97,109,101, 93, 32,116,104,101,110, 32,104,101, 97,100,
+101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91,
+110, 97,109,101, 93, 32, 46, 46, 32, 34, 44, 32, 34, 32, 46, 46, 32,118, 97,108,
+117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,104,101, 97,100,
+101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,118, 97,108,117,101, 32,101,110,
+100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110,
+ 32,104,101, 97,100,101,114,115, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,120,116,114, 97,
+ 32,115,111,117,114, 99,101,115, 32, 97,110,100, 32,115,105,110,107,115, 10, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,115,111, 99,
+107,101,116, 46,115,111,117,114, 99,101,116, 91, 34,104,116,116,112, 45, 99,104,
+117,110,107,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,
+111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,101,
+116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,
+108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, 61,
+ 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,
+111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105,111,
+110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,116,
+121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,105,
+111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,
+103,101,116, 32, 99,104,117,110,107, 32,115,105,122,101, 44, 32,115,107,105,112,
+ 32,101,120,116,101,110,116,105,111,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61,
32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,
-114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 45, 45, 32,117,110,102,111,108,100, 32, 97,110,121, 32,102,111,
-108,100,101,100, 32,118, 97,108,117,101,115, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-119,104,105,108,101, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,108,105,
-110,101, 44, 32, 34, 94, 37,115, 34, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32,118, 97,108,117,101, 32, 61, 32,118, 97,108,117,101, 32,
- 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-108,105,110,101, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40,
- 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114,
- 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,
-114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 45, 45, 32,115, 97,118,101, 32,112, 97,105,114, 32,105,
-110, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,104,
-101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32,116,104,101,110, 32,104,101,
- 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,104,101, 97,100,101,114,
-115, 91,110, 97,109,101, 93, 32, 46, 46, 32, 34, 44, 32, 34, 32, 46, 46, 32,118,
- 97,108,117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,104,101,
- 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,118, 97,108,117,101, 32,
-101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,
-114,110, 32,104,101, 97,100,101,114,115, 10,101,110,100, 10, 10, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,120,116,
-114, 97, 32,115,111,117,114, 99,101,115, 32, 97,110,100, 32,115,105,110,107,115,
- 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,115,
-111, 99,107,101,116, 46,115,111,117,114, 99,101,116, 91, 34,104,116,116,112, 45,
- 99,104,117,110,107,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110,
- 40,115,111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,
-114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116,
- 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100,
- 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110,
- 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,
-105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,
-114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,
-116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45,
- 45, 32,103,101,116, 32, 99,104,117,110,107, 32,115,105,122,101, 44, 32,115,107,
-105,112, 32,101,120,116,101,110,116,105,111,110, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114,
- 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,
-110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,
-100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,
-115,105,122,101, 32, 61, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114,
- 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,108,105,110,101, 44, 32, 34,
- 59, 46, 42, 34, 44, 32, 34, 34, 41, 44, 32, 49, 54, 41, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,105,122,101, 32,116,
-104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 34,105,110,118,
- 97,108,105,100, 32, 99,104,117,110,107, 32,115,105,122,101, 34, 32,101,110,100,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,119, 97,115, 32,
-105,116, 32,116,104,101, 32,108, 97,115,116, 32, 99,104,117,110,107, 63, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,105,122,101, 32, 62,
- 32, 48, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 45, 45, 32,105,102, 32,110,111,116, 44, 32,103,101,116, 32, 99,
-104,117,110,107, 32, 97,110,100, 32,115,107,105,112, 32,116,101,114,109,105,110,
- 97,116,105,110,103, 32, 67, 82, 76, 70, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,
-101,114,114, 44, 32,112, 97,114,116, 32, 61, 32,115,111, 99,107, 58,114,101, 99,
-101,105,118,101, 40,115,105,122,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110,
- 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 32,101,110,100, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,
-114,110, 32, 99,104,117,110,107, 44, 32,101,114,114, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,105,102, 32,105,116, 32,119, 97,115, 44,
- 32,114,101, 97,100, 32,116,114, 97,105,108,101,114,115, 32,105,110,116,111, 32,
-104,101, 97,100,101,114,115, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 44, 32,101,
-114,114, 32, 61, 32,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40,
-115,111, 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,104,101,
- 97,100,101,114,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,
-108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32,
- 32, 32, 32,125, 41, 10,101,110,100, 10, 10,115,111, 99,107,101,116, 46,115,105,
-110,107,116, 91, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 93, 32,
- 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32,
- 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,
-116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,
-100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,
-110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10,
- 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,
-116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,
-105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110,
- 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,
-114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,
-111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110,
- 32,115,111, 99,107, 58,115,101,110,100, 40, 34, 48, 92,114, 92,110, 92,114, 92,
-110, 34, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,115,116,114,105,110,103, 46,
-102,111,114,109, 97,116, 40, 34, 37, 88, 92,114, 92,110, 34, 44, 32,115,116,114,
-105,110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,
-115,101,110,100, 40,115,105,122,101, 32, 46, 46, 32, 32, 99,104,117,110,107, 32,
- 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,
-110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,
-108,101,118,101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,
-101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,
-125, 32,125, 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,104,
-111,115,116, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32,
- 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,115,111, 99,107,101,116, 32,
-119,105,116,104, 32,117,115,101,114, 32, 99,111,110,110,101, 99,116, 32,102,117,
-110, 99,116,105,111,110, 44, 32,111,114, 32,119,105,116,104, 32,100,101,102, 97,
-117,108,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 32, 61, 32,115,111,
- 99,107,101,116, 46,116,114,121, 40, 40, 99,114,101, 97,116,101, 32,111,114, 32,
-115,111, 99,107,101,116, 46,116, 99,112, 41, 40, 41, 41, 10, 32, 32, 32, 32,108,
-111, 99, 97,108, 32,104, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116,
- 97,116, 97, 98,108,101, 40,123, 32, 99, 32, 61, 32, 99, 32,125, 44, 32,109,101,
-116, 97,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,102,
-105,110, 97,108,105,122,101,100, 32,116,114,121, 10, 32, 32, 32, 32,104, 46,116,
-114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,121, 40,102,
-117,110, 99,116,105,111,110, 40, 41, 32,104, 58, 99,108,111,115,101, 40, 41, 32,
-101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,116, 32,116,105,109,101,
-111,117,116, 32, 98,101,102,111,114,101, 32, 99,111,110,110,101, 99,116,105,110,
-103, 10, 32, 32, 32, 32,104, 46,116,114,121, 40, 99, 58,115,101,116,116,105,109,
-101,111,117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,104,
- 46,116,114,121, 40, 99, 58, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44,
- 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 41, 41, 10, 32, 32, 32, 32,
- 45, 45, 32,104,101,114,101, 32,101,118,101,114,121,116,104,105,110,103, 32,119,
-111,114,107,101,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104, 10,101,
-110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95,
- 95,105,110,100,101,120, 58,115,101,110,100,114,101,113,117,101,115,116,108,105,
-110,101, 40,109,101,116,104,111,100, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,
-108,111, 99, 97,108, 32,114,101,113,108,105,110,101, 32, 61, 32,115,116,114,105,
-110,103, 46,102,111,114,109, 97,116, 40, 34, 37,115, 32, 37,115, 32, 72, 84, 84,
- 80, 47, 49, 46, 49, 92,114, 92,110, 34, 44, 32,109,101,116,104,111,100, 32,111,
-114, 32, 34, 71, 69, 84, 34, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99,
- 58,115,101,110,100, 40,114,101,113,108,105,110,101, 41, 41, 10,101,110,100, 10,
- 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,
-100,101,120, 58,115,101,110,100,104,101, 97,100,101,114,115, 40,104,101, 97,100,
-101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34,
- 92,114, 92,110, 34, 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32,118, 32,105,
-110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115,
- 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61, 32,105, 32, 46,
- 46, 32, 34, 58, 32, 34, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110,
- 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,115,
-101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,115,101,110,100, 40,
-104, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100,
+ 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,
+114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,
+122,101, 32, 61, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,115,
+116,114,105,110,103, 46,103,115,117, 98, 40,108,105,110,101, 44, 32, 34, 59, 46,
+ 42, 34, 44, 32, 34, 34, 41, 44, 32, 49, 54, 41, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,105,122,101, 32,116,104,101,
+110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 34,105,110,118, 97,108,
+105,100, 32, 99,104,117,110,107, 32,115,105,122,101, 34, 32,101,110,100, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,119, 97,115, 32,105,116,
+ 32,116,104,101, 32,108, 97,115,116, 32, 99,104,117,110,107, 63, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,105,122,101, 32, 62, 32, 48,
+ 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 45, 45, 32,105,102, 32,110,111,116, 44, 32,103,101,116, 32, 99,104,117,
+110,107, 32, 97,110,100, 32,115,107,105,112, 32,116,101,114,109,105,110, 97,116,
+105,110,103, 32, 67, 82, 76, 70, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,
+114, 44, 32,112, 97,114,116, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,
+118,101, 40,115,105,122,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,115,
+111, 99,107, 58,114,101, 99,101,105,118,101, 40, 41, 32,101,110,100, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110,
+ 32, 99,104,117,110,107, 44, 32,101,114,114, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 45, 45, 32,105,102, 32,105,116, 32,119, 97,115, 44, 32,114,
+101, 97,100, 32,116,114, 97,105,108,101,114,115, 32,105,110,116,111, 32,104,101,
+ 97,100,101,114,115, 32,116, 97, 98,108,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 44, 32,101,114,114,
+ 32, 61, 32,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40,115,111,
+ 99,107, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,104,101, 97,100,
+101,114,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44,
+ 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+ 32,125, 41, 10,101,110,100, 10, 10,115,111, 99,107,101,116, 46,115,105,110,107,
+116, 91, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 93, 32, 61, 32,
+102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32,114,
+101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97,
+ 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32,
+ 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,
+115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105,
+111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,
+116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,
+105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,114,114,
+ 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116,
+ 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,
+111, 99,107, 58,115,101,110,100, 40, 34, 48, 92,114, 92,110, 92,114, 92,110, 34,
+ 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32,115,105,122,101, 32, 61, 32,115,116,114,105,110,103, 46,102,111,
+114,109, 97,116, 40, 34, 37, 88, 92,114, 92,110, 34, 44, 32,115,116,114,105,110,
+103, 46,108,101,110, 40, 99,104,117,110,107, 41, 41, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,115,101,
+110,100, 40,115,105,122,101, 32, 46, 46, 32, 32, 99,104,117,110,107, 32, 46, 46,
+ 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100,
+ 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 76,111,119, 32,108,101,
+118,101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,109,101,116,
+ 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,101,120, 32, 61, 32,123,125, 32,
+125, 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,104,111,115,
+116, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32,
+ 32, 45, 45, 32, 99,114,101, 97,116,101, 32,115,111, 99,107,101,116, 32,119,105,
+116,104, 32,117,115,101,114, 32, 99,111,110,110,101, 99,116, 32,102,117,110, 99,
+116,105,111,110, 44, 32,111,114, 32,119,105,116,104, 32,100,101,102, 97,117,108,
+116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 32, 61, 32,115,111, 99,107,
+101,116, 46,116,114,121, 40, 40, 99,114,101, 97,116,101, 32,111,114, 32,115,111,
+ 99,107,101,116, 46,116, 99,112, 41, 40, 41, 41, 10, 32, 32, 32, 32,108,111, 99,
+ 97,108, 32,104, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116,
+ 97, 98,108,101, 40,123, 32, 99, 32, 61, 32, 99, 32,125, 44, 32,109,101,116, 97,
+116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32,102,105,110,
+ 97,108,105,122,101,100, 32,116,114,121, 10, 32, 32, 32, 32,104, 46,116,114,121,
+ 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,121, 40,102,117,110,
+ 99,116,105,111,110, 40, 41, 32,104, 58, 99,108,111,115,101, 40, 41, 32,101,110,
+100, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,116, 32,116,105,109,101,111,117,
+116, 32, 98,101,102,111,114,101, 32, 99,111,110,110,101, 99,116,105,110,103, 10,
+ 32, 32, 32, 32,104, 46,116,114,121, 40, 99, 58,115,101,116,116,105,109,101,111,
+117,116, 40, 84, 73, 77, 69, 79, 85, 84, 41, 41, 10, 32, 32, 32, 32,104, 46,116,
+114,121, 40, 99, 58, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112,
+111,114,116, 32,111,114, 32, 80, 79, 82, 84, 41, 41, 10, 32, 32, 32, 32, 45, 45,
+ 32,104,101,114,101, 32,101,118,101,114,121,116,104,105,110,103, 32,119,111,114,
+107,101,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104, 10,101,110,100,
10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,
-110,100,101,120, 58,115,101,110,100, 98,111,100,121, 40,104,101, 97,100,101,114,
-115, 44, 32,115,111,117,114, 99,101, 44, 32,115,116,101,112, 41, 10, 32, 32, 32,
- 32,115,111,117,114, 99,101, 32, 61, 32,115,111,117,114, 99,101, 32,111,114, 32,
-108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46,101,109,112,116,121, 40, 41,
- 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111,114, 32,
-108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,
- 45, 45, 32,105,102, 32,119,101, 32,100,111,110, 39,116, 32,107,110,111,119, 32,
-116,104,101, 32,115,105,122,101, 32,105,110, 32, 97,100,118, 97,110, 99,101, 44,
- 32,115,101,110,100, 32, 99,104,117,110,107,101,100, 32, 97,110,100, 32,104,111,
-112,101, 32,102,111,114, 32,116,104,101, 32, 98,101,115,116, 10, 32, 32, 32, 32,
-108,111, 99, 97,108, 32,109,111,100,101, 32, 61, 32, 34,104,116,116,112, 45, 99,
-104,117,110,107,101,100, 34, 10, 32, 32, 32, 32,105,102, 32,104,101, 97,100,101,
-114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93,
- 32,116,104,101,110, 32,109,111,100,101, 32, 61, 32, 34,107,101,101,112, 45,111,
-112,101,110, 34, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
-115,101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46,
- 97,108,108, 40,115,111,117,114, 99,101, 44, 32,115,111, 99,107,101,116, 46,115,
-105,110,107, 40,109,111,100,101, 44, 32,115,101,108,102, 46, 99, 41, 44, 32,115,
-116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
-109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,
-101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, 32, 32,108,111,
- 99, 97,108, 32,115,116, 97,116,117,115, 32, 61, 32,115,101,108,102, 46,116,114,
-121, 40,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40, 53, 41, 41,
- 10, 32, 32, 32, 32, 45, 45, 32,105,100,101,110,116,105,102,121, 32, 72, 84, 84,
- 80, 47, 48, 46, 57, 32,114,101,115,112,111,110,115,101,115, 44, 32,119,104,105,
- 99,104, 32,100,111, 32,110,111,116, 32, 99,111,110,116, 97,105,110, 32, 97, 32,
-115,116, 97,116,117,115, 32,108,105,110,101, 10, 32, 32, 32, 32, 45, 45, 32,116,
-104,105,115, 32,105,115, 32,106,117,115,116, 32, 97, 32,104,101,117,114,105,115,
-116,105, 99, 44, 32, 98,117,116, 32,105,115, 32,119,104, 97,116, 32,116,104,101,
- 32, 82, 70, 67, 32,114,101, 99,111,109,109,101,110,100,115, 10, 32, 32, 32, 32,
-105,102, 32,115,116, 97,116,117,115, 32,126, 61, 32, 34, 72, 84, 84, 80, 47, 34,
- 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,115,116,
- 97,116,117,115, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,111,116,104,101,
-114,119,105,115,101, 32,112,114,111, 99,101,101,100, 32,114,101, 97,100,105,110,
-103, 32, 97, 32,115,116, 97,116,117,115, 32,108,105,110,101, 10, 32, 32, 32, 32,
-115,116, 97,116,117,115, 32, 61, 32,115,101,108,102, 46,116,114,121, 40,115,101,
-108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40, 34, 42,108, 34, 44, 32,115,
-116, 97,116,117,115, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,
-100,101, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,
-115,116,114,105,110,103, 46,102,105,110,100, 40,115,116, 97,116,117,115, 44, 32,
- 34, 72, 84, 84, 80, 47, 37,100, 42, 37, 46, 37,100, 42, 32, 40, 37,100, 37,100,
- 37,100, 41, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,
-108,102, 46,116,114,121, 40, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114,
- 40, 99,111,100,101, 41, 44, 32,115,116, 97,116,117,115, 41, 10,101,110,100, 10,
- 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,
-100,101,120, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41,
- 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121,
- 40,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40,115,101,108,102,
- 46, 99, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,
-101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101,
- 98,111,100,121, 40,104,101, 97,100,101,114,115, 44, 32,115,105,110,107, 44, 32,
-115,116,101,112, 41, 10, 32, 32, 32, 32,115,105,110,107, 32, 61, 32,115,105,110,
-107, 32,111,114, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,110,117,108,108,
- 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111,
-114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 10, 32, 32,
- 32, 32,108,111, 99, 97,108, 32,108,101,110,103,116,104, 32, 61, 32, 98, 97,115,
-101, 46,116,111,110,117,109, 98,101,114, 40,104,101, 97,100,101,114,115, 91, 34,
- 99,111,110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93, 41, 10, 32, 32,
- 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,104,101, 97,100,101,114,115, 91,
- 34,116,114, 97,110,115,102,101,114, 45,101,110, 99,111,100,105,110,103, 34, 93,
- 32, 45, 45, 32,115,104,111,114,116, 99,117,116, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,109,111,100,101, 32, 61, 32, 34,100,101,102, 97,117,108,116, 34, 32,
- 45, 45, 32, 99,111,110,110,101, 99,116,105,111,110, 32, 99,108,111,115,101, 10,
- 32, 32, 32, 32,105,102, 32,116, 32, 97,110,100, 32,116, 32,126, 61, 32, 34,105,
-100,101,110,116,105,116,121, 34, 32,116,104,101,110, 32,109,111,100,101, 32, 61,
+110,100,101,120, 58,115,101,110,100,114,101,113,117,101,115,116,108,105,110,101,
+ 40,109,101,116,104,111,100, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32,114,101,113,108,105,110,101, 32, 61, 32,115,116,114,105,110,103,
+ 46,102,111,114,109, 97,116, 40, 34, 37,115, 32, 37,115, 32, 72, 84, 84, 80, 47,
+ 49, 46, 49, 92,114, 92,110, 34, 44, 32,109,101,116,104,111,100, 32,111,114, 32,
+ 34, 71, 69, 84, 34, 44, 32,117,114,105, 41, 10, 32, 32, 32, 32,114,101,116,117,
+114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,115,
+101,110,100, 40,114,101,113,108,105,110,101, 41, 41, 10,101,110,100, 10, 10,102,
+117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,
+120, 58,115,101,110,100,104,101, 97,100,101,114,115, 40,116,111,115,101,110,100,
+ 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 97,110,111,110,105, 99, 32,
+ 61, 32,104,101, 97,100,101,114,115, 46, 99, 97,110,111,110,105, 99, 10, 32, 32,
+ 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34, 92,114, 92,110, 34, 10, 32,
+ 32, 32, 32,102,111,114, 32,102, 44, 32,118, 32,105,110, 32, 98, 97,115,101, 46,
+112, 97,105,114,115, 40,116,111,115,101,110,100, 41, 32,100,111, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,104, 32, 61, 32, 40, 99, 97,110,111,110,105, 99, 91,102, 93,
+ 32,111,114, 32,102, 41, 32, 46, 46, 32, 34, 58, 32, 34, 32, 46, 46, 32,118, 32,
+ 46, 46, 32, 34, 92,114, 92,110, 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101,
+110,100, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102,
+ 46, 99, 58,115,101,110,100, 40,104, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,
+114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,
+101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 98,111,100,
+121, 40,104,101, 97,100,101,114,115, 44, 32,115,111,117,114, 99,101, 44, 32,115,
+116,101,112, 41, 10, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32,115,111,
+117,114, 99,101, 32,111,114, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101,
+ 46,101,109,112,116,121, 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32, 61, 32,
+115,116,101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,
+116,101,112, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119,101, 32,100,111,110,
+ 39,116, 32,107,110,111,119, 32,116,104,101, 32,115,105,122,101, 32,105,110, 32,
+ 97,100,118, 97,110, 99,101, 44, 32,115,101,110,100, 32, 99,104,117,110,107,101,
+100, 32, 97,110,100, 32,104,111,112,101, 32,102,111,114, 32,116,104,101, 32, 98,
+101,115,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,109,111,100,101, 32, 61,
32, 34,104,116,116,112, 45, 99,104,117,110,107,101,100, 34, 10, 32, 32, 32, 32,
-101,108,115,101,105,102, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114,
- 40,104,101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101,
-110,103,116,104, 34, 93, 41, 32,116,104,101,110, 32,109,111,100,101, 32, 61, 32,
- 34, 98,121, 45,108,101,110,103,116,104, 34, 32,101,110,100, 10, 32, 32, 32, 32,
+105,102, 32,104,101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45,
+108,101,110,103,116,104, 34, 93, 32,116,104,101,110, 32,109,111,100,101, 32, 61,
+ 32, 34,107,101,101,112, 45,111,112,101,110, 34, 32,101,110,100, 10, 32, 32, 32,
+ 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,108,116,110,
+ 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,
+115,111, 99,107,101,116, 46,115,105,110,107, 40,109,111,100,101, 44, 32,115,101,
+108,102, 46, 99, 41, 44, 32,115,116,101,112, 41, 41, 10,101,110,100, 10, 10,102,
+117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,
+120, 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40,
+ 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116, 97,116,117,115, 32, 61,
+ 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,114,101, 99,
+101,105,118,101, 40, 53, 41, 41, 10, 32, 32, 32, 32, 45, 45, 32,105,100,101,110,
+116,105,102,121, 32, 72, 84, 84, 80, 47, 48, 46, 57, 32,114,101,115,112,111,110,
+115,101,115, 44, 32,119,104,105, 99,104, 32,100,111, 32,110,111,116, 32, 99,111,
+110,116, 97,105,110, 32, 97, 32,115,116, 97,116,117,115, 32,108,105,110,101, 10,
+ 32, 32, 32, 32, 45, 45, 32,116,104,105,115, 32,105,115, 32,106,117,115,116, 32,
+ 97, 32,104,101,117,114,105,115,116,105, 99, 44, 32, 98,117,116, 32,105,115, 32,
+119,104, 97,116, 32,116,104,101, 32, 82, 70, 67, 32,114,101, 99,111,109,109,101,
+110,100,115, 10, 32, 32, 32, 32,105,102, 32,115,116, 97,116,117,115, 32,126, 61,
+ 32, 34, 72, 84, 84, 80, 47, 34, 32,116,104,101,110, 32,114,101,116,117,114,110,
+ 32,110,105,108, 44, 32,115,116, 97,116,117,115, 32,101,110,100, 10, 32, 32, 32,
+ 32, 45, 45, 32,111,116,104,101,114,119,105,115,101, 32,112,114,111, 99,101,101,
+100, 32,114,101, 97,100,105,110,103, 32, 97, 32,115,116, 97,116,117,115, 32,108,
+105,110,101, 10, 32, 32, 32, 32,115,116, 97,116,117,115, 32, 61, 32,115,101,108,
+102, 46,116,114,121, 40,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101,
+ 40, 34, 42,108, 34, 44, 32,115,116, 97,116,117,115, 41, 41, 10, 32, 32, 32, 32,
+108,111, 99, 97,108, 32, 99,111,100,101, 32, 61, 32,115,111, 99,107,101,116, 46,
+115,107,105,112, 40, 50, 44, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+115,116, 97,116,117,115, 44, 32, 34, 72, 84, 84, 80, 47, 37,100, 42, 37, 46, 37,
+100, 42, 32, 40, 37,100, 37,100, 37,100, 41, 34, 41, 41, 10, 32, 32, 32, 32,114,
+101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40, 98, 97,115,101, 46,
+116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,115,116, 97,116,
+117,115, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,
+116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101,104,
+101, 97,100,101,114,115, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+115,101,108,102, 46,116,114,121, 40,114,101, 99,101,105,118,101,104,101, 97,100,
+101,114,115, 40,115,101,108,102, 46, 99, 41, 41, 10,101,110,100, 10, 10,102,117,
+110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120,
+ 58,114,101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115,
+ 44, 32,115,105,110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,115,105,
+110,107, 32, 61, 32,115,105,110,107, 32,111,114, 32,108,116,110, 49, 50, 46,115,
+105,110,107, 46,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,115,116,101,112, 32,
+ 61, 32,115,116,101,112, 32,111,114, 32,108,116,110, 49, 50, 46,112,117,109,112,
+ 46,115,116,101,112, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,101,110,103,
+116,104, 32, 61, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104,
+101, 97,100,101,114,115, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110,103,
+116,104, 34, 93, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,
+104,101, 97,100,101,114,115, 91, 34,116,114, 97,110,115,102,101,114, 45,101,110,
+ 99,111,100,105,110,103, 34, 93, 32, 45, 45, 32,115,104,111,114,116, 99,117,116,
+ 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,109,111,100,101, 32, 61, 32, 34,100,
+101,102, 97,117,108,116, 34, 32, 45, 45, 32, 99,111,110,110,101, 99,116,105,111,
+110, 32, 99,108,111,115,101, 10, 32, 32, 32, 32,105,102, 32,116, 32, 97,110,100,
+ 32,116, 32,126, 61, 32, 34,105,100,101,110,116,105,116,121, 34, 32,116,104,101,
+110, 32,109,111,100,101, 32, 61, 32, 34,104,116,116,112, 45, 99,104,117,110,107,
+101,100, 34, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32, 98, 97,115,101, 46,
+116,111,110,117,109, 98,101,114, 40,104,101, 97,100,101,114,115, 91, 34, 99,111,
+110,116,101,110,116, 45,108,101,110,103,116,104, 34, 93, 41, 32,116,104,101,110,
+ 32,109,111,100,101, 32, 61, 32, 34, 98,121, 45,108,101,110,103,116,104, 34, 32,
+101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,
+116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,
+111, 99,107,101,116, 46,115,111,117,114, 99,101, 40,109,111,100,101, 44, 32,115,
+101,108,102, 46, 99, 44, 32,108,101,110,103,116,104, 41, 44, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,115,105,110,107, 44, 32,115,116,101,112, 41, 41, 10,101,110,100,
+ 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,
+110,100,101,120, 58,114,101, 99,101,105,118,101, 48, 57, 98,111,100,121, 40,115,
+116, 97,116,117,115, 44, 32,115,105,110,107, 44, 32,115,116,101,112, 41, 10, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32,115,111,117,114, 99,101, 32, 61, 32,108,116,
+110, 49, 50, 46,115,111,117,114, 99,101, 46,114,101,119,105,110,100, 40,115,111,
+ 99,107,101,116, 46,115,111,117,114, 99,101, 40, 34,117,110,116,105,108, 45, 99,
+108,111,115,101,100, 34, 44, 32,115,101,108,102, 46, 99, 41, 41, 10, 32, 32, 32,
+ 32,115,111,117,114, 99,101, 40,115,116, 97,116,117,115, 41, 10, 32, 32, 32, 32,
114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,108,116,110, 49,
- 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111, 99,107,101,116, 46,115,111,
-117,114, 99,101, 40,109,111,100,101, 44, 32,115,101,108,102, 46, 99, 44, 32,108,
-101,110,103,116,104, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,105,110,107,
- 44, 32,115,116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
-111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,
-101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117,115, 44, 32,115,
-105,110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108,
- 32,115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114,
- 99,101, 46,114,101,119,105,110,100, 40,115,111, 99,107,101,116, 46,115,111,117,
-114, 99,101, 40, 34,117,110,116,105,108, 45, 99,108,111,115,101,100, 34, 44, 32,
-115,101,108,102, 46, 99, 41, 41, 10, 32, 32, 32, 32,115,111,117,114, 99,101, 40,
-115,116, 97,116,117,115, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,
-101,108,102, 46,116,114,121, 40,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,
-108,108, 40,115,111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32,115,116,101,
-112, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,
-116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41, 10,
- 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58, 99,108,
-111,115,101, 40, 41, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118,
-101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,
-116,105,111,110, 32, 97,100,106,117,115,116,117,114,105, 40,114,101,113,116, 41,
- 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117, 32, 61, 32,114,101,113,116, 10,
- 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, 97,
- 32,112,114,111,120,121, 44, 32,119,101, 32,110,101,101,100, 32,116,104,101, 32,
-102,117,108,108, 32,117,114,108, 46, 32,111,116,104,101,114,119,105,115,101, 44,
- 32,106,117,115,116, 32, 97, 32,112, 97,114,116, 46, 10, 32, 32, 32, 32,105,102,
- 32,110,111,116, 32,114,101,113,116, 46,112,114,111,120,121, 32, 97,110,100, 32,
-110,111,116, 32, 80, 82, 79, 88, 89, 32,116,104,101,110, 10, 32, 32, 32, 32, 32,
- 32, 32, 32,117, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-112, 97,116,104, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40,114,101,
-113,116, 46,112, 97,116,104, 44, 32, 34,105,110,118, 97,108,105,100, 32,112, 97,
-116,104, 32, 39,110,105,108, 39, 34, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,112, 97,114, 97,109,115, 32, 61, 32,114,101,113,116, 46,112, 97,114,
- 97,109,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,113,117,101,114,
-121, 32, 61, 32,114,101,113,116, 46,113,117,101,114,121, 44, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,102,114, 97,103,109,101,110,116, 32, 61, 32,114,101,
-113,116, 46,102,114, 97,103,109,101,110,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-125, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110,
- 32,117,114,108, 46, 98,117,105,108,100, 40,117, 41, 10,101,110,100, 10, 10,108,
-111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,
-112,114,111,120,121, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,
-108, 32,112,114,111,120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121,
- 32,111,114, 32, 80, 82, 79, 88, 89, 10, 32, 32, 32, 32,105,102, 32,112,114,111,
-120,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,114,111,120,
-121, 32, 61, 32,117,114,108, 46,112, 97,114,115,101, 40,112,114,111,120,121, 41,
- 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,112,114,111,120,
-121, 46,104,111,115,116, 44, 32,112,114,111,120,121, 46,112,111,114,116, 32,111,
-114, 32, 51, 49, 50, 56, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,113,116, 46,104,111,115,116,
- 44, 32,114,101,113,116, 46,112,111,114,116, 10, 32, 32, 32, 32,101,110,100, 10,
-101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,
- 97,100,106,117,115,116,104,101, 97,100,101,114,115, 40,114,101,113,116, 41, 10,
- 32, 32, 32, 32, 45, 45, 32,100,101,102, 97,117,108,116, 32,104,101, 97,100,101,
-114,115, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111,119,101,114, 32, 61,
- 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,117,115,101,114, 45, 97,103,
-101,110,116, 34, 93, 32, 61, 32, 85, 83, 69, 82, 65, 71, 69, 78, 84, 44, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 91, 34,104,111,115,116, 34, 93, 32, 61, 32,114,101,
-113,116, 46,104,111,115,116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,
-111,110,110,101, 99,116,105,111,110, 34, 93, 32, 61, 32, 34, 99,108,111,115,101,
- 44, 32, 84, 69, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,116,101, 34,
- 93, 32, 61, 32, 34,116,114, 97,105,108,101,114,115, 34, 10, 32, 32, 32, 32,125,
- 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119,101, 32,104, 97,118,101, 32, 97,
-117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32,105,110,102,111,114,109,
- 97,116,105,111,110, 44, 32,112, 97,115,115, 32,105,116, 32, 97,108,111,110,103,
- 10, 32, 32, 32, 32,105,102, 32,114,101,113,116, 46,117,115,101,114, 32, 97,110,
-100, 32,114,101,113,116, 46,112, 97,115,115,119,111,114,100, 32,116,104,101,110,
- 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,114, 91, 34, 97,117,116,104,
-111,114,105,122, 97,116,105,111,110, 34, 93, 32, 61, 32, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 34, 66, 97,115,105, 99, 32, 34, 32, 46, 46, 32, 32,
- 40,109,105,109,101, 46, 98, 54, 52, 40,114,101,113,116, 46,117,115,101,114, 32,
- 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,114,101,113,116, 46,112, 97,115,115,119,
-111,114,100, 41, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45,
- 32,111,118,101,114,114,105,100,101, 32,119,105,116,104, 32,117,115,101,114, 32,
-104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,
-105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,114,101,113,116, 46,104,
-101, 97,100,101,114,115, 32,111,114, 32,108,111,119,101,114, 41, 32,100,111, 10,
- 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,114, 91,115,116,114,105,110,103,
- 46,108,111,119,101,114, 40,105, 41, 93, 32, 61, 32,118, 10, 32, 32, 32, 32,101,
-110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,111,119,101,114, 10,
-101,110,100, 10, 10, 45, 45, 32,100,101,102, 97,117,108,116, 32,117,114,108, 32,
-112, 97,114,116,115, 10,108,111, 99, 97,108, 32,100,101,102, 97,117,108,116, 32,
- 61, 32,123, 10, 32, 32, 32, 32,104,111,115,116, 32, 61, 32, 34, 34, 44, 10, 32,
- 32, 32, 32,112,111,114,116, 32, 61, 32, 80, 79, 82, 84, 44, 10, 32, 32, 32, 32,
-112, 97,116,104, 32, 61, 34, 47, 34, 44, 10, 32, 32, 32, 32,115, 99,104,101,109,
-101, 32, 61, 32, 34,104,116,116,112, 34, 10,125, 10, 10,108,111, 99, 97,108, 32,
-102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,114,101,113,117,101,
-115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,114,115,
-101, 32,117,114,108, 32,105,102, 32,112,114,111,118,105,100,101,100, 10, 32, 32,
- 32, 32,108,111, 99, 97,108, 32,110,114,101,113,116, 32, 61, 32,114,101,113,116,
- 46,117,114,108, 32, 97,110,100, 32,117,114,108, 46,112, 97,114,115,101, 40,114,
-101,113,116, 46,117,114,108, 44, 32,100,101,102, 97,117,108,116, 41, 32,111,114,
- 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,101,120,112,108,105, 99,105,116, 32,
- 99,111,109,112,111,110,101,110,116,115, 32,111,118,101,114,114,105,100,101, 32,
-117,114,108, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98,
- 97,115,101, 46,112, 97,105,114,115, 40,114,101,113,116, 41, 32,100,111, 32,110,
-114,101,113,116, 91,105, 93, 32, 61, 32,118, 32,101,110,100, 10, 32, 32, 32, 32,
-105,102, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, 61, 32, 34, 34, 32,
-116,104,101,110, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61, 32, 56, 48,
- 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99,107,101,116, 46,116,114,121, 40,
-110,114,101,113,116, 46,104,111,115,116, 32, 97,110,100, 32,110,114,101,113,116,
- 46,104,111,115,116, 32,126, 61, 32, 34, 34, 44, 32, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 34,105,110,118, 97,108,105,100, 32,104,111,115,116, 32, 39, 34, 32, 46,
- 46, 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110,114,101,113,
-116, 46,104,111,115,116, 41, 32, 46, 46, 32, 34, 39, 34, 41, 10, 32, 32, 32, 32,
- 45, 45, 32, 99,111,109,112,117,116,101, 32,117,114,105, 32,105,102, 32,117,115,
-101,114, 32,104, 97,115,110, 39,116, 32,111,118,101,114,114,105,100,101,110, 10,
- 32, 32, 32, 32,110,114,101,113,116, 46,117,114,105, 32, 61, 32,114,101,113,116,
- 46,117,114,105, 32,111,114, 32, 97,100,106,117,115,116,117,114,105, 40,110,114,
-101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,106,117,115,116, 32,104,111,
-115,116, 32, 97,110,100, 32,112,111,114,116, 32,105,102, 32,116,104,101,114,101,
- 32,105,115, 32, 97, 32,112,114,111,120,121, 10, 32, 32, 32, 32,110,114,101,113,
-116, 46,104,111,115,116, 44, 32,110,114,101,113,116, 46,112,111,114,116, 32, 61,
- 32, 97,100,106,117,115,116,112,114,111,120,121, 40,110,114,101,113,116, 41, 10,
- 32, 32, 32, 32, 45, 45, 32, 97,100,106,117,115,116, 32,104,101, 97,100,101,114,
-115, 32,105,110, 32,114,101,113,117,101,115,116, 10, 32, 32, 32, 32,110,114,101,
-113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106,117,115,116,104,
-101, 97,100,101,114,115, 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32,110,114,101,113,116, 10,101,110,100, 10, 10,108,111, 99, 97,
-108, 32,102,117,110, 99,116,105,111,110, 32,115,104,111,117,108,100,114,101,100,
-105,114,101, 99,116, 40,114,101,113,116, 44, 32, 99,111,100,101, 44, 32,104,101,
- 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,104,101,
- 97,100,101,114,115, 46,108,111, 99, 97,116,105,111,110, 32, 97,110,100, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,114,105,110,103, 46,103,115,117,
- 98, 40,104,101, 97,100,101,114,115, 46,108,111, 99, 97,116,105,111,110, 44, 32,
- 34, 37,115, 34, 44, 32, 34, 34, 41, 32,126, 61, 32, 34, 34, 32, 97,110,100, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,114,101,113,116, 46,114,101,100,
-105,114,101, 99,116, 32,126, 61, 32,102, 97,108,115,101, 41, 32, 97,110,100, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 99,111,100,101, 32, 61, 61, 32,
- 51, 48, 49, 32,111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 50, 41, 32,
- 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,110,111,116, 32,
-114,101,113,116, 46,109,101,116,104,111,100, 32,111,114, 32,114,101,113,116, 46,
-109,101,116,104,111,100, 32, 61, 61, 32, 34, 71, 69, 84, 34, 32,111,114, 32,114,
-101,113,116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34,
- 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,110,100, 32, 40,110,111,
-116, 32,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114,
- 32,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32, 60, 32, 53,
+ 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44, 32,115,
+105,110,107, 44, 32,115,116,101,112, 41, 41, 10,101,110,100, 10, 10,102,117,110,
+ 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,
+ 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,
+101,108,102, 46, 99, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 10, 10, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,
+ 72,105,103,104, 32,108,101,118,101,108, 32, 72, 84, 84, 80, 32, 65, 80, 73, 10,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111,
+ 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,117,
+114,105, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,
+ 32, 61, 32,114,101,113,116, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,
+101,114,101, 32,105,115, 32, 97, 32,112,114,111,120,121, 44, 32,119,101, 32,110,
+101,101,100, 32,116,104,101, 32,102,117,108,108, 32,117,114,108, 46, 32,111,116,
+104,101,114,119,105,115,101, 44, 32,106,117,115,116, 32, 97, 32,112, 97,114,116,
+ 46, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,113,116, 46,112,114,
+111,120,121, 32, 97,110,100, 32,110,111,116, 32, 80, 82, 79, 88, 89, 32,116,104,
+101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,117, 32, 61, 32,123, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,115,111, 99,107,101,
+116, 46,116,114,121, 40,114,101,113,116, 46,112, 97,116,104, 44, 32, 34,105,110,
+118, 97,108,105,100, 32,112, 97,116,104, 32, 39,110,105,108, 39, 34, 41, 44, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114, 97,109,115, 32, 61, 32,
+114,101,113,116, 46,112, 97,114, 97,109,115, 44, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,113,117,101,114,121, 32, 61, 32,114,101,113,116, 46,113,117,101,
+114,121, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,102,114, 97,103,109,
+101,110,116, 32, 61, 32,114,101,113,116, 46,102,114, 97,103,109,101,110,116, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32,
+ 32, 32,114,101,116,117,114,110, 32,117,114,108, 46, 98,117,105,108,100, 40,117,
41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,
-110, 32,115,104,111,117,108,100,114,101, 99,101,105,118,101, 98,111,100,121, 40,
-114,101,113,116, 44, 32, 99,111,100,101, 41, 10, 32, 32, 32, 32,105,102, 32,114,
-101,113,116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34,
- 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 32,101,110,100,
- 10, 32, 32, 32, 32,105,102, 32, 99,111,100,101, 32, 61, 61, 32, 50, 48, 52, 32,
-111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 52, 32,116,104,101,110, 32,
-114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,105,
-102, 32, 99,111,100,101, 32, 62, 61, 32, 49, 48, 48, 32, 97,110,100, 32, 99,111,
-100,101, 32, 60, 32, 50, 48, 48, 32,116,104,101,110, 32,114,101,116,117,114,110,
- 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
- 49, 10,101,110,100, 10, 10, 45, 45, 32,102,111,114,119, 97,114,100, 32,100,101,
- 99,108, 97,114, 97,116,105,111,110,115, 10,108,111, 99, 97,108, 32,116,114,101,
-113,117,101,115,116, 44, 32,116,114,101,100,105,114,101, 99,116, 10, 10,102,117,
-110, 99,116,105,111,110, 32,116,114,101,100,105,114,101, 99,116, 40,114,101,113,
-116, 44, 32,108,111, 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,114,101,115,117,108,116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,
-100,101,114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,116,114,101,113,117,
-101,115,116, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,116,104,101,
- 32, 82, 70, 67, 32,115, 97,121,115, 32,116,104,101, 32,114,101,100,105,114,101,
- 99,116, 32, 85, 82, 76, 32,104, 97,115, 32,116,111, 32, 98,101, 32, 97, 98,115,
-111,108,117,116,101, 44, 32, 98,117,116, 32,115,111,109,101, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 45, 45, 32,115,101,114,118,101,114,115, 32,100,111, 32,110,111,
-116, 32,114,101,115,112,101, 99,116, 32,116,104, 97,116, 10, 32, 32, 32, 32, 32,
- 32, 32, 32,117,114,108, 32, 61, 32,117,114,108, 46, 97, 98,115,111,108,117,116,
-101, 40,114,101,113,116, 46,117,114,108, 44, 32,108,111, 99, 97,116,105,111,110,
- 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32,
-114,101,113,116, 46,115,111,117,114, 99,101, 44, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,115,105,110,107, 32, 61, 32,114,101,113,116, 46,115,105,110,107, 44, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,114,101,113,
-116, 46,104,101, 97,100,101,114,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,
-114,111,120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121, 44, 32, 10,
- 32, 32, 32, 32, 32, 32, 32, 32,110,114,101,100,105,114,101, 99,116,115, 32, 61,
- 32, 40,114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114,
- 32, 48, 41, 32, 43, 32, 49, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,114,101,
- 97,116,101, 32, 61, 32,114,101,113,116, 46, 99,114,101, 97,116,101, 10, 32, 32,
- 32, 32,125, 32, 32, 32, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,115,115, 32,108,
-111, 99, 97,116,105,111,110, 32,104,101, 97,100,101,114, 32, 98, 97, 99,107, 32,
- 97,115, 32, 97, 32,104,105,110,116, 32,119,101, 32,114,101,100,105,114,101, 99,
-116,101,100, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101,
- 97,100,101,114,115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,104,101, 97,100,
-101,114,115, 46,108,111, 99, 97,116,105,111,110, 32, 61, 32,104,101, 97,100,101,
-114,115, 46,108,111, 99, 97,116,105,111,110, 32,111,114, 32,108,111, 99, 97,116,
-105,111,110, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,115,117,108,
-116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116,
- 97,116,117,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,116,
-114,101,113,117,101,115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45,
- 32,119,101, 32,108,111,111,112, 32,117,110,116,105,108, 32,119,101, 32,103,101,
-116, 32,119,104, 97,116, 32,119,101, 32,119, 97,110,116, 44, 32,111,114, 10, 32,
- 32, 32, 32, 45, 45, 32,117,110,116,105,108, 32,119,101, 32, 97,114,101, 32,115,
-117,114,101, 32,116,104,101,114,101, 32,105,115, 32,110,111, 32,119, 97,121, 32,
-116,111, 32,103,101,116, 32,105,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
-110,114,101,113,116, 32, 61, 32, 97,100,106,117,115,116,114,101,113,117,101,115,
-116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32,
- 61, 32,111,112,101,110, 40,110,114,101,113,116, 46,104,111,115,116, 44, 32,110,
-114,101,113,116, 46,112,111,114,116, 44, 32,110,114,101,113,116, 46, 99,114,101,
- 97,116,101, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,114,101,113,
-117,101,115,116, 32,108,105,110,101, 32, 97,110,100, 32,104,101, 97,100,101,114,
-115, 10, 32, 32, 32, 32,104, 58,115,101,110,100,114,101,113,117,101,115,116,108,
-105,110,101, 40,110,114,101,113,116, 46,109,101,116,104,111,100, 44, 32,110,114,
-101,113,116, 46,117,114,105, 41, 10, 32, 32, 32, 32,104, 58,115,101,110,100,104,
-101, 97,100,101,114,115, 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115,
- 41, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115,
- 32, 97, 32, 98,111,100,121, 44, 32,115,101,110,100, 32,105,116, 10, 32, 32, 32,
- 32,105,102, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,
-110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,115,101,110,100, 98,111,100,121,
- 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 44, 32,110,114,101,113,
-116, 46,115,111,117,114, 99,101, 44, 32,110,114,101,113,116, 46,115,116,101,112,
- 41, 32, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108,
- 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104, 58,114,101,
- 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32,
- 32, 32, 45, 45, 32,105,102, 32,105,116, 32,105,115, 32, 97,110, 32, 72, 84, 84,
- 80, 47, 48, 46, 57, 32,115,101,114,118,101,114, 44, 32,115,105,109,112,108,121,
- 32,103,101,116, 32,116,104,101, 32, 98,111,100,121, 32, 97,110,100, 32,119,101,
- 32, 97,114,101, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,110,111,116,
- 32, 99,111,100,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104,
- 58,114,101, 99,101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117,
-115, 44, 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116,
- 46,115,116,101,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,
-110, 32, 49, 44, 32, 50, 48, 48, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
- 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32, 45,
- 45, 32,105,103,110,111,114,101, 32, 97,110,121, 32, 49, 48, 48, 45, 99,111,110,
-116,105,110,117,101, 32,109,101,115,115, 97,103,101,115, 10, 32, 32, 32, 32,119,
-104,105,108,101, 32, 99,111,100,101, 32, 61, 61, 32, 49, 48, 48, 32,100,111, 32,
- 10, 32, 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,
- 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61,
- 32,104, 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101,
- 40, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104,101, 97,100,101,
-114,115, 32, 61, 32,104, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,
-115, 40, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,116, 32,116,104,105,115, 32,112,
-111,105,110,116, 32,119,101, 32,115,104,111,117,108,100, 32,104, 97,118,101, 32,
- 97, 32,104,111,110,101,115,116, 32,114,101,112,108,121, 32,102,114,111,109, 32,
-116,104,101, 32,115,101,114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32,119,101,
- 32, 99, 97,110, 39,116, 32,114,101,100,105,114,101, 99,116, 32,105,102, 32,119,
-101, 32, 97,108,114,101, 97,100,121, 32,117,115,101,100, 32,116,104,101, 32,115,
-111,117,114, 99,101, 44, 32,115,111, 32,119,101, 32,114,101,112,111,114,116, 32,
-116,104,101, 32,101,114,114,111,114, 32, 10, 32, 32, 32, 32,105,102, 32,115,104,
-111,117,108,100,114,101,100,105,114,101, 99,116, 40,110,114,101,113,116, 44, 32,
- 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 41, 32, 97,110,100, 32,110,
-111,116, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,110,
- 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58, 99,108,111,115,101, 40, 41, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,116,114,101,100,105,114,
-101, 99,116, 40,114,101,113,116, 44, 32,104,101, 97,100,101,114,115, 46,108,111,
- 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
- 45, 45, 32,104,101,114,101, 32,119,101, 32, 97,114,101, 32,102,105,110, 97,108,
-108,121, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,115,104,111,117,108,
-100,114,101, 99,101,105,118,101, 98,111,100,121, 40,110,114,101,113,116, 44, 32,
- 99,111,100,101, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104,
- 58,114,101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115,
- 44, 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46,
-115,116,101,112, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104, 58,
- 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49,
- 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97,
-116,117,115, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,
-105,111,110, 32,115,114,101,113,117,101,115,116, 40,117, 44, 32, 98, 41, 10, 32,
- 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,
-108,111, 99, 97,108, 32,114,101,113,116, 32, 61, 32,123, 10, 32, 32, 32, 32, 32,
- 32, 32, 32,117,114,108, 32, 61, 32,117, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-115,105,110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97,
- 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32,
- 98, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,
-115,111,117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,
-101, 46,115,116,114,105,110,103, 40, 98, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-114,101,113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32,123, 10, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,108,
-101,110,103,116,104, 34, 93, 32, 61, 32,115,116,114,105,110,103, 46,108,101,110,
- 40, 98, 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,
-111,110,116,101,110,116, 45,116,121,112,101, 34, 93, 32, 61, 32, 34, 97,112,112,
-108,105, 99, 97,116,105,111,110, 47,120, 45,119,119,119, 45,102,111,114,109, 45,
-117,114,108,101,110, 99,111,100,101,100, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-125, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,109,101,116,104,111,
-100, 32, 61, 32, 34, 80, 79, 83, 84, 34, 10, 32, 32, 32, 32,101,110,100, 10, 32,
- 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,
-114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,115,111, 99,107,101,116, 46,
-115,107,105,112, 40, 49, 44, 32,116,114,101,113,117,101,115,116, 40,114,101,113,
-116, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101,
- 46, 99,111,110, 99, 97,116, 40,116, 41, 44, 32, 99,111,100,101, 44, 32,104,101,
- 97,100,101,114,115, 44, 32,115,116, 97,116,117,115, 10,101,110,100, 10, 10,114,
-101,113,117,101,115,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,
-101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,114,101,113,116, 44, 32, 98,
-111,100,121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,
-101, 40,114,101,113,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32,
-116,104,101,110, 32,114,101,116,117,114,110, 32,115,114,101,113,117,101,115,116,
- 40,114,101,113,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,
-101, 32,114,101,116,117,114,110, 32,116,114,101,113,117,101,115,116, 40,114,101,
-113,116, 41, 32,101,110,100, 10,101,110,100, 41, 10,
+110, 32, 97,100,106,117,115,116,112,114,111,120,121, 40,114,101,113,116, 41, 10,
+ 32, 32, 32, 32,108,111, 99, 97,108, 32,112,114,111,120,121, 32, 61, 32,114,101,
+113,116, 46,112,114,111,120,121, 32,111,114, 32, 80, 82, 79, 88, 89, 10, 32, 32,
+ 32, 32,105,102, 32,112,114,111,120,121, 32,116,104,101,110, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,112,114,111,120,121, 32, 61, 32,117,114,108, 46,112, 97,114,115,
+101, 40,112,114,111,120,121, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,
+117,114,110, 32,112,114,111,120,121, 46,104,111,115,116, 44, 32,112,114,111,120,
+121, 46,112,111,114,116, 32,111,114, 32, 51, 49, 50, 56, 10, 32, 32, 32, 32,101,
+108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,
+101,113,116, 46,104,111,115,116, 44, 32,114,101,113,116, 46,112,111,114,116, 10,
+ 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,
+117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116,104,101, 97,100,101,114,
+115, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,100,101,102, 97,117,
+108,116, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,108,111, 99, 97,108,
+ 32,108,111,119,101,114, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91,
+ 34,117,115,101,114, 45, 97,103,101,110,116, 34, 93, 32, 61, 32, 85, 83, 69, 82,
+ 65, 71, 69, 78, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34,104,111,115,
+116, 34, 93, 32, 61, 32,114,101,113,116, 46,104,111,115,116, 44, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 91, 34, 99,111,110,110,101, 99,116,105,111,110, 34, 93, 32,
+ 61, 32, 34, 99,108,111,115,101, 44, 32, 84, 69, 34, 44, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 91, 34,116,101, 34, 93, 32, 61, 32, 34,116,114, 97,105,108,101,114,
+115, 34, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32, 45, 45, 32,105,102, 32,119,
+101, 32,104, 97,118,101, 32, 97,117,116,104,101,110,116,105, 99, 97,116,105,111,
+110, 32,105,110,102,111,114,109, 97,116,105,111,110, 44, 32,112, 97,115,115, 32,
+105,116, 32, 97,108,111,110,103, 10, 32, 32, 32, 32,105,102, 32,114,101,113,116,
+ 46,117,115,101,114, 32, 97,110,100, 32,114,101,113,116, 46,112, 97,115,115,119,
+111,114,100, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,
+101,114, 91, 34, 97,117,116,104,111,114,105,122, 97,116,105,111,110, 34, 93, 32,
+ 61, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 34, 66, 97,115,105,
+ 99, 32, 34, 32, 46, 46, 32, 32, 40,109,105,109,101, 46, 98, 54, 52, 40,114,101,
+113,116, 46,117,115,101,114, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,114,101,
+113,116, 46,112, 97,115,115,119,111,114,100, 41, 41, 10, 32, 32, 32, 32,101,110,
+100, 10, 32, 32, 32, 32, 45, 45, 32,111,118,101,114,114,105,100,101, 32,119,105,
+116,104, 32,117,115,101,114, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,
+102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,
+115, 40,114,101,113,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,108,111,
+119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,119,101,
+114, 91,115,116,114,105,110,103, 46,108,111,119,101,114, 40,105, 41, 93, 32, 61,
+ 32,118, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,
+110, 32,108,111,119,101,114, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102, 97,
+117,108,116, 32,117,114,108, 32,112, 97,114,116,115, 10,108,111, 99, 97,108, 32,
+100,101,102, 97,117,108,116, 32, 61, 32,123, 10, 32, 32, 32, 32,104,111,115,116,
+ 32, 61, 32, 34, 34, 44, 10, 32, 32, 32, 32,112,111,114,116, 32, 61, 32, 80, 79,
+ 82, 84, 44, 10, 32, 32, 32, 32,112, 97,116,104, 32, 61, 34, 47, 34, 44, 10, 32,
+ 32, 32, 32,115, 99,104,101,109,101, 32, 61, 32, 34,104,116,116,112, 34, 10,125,
+ 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,
+117,115,116,114,101,113,117,101,115,116, 40,114,101,113,116, 41, 10, 32, 32, 32,
+ 32, 45, 45, 32,112, 97,114,115,101, 32,117,114,108, 32,105,102, 32,112,114,111,
+118,105,100,101,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110,114,101,113,
+116, 32, 61, 32,114,101,113,116, 46,117,114,108, 32, 97,110,100, 32,117,114,108,
+ 46,112, 97,114,115,101, 40,114,101,113,116, 46,117,114,108, 44, 32,100,101,102,
+ 97,117,108,116, 41, 32,111,114, 32,123,125, 10, 32, 32, 32, 32, 45, 45, 32,101,
+120,112,108,105, 99,105,116, 32, 99,111,109,112,111,110,101,110,116,115, 32,111,
+118,101,114,114,105,100,101, 32,117,114,108, 10, 32, 32, 32, 32,102,111,114, 32,
+105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,114,101,
+113,116, 41, 32,100,111, 32,110,114,101,113,116, 91,105, 93, 32, 61, 32,118, 32,
+101,110,100, 10, 32, 32, 32, 32,105,102, 32,110,114,101,113,116, 46,112,111,114,
+116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32,110,114,101,113,116, 46,112,
+111,114,116, 32, 61, 32, 56, 48, 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99,
+107,101,116, 46,116,114,121, 40,110,114,101,113,116, 46,104,111,115,116, 32, 97,
+110,100, 32,110,114,101,113,116, 46,104,111,115,116, 32,126, 61, 32, 34, 34, 44,
+ 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 34,105,110,118, 97,108,105,100, 32,104,
+111,115,116, 32, 39, 34, 32, 46, 46, 32, 98, 97,115,101, 46,116,111,115,116,114,
+105,110,103, 40,110,114,101,113,116, 46,104,111,115,116, 41, 32, 46, 46, 32, 34,
+ 39, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32, 99,111,109,112,117,116,101, 32,117,
+114,105, 32,105,102, 32,117,115,101,114, 32,104, 97,115,110, 39,116, 32,111,118,
+101,114,114,105,100,101,110, 10, 32, 32, 32, 32,110,114,101,113,116, 46,117,114,
+105, 32, 61, 32,114,101,113,116, 46,117,114,105, 32,111,114, 32, 97,100,106,117,
+115,116,117,114,105, 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,
+ 97,106,117,115,116, 32,104,111,115,116, 32, 97,110,100, 32,112,111,114,116, 32,
+105,102, 32,116,104,101,114,101, 32,105,115, 32, 97, 32,112,114,111,120,121, 10,
+ 32, 32, 32, 32,110,114,101,113,116, 46,104,111,115,116, 44, 32,110,114,101,113,
+116, 46,112,111,114,116, 32, 61, 32, 97,100,106,117,115,116,112,114,111,120,121,
+ 40,110,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,100,106,117,115,
+116, 32,104,101, 97,100,101,114,115, 32,105,110, 32,114,101,113,117,101,115,116,
+ 10, 32, 32, 32, 32,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 32, 61,
+ 32, 97,100,106,117,115,116,104,101, 97,100,101,114,115, 40,110,114,101,113,116,
+ 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,114,101,113,116, 10,101,
+110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,
+104,111,117,108,100,114,101,100,105,114,101, 99,116, 40,114,101,113,116, 44, 32,
+ 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,
+101,116,117,114,110, 32,104,101, 97,100,101,114,115, 46,108,111, 99, 97,116,105,
+111,110, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,
+114,105,110,103, 46,103,115,117, 98, 40,104,101, 97,100,101,114,115, 46,108,111,
+ 99, 97,116,105,111,110, 44, 32, 34, 37,115, 34, 44, 32, 34, 34, 41, 32,126, 61,
+ 32, 34, 34, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,
+114,101,113,116, 46,114,101,100,105,114,101, 99,116, 32,126, 61, 32,102, 97,108,
+115,101, 41, 32, 97,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,
+ 99,111,100,101, 32, 61, 61, 32, 51, 48, 49, 32,111,114, 32, 99,111,100,101, 32,
+ 61, 61, 32, 51, 48, 50, 32,111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48,
+ 51, 32,111,114, 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 55, 41, 32, 97,110,
+100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 40,110,111,116, 32,114,101,
+113,116, 46,109,101,116,104,111,100, 32,111,114, 32,114,101,113,116, 46,109,101,
+116,104,111,100, 32, 61, 61, 32, 34, 71, 69, 84, 34, 32,111,114, 32,114,101,113,
+116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, 41, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,110,100, 32, 40,110,111,116, 32,
+114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, 32,114,
+101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32, 60, 32, 53, 41, 10,
+101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,
+115,104,111,117,108,100,114,101, 99,101,105,118,101, 98,111,100,121, 40,114,101,
+113,116, 44, 32, 99,111,100,101, 41, 10, 32, 32, 32, 32,105,102, 32,114,101,113,
+116, 46,109,101,116,104,111,100, 32, 61, 61, 32, 34, 72, 69, 65, 68, 34, 32,116,
+104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32,
+ 32, 32, 32,105,102, 32, 99,111,100,101, 32, 61, 61, 32, 50, 48, 52, 32,111,114,
+ 32, 99,111,100,101, 32, 61, 61, 32, 51, 48, 52, 32,116,104,101,110, 32,114,101,
+116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,
+ 99,111,100,101, 32, 62, 61, 32, 49, 48, 48, 32, 97,110,100, 32, 99,111,100,101,
+ 32, 60, 32, 50, 48, 48, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,
+105,108, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,
+101,110,100, 10, 10, 45, 45, 32,102,111,114,119, 97,114,100, 32,100,101, 99,108,
+ 97,114, 97,116,105,111,110,115, 10,108,111, 99, 97,108, 32,116,114,101,113,117,
+101,115,116, 44, 32,116,114,101,100,105,114,101, 99,116, 10, 10,102,117,110, 99,
+116,105,111,110, 32,116,114,101,100,105,114,101, 99,116, 40,114,101,113,116, 44,
+ 32,108,111, 99, 97,116,105,111,110, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108,
+ 32,114,101,115,117,108,116, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,
+114,115, 44, 32,115,116, 97,116,117,115, 32, 61, 32,116,114,101,113,117,101,115,
+116, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,116,104,101, 32, 82,
+ 70, 67, 32,115, 97,121,115, 32,116,104,101, 32,114,101,100,105,114,101, 99,116,
+ 32, 85, 82, 76, 32,104, 97,115, 32,116,111, 32, 98,101, 32, 97, 98,115,111,108,
+117,116,101, 44, 32, 98,117,116, 32,115,111,109,101, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32, 45, 45, 32,115,101,114,118,101,114,115, 32,100,111, 32,110,111,116, 32,
+114,101,115,112,101, 99,116, 32,116,104, 97,116, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32,117,114,108, 32, 61, 32,117,114,108, 46, 97, 98,115,111,108,117,116,101, 40,
+114,101,113,116, 46,117,114,108, 44, 32,108,111, 99, 97,116,105,111,110, 41, 44,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,115,111,117,114, 99,101, 32, 61, 32,114,101,
+113,116, 46,115,111,117,114, 99,101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,
+105,110,107, 32, 61, 32,114,101,113,116, 46,115,105,110,107, 44, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,114,101,113,116, 46,
+104,101, 97,100,101,114,115, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,112,114,111,
+120,121, 32, 61, 32,114,101,113,116, 46,112,114,111,120,121, 44, 32, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,110,114,101,100,105,114,101, 99,116,115, 32, 61, 32, 40,
+114,101,113,116, 46,110,114,101,100,105,114,101, 99,116,115, 32,111,114, 32, 48,
+ 41, 32, 43, 32, 49, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,114,101, 97,116,
+101, 32, 61, 32,114,101,113,116, 46, 99,114,101, 97,116,101, 10, 32, 32, 32, 32,
+125, 32, 32, 32, 10, 32, 32, 32, 32, 45, 45, 32,112, 97,115,115, 32,108,111, 99,
+ 97,116,105,111,110, 32,104,101, 97,100,101,114, 32, 98, 97, 99,107, 32, 97,115,
+ 32, 97, 32,104,105,110,116, 32,119,101, 32,114,101,100,105,114,101, 99,116,101,
+100, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104,101, 97,100,
+101,114,115, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,104,101, 97,100,101,114,
+115, 46,108,111, 99, 97,116,105,111,110, 32, 61, 32,104,101, 97,100,101,114,115,
+ 46,108,111, 99, 97,116,105,111,110, 32,111,114, 32,108,111, 99, 97,116,105,111,
+110, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,114,101,115,117,108,116, 44,
+ 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97,116,
+117,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,116,114,101,
+113,117,101,115,116, 40,114,101,113,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,119,
+101, 32,108,111,111,112, 32,117,110,116,105,108, 32,119,101, 32,103,101,116, 32,
+119,104, 97,116, 32,119,101, 32,119, 97,110,116, 44, 32,111,114, 10, 32, 32, 32,
+ 32, 45, 45, 32,117,110,116,105,108, 32,119,101, 32, 97,114,101, 32,115,117,114,
+101, 32,116,104,101,114,101, 32,105,115, 32,110,111, 32,119, 97,121, 32,116,111,
+ 32,103,101,116, 32,105,116, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110,114,
+101,113,116, 32, 61, 32, 97,100,106,117,115,116,114,101,113,117,101,115,116, 40,
+114,101,113,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32,
+111,112,101,110, 40,110,114,101,113,116, 46,104,111,115,116, 44, 32,110,114,101,
+113,116, 46,112,111,114,116, 44, 32,110,114,101,113,116, 46, 99,114,101, 97,116,
+101, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,114,101,113,117,101,
+115,116, 32,108,105,110,101, 32, 97,110,100, 32,104,101, 97,100,101,114,115, 10,
+ 32, 32, 32, 32,104, 58,115,101,110,100,114,101,113,117,101,115,116,108,105,110,
+101, 40,110,114,101,113,116, 46,109,101,116,104,111,100, 44, 32,110,114,101,113,
+116, 46,117,114,105, 41, 10, 32, 32, 32, 32,104, 58,115,101,110,100,104,101, 97,
+100,101,114,115, 40,110,114,101,113,116, 46,104,101, 97,100,101,114,115, 41, 10,
+ 32, 32, 32, 32, 45, 45, 32,105,102, 32,116,104,101,114,101, 32,105,115, 32, 97,
+ 32, 98,111,100,121, 44, 32,115,101,110,100, 32,105,116, 10, 32, 32, 32, 32,105,
+102, 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,110, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,104, 58,115,101,110,100, 98,111,100,121, 40,110,
+114,101,113,116, 46,104,101, 97,100,101,114,115, 44, 32,110,114,101,113,116, 46,
+115,111,117,114, 99,101, 44, 32,110,114,101,113,116, 46,115,116,101,112, 41, 32,
+ 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,
+111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104, 58,114,101, 99,101,
+105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41, 10, 32, 32, 32, 32,
+ 45, 45, 32,105,102, 32,105,116, 32,105,115, 32, 97,110, 32, 72, 84, 84, 80, 47,
+ 48, 46, 57, 32,115,101,114,118,101,114, 44, 32,115,105,109,112,108,121, 32,103,
+101,116, 32,116,104,101, 32, 98,111,100,121, 32, 97,110,100, 32,119,101, 32, 97,
+114,101, 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,
+111,100,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,114,
+101, 99,101,105,118,101, 48, 57, 98,111,100,121, 40,115,116, 97,116,117,115, 44,
+ 32,110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46,115,
+116,101,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+ 49, 44, 32, 50, 48, 48, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,
+111, 99, 97,108, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32, 45, 45, 32,
+105,103,110,111,114,101, 32, 97,110,121, 32, 49, 48, 48, 45, 99,111,110,116,105,
+110,117,101, 32,109,101,115,115, 97,103,101,115, 10, 32, 32, 32, 32,119,104,105,
+108,101, 32, 99,111,100,101, 32, 61, 61, 32, 49, 48, 48, 32,100,111, 32, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,104,101, 97,100,101,114,115, 32, 61, 32,104, 58,114,
+101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40, 41, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32, 99,111,100,101, 44, 32,115,116, 97,116,117,115, 32, 61, 32,104,
+ 58,114,101, 99,101,105,118,101,115,116, 97,116,117,115,108,105,110,101, 40, 41,
+ 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115,
+ 32, 61, 32,104, 58,114,101, 99,101,105,118,101,104,101, 97,100,101,114,115, 40,
+ 41, 10, 32, 32, 32, 32, 45, 45, 32, 97,116, 32,116,104,105,115, 32,112,111,105,
+110,116, 32,119,101, 32,115,104,111,117,108,100, 32,104, 97,118,101, 32, 97, 32,
+104,111,110,101,115,116, 32,114,101,112,108,121, 32,102,114,111,109, 32,116,104,
+101, 32,115,101,114,118,101,114, 10, 32, 32, 32, 32, 45, 45, 32,119,101, 32, 99,
+ 97,110, 39,116, 32,114,101,100,105,114,101, 99,116, 32,105,102, 32,119,101, 32,
+ 97,108,114,101, 97,100,121, 32,117,115,101,100, 32,116,104,101, 32,115,111,117,
+114, 99,101, 44, 32,115,111, 32,119,101, 32,114,101,112,111,114,116, 32,116,104,
+101, 32,101,114,114,111,114, 32, 10, 32, 32, 32, 32,105,102, 32,115,104,111,117,
+108,100,114,101,100,105,114,101, 99,116, 40,110,114,101,113,116, 44, 32, 99,111,
+100,101, 44, 32,104,101, 97,100,101,114,115, 41, 32, 97,110,100, 32,110,111,116,
+ 32,110,114,101,113,116, 46,115,111,117,114, 99,101, 32,116,104,101,110, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,104, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,116,114,101,100,105,114,101, 99,
+116, 40,114,101,113,116, 44, 32,104,101, 97,100,101,114,115, 46,108,111, 99, 97,
+116,105,111,110, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45,
+ 32,104,101,114,101, 32,119,101, 32, 97,114,101, 32,102,105,110, 97,108,108,121,
+ 32,100,111,110,101, 10, 32, 32, 32, 32,105,102, 32,115,104,111,117,108,100,114,
+101, 99,101,105,118,101, 98,111,100,121, 40,110,114,101,113,116, 44, 32, 99,111,
+100,101, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 58,114,
+101, 99,101,105,118,101, 98,111,100,121, 40,104,101, 97,100,101,114,115, 44, 32,
+110,114,101,113,116, 46,115,105,110,107, 44, 32,110,114,101,113,116, 46,115,116,
+101,112, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,104, 58, 99,108,
+111,115,101, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 44, 32,
+ 99,111,100,101, 44, 32,104,101, 97,100,101,114,115, 44, 32,115,116, 97,116,117,
+115, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,
+110, 32,115,114,101,113,117,101,115,116, 40,117, 44, 32, 98, 41, 10, 32, 32, 32,
+ 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32,114,101,113,116, 32, 61, 32,123, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32,117,114,108, 32, 61, 32,117, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,105,
+110,107, 32, 61, 32,108,116,110, 49, 50, 46,115,105,110,107, 46,116, 97, 98,108,
+101, 40,116, 41, 10, 32, 32, 32, 32,125, 10, 32, 32, 32, 32,105,102, 32, 98, 32,
+116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,115,111,
+117,114, 99,101, 32, 61, 32,108,116,110, 49, 50, 46,115,111,117,114, 99,101, 46,
+115,116,114,105,110,103, 40, 98, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+113,116, 46,104,101, 97,100,101,114,115, 32, 61, 32,123, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,111,110,116,101,110,116, 45,108,101,110,
+103,116,104, 34, 93, 32, 61, 32,115,116,114,105,110,103, 46,108,101,110, 40, 98,
+ 41, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 91, 34, 99,111,110,
+116,101,110,116, 45,116,121,112,101, 34, 93, 32, 61, 32, 34, 97,112,112,108,105,
+ 99, 97,116,105,111,110, 47,120, 45,119,119,119, 45,102,111,114,109, 45,117,114,
+108,101,110, 99,111,100,101,100, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,125, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,114,101,113,116, 46,109,101,116,104,111,100, 32,
+ 61, 32, 34, 80, 79, 83, 84, 34, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+ 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,104,101, 97,100,101,114,115,
+ 44, 32,115,116, 97,116,117,115, 32, 61, 32,115,111, 99,107,101,116, 46,115,107,
+105,112, 40, 49, 44, 32,116,114,101,113,117,101,115,116, 40,114,101,113,116, 41,
+ 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,116, 97, 98,108,101, 46, 99,
+111,110, 99, 97,116, 40,116, 41, 44, 32, 99,111,100,101, 44, 32,104,101, 97,100,
+101,114,115, 44, 32,115,116, 97,116,117,115, 10,101,110,100, 10, 10,114,101,113,
+117,101,115,116, 32, 61, 32,115,111, 99,107,101,116, 46,112,114,111,116,101, 99,
+116, 40,102,117,110, 99,116,105,111,110, 40,114,101,113,116, 44, 32, 98,111,100,
+121, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,
+114,101,113,116, 41, 32, 61, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104,
+101,110, 32,114,101,116,117,114,110, 32,115,114,101,113,117,101,115,116, 40,114,
+101,113,116, 44, 32, 98,111,100,121, 41, 10, 32, 32, 32, 32,101,108,115,101, 32,
+114,101,116,117,114,110, 32,116,114,101,113,117,101,115,116, 40,114,101,113,116,
+ 41, 32,101,110,100, 10,101,110,100, 41, 10,
0 };
return luaL_dostring(L, (const char*)B);
} /* end of embedded lua code */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c
index 3d30698cadc..8bad83e7aa1 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Internet domain functions
* LuaSocket toolkit
-*
-* RCS ID: $Id: inet.c,v 1.28 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include <stdio.h>
#include <string.h>
@@ -12,22 +10,75 @@
#include "inet.h"
-#if defined(__SUNOS__) || defined (__SUN__)
-#define INET_ATON 1
-#endif
+#if defined(__MINGW32__)
+const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt)
+{
+ if (af == AF_INET)
+ {
+ struct sockaddr_in in;
+ memset(&in, 0, sizeof(in));
+ in.sin_family = AF_INET;
+ memcpy(&in.sin_addr, src, sizeof(struct in_addr));
+ getnameinfo((struct sockaddr *)&in, sizeof(struct
+sockaddr_in), dst, cnt, NULL, 0, NI_NUMERICHOST);
+ return dst;
+ }
+ else if (af == AF_INET6)
+ {
+ struct sockaddr_in6 in;
+ memset(&in, 0, sizeof(in));
+ in.sin6_family = AF_INET6;
+ memcpy(&in.sin6_addr, src, sizeof(struct in_addr6));
+ getnameinfo((struct sockaddr *)&in, sizeof(struct
+sockaddr_in6), dst, cnt, NULL, 0, NI_NUMERICHOST);
+ return dst;
+ }
+ return NULL;
+}
+
+int inet_pton(int af, const char *src, void *dst)
+{
+ struct addrinfo hints, *res, *ressave;
+
+ memset(&hints, 0, sizeof(struct addrinfo));
+ hints.ai_family = af;
+
+ if (getaddrinfo(src, NULL, &hints, &res) != 0)
+ {
+ return -1;
+ }
+
+ ressave = res;
+
+ while (res)
+ {
+ memcpy(dst, res->ai_addr, res->ai_addrlen);
+ res = res->ai_next;
+ }
+
+ freeaddrinfo(ressave);
+ return 0;
+}
+
+#endif
+
/*=========================================================================*\
* Internal function prototypes.
\*=========================================================================*/
static int inet_global_toip(lua_State *L);
+static int inet_global_getaddrinfo(lua_State *L);
static int inet_global_tohostname(lua_State *L);
+static int inet_global_getnameinfo(lua_State *L);
static void inet_pushresolved(lua_State *L, struct hostent *hp);
static int inet_global_gethostname(lua_State *L);
/* DNS functions */
-static luaL_reg func[] = {
- { "toip", inet_global_toip },
- { "tohostname", inet_global_tohostname },
+static luaL_Reg func[] = {
+ { "toip", inet_global_toip},
+ { "getaddrinfo", inet_global_getaddrinfo},
+ { "tohostname", inet_global_tohostname},
+ { "getnameinfo", inet_global_getnameinfo},
{ "gethostname", inet_global_gethostname},
{ NULL, NULL}
};
@@ -58,7 +109,7 @@ static int inet_gethost(const char *address, struct hostent **hp) {
struct in_addr addr;
if (inet_aton(address, &addr))
return socket_gethostbyaddr((char *) &addr, sizeof(addr), hp);
- else
+ else
return socket_gethostbyname(address, hp);
}
@@ -68,7 +119,7 @@ static int inet_gethost(const char *address, struct hostent **hp) {
\*-------------------------------------------------------------------------*/
static int inet_global_tohostname(lua_State *L) {
const char *address = luaL_checkstring(L, 1);
- struct hostent *hp = NULL;
+ struct hostent *hp = NULL;
int err = inet_gethost(address, &hp);
if (err != IO_DONE) {
lua_pushnil(L);
@@ -80,6 +131,52 @@ static int inet_global_tohostname(lua_State *L) {
return 2;
}
+static int inet_global_getnameinfo(lua_State *L) {
+ int i, ret;
+ char host[1024];
+ char serv[32];
+ struct addrinfo hints;
+ struct addrinfo *resolved, *iter;
+ const char *node = luaL_optstring(L, 1, NULL);
+ const char *service = luaL_optstring(L, 2, NULL);
+
+ if (!(node || service))
+ luaL_error(L, "You have to specify a hostname, a service, or both");
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_family = PF_UNSPEC;
+
+ /* getaddrinfo must get a node and a service argument */
+ ret = getaddrinfo(node ? node : "127.0.0.1", service ? service : "7",
+ &hints, &resolved);
+ if (ret != 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, socket_gaistrerror(ret));
+ return 2;
+ }
+
+ lua_newtable(L);
+ for (i = 1, iter = resolved; iter; i++, iter = iter->ai_next) {
+ getnameinfo(iter->ai_addr, (socklen_t) iter->ai_addrlen, host,
+ node ? (socklen_t) sizeof(host) : 0, serv, service ? (socklen_t) sizeof(serv) : 0, 0);
+
+ if (node) {
+ lua_pushnumber(L, i);
+ lua_pushstring(L, host);
+ lua_settable(L, -3);
+ }
+ }
+ freeaddrinfo(resolved);
+
+ if (service) {
+ lua_pushstring(L, serv);
+ return 2;
+ } else {
+ return 1;
+ }
+}
+
/*-------------------------------------------------------------------------*\
* Returns all information provided by the resolver given a host name
* or ip address
@@ -87,7 +184,7 @@ static int inet_global_tohostname(lua_State *L) {
static int inet_global_toip(lua_State *L)
{
const char *address = luaL_checkstring(L, 1);
- struct hostent *hp = NULL;
+ struct hostent *hp = NULL;
int err = inet_gethost(address, &hp);
if (err != IO_DONE) {
lua_pushnil(L);
@@ -99,6 +196,66 @@ static int inet_global_toip(lua_State *L)
return 2;
}
+int inet_optfamily(lua_State* L, int narg, const char* def)
+{
+ static const char* optname[] = { "unspec", "inet", "inet6", NULL };
+ static int optvalue[] = { PF_UNSPEC, PF_INET, PF_INET6, 0 };
+
+ return optvalue[luaL_checkoption(L, narg, def, optname)];
+}
+
+int inet_optsocktype(lua_State* L, int narg, const char* def)
+{
+ static const char* optname[] = { "stream", "dgram", NULL };
+ static int optvalue[] = { SOCK_STREAM, SOCK_DGRAM, 0 };
+
+ return optvalue[luaL_checkoption(L, narg, def, optname)];
+}
+
+static int inet_global_getaddrinfo(lua_State *L)
+{
+ const char *hostname = luaL_checkstring(L, 1);
+ struct addrinfo *iterator = NULL, *resolved = NULL;
+ struct addrinfo hints;
+ int i = 1, ret = 0;
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_family = PF_UNSPEC;
+ ret = getaddrinfo(hostname, NULL, &hints, &resolved);
+ if (ret != 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, socket_gaistrerror(ret));
+ return 2;
+ }
+ lua_newtable(L);
+ for (iterator = resolved; iterator; iterator = iterator->ai_next) {
+ char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];
+ getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen, hbuf,
+ (socklen_t) sizeof(hbuf), sbuf, 0, NI_NUMERICHOST);
+ lua_pushnumber(L, i);
+ lua_newtable(L);
+ switch (iterator->ai_family) {
+ case AF_INET:
+ lua_pushliteral(L, "family");
+ lua_pushliteral(L, "inet");
+ lua_settable(L, -3);
+ break;
+ case AF_INET6:
+ lua_pushliteral(L, "family");
+ lua_pushliteral(L, "inet6");
+ lua_settable(L, -3);
+ break;;
+ }
+ lua_pushliteral(L, "addr");
+ lua_pushstring(L, hbuf);
+ lua_settable(L, -3);
+ lua_settable(L, -3);
+ i++;
+ }
+ freeaddrinfo(resolved);
+ return 1;
+}
+
/*-------------------------------------------------------------------------*\
* Gets the host name
@@ -109,7 +266,7 @@ static int inet_global_gethostname(lua_State *L)
name[256] = '\0';
if (gethostname(name, 256) < 0) {
lua_pushnil(L);
- lua_pushstring(L, "gethostname failed");
+ lua_pushstring(L, socket_strerror(errno));
return 2;
} else {
lua_pushstring(L, name);
@@ -125,35 +282,91 @@ static int inet_global_gethostname(lua_State *L)
/*-------------------------------------------------------------------------*\
* Retrieves socket peer name
\*-------------------------------------------------------------------------*/
-int inet_meth_getpeername(lua_State *L, p_socket ps)
+int inet_meth_getpeername(lua_State *L, p_socket ps, int family)
{
- struct sockaddr_in peer;
- socklen_t peer_len = sizeof(peer);
- if (getpeername(*ps, (SA *) &peer, &peer_len) < 0) {
- lua_pushnil(L);
- lua_pushstring(L, "getpeername failed");
- } else {
- lua_pushstring(L, inet_ntoa(peer.sin_addr));
- lua_pushnumber(L, ntohs(peer.sin_port));
+ switch (family) {
+ case PF_INET: {
+ struct sockaddr_in peer;
+ socklen_t peer_len = sizeof(peer);
+ char name[INET_ADDRSTRLEN];
+ if (getpeername(*ps, (SA *) &peer, &peer_len) < 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, socket_strerror(errno));
+ return 2;
+ } else {
+ inet_ntop(family, &peer.sin_addr, name, sizeof(name));
+ lua_pushstring(L, name);
+ lua_pushnumber(L, ntohs(peer.sin_port));
+ lua_pushliteral(L, "inet");
+ return 3;
+ }
+ }
+ case PF_INET6: {
+ struct sockaddr_in6 peer;
+ socklen_t peer_len = sizeof(peer);
+ char name[INET6_ADDRSTRLEN];
+ if (getpeername(*ps, (SA *) &peer, &peer_len) < 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, socket_strerror(errno));
+ return 2;
+ } else {
+ inet_ntop(family, &peer.sin6_addr, name, sizeof(name));
+ lua_pushstring(L, name);
+ lua_pushnumber(L, ntohs(peer.sin6_port));
+ lua_pushliteral(L, "inet6");
+ return 3;
+ }
+ }
+ default:
+ lua_pushnil(L);
+ lua_pushfstring(L, "unknown family %d", family);
+ return 2;
}
- return 2;
}
/*-------------------------------------------------------------------------*\
* Retrieves socket local name
\*-------------------------------------------------------------------------*/
-int inet_meth_getsockname(lua_State *L, p_socket ps)
+int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
{
- struct sockaddr_in local;
- socklen_t local_len = sizeof(local);
- if (getsockname(*ps, (SA *) &local, &local_len) < 0) {
- lua_pushnil(L);
- lua_pushstring(L, "getsockname failed");
- } else {
- lua_pushstring(L, inet_ntoa(local.sin_addr));
- lua_pushnumber(L, ntohs(local.sin_port));
+ switch (family) {
+ case PF_INET: {
+ struct sockaddr_in local;
+ socklen_t local_len = sizeof(local);
+ char name[INET_ADDRSTRLEN];
+ if (getsockname(*ps, (SA *) &local, &local_len) < 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, socket_strerror(errno));
+ return 2;
+ } else {
+ inet_ntop(family, &local.sin_addr, name, sizeof(name));
+ lua_pushstring(L, name);
+ lua_pushnumber(L, ntohs(local.sin_port));
+ lua_pushliteral(L, "inet");
+ return 3;
+ }
+ }
+ case PF_INET6: {
+ struct sockaddr_in6 local;
+ socklen_t local_len = sizeof(local);
+ char name[INET6_ADDRSTRLEN];
+ if (getsockname(*ps, (SA *) &local, &local_len) < 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, socket_strerror(errno));
+ return 2;
+ } else {
+ inet_ntop(family, &local.sin6_addr, name, sizeof(name));
+ lua_pushstring(L, name);
+ lua_pushnumber(L, ntohs(local.sin6_port));
+ lua_pushliteral(L, "inet6");
+ return 3;
+ }
+ }
+ default:
+ lua_pushnil(L);
+ lua_pushfstring(L, "unknown family %d", family);
+ return 2;
}
- return 2;
}
/*=========================================================================*\
@@ -202,58 +415,123 @@ static void inet_pushresolved(lua_State *L, struct hostent *hp)
/*-------------------------------------------------------------------------*\
* Tries to create a new inet socket
\*-------------------------------------------------------------------------*/
-const char *inet_trycreate(p_socket ps, int type) {
- return socket_strerror(socket_create(ps, AF_INET, type, 0));
+const char *inet_trycreate(p_socket ps, int family, int type) {
+ return socket_strerror(socket_create(ps, family, type, 0));
}
/*-------------------------------------------------------------------------*\
-* Tries to connect to remote address (address, port)
+* "Disconnects" a DGRAM socket
\*-------------------------------------------------------------------------*/
-const char *inet_tryconnect(p_socket ps, const char *address,
- unsigned short port, p_timeout tm)
+const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm)
{
- struct sockaddr_in remote;
- int err;
- memset(&remote, 0, sizeof(remote));
- remote.sin_family = AF_INET;
- remote.sin_port = htons(port);
- if (strcmp(address, "*")) {
- if (!inet_aton(address, &remote.sin_addr)) {
- struct hostent *hp = NULL;
- struct in_addr **addr;
- err = socket_gethostbyname(address, &hp);
- if (err != IO_DONE) return socket_hoststrerror(err);
- addr = (struct in_addr **) hp->h_addr_list;
- memcpy(&remote.sin_addr, *addr, sizeof(struct in_addr));
+ switch (family) {
+ case PF_INET: {
+ struct sockaddr_in sin;
+ memset((char *) &sin, 0, sizeof(sin));
+ sin.sin_family = AF_UNSPEC;
+ sin.sin_addr.s_addr = INADDR_ANY;
+ return socket_strerror(socket_connect(ps, (SA *) &sin,
+ sizeof(sin), tm));
+ }
+ case PF_INET6: {
+ struct sockaddr_in6 sin6;
+ struct in6_addr addrany = IN6ADDR_ANY_INIT;
+ memset((char *) &sin6, 0, sizeof(sin6));
+ sin6.sin6_family = AF_UNSPEC;
+fprintf(stderr, "disconnecting\n");
+ sin6.sin6_addr = addrany;
+ return socket_strerror(socket_connect(ps, (SA *) &sin6,
+ sizeof(sin6), tm));
}
- } else remote.sin_family = AF_UNSPEC;
- err = socket_connect(ps, (SA *) &remote, sizeof(remote), tm);
- return socket_strerror(err);
+ }
+ return NULL;
+}
+
+/*-------------------------------------------------------------------------*\
+* Tries to connect to remote address (address, port)
+\*-------------------------------------------------------------------------*/
+const char *inet_tryconnect(p_socket ps, const char *address,
+ const char *serv, p_timeout tm, struct addrinfo *connecthints)
+{
+ struct addrinfo *iterator = NULL, *resolved = NULL;
+ const char *err = NULL;
+ /* try resolving */
+ err = socket_gaistrerror(getaddrinfo(address, serv,
+ connecthints, &resolved));
+ if (err != NULL) {
+ if (resolved) freeaddrinfo(resolved);
+ return err;
+ }
+ for (iterator = resolved; iterator; iterator = iterator->ai_next) {
+ timeout_markstart(tm);
+ /* try connecting to remote address */
+ err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr,
+ (socklen_t) iterator->ai_addrlen, tm));
+ /* if success, break out of loop */
+ if (err == NULL) break;
+ }
+ freeaddrinfo(resolved);
+ /* here, if err is set, we failed */
+ return err;
+}
+
+/*-------------------------------------------------------------------------*\
+* Tries to accept a socket
+\*-------------------------------------------------------------------------*/
+const char *inet_tryaccept(p_socket server, int family, p_socket client, p_timeout tm)
+{
+ socklen_t len;
+ t_sockaddr_storage addr;
+ if (family == PF_INET6) {
+ len = sizeof(struct sockaddr_in6);
+ } else {
+ len = sizeof(struct sockaddr_in);
+ }
+ return socket_strerror(socket_accept(server, client, (SA *) &addr, &len, tm));
}
/*-------------------------------------------------------------------------*\
* Tries to bind socket to (address, port)
\*-------------------------------------------------------------------------*/
-const char *inet_trybind(p_socket ps, const char *address, unsigned short port)
+const char *inet_trybind(p_socket ps, const char *address, const char *serv,
+ struct addrinfo *bindhints)
{
- struct sockaddr_in local;
- int err;
- memset(&local, 0, sizeof(local));
- /* address is either wildcard or a valid ip address */
- local.sin_addr.s_addr = htonl(INADDR_ANY);
- local.sin_port = htons(port);
- local.sin_family = AF_INET;
- if (strcmp(address, "*") && !inet_aton(address, &local.sin_addr)) {
- struct hostent *hp = NULL;
- struct in_addr **addr;
- err = socket_gethostbyname(address, &hp);
- if (err != IO_DONE) return socket_hoststrerror(err);
- addr = (struct in_addr **) hp->h_addr_list;
- memcpy(&local.sin_addr, *addr, sizeof(struct in_addr));
+ struct addrinfo *iterator = NULL, *resolved = NULL;
+ const char *err = NULL;
+ t_socket sock = *ps;
+ /* try resolving */
+ err = socket_gaistrerror(getaddrinfo(address, serv, bindhints, &resolved));
+ if (err) {
+ if (resolved) freeaddrinfo(resolved);
+ return err;
+ }
+ /* iterate over resolved addresses until one is good */
+ for (iterator = resolved; iterator; iterator = iterator->ai_next) {
+ if(sock == SOCKET_INVALID) {
+ err = socket_strerror(socket_create(&sock, iterator->ai_family,
+ iterator->ai_socktype, iterator->ai_protocol));
+ if(err)
+ continue;
+ }
+ /* try binding to local address */
+ err = socket_strerror(socket_bind(&sock,
+ (SA *) iterator->ai_addr,
+ (socklen_t) iterator->ai_addrlen));
+
+ /* keep trying unless bind succeeded */
+ if (err) {
+ if(sock != *ps)
+ socket_destroy(&sock);
+ } else {
+ /* remember what we connected to, particularly the family */
+ *bindhints = *iterator;
+ break;
+ }
}
- err = socket_bind(ps, (SA *) &local, sizeof(local));
- if (err != IO_DONE) socket_destroy(ps);
- return socket_strerror(err);
+ /* cleanup and return error */
+ freeaddrinfo(resolved);
+ *ps = sock;
+ return err;
}
/*-------------------------------------------------------------------------*\
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h
index 7662266110a..4678ba656c4 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/inet.h
@@ -13,8 +13,6 @@
* getpeername and getsockname functions as seen by Lua programs.
*
* The Lua functions toip and tohostname are also implemented here.
-*
-* RCS ID: $Id: inet.h,v 1.16 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include "lua.h"
#include "socket.h"
@@ -26,14 +24,19 @@
int inet_open(lua_State *L);
-const char *inet_trycreate(p_socket ps, int type);
-const char *inet_tryconnect(p_socket ps, const char *address,
- unsigned short port, p_timeout tm);
-const char *inet_trybind(p_socket ps, const char *address,
- unsigned short port);
+const char *inet_trycreate(p_socket ps, int family, int type);
+const char *inet_tryconnect(p_socket ps, const char *address,
+ const char *serv, p_timeout tm, struct addrinfo *connecthints);
+const char *inet_trybind(p_socket ps, const char *address, const char *serv,
+ struct addrinfo *bindhints);
+const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm);
+const char *inet_tryaccept(p_socket server, int family, p_socket client, p_timeout tm);
+
+int inet_meth_getpeername(lua_State *L, p_socket ps, int family);
+int inet_meth_getsockname(lua_State *L, p_socket ps, int family);
-int inet_meth_getpeername(lua_State *L, p_socket ps);
-int inet_meth_getsockname(lua_State *L, p_socket ps);
+int inet_optfamily(lua_State* L, int narg, const char* def);
+int inet_optsocktype(lua_State* L, int narg, const char* def);
#ifdef INET_ATON
int inet_aton(const char *cp, struct in_addr *inp);
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/io.c b/Build/source/texk/web2c/luatexdir/luasocket/src/io.c
index 06dc50ecacc..35f46f785a9 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/io.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/io.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Input/Output abstraction
* LuaSocket toolkit
-*
-* RCS ID: $Id: io.c,v 1.6 2005/09/29 06:11:41 diego Exp $
\*=========================================================================*/
#include "io.h"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/io.h b/Build/source/texk/web2c/luatexdir/luasocket/src/io.h
index cce3aaf556b..8cca08a8602 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/io.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/io.h
@@ -11,8 +11,6 @@
*
* The module socket.h implements this interface, and thus the module tcp.h
* is very simple.
-*
-* RCS ID: $Id: io.h,v 1.11 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include <stdio.h>
#include "lua.h"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua
index b42689a34ab..fca1cb20ffd 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12.lua
@@ -2,7 +2,6 @@
-- LTN12 - Filters, sources, sinks and pumps.
-- LuaSocket toolkit.
-- Author: Diego Nehab
--- RCS ID: $Id: ltn12.lua,v 1.31 2006/04/03 04:45:42 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -20,7 +19,7 @@ pump = {}
-- 2048 seems to be better in windows...
BLOCKSIZE = 2048
-_VERSION = "LTN12 1.0.1"
+_VERSION = "LTN12 1.0.2"
-----------------------------------------------------------------------------
-- Filter stuff
@@ -38,7 +37,8 @@ end
-- chains a bunch of filters together
-- (thanks to Wim Couwenberg)
function filter.chain(...)
- local n = table.getn(arg)
+ local arg = {...}
+ local n = #arg
local top, index = 1, 1
local retry = ""
return function(chunk)
@@ -186,6 +186,7 @@ end
-- other, as if they were concatenated
-- (thanks to Wim Couwenberg)
function source.cat(...)
+ local arg = {...}
local src = table.remove(arg, 1)
return function()
while src do
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c
index 308bc31f0df..c8a6fb54d1d 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/ltn12_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c ltn12.lua ltn12_lua"
+ * This file is auto-generated by "lua2c ltn12.lua ltn12_lua"
*/
#include "lua.h"
@@ -15,245 +15,207 @@ int luatex_ltn12_lua_open (lua_State *L) {
117,114, 99,101,115, 44, 32,115,105,110,107,115, 32, 97,110,100, 32,112,117,109,
112,115, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,
108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,
-103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32,
- 36, 73,100, 58, 32,108,116,110, 49, 50, 46,108,117, 97, 44,118, 32, 49, 46, 51,
- 49, 32, 50, 48, 48, 54, 47, 48, 52, 47, 48, 51, 32, 48, 52, 58, 52, 53, 58, 52,
- 50, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,
-101, 32,109,111,100,117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32,
- 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,
-108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114,
-101, 40, 34,116, 97, 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,
-101, 32, 61, 32, 95, 71, 10,109,111,100,117,108,101, 40, 34,108,116,110, 49, 50,
- 34, 41, 10, 10,102,105,108,116,101,114, 32, 61, 32,123,125, 10,115,111,117,114,
- 99,101, 32, 61, 32,123,125, 10,115,105,110,107, 32, 61, 32,123,125, 10,112,117,
-109,112, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 50, 48, 52, 56, 32,115,101,101,
-109,115, 32,116,111, 32, 98,101, 32, 98,101,116,116,101,114, 32,105,110, 32,119,
-105,110,100,111,119,115, 46, 46, 46, 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32,
- 61, 32, 50, 48, 52, 56, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34, 76,
- 84, 78, 49, 50, 32, 49, 46, 48, 46, 49, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 70,105,108,116,101,114,
- 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,105,
-103,104, 32,108,101,118,101,108, 32,102,105,108,116,101,114, 32,116,104, 97,116,
- 32, 99,121, 99,108,101,115, 32, 97, 32,108,111,119, 45,108,101,118,101,108, 32,
-102,105,108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,102,105,108,116,
-101,114, 46, 99,121, 99,108,101, 40,108,111,119, 44, 32, 99,116,120, 44, 32,101,
-120,116,114, 97, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,
-116, 40,108,111,119, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,
-110, 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,108,111, 99, 97,108, 32,114,101,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-114,101,116, 44, 32, 99,116,120, 32, 61, 32,108,111,119, 40, 99,116,120, 44, 32,
- 99,104,117,110,107, 44, 32,101,120,116,114, 97, 41, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,114,101,116, 10, 32, 32, 32, 32,101,110,100,
- 10,101,110,100, 10, 10, 45, 45, 32, 99,104, 97,105,110,115, 32, 97, 32, 98,117,
-110, 99,104, 32,111,102, 32,102,105,108,116,101,114,115, 32,116,111,103,101,116,
-104,101,114, 10, 45, 45, 32, 40,116,104, 97,110,107,115, 32,116,111, 32, 87,105,
-109, 32, 67,111,117,119,101,110, 98,101,114,103, 41, 10,102,117,110, 99,116,105,
-111,110, 32,102,105,108,116,101,114, 46, 99,104, 97,105,110, 40, 46, 46, 46, 41,
- 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110, 32, 61, 32,116, 97, 98,108,101,
- 46,103,101,116,110, 40, 97,114,103, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108,
- 32,116,111,112, 44, 32,105,110,100,101,120, 32, 61, 32, 49, 44, 32, 49, 10, 32,
- 32, 32, 32,108,111, 99, 97,108, 32,114,101,116,114,121, 32, 61, 32, 34, 34, 10,
- 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40,
- 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,114,121,
- 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32,114,101,116,114,121, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,105,110,100,101,
-120, 32, 61, 61, 32,116,111,112, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, 32, 97,114,
-103, 91,105,110,100,101,120, 93, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107,
- 32, 61, 61, 32, 34, 34, 32,111,114, 32,116,111,112, 32, 61, 61, 32,110, 32,116,
-104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32,
- 99,104,117,110,107, 32,116,104,101,110, 32,105,110,100,101,120, 32, 61, 32,105,
-110,100,101,120, 32, 43, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,111,112, 32, 61, 32,116,111,112, 43,
- 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,105,110,100,101,120, 32, 61, 32,116,111,112, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61, 32, 97,114,103, 91,105,
-110,100,101,120, 93, 40, 99,104,117,110,107, 32,111,114, 32, 34, 34, 41, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,
-117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,110,100,101,120,
- 32, 61, 32,105,110,100,101,120, 32, 45, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32,
+103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,
+117,108,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,
+117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108,
+ 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,116, 97,
+ 98,108,101, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95,
+ 71, 10,109,111,100,117,108,101, 40, 34,108,116,110, 49, 50, 34, 41, 10, 10,102,
+105,108,116,101,114, 32, 61, 32,123,125, 10,115,111,117,114, 99,101, 32, 61, 32,
+123,125, 10,115,105,110,107, 32, 61, 32,123,125, 10,112,117,109,112, 32, 61, 32,
+123,125, 10, 10, 45, 45, 32, 50, 48, 52, 56, 32,115,101,101,109,115, 32,116,111,
+ 32, 98,101, 32, 98,101,116,116,101,114, 32,105,110, 32,119,105,110,100,111,119,
+115, 46, 46, 46, 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52,
+ 56, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34, 76, 84, 78, 49, 50, 32,
+ 49, 46, 48, 46, 50, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 10, 45, 45, 32, 70,105,108,116,101,114, 32,115,116,117,102,
+102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+ 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,105,103,104, 32,108,101,
+118,101,108, 32,102,105,108,116,101,114, 32,116,104, 97,116, 32, 99,121, 99,108,
+101,115, 32, 97, 32,108,111,119, 45,108,101,118,101,108, 32,102,105,108,116,101,
+114, 10,102,117,110, 99,116,105,111,110, 32,102,105,108,116,101,114, 46, 99,121,
+ 99,108,101, 40,108,111,119, 44, 32, 99,116,120, 44, 32,101,120,116,114, 97, 41,
+ 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,108,111,119,
+ 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,
+110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99,
+ 97,108, 32,114,101,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116, 44, 32,
+ 99,116,120, 32, 61, 32,108,111,119, 40, 99,116,120, 44, 32, 99,104,117,110,107,
+ 44, 32,101,120,116,114, 97, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,
+117,114,110, 32,114,101,116, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10,
+ 10, 45, 45, 32, 99,104, 97,105,110,115, 32, 97, 32, 98,117,110, 99,104, 32,111,
+102, 32,102,105,108,116,101,114,115, 32,116,111,103,101,116,104,101,114, 10, 45,
+ 45, 32, 40,116,104, 97,110,107,115, 32,116,111, 32, 87,105,109, 32, 67,111,117,
+119,101,110, 98,101,114,103, 41, 10,102,117,110, 99,116,105,111,110, 32,102,105,
+108,116,101,114, 46, 99,104, 97,105,110, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32,
+108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,123, 46, 46, 46,125, 10, 32, 32,
+ 32, 32,108,111, 99, 97,108, 32,110, 32, 61, 32, 35, 97,114,103, 10, 32, 32, 32,
+ 32,108,111, 99, 97,108, 32,116,111,112, 44, 32,105,110,100,101,120, 32, 61, 32,
+ 49, 44, 32, 49, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116,114,121,
+ 32, 61, 32, 34, 34, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110,
+ 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32,114,101,116,114,121, 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32,114,
+101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,
+114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,
+102, 32,105,110,100,101,120, 32, 61, 61, 32,116,111,112, 32,116,104,101,110, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,
+107, 32, 61, 32, 97,114,103, 91,105,110,100,101,120, 93, 40, 99,104,117,110,107,
+ 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102,
+ 32, 99,104,117,110,107, 32, 61, 61, 32, 34, 34, 32,111,114, 32,116,111,112, 32,
+ 61, 61, 32,110, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,
+110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,105,110,100,
+101,120, 32, 61, 32,105,110,100,101,120, 32, 43, 32, 49, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,111,112, 32,
+ 61, 32,116,111,112, 43, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,105,110,100,101,120, 32, 61, 32,116,111,112, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,110,107, 32, 61,
- 32,114,101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,101,108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110,
+ 32, 97,114,103, 91,105,110,100,101,120, 93, 40, 99,104,117,110,107, 32,111,114,
+ 32, 34, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32,105,102, 32, 99,104,117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110,
10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32,105,102, 32,105,110,100,101,120, 32, 61, 61, 32,110, 32,116,104,101,110, 32,
-114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,105,110,
-100,101,120, 32, 61, 32,105,110,100,101,120, 32, 43, 32, 49, 32,101,110,100, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,
- 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,102,105,108,116,101,114, 32,
-114,101,116,117,114,110,101,100, 32,105,110, 97,112,112,114,111,112,114,105, 97,
-116,101, 32,110,105,108, 34, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100,
- 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83,111,117,114, 99,
-101, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32, 97,110, 32,101,
-109,112,116,121, 32,115,111,117,114, 99,101, 10,108,111, 99, 97,108, 32,102,117,
-110, 99,116,105,111,110, 32,101,109,112,116,121, 40, 41, 10, 32, 32, 32, 32,114,
-101,116,117,114,110, 32,110,105,108, 10,101,110,100, 10, 10,102,117,110, 99,116,
-105,111,110, 32,115,111,117,114, 99,101, 46,101,109,112,116,121, 40, 41, 10, 32,
- 32, 32, 32,114,101,116,117,114,110, 32,101,109,112,116,121, 10,101,110,100, 10,
- 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,115,111,117,114, 99,101,
- 32,116,104, 97,116, 32,106,117,115,116, 32,111,117,116,112,117,116,115, 32, 97,
-110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,
-114, 99,101, 46,101,114,114,111,114, 40,101,114,114, 41, 10, 32, 32, 32, 32,114,
-101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32,
- 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114,
- 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101,
- 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,111,117,114, 99,101, 10,102,
-117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,102,105,108,101, 40,
-104, 97,110,100,108,101, 44, 32,105,111, 95,101,114,114, 41, 10, 32, 32, 32, 32,
-105,102, 32,104, 97,110,100,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32,
- 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,
-104,117,110,107, 32, 61, 32,104, 97,110,100,108,101, 58,114,101, 97,100, 40, 66,
- 76, 79, 67, 75, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32,
-104, 97,110,100,108,101, 58, 99,108,111,115,101, 40, 41, 32,101,110,100, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104,
-117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
-101,108,115,101, 32,114,101,116,117,114,110, 32,115,111,117,114, 99,101, 46,101,
-114,114,111,114, 40,105,111, 95,101,114,114, 32,111,114, 32, 34,117,110, 97, 98,
-108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108,101, 34, 41, 32,101,110,
-100, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114,110,115, 32, 97, 32,102, 97,
-110, 99,121, 32,115,111,117,114, 99,101, 32,105,110,116,111, 32, 97, 32,115,105,
-109,112,108,101, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110,
- 32,115,111,117,114, 99,101, 46,115,105,109,112,108,105,102,121, 40,115,114, 99,
- 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114,
- 99, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,
-111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,
-104,117,110,107, 44, 32,101,114,114, 95,111,114, 95,110,101,119, 32, 61, 32,115,
-114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,114, 99, 32, 61, 32,101,
-114,114, 95,111,114, 95,110,101,119, 32,111,114, 32,115,114, 99, 10, 32, 32, 32,
- 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,
-101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 95,111,
-114, 95,110,101,119, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,
-101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32, 32, 32,
-101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32,
-115,116,114,105,110,103, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,
-111,110, 32,115,111,117,114, 99,101, 46,115,116,114,105,110,103, 40,115, 41, 10,
- 32, 32, 32, 32,105,102, 32,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,108,111, 99, 97,108, 32,105, 32, 61, 32, 49, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,
-117,110,107, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115, 44, 32,
-105, 44, 32,105, 43, 66, 76, 79, 67, 75, 83, 73, 90, 69, 45, 49, 41, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, 32, 61, 32,105, 32, 43, 32, 66, 76,
- 79, 67, 75, 83, 73, 90, 69, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-105,102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,
-114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108,
- 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
- 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111,117,114, 99,101, 46,
-101,109,112,116,121, 40, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
- 99,114,101, 97,116,101,115, 32,114,101,119,105,110,100, 97, 98,108,101, 32,115,
-111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,
-101, 46,114,101,119,105,110,100, 40,115,114, 99, 41, 10, 32, 32, 32, 32, 98, 97,
-115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 41, 10, 32, 32, 32, 32,108,
-111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32, 32, 32,114,101,116,117,
-114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107, 41, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,
-116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,104,117,
-110,107, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101, 40,116, 41,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,
- 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,114,
- 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,
- 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32,
- 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,116, 44, 32, 99,
-104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32,
- 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
-115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,115,114, 99, 44, 32,102, 41,
- 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, 99,
- 32, 97,110,100, 32,102, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108, 97,
-115,116, 95,105,110, 44, 32,108, 97,115,116, 95,111,117,116, 32, 61, 32, 34, 34,
- 44, 32, 34, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,116, 97,116,101,
- 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,101,114,114, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,
-110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,
-110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,101,110, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114,
- 40, 39,115,111,117,114, 99,101, 32,105,115, 32,101,109,112,116,121, 33, 39, 44,
- 32, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116, 97,116,101, 32, 61,
- 61, 32, 34,102,101,101,100,105,110,103, 34, 32,116,104,101,110, 10, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116, 95,105,110,
- 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,
-110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,
-100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,
-115,116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,
-111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,101,110, 10, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,
-108, 97,115,116, 95,105,110, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,
-101, 46,101,114,114,111,114, 40, 39,102,105,108,116,101,114, 32,114,101,116,117,
-114,110,101,100, 32,105,110, 97,112,112,114,111,112,114,105, 97,116,101, 32,110,
-105,108, 39, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110,
- 32,110,105,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,101,108,115,101,105,102, 32,108, 97,115,116, 95,111,117,116,
- 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116, 97,116,101, 32, 61, 32,
- 34,101, 97,116,105,110,103, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32,
-116,104,101,110, 32,108, 97,115,116, 95,105,110, 32, 61, 32, 34, 34, 32,101,110,
-100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116, 95,111,117,116, 32,
- 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,111,117,116,
- 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,
-105,110, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,
- 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 39,102,105,108,
-116,101,114, 32,114,101,116,117,114,110,101,100, 32, 34, 34, 39, 41, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,
-100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,
-115,101,105,102, 32,110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,
+ 32,105,110,100,101,120, 32, 61, 32,105,110,100,101,120, 32, 45, 32, 49, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99,
+104,117,110,107, 32, 61, 32,114,101,116,114,121, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32, 99,104,117,110,
+107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32,105,102, 32,105,110,100,101,120, 32, 61, 61, 32,110,
+ 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+108,115,101, 32,105,110,100,101,120, 32, 61, 32,105,110,100,101,120, 32, 43, 32,
+ 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,101,108,115,101, 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,102,
+105,108,116,101,114, 32,114,101,116,117,114,110,101,100, 32,105,110, 97,112,112,
+114,111,112,114,105, 97,116,101, 32,110,105,108, 34, 41, 32,101,110,100, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+ 32, 83,111,117,114, 99,101, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,
+101, 32, 97,110, 32,101,109,112,116,121, 32,115,111,117,114, 99,101, 10,108,111,
+ 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,101,109,112,116,121, 40, 41,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 10,101,110,100, 10,
+ 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,101,109,112,
+116,121, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,101,109,112,116,
+121, 10,101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,
+115,111,117,114, 99,101, 32,116,104, 97,116, 32,106,117,115,116, 32,111,117,116,
+112,117,116,115, 32, 97,110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105,
+111,110, 32,115,111,117,114, 99,101, 46,101,114,114,111,114, 40,101,114,114, 41,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110,
+ 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,
+108, 44, 32,101,114,114, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,
+ 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,111,
+117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101,
+ 46,102,105,108,101, 40,104, 97,110,100,108,101, 44, 32,105,111, 95,101,114,114,
+ 41, 10, 32, 32, 32, 32,105,102, 32,104, 97,110,100,108,101, 32,116,104,101,110,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,
+116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,
+111, 99, 97,108, 32, 99,104,117,110,107, 32, 61, 32,104, 97,110,100,108,101, 58,
+114,101, 97,100, 40, 66, 76, 79, 67, 75, 83, 73, 90, 69, 41, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107,
+ 32,116,104,101,110, 32,104, 97,110,100,108,101, 58, 99,108,111,115,101, 40, 41,
+ 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,
+117,114,110, 32, 99,104,117,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,
+100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111,
+117,114, 99,101, 46,101,114,114,111,114, 40,105,111, 95,101,114,114, 32,111,114,
+ 32, 34,117,110, 97, 98,108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108,
+101, 34, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114,110,
+115, 32, 97, 32,102, 97,110, 99,121, 32,115,111,117,114, 99,101, 32,105,110,116,
+111, 32, 97, 32,115,105,109,112,108,101, 32,115,111,117,114, 99,101, 10,102,117,
+110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,115,105,109,112,108,105,
+102,121, 40,115,114, 99, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,
+101,114,116, 40,115,114, 99, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,
+111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 95,111,114, 95,110,
+101,119, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,
+114, 99, 32, 61, 32,101,114,114, 95,111,114, 95,110,101,119, 32,111,114, 32,115,
+114, 99, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,
+117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44,
+ 32,101,114,114, 95,111,114, 95,110,101,119, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+101,108,115,101, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32,101,110,
+100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,
+101, 97,116,101,115, 32,115,116,114,105,110,103, 32,115,111,117,114, 99,101, 10,
+102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46,115,116,114,105,
+110,103, 40,115, 41, 10, 32, 32, 32, 32,105,102, 32,115, 32,116,104,101,110, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,105, 32, 61, 32, 49, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,
+105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32, 99,104,117,110,107, 32, 61, 32,115,116,114,105,110,103, 46,115,
+117, 98, 40,115, 44, 32,105, 44, 32,105, 43, 66, 76, 79, 67, 75, 83, 73, 90, 69,
+ 45, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105, 32, 61, 32,
+105, 32, 43, 32, 66, 76, 79, 67, 75, 83, 73, 90, 69, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34,
+ 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,
+114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,
+110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,
+111,117,114, 99,101, 46,101,109,112,116,121, 40, 41, 32,101,110,100, 10,101,110,
+100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32,114,101,119,105,110,100,
+ 97, 98,108,101, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110,
+ 32,115,111,117,114, 99,101, 46,114,101,119,105,110,100, 40,115,114, 99, 41, 10,
+ 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114, 99, 41,
+ 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,123,125, 10, 32, 32,
+ 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,
+117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,
+ 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 99,104,117,110,107, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,
+111,118,101, 40,116, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,
+102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,
+117,114,110, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32,
+101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,116, 97, 98,108,101, 46,105,110,115,101,114,
+116, 40,116, 44, 32, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110,
+ 99,116,105,111,110, 32,115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,115,
+114, 99, 44, 32,102, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,
+114,116, 40,115,114, 99, 32, 97,110,100, 32,102, 41, 10, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32,108, 97,115,116, 95,105,110, 44, 32,108, 97,115,116, 95,111,117,
+116, 32, 61, 32, 34, 34, 44, 32, 34, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108,
+ 32,115,116, 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103, 34, 10, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32,101,114,114, 10, 32, 32, 32, 32,114,101,116,
+117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,105,102, 32,110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,
+104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101,
+ 46,101,114,114,111,114, 40, 39,115,111,117,114, 99,101, 32,105,115, 32,101,109,
+112,116,121, 33, 39, 44, 32, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,
+100, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101,
+ 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,
+116, 97,116,101, 32, 61, 61, 32, 34,102,101,101,100,105,110,103, 34, 32,116,104,
+101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,
+ 97,115,116, 95,105,110, 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,
+114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,
+101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,108, 97,115,116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115,
+116, 95,105,110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,105,102, 32,110,111,116, 32,108, 97,115,116, 95,111,117,116, 32,116,104,
101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32,116,104,101,110, 10, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
@@ -264,158 +226,195 @@ int luatex_ltn12_lua_open (lua_State *L) {
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
114,101,116,117,114,110, 32,110,105,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,
-114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10,
- 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,
-116,101,115, 32, 97, 32,115,111,117,114, 99,101, 32,116,104, 97,116, 32,112,114,
-111,100,117, 99,101,115, 32, 99,111,110,116,101,110,116,115, 32,111,102, 32,115,
-101,118,101,114, 97,108, 32,115,111,117,114, 99,101,115, 44, 32,111,110,101, 32,
- 97,102,116,101,114, 32,116,104,101, 10, 45, 45, 32,111,116,104,101,114, 44, 32,
- 97,115, 32,105,102, 32,116,104,101,121, 32,119,101,114,101, 32, 99,111,110, 99,
- 97,116,101,110, 97,116,101,100, 10, 45, 45, 32, 40,116,104, 97,110,107,115, 32,
-116,111, 32, 87,105,109, 32, 67,111,117,119,101,110, 98,101,114,103, 41, 10,102,
-117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101, 46, 99, 97,116, 40, 46,
- 46, 46, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,114, 99, 32, 61, 32,
-116, 97, 98,108,101, 46,114,101,109,111,118,101, 40, 97,114,103, 44, 32, 49, 41,
- 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110,
- 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,115,114, 99,
- 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,
-108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32,115,114, 99, 40, 41,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,
-107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 32,
-101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,
-114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,
-101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-115,114, 99, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101, 40, 97,
-114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32,
- 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 83,105,110,107, 32,115,116,
-117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102, 32,108, 97,
+115,116, 95,111,117,116, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,
+ 97,116,101, 32, 61, 32, 34,101, 97,116,105,110,103, 34, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,
+115,116, 95,105,110, 32,116,104,101,110, 32,108, 97,115,116, 95,105,110, 32, 61,
+ 32, 34, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,108, 97,115,116, 95,
+111,117,116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,
+116, 95,111,117,116, 32, 61, 32,102, 40,108, 97,115,116, 95,105,110, 41, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,
+115,116, 95,111,117,116, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102,
+ 32,108, 97,115,116, 95,105,110, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,115,116, 97,116,101, 32, 61, 32, 34,102,101,101,100,105,110,103,
+ 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,
+114, 40, 39,102,105,108,116,101,114, 32,114,101,116,117,114,110,101,100, 32, 34,
+ 34, 39, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,101,108,115,101,105,102, 32,110,111,116, 32,108, 97,115,116, 95,
+111,117,116, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,108, 97,115,116, 95,105,110, 32,
+116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114, 40,
+ 39,102,105,108,116,101,114, 32,114,101,116,117,114,110,101,100, 32,105,110, 97,
+112,112,114,111,112,114,105, 97,116,101, 32,110,105,108, 39, 41, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,
+101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,
+101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,114,101,116,117,114,110, 32,108, 97,115,116, 95,111,117,116, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45,
+ 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,111,117,114, 99,101, 32,116,
+104, 97,116, 32,112,114,111,100,117, 99,101,115, 32, 99,111,110,116,101,110,116,
+115, 32,111,102, 32,115,101,118,101,114, 97,108, 32,115,111,117,114, 99,101,115,
+ 44, 32,111,110,101, 32, 97,102,116,101,114, 32,116,104,101, 10, 45, 45, 32,111,
+116,104,101,114, 44, 32, 97,115, 32,105,102, 32,116,104,101,121, 32,119,101,114,
+101, 32, 99,111,110, 99, 97,116,101,110, 97,116,101,100, 10, 45, 45, 32, 40,116,
+104, 97,110,107,115, 32,116,111, 32, 87,105,109, 32, 67,111,117,119,101,110, 98,
+101,114,103, 41, 10,102,117,110, 99,116,105,111,110, 32,115,111,117,114, 99,101,
+ 46, 99, 97,116, 40, 46, 46, 46, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+ 97,114,103, 32, 61, 32,123, 46, 46, 46,125, 10, 32, 32, 32, 32,108,111, 99, 97,
+108, 32,115,114, 99, 32, 61, 32,116, 97, 98,108,101, 46,114,101,109,111,118,101,
+ 40, 97,114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,119,
+104,105,108,101, 32,115,114, 99, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114,
+ 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,
+110, 32, 99,104,117,110,107, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,
+114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,115,114, 99, 32, 61, 32,116, 97, 98,108,101, 46,
+114,101,109,111,118,101, 40, 97,114,103, 44, 32, 49, 41, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105,110,107, 32,
-116,104, 97,116, 32,115,116,111,114,101,115, 32,105,110,116,111, 32, 97, 32,116,
- 97, 98,108,101, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,116,
- 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,116, 32, 61, 32,116, 32,111,114,
- 32,123,125, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,102,117,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+ 32, 83,105,110,107, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101,115,
+ 32, 97, 32,115,105,110,107, 32,116,104, 97,116, 32,115,116,111,114,101,115, 32,
+105,110,116,111, 32, 97, 32,116, 97, 98,108,101, 10,102,117,110, 99,116,105,111,
+110, 32,115,105,110,107, 46,116, 97, 98,108,101, 40,116, 41, 10, 32, 32, 32, 32,
+116, 32, 61, 32,116, 32,111,114, 32,123,125, 10, 32, 32, 32, 32,108,111, 99, 97,
+108, 32,102, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107,
+ 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,
+117,110,107, 32,116,104,101,110, 32,116, 97, 98,108,101, 46,105,110,115,101,114,
+116, 40,116, 44, 32, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,101,110,100,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102, 44, 32,116, 10,101,110,100,
+ 10, 10, 45, 45, 32,116,117,114,110,115, 32, 97, 32,102, 97,110, 99,121, 32,115,
+105,110,107, 32,105,110,116,111, 32, 97, 32,115,105,109,112,108,101, 32,115,105,
+110,107, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,115,105,109,
+112,108,105,102,121, 40,115,110,107, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46,
+ 97,115,115,101,114,116, 40,115,110,107, 41, 10, 32, 32, 32, 32,114,101,116,117,
+114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,117,110,107, 44, 32,101,
+114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,
+116, 44, 32,101,114,114, 95,111,114, 95,110,101,119, 32, 61, 32,115,110,107, 40,
+ 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+105,102, 32,110,111,116, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,
+114,110, 32,110,105,108, 44, 32,101,114,114, 95,111,114, 95,110,101,119, 32,101,
+110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,110,107, 32, 61, 32,101,114,114,
+ 95,111,114, 95,110,101,119, 32,111,114, 32,115,110,107, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10,
+101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,105,
+108,101, 32,115,105,110,107, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,
+107, 46,102,105,108,101, 40,104, 97,110,100,108,101, 44, 32,105,111, 95,101,114,
+114, 41, 10, 32, 32, 32, 32,105,102, 32,104, 97,110,100,108,101, 32,116,104,101,
+110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110,
+ 99,116,105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,104,117,
+110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,104, 97,110,100,108,101, 58, 99,108,111,115,101, 40, 41, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,
+110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,
+ 32,114,101,116,117,114,110, 32,104, 97,110,100,108,101, 58,119,114,105,116,101,
+ 40, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,
+115,105,110,107, 46,101,114,114,111,114, 40,105,111, 95,101,114,114, 32,111,114,
+ 32, 34,117,110, 97, 98,108,101, 32,116,111, 32,111,112,101,110, 32,102,105,108,
+101, 34, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,
+116,101,115, 32, 97, 32,115,105,110,107, 32,116,104, 97,116, 32,100,105,115, 99,
+ 97,114,100,115, 32,100, 97,116, 97, 10,108,111, 99, 97,108, 32,102,117,110, 99,
+116,105,111,110, 32,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,
+114,110, 32, 49, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,115,
+105,110,107, 46,110,117,108,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,
+110, 32,110,117,108,108, 10,101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,
+101,115, 32, 97, 32,115,105,110,107, 32,116,104, 97,116, 32,106,117,115,116, 32,
+114,101,116,117,114,110,115, 32, 97,110, 32,101,114,114,111,114, 10,102,117,110,
+ 99,116,105,111,110, 32,115,105,110,107, 46,101,114,114,111,114, 40,101,114,114,
+ 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,
+110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,
+105,108, 44, 32,101,114,114, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10,
+ 10, 45, 45, 32, 99,104, 97,105,110,115, 32, 97, 32,115,105,110,107, 32,119,105,
+116,104, 32, 97, 32,102,105,108,116,101,114, 10,102,117,110, 99,116,105,111,110,
+ 32,115,105,110,107, 46, 99,104, 97,105,110, 40,102, 44, 32,115,110,107, 41, 10,
+ 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,102, 32, 97,110,
+100, 32,115,110,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,
110, 99,116,105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110,
- 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,116, 44, 32, 99,104,117,
-110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,
-114,110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,
-117,114,110, 32,102, 44, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,116,117,114,
-110,115, 32, 97, 32,102, 97,110, 99,121, 32,115,105,110,107, 32,105,110,116,111,
- 32, 97, 32,115,105,109,112,108,101, 32,115,105,110,107, 10,102,117,110, 99,116,
-105,111,110, 32,115,105,110,107, 46,115,105,109,112,108,105,102,121, 40,115,110,
-107, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,
-110,107, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,
-105,111,110, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, 95,111,
-114, 95,110,101,119, 32, 61, 32,115,110,107, 40, 99,104,117,110,107, 44, 32,101,
-114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,
-101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,
-101,114,114, 95,111,114, 95,110,101,119, 32,101,110,100, 10, 32, 32, 32, 32, 32,
- 32, 32, 32,115,110,107, 32, 61, 32,101,114,114, 95,111,114, 95,110,101,119, 32,
-111,114, 32,115,110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,
-110, 32, 49, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
- 99,114,101, 97,116,101,115, 32, 97, 32,102,105,108,101, 32,115,105,110,107, 10,
-102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,102,105,108,101, 40,104,
- 97,110,100,108,101, 44, 32,105,111, 95,101,114,114, 41, 10, 32, 32, 32, 32,105,
-102, 32,104, 97,110,100,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,104,
-117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,104, 97,110,100,
-108,101, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,
-104, 97,110,100,108,101, 58,119,114,105,116,101, 40, 99,104,117,110,107, 41, 32,
-101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
-101,108,115,101, 32,114,101,116,117,114,110, 32,115,105,110,107, 46,101,114,114,
-111,114, 40,105,111, 95,101,114,114, 32,111,114, 32, 34,117,110, 97, 98,108,101,
- 32,116,111, 32,111,112,101,110, 32,102,105,108,101, 34, 41, 32,101,110,100, 10,
-101,110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105,
-110,107, 32,116,104, 97,116, 32,100,105,115, 99, 97,114,100,115, 32,100, 97,116,
- 97, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,117,108,
-108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100,
- 10, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46,110,117,108,108,
- 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,117,108,108, 10,101,
-110,100, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,115,105,110,
-107, 32,116,104, 97,116, 32,106,117,115,116, 32,114,101,116,117,114,110,115, 32,
- 97,110, 32,101,114,114,111,114, 10,102,117,110, 99,116,105,111,110, 32,115,105,
-110,107, 46,101,114,114,111,114, 40,101,114,114, 41, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 10,
- 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,104, 97,105,
-110,115, 32, 97, 32,115,105,110,107, 32,119,105,116,104, 32, 97, 32,102,105,108,
-116,101,114, 10,102,117,110, 99,116,105,111,110, 32,115,105,110,107, 46, 99,104,
- 97,105,110, 40,102, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32, 98, 97,115,101,
- 46, 97,115,115,101,114,116, 40,102, 32, 97,110,100, 32,115,110,107, 41, 10, 32,
- 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40, 99,
-104,117,110,107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
-102, 32, 99,104,117,110,107, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,102,105,108,
-116,101,114,101,100, 32, 61, 32,102, 40, 99,104,117,110,107, 41, 10, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 32,
- 61, 32, 99,104,117,110,107, 32, 97,110,100, 32, 34, 34, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,114,101,116, 44, 32,115,110,107,101,114,114, 32, 61, 32,115,110,107,
- 40,102,105,108,116,101,114,101,100, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,
-101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,
-115,110,107,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,105,102, 32,102,105,108,116,101,114,101,100, 32, 61,
- 61, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 49,
- 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32,102,105,108,116,101,114,101,100, 32, 61, 32,102, 40,100,111,110,101, 41, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101,110,
-100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 80,117,109,112,
- 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 10, 45, 45, 32,112,117,109,112,115, 32,111,110,101, 32, 99,104,
-117,110,107, 32,102,114,111,109, 32,116,104,101, 32,115,111,117,114, 99,101, 32,
-116,111, 32,116,104,101, 32,115,105,110,107, 10,102,117,110, 99,116,105,111,110,
- 32,112,117,109,112, 46,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41,
- 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,115,114,
- 99, 95,101,114,114, 32, 61, 32,115,114, 99, 40, 41, 10, 32, 32, 32, 32,108,111,
- 99, 97,108, 32,114,101,116, 44, 32,115,110,107, 95,101,114,114, 32, 61, 32,115,
-110,107, 40, 99,104,117,110,107, 44, 32,115,114, 99, 95,101,114,114, 41, 10, 32,
- 32, 32, 32,105,102, 32, 99,104,117,110,107, 32, 97,110,100, 32,114,101,116, 32,
-116,104,101,110, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32,101,108,
-115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,115,114, 99, 95,101,
-114,114, 32,111,114, 32,115,110,107, 95,101,114,114, 32,101,110,100, 10,101,110,
-100, 10, 10, 45, 45, 32,112,117,109,112,115, 32, 97,108,108, 32,100, 97,116, 97,
- 32,102,114,111,109, 32, 97, 32,115,111,117,114, 99,101, 32,116,111, 32, 97, 32,
-115,105,110,107, 44, 32,117,115,105,110,103, 32, 97, 32,115,116,101,112, 32,102,
-117,110, 99,116,105,111,110, 10,102,117,110, 99,116,105,111,110, 32,112,117,109,
-112, 46, 97,108,108, 40,115,114, 99, 44, 32,115,110,107, 44, 32,115,116,101,112,
- 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,115,115,101,114,116, 40,115,114,
- 99, 32, 97,110,100, 32,115,110,107, 41, 10, 32, 32, 32, 32,115,116,101,112, 32,
- 61, 32,115,116,101,112, 32,111,114, 32,112,117,109,112, 46,115,116,101,112, 10,
- 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111, 10, 32, 32,
- 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114,
- 32, 61, 32,115,116,101,112, 40,115,114, 99, 44, 32,115,110,107, 41, 10, 32, 32,
- 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,116, 32,116,104,101,
-110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114,
- 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,
-114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,
-101,116,117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,
+ 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,126, 61, 32, 34,
+ 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,
+111, 99, 97,108, 32,102,105,108,116,101,114,101,100, 32, 61, 32,102, 40, 99,104,
+117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99,
+ 97,108, 32,100,111,110,101, 32, 61, 32, 99,104,117,110,107, 32, 97,110,100, 32,
+ 34, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,119,104,105,108,101,
+ 32,116,114,117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,115,110,107,101,
+114,114, 32, 61, 32,115,110,107, 40,102,105,108,116,101,114,101,100, 44, 32,101,
+114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+105,102, 32,110,111,116, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,
+114,110, 32,110,105,108, 44, 32,115,110,107,101,114,114, 32,101,110,100, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,102,105,
+108,116,101,114,101,100, 32, 61, 61, 32,100,111,110,101, 32,116,104,101,110, 32,
+114,101,116,117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,102,105,108,116,101,114,101,100, 32, 61, 32,
+102, 40,100,111,110,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,
+117,114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,
+100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 10, 45, 45, 32, 80,117,109,112, 32,115,116,117,102,102, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,112,117,109,112,
+115, 32,111,110,101, 32, 99,104,117,110,107, 32,102,114,111,109, 32,116,104,101,
+ 32,115,111,117,114, 99,101, 32,116,111, 32,116,104,101, 32,115,105,110,107, 10,
+102,117,110, 99,116,105,111,110, 32,112,117,109,112, 46,115,116,101,112, 40,115,
+114, 99, 44, 32,115,110,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,
+104,117,110,107, 44, 32,115,114, 99, 95,101,114,114, 32, 61, 32,115,114, 99, 40,
+ 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,115,110,107,
+ 95,101,114,114, 32, 61, 32,115,110,107, 40, 99,104,117,110,107, 44, 32,115,114,
+ 99, 95,101,114,114, 41, 10, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,
+ 97,110,100, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,
+ 49, 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,
+108, 44, 32,115,114, 99, 95,101,114,114, 32,111,114, 32,115,110,107, 95,101,114,
+114, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,112,117,109,112,115, 32,
+ 97,108,108, 32,100, 97,116, 97, 32,102,114,111,109, 32, 97, 32,115,111,117,114,
+ 99,101, 32,116,111, 32, 97, 32,115,105,110,107, 44, 32,117,115,105,110,103, 32,
+ 97, 32,115,116,101,112, 32,102,117,110, 99,116,105,111,110, 10,102,117,110, 99,
+116,105,111,110, 32,112,117,109,112, 46, 97,108,108, 40,115,114, 99, 44, 32,115,
+110,107, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32, 98, 97,115,101, 46, 97,
+115,115,101,114,116, 40,115,114, 99, 32, 97,110,100, 32,115,110,107, 41, 10, 32,
+ 32, 32, 32,115,116,101,112, 32, 61, 32,115,116,101,112, 32,111,114, 32,112,117,
+109,112, 46,115,116,101,112, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,
+117,101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+114,101,116, 44, 32,101,114,114, 32, 61, 32,115,116,101,112, 40,115,114, 99, 44,
+ 32,115,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116,
+ 32,114,101,116, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110,
+ 32,110,105,108, 44, 32,101,114,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101,110,100, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,
+101,110,100, 10, 10,
0 };
return luaL_dostring(L, (const char*)B);
} /* end of embedded lua code */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c b/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c
index ddb26d476ee..10b39407c80 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/lua_preload.c
@@ -3,6 +3,8 @@
#include "lua.h"
#include "lauxlib.h"
+#include "headers_lua.c"
+#include "mbox_lua.c"
#include "socket_lua.c"
#include "ftp_lua.c"
#include "http_lua.c"
@@ -12,18 +14,22 @@
#include "ltn12_lua.c"
#include "mime_lua.c"
+#define TEST(A) do { if (A) { \
+ fprintf(stderr,"FATAL error while preloading lua module " #A); \
+ exit(1); \
+ } \
+} while (0)
void
luatex_socketlua_open (lua_State *L) {
- if(luatex_socket_lua_open(L) ||
- luatex_ltn12_lua_open(L) ||
- luatex_mime_lua_open(L) ||
- luatex_url_lua_open(L) ||
- luatex_tp_lua_open(L) ||
- luatex_smtp_lua_open(L) ||
- luatex_http_lua_open(L) ||
- luatex_ftp_lua_open(L)) {
- fprintf(stderr,"FATAL error while preloading lua modules");
- exit(1);
- }
+ TEST(luatex_mbox_lua_open(L));
+ TEST(luatex_headers_lua_open(L));
+ TEST(luatex_socket_lua_open(L));
+ TEST(luatex_ltn12_lua_open(L));
+ TEST(luatex_mime_lua_open(L));
+ TEST(luatex_url_lua_open(L));
+ TEST(luatex_tp_lua_open(L));
+ TEST(luatex_smtp_lua_open(L));
+ TEST(luatex_http_lua_open(L));
+ TEST(luatex_ftp_lua_open(L));
}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c
index 11ffee94c46..b43114e50f7 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.c
@@ -10,8 +10,6 @@
* involved in setting up both client and server connections. The provided
* IO routines, however, follow the Lua style, being very similar to the
* standard Lua read and write functions.
-*
-* RCS ID: $Id: luasocket.c,v 1.53 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
/*=========================================================================*\
@@ -47,7 +45,7 @@ static int base_open(lua_State *L);
/*-------------------------------------------------------------------------*\
* Modules and functions
\*-------------------------------------------------------------------------*/
-static const luaL_reg mod[] = {
+static const luaL_Reg mod[] = {
{"auxiliar", auxiliar_open},
{"except", except_open},
{"timeout", timeout_open},
@@ -59,7 +57,7 @@ static const luaL_reg mod[] = {
{NULL, NULL}
};
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{"skip", global_skip},
{"__unload", global_unload},
{NULL, NULL}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h
index 67270abb937..f2ca3c159e9 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/luasocket.h
@@ -5,16 +5,14 @@
* Networking support for the Lua language
* Diego Nehab
* 9/11/1999
-*
-* RCS ID: $Id: luasocket.h,v 1.25 2007/06/11 23:44:54 diego Exp $
\*=========================================================================*/
#include "lua.h"
/*-------------------------------------------------------------------------*\
* Current socket library version
\*-------------------------------------------------------------------------*/
-#define LUASOCKET_VERSION "LuaSocket 2.0.2"
-#define LUASOCKET_COPYRIGHT "Copyright (C) 2004-2007 Diego Nehab"
+#define LUASOCKET_VERSION "LuaSocket 2.1-rc1"
+#define LUASOCKET_COPYRIGHT "Copyright (C) 1999-2012 Diego Nehab"
#define LUASOCKET_AUTHORS "Diego Nehab"
/*-------------------------------------------------------------------------*\
@@ -24,6 +22,10 @@
#define LUASOCKET_API extern
#endif
+#if LUA_VERSION_NUM > 501 & !( defined LUA_COMPAT_MODULE)
+# error Lua 5.2 requires LUA_COMPAT_MODULE defined for luaL_openlib
+#endif
+
/*-------------------------------------------------------------------------*\
* Initializes the library.
\*-------------------------------------------------------------------------*/
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mbox.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox.lua
new file mode 100644
index 00000000000..35adf4ea70a
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox.lua
@@ -0,0 +1,88 @@
+local Public = {}
+
+mbox = Public
+
+function Public.split_message(message_s)
+ local message = {}
+ message_s = string.gsub(message_s, "\r\n", "\n")
+ string.gsub(message_s, "^(.-\n)\n", function (h) message.headers = h end)
+ string.gsub(message_s, "^.-\n\n(.*)", function (b) message.body = b end)
+ if not message.body then
+ string.gsub(message_s, "^\n(.*)", function (b) message.body = b end)
+ end
+ if not message.headers and not message.body then
+ message.headers = message_s
+ end
+ return message.headers or "", message.body or ""
+end
+
+function Public.split_headers(headers_s)
+ local headers = {}
+ headers_s = string.gsub(headers_s, "\r\n", "\n")
+ headers_s = string.gsub(headers_s, "\n[ ]+", " ")
+ string.gsub("\n" .. headers_s, "\n([^\n]+)", function (h) table.insert(headers, h) end)
+ return headers
+end
+
+function Public.parse_header(header_s)
+ header_s = string.gsub(header_s, "\n[ ]+", " ")
+ header_s = string.gsub(header_s, "\n+", "")
+ local _, __, name, value = string.find(header_s, "([^%s:]-):%s*(.*)")
+ return name, value
+end
+
+function Public.parse_headers(headers_s)
+ local headers_t = Public.split_headers(headers_s)
+ local headers = {}
+ for i = 1, #headers_t do
+ local name, value = Public.parse_header(headers_t[i])
+ if name then
+ name = string.lower(name)
+ if headers[name] then
+ headers[name] = headers[name] .. ", " .. value
+ else headers[name] = value end
+ end
+ end
+ return headers
+end
+
+function Public.parse_from(from)
+ local _, __, name, address = string.find(from, "^%s*(.-)%s*%<(.-)%>")
+ if not address then
+ _, __, address = string.find(from, "%s*(.+)%s*")
+ end
+ name = name or ""
+ address = address or ""
+ if name == "" then name = address end
+ name = string.gsub(name, '"', "")
+ return name, address
+end
+
+function Public.split_mbox(mbox_s)
+ mbox = {}
+ mbox_s = string.gsub(mbox_s, "\r\n", "\n") .."\n\nFrom \n"
+ local nj, i, j = 1, 1, 1
+ while 1 do
+ i, nj = string.find(mbox_s, "\n\nFrom .-\n", j)
+ if not i then break end
+ local message = string.sub(mbox_s, j, i-1)
+ table.insert(mbox, message)
+ j = nj+1
+ end
+ return mbox
+end
+
+function Public.parse(mbox_s)
+ local mbox = Public.split_mbox(mbox_s)
+ for i = 1, #mbox do
+ mbox[i] = Public.parse_message(mbox[i])
+ end
+ return mbox
+end
+
+function Public.parse_message(message_s)
+ local message = {}
+ message.headers, message.body = Public.split_message(message_s)
+ message.headers = Public.parse_headers(message.headers)
+ return message
+end
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mbox_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox_lua.c
new file mode 100644
index 00000000000..bbe4d504b67
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mbox_lua.c
@@ -0,0 +1,147 @@
+/*
+ * This file is auto-generated by "lua2c mbox.lua mbox_lua"
+ */
+
+#include "lua.h"
+#include "lauxlib.h"
+
+int luatex_mbox_lua_open (lua_State *L) {
+ static unsigned char B[] = {
+ 108,111, 99, 97,108, 32, 80,117, 98,108,105, 99, 32, 61, 32,123,125, 10, 10,109,
+ 98,111,120, 32, 61, 32, 80,117, 98,108,105, 99, 10, 10,102,117,110, 99,116,105,
+111,110, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,109,101,115,115,
+ 97,103,101, 40,109,101,115,115, 97,103,101, 95,115, 41, 10, 32, 32, 32, 32,108,
+111, 99, 97,108, 32,109,101,115,115, 97,103,101, 32, 61, 32,123,125, 10, 32, 32,
+ 32, 32,109,101,115,115, 97,103,101, 95,115, 32, 61, 32,115,116,114,105,110,103,
+ 46,103,115,117, 98, 40,109,101,115,115, 97,103,101, 95,115, 44, 32, 34, 92,114,
+ 92,110, 34, 44, 32, 34, 92,110, 34, 41, 10, 32, 32, 32, 32,115,116,114,105,110,
+103, 46,103,115,117, 98, 40,109,101,115,115, 97,103,101, 95,115, 44, 32, 34, 94,
+ 40, 46, 45, 92,110, 41, 92,110, 34, 44, 32,102,117,110, 99,116,105,111,110, 32,
+ 40,104, 41, 32,109,101,115,115, 97,103,101, 46,104,101, 97,100,101,114,115, 32,
+ 61, 32,104, 32,101,110,100, 41, 10, 32, 32, 32, 32,115,116,114,105,110,103, 46,
+103,115,117, 98, 40,109,101,115,115, 97,103,101, 95,115, 44, 32, 34, 94, 46, 45,
+ 92,110, 92,110, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32,
+ 40, 98, 41, 32,109,101,115,115, 97,103,101, 46, 98,111,100,121, 32, 61, 32, 98,
+ 32,101,110,100, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,109,101,115,
+115, 97,103,101, 46, 98,111,100,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,109,101,115,115, 97,
+103,101, 95,115, 44, 32, 34, 94, 92,110, 40, 46, 42, 41, 34, 44, 32,102,117,110,
+ 99,116,105,111,110, 32, 40, 98, 41, 32,109,101,115,115, 97,103,101, 46, 98,111,
+100,121, 32, 61, 32, 98, 32,101,110,100, 41, 10, 32, 32, 32, 32,101,110,100, 10,
+ 32, 32, 32, 32,105,102, 32,110,111,116, 32,109,101,115,115, 97,103,101, 46,104,
+101, 97,100,101,114,115, 32, 97,110,100, 32,110,111,116, 32,109,101,115,115, 97,
+103,101, 46, 98,111,100,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32,109,101,115,115, 97,103,101, 46,104,101, 97,100,101,114,115, 32, 61, 32,109,
+101,115,115, 97,103,101, 95,115, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+ 32,114,101,116,117,114,110, 32,109,101,115,115, 97,103,101, 46,104,101, 97,100,
+101,114,115, 32,111,114, 32, 34, 34, 44, 32,109,101,115,115, 97,103,101, 46, 98,
+111,100,121, 32,111,114, 32, 34, 34, 10,101,110,100, 10, 10,102,117,110, 99,116,
+105,111,110, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,104,101, 97,
+100,101,114,115, 40,104,101, 97,100,101,114,115, 95,115, 41, 10, 32, 32, 32, 32,
+108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,123,125, 10, 32,
+ 32, 32, 32,104,101, 97,100,101,114,115, 95,115, 32, 61, 32,115,116,114,105,110,
+103, 46,103,115,117, 98, 40,104,101, 97,100,101,114,115, 95,115, 44, 32, 34, 92,
+114, 92,110, 34, 44, 32, 34, 92,110, 34, 41, 10, 32, 32, 32, 32,104,101, 97,100,
+101,114,115, 95,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+104,101, 97,100,101,114,115, 95,115, 44, 32, 34, 92,110, 91, 32, 93, 43, 34, 44,
+ 32, 34, 32, 34, 41, 10, 32, 32, 32, 32,115,116,114,105,110,103, 46,103,115,117,
+ 98, 40, 34, 92,110, 34, 32, 46, 46, 32,104,101, 97,100,101,114,115, 95,115, 44,
+ 32, 34, 92,110, 40, 91, 94, 92,110, 93, 43, 41, 34, 44, 32,102,117,110, 99,116,
+105,111,110, 32, 40,104, 41, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116,
+ 40,104,101, 97,100,101,114,115, 44, 32,104, 41, 32,101,110,100, 41, 10, 32, 32,
+ 32, 32,114,101,116,117,114,110, 32,104,101, 97,100,101,114,115, 10,101,110,100,
+ 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98,108,105, 99, 46,112, 97,
+114,115,101, 95,104,101, 97,100,101,114, 40,104,101, 97,100,101,114, 95,115, 41,
+ 10, 32, 32, 32, 32,104,101, 97,100,101,114, 95,115, 32, 61, 32,115,116,114,105,
+110,103, 46,103,115,117, 98, 40,104,101, 97,100,101,114, 95,115, 44, 32, 34, 92,
+110, 91, 32, 93, 43, 34, 44, 32, 34, 32, 34, 41, 10, 32, 32, 32, 32,104,101, 97,
+100,101,114, 95,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+104,101, 97,100,101,114, 95,115, 44, 32, 34, 92,110, 43, 34, 44, 32, 34, 34, 41,
+ 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 95, 44, 32, 95, 95, 44, 32,110, 97,
+109,101, 44, 32,118, 97,108,117,101, 32, 61, 32,115,116,114,105,110,103, 46,102,
+105,110,100, 40,104,101, 97,100,101,114, 95,115, 44, 32, 34, 40, 91, 94, 37,115,
+ 58, 93, 45, 41, 58, 37,115, 42, 40, 46, 42, 41, 34, 41, 10, 32, 32, 32, 32,114,
+101,116,117,114,110, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 10,101,110,
+100, 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98,108,105, 99, 46,112,
+ 97,114,115,101, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115,
+ 95,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,
+115, 95,116, 32, 61, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,104,
+101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, 95,115, 41, 10, 32, 32,
+ 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,123,125,
+ 10, 32, 32, 32, 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,104,101, 97,
+100,101,114,115, 95,116, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32,110, 97,109,101, 44, 32,118, 97,108,117,101, 32, 61, 32, 80,117,
+ 98,108,105, 99, 46,112, 97,114,115,101, 95,104,101, 97,100,101,114, 40,104,101,
+ 97,100,101,114,115, 95,116, 91,105, 93, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+105,102, 32,110, 97,109,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,108,
+111,119,101,114, 40,110, 97,109,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32,105,102, 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32,
+116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,104,101, 97,
+100,101,114,115, 91,110, 97,109,101, 93, 32, 46, 46, 32, 34, 44, 32, 34, 32, 46,
+ 46, 32,118, 97,108,117,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+101,108,115,101, 32,104,101, 97,100,101,114,115, 91,110, 97,109,101, 93, 32, 61,
+ 32,118, 97,108,117,101, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,
+110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,
+110, 32,104,101, 97,100,101,114,115, 10,101,110,100, 10, 10,102,117,110, 99,116,
+105,111,110, 32, 80,117, 98,108,105, 99, 46,112, 97,114,115,101, 95,102,114,111,
+109, 40,102,114,111,109, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 95, 44,
+ 32, 95, 95, 44, 32,110, 97,109,101, 44, 32, 97,100,100,114,101,115,115, 32, 61,
+ 32,115,116,114,105,110,103, 46,102,105,110,100, 40,102,114,111,109, 44, 32, 34,
+ 94, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 37, 60, 40, 46, 45, 41, 37, 62, 34,
+ 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 97,100,100,114,101,115,115,
+ 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 44, 32, 95, 95, 44,
+ 32, 97,100,100,114,101,115,115, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+110,100, 40,102,114,111,109, 44, 32, 34, 37,115, 42, 40, 46, 43, 41, 37,115, 42,
+ 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,110, 97,109,101, 32,
+ 61, 32,110, 97,109,101, 32,111,114, 32, 34, 34, 10, 32, 32, 32, 32, 97,100,100,
+114,101,115,115, 32, 61, 32, 97,100,100,114,101,115,115, 32,111,114, 32, 34, 34,
+ 10, 32, 32, 32, 32,105,102, 32,110, 97,109,101, 32, 61, 61, 32, 34, 34, 32,116,
+104,101,110, 32,110, 97,109,101, 32, 61, 32, 97,100,100,114,101,115,115, 32,101,
+110,100, 10, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103,
+ 46,103,115,117, 98, 40,110, 97,109,101, 44, 32, 39, 34, 39, 44, 32, 34, 34, 41,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110, 97,109,101, 44, 32, 97,100,
+100,114,101,115,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+ 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,109, 98,111,120, 40,109, 98,
+111,120, 95,115, 41, 10, 32, 32, 32, 32,109, 98,111,120, 32, 61, 32,123,125, 10,
+ 32, 32, 32, 32,109, 98,111,120, 95,115, 32, 61, 32,115,116,114,105,110,103, 46,
+103,115,117, 98, 40,109, 98,111,120, 95,115, 44, 32, 34, 92,114, 92,110, 34, 44,
+ 32, 34, 92,110, 34, 41, 32, 46, 46, 34, 92,110, 92,110, 70,114,111,109, 32, 92,
+110, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110,106, 44, 32,105, 44, 32,
+106, 32, 61, 32, 49, 44, 32, 49, 44, 32, 49, 10, 32, 32, 32, 32,119,104,105,108,
+101, 32, 49, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,105, 44, 32,110,106,
+ 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,109, 98,111,120, 95,
+115, 44, 32, 34, 92,110, 92,110, 70,114,111,109, 32, 46, 45, 92,110, 34, 44, 32,
+106, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,105, 32,
+116,104,101,110, 32, 98,114,101, 97,107, 32,101,110,100, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32,109,101,115,115, 97,103,101, 32, 61, 32,115,
+116,114,105,110,103, 46,115,117, 98, 40,109, 98,111,120, 95,115, 44, 32,106, 44,
+ 32,105, 45, 49, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,116, 97, 98,108,101, 46,
+105,110,115,101,114,116, 40,109, 98,111,120, 44, 32,109,101,115,115, 97,103,101,
+ 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,106, 32, 61, 32,110,106, 43, 49, 10, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,109, 98,
+111,120, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98,
+108,105, 99, 46,112, 97,114,115,101, 40,109, 98,111,120, 95,115, 41, 10, 32, 32,
+ 32, 32,108,111, 99, 97,108, 32,109, 98,111,120, 32, 61, 32, 80,117, 98,108,105,
+ 99, 46,115,112,108,105,116, 95,109, 98,111,120, 40,109, 98,111,120, 95,115, 41,
+ 10, 32, 32, 32, 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,109, 98,111,
+120, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,109, 98,111,120, 91,105, 93,
+ 32, 61, 32, 80,117, 98,108,105, 99, 46,112, 97,114,115,101, 95,109,101,115,115,
+ 97,103,101, 40,109, 98,111,120, 91,105, 93, 41, 10, 32, 32, 32, 32,101,110,100,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,109, 98,111,120, 10,101,110,100,
+ 10, 10,102,117,110, 99,116,105,111,110, 32, 80,117, 98,108,105, 99, 46,112, 97,
+114,115,101, 95,109,101,115,115, 97,103,101, 40,109,101,115,115, 97,103,101, 95,
+115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,109,101,115,115, 97,103,101,
+ 32, 61, 32,123,125, 10, 32, 32, 32, 32,109,101,115,115, 97,103,101, 46,104,101,
+ 97,100,101,114,115, 44, 32,109,101,115,115, 97,103,101, 46, 98,111,100,121, 32,
+ 61, 32, 80,117, 98,108,105, 99, 46,115,112,108,105,116, 95,109,101,115,115, 97,
+103,101, 40,109,101,115,115, 97,103,101, 95,115, 41, 10, 32, 32, 32, 32,109,101,
+115,115, 97,103,101, 46,104,101, 97,100,101,114,115, 32, 61, 32, 80,117, 98,108,
+105, 99, 46,112, 97,114,115,101, 95,104,101, 97,100,101,114,115, 40,109,101,115,
+115, 97,103,101, 46,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,114,101,
+116,117,114,110, 32,109,101,115,115, 97,103,101, 10,101,110,100, 10,
+ 0 };
+ return luaL_dostring(L, (const char*)B);
+} /* end of embedded lua code */
+
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c
index 700fa05e930..dddd3d66ea0 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* MIME support functions
* LuaSocket toolkit
-*
-* RCS ID: $Id: mime.c,v 1.28 2005/11/20 07:20:23 diego Exp $
\*=========================================================================*/
#include <string.h>
@@ -35,12 +33,12 @@ static int mime_global_eol(lua_State *L);
static int mime_global_dot(lua_State *L);
static size_t dot(int c, size_t state, luaL_Buffer *buffer);
-static void b64setup(UC *b64unbase);
+static void b64setup(UC *base);
static size_t b64encode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
static size_t b64pad(const UC *input, size_t size, luaL_Buffer *buffer);
static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
-static void qpsetup(UC *qpclass, UC *qpunbase);
+static void qpsetup(UC *class, UC *unbase);
static void qpquote(UC c, luaL_Buffer *buffer);
static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
static size_t qpencode(UC c, UC *input, size_t size,
@@ -48,7 +46,7 @@ static size_t qpencode(UC c, UC *input, size_t size,
static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer);
/* code support functions */
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{ "dot", mime_global_dot },
{ "b64", mime_global_b64 },
{ "eol", mime_global_eol },
@@ -135,7 +133,7 @@ static int mime_global_wrp(lua_State *L)
left = length;
luaL_addstring(&buffer, CRLF);
}
- luaL_putchar(&buffer, *input);
+ luaL_addchar(&buffer, *input);
left--;
break;
}
@@ -149,12 +147,12 @@ static int mime_global_wrp(lua_State *L)
/*-------------------------------------------------------------------------*\
* Fill base64 decode map.
\*-------------------------------------------------------------------------*/
-static void b64setup(UC *b64unbase)
+static void b64setup(UC *unbase)
{
int i;
- for (i = 0; i <= 255; i++) b64unbase[i] = (UC) 255;
- for (i = 0; i < 64; i++) b64unbase[b64base[i]] = (UC) i;
- b64unbase['='] = 0;
+ for (i = 0; i <= 255; i++) unbase[i] = (UC) 255;
+ for (i = 0; i < 64; i++) unbase[b64base[i]] = (UC) i;
+ unbase['='] = 0;
}
/*-------------------------------------------------------------------------*\
@@ -265,6 +263,8 @@ static int mime_global_b64(lua_State *L)
lua_pushnil(L);
return 2;
}
+ /* make sure we don't confuse buffer stuff with arguments */
+ lua_settop(L, 2);
/* process first part of the input */
luaL_buffinit(L, &buffer);
while (input < last)
@@ -272,9 +272,12 @@ static int mime_global_b64(lua_State *L)
input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
/* if second part is nil, we are done */
if (!input) {
+ size_t osize = 0;
asize = b64pad(atom, asize, &buffer);
luaL_pushresult(&buffer);
- if (!(*lua_tostring(L, -1))) lua_pushnil(L);
+ /* if the output is empty and the input is nil, return nil */
+ lua_tolstring(L, -1, &osize);
+ if (osize == 0) lua_pushnil(L);
lua_pushnil(L);
return 2;
}
@@ -306,6 +309,8 @@ static int mime_global_unb64(lua_State *L)
lua_pushnil(L);
return 2;
}
+ /* make sure we don't confuse buffer stuff with arguments */
+ lua_settop(L, 2);
/* process first part of the input */
luaL_buffinit(L, &buffer);
while (input < last)
@@ -313,8 +318,11 @@ static int mime_global_unb64(lua_State *L)
input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
/* if second is nil, we are done */
if (!input) {
+ size_t osize = 0;
luaL_pushresult(&buffer);
- if (!(*lua_tostring(L, -1))) lua_pushnil(L);
+ /* if the output is empty and the input is nil, return nil */
+ lua_tolstring(L, -1, &osize);
+ if (osize == 0) lua_pushnil(L);
lua_pushnil(L);
return 2;
}
@@ -343,24 +351,24 @@ static int mime_global_unb64(lua_State *L)
* Split quoted-printable characters into classes
* Precompute reverse map for encoding
\*-------------------------------------------------------------------------*/
-static void qpsetup(UC *qpclass, UC *qpunbase)
+static void qpsetup(UC *cl, UC *unbase)
{
int i;
- for (i = 0; i < 256; i++) qpclass[i] = QP_QUOTED;
- for (i = 33; i <= 60; i++) qpclass[i] = QP_PLAIN;
- for (i = 62; i <= 126; i++) qpclass[i] = QP_PLAIN;
- qpclass['\t'] = QP_IF_LAST;
- qpclass[' '] = QP_IF_LAST;
- qpclass['\r'] = QP_CR;
- for (i = 0; i < 256; i++) qpunbase[i] = 255;
- qpunbase['0'] = 0; qpunbase['1'] = 1; qpunbase['2'] = 2;
- qpunbase['3'] = 3; qpunbase['4'] = 4; qpunbase['5'] = 5;
- qpunbase['6'] = 6; qpunbase['7'] = 7; qpunbase['8'] = 8;
- qpunbase['9'] = 9; qpunbase['A'] = 10; qpunbase['a'] = 10;
- qpunbase['B'] = 11; qpunbase['b'] = 11; qpunbase['C'] = 12;
- qpunbase['c'] = 12; qpunbase['D'] = 13; qpunbase['d'] = 13;
- qpunbase['E'] = 14; qpunbase['e'] = 14; qpunbase['F'] = 15;
- qpunbase['f'] = 15;
+ for (i = 0; i < 256; i++) cl[i] = QP_QUOTED;
+ for (i = 33; i <= 60; i++) cl[i] = QP_PLAIN;
+ for (i = 62; i <= 126; i++) cl[i] = QP_PLAIN;
+ cl['\t'] = QP_IF_LAST;
+ cl[' '] = QP_IF_LAST;
+ cl['\r'] = QP_CR;
+ for (i = 0; i < 256; i++) unbase[i] = 255;
+ unbase['0'] = 0; unbase['1'] = 1; unbase['2'] = 2;
+ unbase['3'] = 3; unbase['4'] = 4; unbase['5'] = 5;
+ unbase['6'] = 6; unbase['7'] = 7; unbase['8'] = 8;
+ unbase['9'] = 9; unbase['A'] = 10; unbase['a'] = 10;
+ unbase['B'] = 11; unbase['b'] = 11; unbase['C'] = 12;
+ unbase['c'] = 12; unbase['D'] = 13; unbase['d'] = 13;
+ unbase['E'] = 14; unbase['e'] = 14; unbase['F'] = 15;
+ unbase['f'] = 15;
}
/*-------------------------------------------------------------------------*\
@@ -368,9 +376,9 @@ static void qpsetup(UC *qpclass, UC *qpunbase)
\*-------------------------------------------------------------------------*/
static void qpquote(UC c, luaL_Buffer *buffer)
{
- luaL_putchar(buffer, '=');
- luaL_putchar(buffer, qpbase[c >> 4]);
- luaL_putchar(buffer, qpbase[c & 0x0F]);
+ luaL_addchar(buffer, '=');
+ luaL_addchar(buffer, qpbase[c >> 4]);
+ luaL_addchar(buffer, qpbase[c & 0x0F]);
}
/*-------------------------------------------------------------------------*\
@@ -400,7 +408,7 @@ static size_t qpencode(UC c, UC *input, size_t size,
qpquote(input[0], buffer);
luaL_addstring(buffer, marker);
return 0;
- } else luaL_putchar(buffer, input[0]);
+ } else luaL_addchar(buffer, input[0]);
break;
/* might have to be quoted always */
case QP_QUOTED:
@@ -408,7 +416,7 @@ static size_t qpencode(UC c, UC *input, size_t size,
break;
/* might never have to be quoted */
default:
- luaL_putchar(buffer, input[0]);
+ luaL_addchar(buffer, input[0]);
break;
}
input[0] = input[1]; input[1] = input[2];
@@ -424,7 +432,7 @@ static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer)
{
size_t i;
for (i = 0; i < size; i++) {
- if (qpclass[input[i]] == QP_PLAIN) luaL_putchar(buffer, input[i]);
+ if (qpclass[input[i]] == QP_PLAIN) luaL_addchar(buffer, input[i]);
else qpquote(input[i], buffer);
}
if (size > 0) luaL_addstring(buffer, EQCRLF);
@@ -454,6 +462,8 @@ static int mime_global_qp(lua_State *L)
lua_pushnil(L);
return 2;
}
+ /* make sure we don't confuse buffer stuff with arguments */
+ lua_settop(L, 3);
/* process first part of input */
luaL_buffinit(L, &buffer);
while (input < last)
@@ -494,7 +504,7 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
c = qpunbase[input[1]]; d = qpunbase[input[2]];
/* if it is an invalid, do not decode */
if (c > 15 || d > 15) luaL_addlstring(buffer, (char *)input, 3);
- else luaL_putchar(buffer, (c << 4) + d);
+ else luaL_addchar(buffer, (char) ((c << 4) + d));
return 0;
case '\r':
if (size < 2) return size;
@@ -502,7 +512,7 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
return 0;
default:
if (input[0] == '\t' || (input[0] > 31 && input[0] < 127))
- luaL_putchar(buffer, input[0]);
+ luaL_addchar(buffer, input[0]);
return 0;
}
}
@@ -527,6 +537,8 @@ static int mime_global_unqp(lua_State *L)
lua_pushnil(L);
return 2;
}
+ /* make sure we don't confuse buffer stuff with arguments */
+ lua_settop(L, 2);
/* process first part of input */
luaL_buffinit(L, &buffer);
while (input < last)
@@ -587,7 +599,7 @@ static int mime_global_qpwrp(lua_State *L)
left = length;
luaL_addstring(&buffer, EQCRLF);
}
- luaL_putchar(&buffer, *input);
+ luaL_addchar(&buffer, *input);
left--;
break;
default:
@@ -595,7 +607,7 @@ static int mime_global_qpwrp(lua_State *L)
left = length;
luaL_addstring(&buffer, EQCRLF);
}
- luaL_putchar(&buffer, *input);
+ luaL_addchar(&buffer, *input);
left--;
break;
}
@@ -630,7 +642,7 @@ static int eolprocess(int c, int last, const char *marker,
return c;
}
} else {
- luaL_putchar(buffer, c);
+ luaL_addchar(buffer, (char) c);
return 0;
}
}
@@ -670,7 +682,7 @@ static int mime_global_eol(lua_State *L)
\*-------------------------------------------------------------------------*/
static size_t dot(int c, size_t state, luaL_Buffer *buffer)
{
- luaL_putchar(buffer, c);
+ luaL_addchar(buffer, (char) c);
switch (c) {
case '\r':
return 1;
@@ -678,7 +690,7 @@ static size_t dot(int c, size_t state, luaL_Buffer *buffer)
return (state == 1)? 2: 0;
case '.':
if (state == 2)
- luaL_putchar(buffer, '.');
+ luaL_addchar(buffer, '.');
default:
return 0;
}
@@ -705,7 +717,7 @@ static int mime_global_dot(lua_State *L)
while (input < last)
state = dot(*input++, state, &buffer);
luaL_pushresult(&buffer);
- lua_pushnumber(L, state);
+ lua_pushnumber(L, (lua_Number) state);
return 2;
}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h
index 85ee2a39856..150e7adf912 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.h
@@ -7,16 +7,14 @@
* This module provides functions to implement transfer content encodings
* and formatting conforming to RFC 2045. It is used by mime.lua, which
* provide a higher level interface to this functionality.
-*
-* RCS ID: $Id: mime.h,v 1.15 2007/06/11 23:44:54 diego Exp $
\*=========================================================================*/
#include "lua.h"
/*-------------------------------------------------------------------------*\
* Current MIME library version
\*-------------------------------------------------------------------------*/
-#define MIME_VERSION "MIME 1.0.2"
-#define MIME_COPYRIGHT "Copyright (C) 2004-2007 Diego Nehab"
+#define MIME_VERSION "MIME 1.0.3-rc1"
+#define MIME_COPYRIGHT "Copyright (C) 2004-2012 Diego Nehab"
#define MIME_AUTHORS "Diego Nehab"
/*-------------------------------------------------------------------------*\
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua
index 169eda29a94..4aaccc8ea47 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime.lua
@@ -2,7 +2,6 @@
-- MIME support for the Lua language.
-- Author: Diego Nehab
-- Conforming to RFCs 2045-2049
--- RCS ID: $Id: mime.lua,v 1.29 2007/06/11 23:44:54 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -11,7 +10,6 @@
local base = _G
local ltn12 = require("ltn12")
local mime = require("mime.core")
-local io = require("io")
local string = require("string")
module("mime")
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c
index e131536a8b4..64e259f629c 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/mime_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c mime.lua mime_lua"
+ * This file is auto-generated by "lua2c mime.lua mime_lua"
*/
#include "lua.h"
@@ -15,120 +15,116 @@ int luatex_mime_lua_open (lua_State *L) {
101, 32, 76,117, 97, 32,108, 97,110,103,117, 97,103,101, 46, 10, 45, 45, 32, 65,
117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45,
45, 32, 67,111,110,102,111,114,109,105,110,103, 32,116,111, 32, 82, 70, 67,115,
- 32, 50, 48, 52, 53, 45, 50, 48, 52, 57, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68,
- 58, 32, 36, 73,100, 58, 32,109,105,109,101, 46,108,117, 97, 44,118, 32, 49, 46,
- 50, 57, 32, 50, 48, 48, 55, 47, 48, 54, 47, 49, 49, 32, 50, 51, 58, 52, 52, 58,
- 53, 52, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45,
+ 32, 50, 48, 52, 53, 45, 50, 48, 52, 57, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,
-114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116,
- 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,
+111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,
+101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,
-115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32,
- 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108,
-111, 99, 97,108, 32,109,105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40,
- 34,109,105,109,101, 46, 99,111,114,101, 34, 41, 10,108,111, 99, 97,108, 32,105,
-111, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,105,111, 34, 41, 10,108,111,
- 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101,
- 40, 34,115,116,114,105,110,103, 34, 41, 10,109,111,100,117,108,101, 40, 34,109,
-105,109,101, 34, 41, 10, 10, 45, 45, 32,101,110, 99,111,100,101, 44, 32,100,101,
- 99,111,100,101, 32, 97,110,100, 32,119,114, 97,112, 32, 97,108,103,111,114,105,
-116,104,109, 32,116, 97, 98,108,101,115, 10,101,110, 99,111,100,101,116, 32, 61,
- 32,123,125, 10,100,101, 99,111,100,101,116, 32, 61, 32,123,125, 10,119,114, 97,
-112,116, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 99,114,101, 97,116,101,115, 32,
- 97, 32,102,117,110, 99,116,105,111,110, 32,116,104, 97,116, 32, 99,104,111,111,
-115,101,115, 32, 97, 32,102,105,108,116,101,114, 32, 98,121, 32,110, 97,109,101,
- 32,102,114,111,109, 32, 97, 32,103,105,118,101,110, 32,116, 97, 98,108,101, 10,
-108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115,
-101, 40,116, 97, 98,108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
-102,117,110, 99,116,105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44,
- 32,111,112,116, 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,
-115,101, 46,116,121,112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116,
-114,105,110,103, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32,
- 61, 32, 34,100,101,102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111,
-112,116, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91,
-110, 97,109,101, 32,111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32,
- 32, 32, 32,105,102, 32,110,111,116, 32,102, 32,116,104,101,110, 32, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 46,101,114,114,111,114,
- 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 32, 46, 46, 32,
- 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101, 41, 32,
- 46, 46, 32, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,
-108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32,111,
-112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100,
- 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,101,110, 99,111,
-100,105,110,103, 32,102,105,108,116,101,114,115, 10,101,110, 99,111,100,101,116,
- 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,
-110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50,
- 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40, 98, 54, 52, 44, 32, 34,
- 34, 41, 10,101,110,100, 10, 10,101,110, 99,111,100,101,116, 91, 39,113,117,111,
-116,101,100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117,
-110, 99,116,105,111,110, 40,109,111,100,101, 41, 10, 32, 32, 32, 32,114,101,116,
-117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,
-108,101, 40,113,112, 44, 32, 34, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 40,
-109,111,100,101, 32, 61, 61, 32, 34, 98,105,110, 97,114,121, 34, 41, 32, 97,110,
-100, 32, 34, 61, 48, 68, 61, 48, 65, 34, 32,111,114, 32, 34, 92,114, 92,110, 34,
- 41, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101,
- 32,100,101, 99,111,100,105,110,103, 32,102,105,108,116,101,114,115, 10,100,101,
- 99,111,100,101,116, 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,102,117,
-110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
-108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,117,
-110, 98, 54, 52, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,100,101, 99,111,100,
-101,116, 91, 39,113,117,111,116,101,100, 45,112,114,105,110,116, 97, 98,108,101,
- 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,
-114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46,
- 99,121, 99,108,101, 40,117,110,113,112, 44, 32, 34, 34, 41, 10,101,110,100, 10,
- 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,102,111,114,109,
- 97,116, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32,105,102, 32, 99,104,117,
-110,107, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,
-104,117,110,107, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 32,114,101,116,117,
-114,110, 32, 34, 39, 39, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,
- 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,108,101,110, 40, 99,
-104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 32,114,
-101,116,117,114,110, 32, 34,110,105,108, 34, 32,101,110,100, 10,101,110,100, 10,
- 10, 45, 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,108,105,110,101, 45,
-119,114, 97,112, 32,102,105,108,116,101,114,115, 10,119,114, 97,112,116, 91, 39,
-116,101,120,116, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,108,101,
-110,103,116,104, 41, 10, 32, 32, 32, 32,108,101,110,103,116,104, 32, 61, 32,108,
-101,110,103,116,104, 32,111,114, 32, 55, 54, 10, 32, 32, 32, 32,114,101,116,117,
-114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,
-101, 40,119,114,112, 44, 32,108,101,110,103,116,104, 44, 32,108,101,110,103,116,
-104, 41, 10,101,110,100, 10,119,114, 97,112,116, 91, 39, 98, 97,115,101, 54, 52,
- 39, 93, 32, 61, 32,119,114, 97,112,116, 91, 39,116,101,120,116, 39, 93, 10,119,
-114, 97,112,116, 91, 39,100,101,102, 97,117,108,116, 39, 93, 32, 61, 32,119,114,
- 97,112,116, 91, 39,116,101,120,116, 39, 93, 10, 10,119,114, 97,112,116, 91, 39,
-113,117,111,116,101,100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61,
- 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,
-114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,
-101, 40,113,112,119,114,112, 44, 32, 55, 54, 44, 32, 55, 54, 41, 10,101,110,100,
- 10, 10, 45, 45, 32,102,117,110, 99,116,105,111,110, 32,116,104, 97,116, 32, 99,
-104,111,111,115,101, 32,116,104,101, 32,101,110, 99,111,100,105,110,103, 44, 32,
-100,101, 99,111,100,105,110,103, 32,111,114, 32,119,114, 97,112, 32, 97,108,103,
-111,114,105,116,104,109, 10,101,110, 99,111,100,101, 32, 61, 32, 99,104,111,111,
-115,101, 40,101,110, 99,111,100,101,116, 41, 10,100,101, 99,111,100,101, 32, 61,
- 32, 99,104,111,111,115,101, 40,100,101, 99,111,100,101,116, 41, 10,119,114, 97,
-112, 32, 61, 32, 99,104,111,111,115,101, 40,119,114, 97,112,116, 41, 10, 10, 45,
- 45, 32,100,101,102,105,110,101, 32,116,104,101, 32,101,110,100, 45,111,102, 45,
-108,105,110,101, 32,110,111,114,109, 97,108,105,122, 97,116,105,111,110, 32,102,
-105,108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,110,111,114,109, 97,
-108,105,122,101, 40,109, 97,114,107,101,114, 41, 10, 32, 32, 32, 32,114,101,116,
-117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,
-108,101, 40,101,111,108, 44, 32, 48, 44, 32,109, 97,114,107,101,114, 41, 10,101,
-110,100, 10, 10, 45, 45, 32,104,105,103,104, 32,108,101,118,101,108, 32,115,116,
-117,102,102,105,110,103, 32,102,105,108,116,101,114, 10,102,117,110, 99,116,105,
-111,110, 32,115,116,117,102,102, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,
-110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101,
- 40,100,111,116, 44, 32, 50, 41, 10,101,110,100, 10,
+ 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61,
+ 32, 95, 71, 10,108,111, 99, 97,108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,
+113,117,105,114,101, 40, 34,108,116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108,
+ 32,109,105,109,101, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109,105,109,
+101, 46, 99,111,114,101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,
+103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34,
+ 41, 10,109,111,100,117,108,101, 40, 34,109,105,109,101, 34, 41, 10, 10, 45, 45,
+ 32,101,110, 99,111,100,101, 44, 32,100,101, 99,111,100,101, 32, 97,110,100, 32,
+119,114, 97,112, 32, 97,108,103,111,114,105,116,104,109, 32,116, 97, 98,108,101,
+115, 10,101,110, 99,111,100,101,116, 32, 61, 32,123,125, 10,100,101, 99,111,100,
+101,116, 32, 61, 32,123,125, 10,119,114, 97,112,116, 32, 61, 32,123,125, 10, 10,
+ 45, 45, 32, 99,114,101, 97,116,101,115, 32, 97, 32,102,117,110, 99,116,105,111,
+110, 32,116,104, 97,116, 32, 99,104,111,111,115,101,115, 32, 97, 32,102,105,108,
+116,101,114, 32, 98,121, 32,110, 97,109,101, 32,102,114,111,109, 32, 97, 32,103,
+105,118,101,110, 32,116, 97, 98,108,101, 10,108,111, 99, 97,108, 32,102,117,110,
+ 99,116,105,111,110, 32, 99,104,111,111,115,101, 40,116, 97, 98,108,101, 41, 10,
+ 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 40,
+110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 41, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,110,
+ 97,109,101, 41, 32,126, 61, 32, 34,115,116,114,105,110,103, 34, 32,116,104,101,
+110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,109,101, 44, 32,
+111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100,101,102, 97,117,108,
+116, 34, 44, 32,110, 97,109,101, 44, 32,111,112,116, 49, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108,
+ 32,102, 32, 61, 32,116, 97, 98,108,101, 91,110, 97,109,101, 32,111,114, 32, 34,
+110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116,
+ 32,102, 32,116,104,101,110, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 98, 97,115,101, 46,101,114,114,111,114, 40, 34,117,110,107,110,111,119,110,
+ 32,107,101,121, 32, 40, 34, 32, 46, 46, 32, 98, 97,115,101, 46,116,111,115,116,
+114,105,110,103, 40,110, 97,109,101, 41, 32, 46, 46, 32, 34, 41, 34, 44, 32, 51,
+ 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,
+110, 32,102, 40,111,112,116, 49, 44, 32,111,112,116, 50, 41, 32,101,110,100, 10,
+ 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,
+110,101, 32,116,104,101, 32,101,110, 99,111,100,105,110,103, 32,102,105,108,116,
+101,114,115, 10,101,110, 99,111,100,101,116, 91, 39, 98, 97,115,101, 54, 52, 39,
+ 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,
+101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,116,101,114, 46, 99,
+121, 99,108,101, 40, 98, 54, 52, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,101,
+110, 99,111,100,101,116, 91, 39,113,117,111,116,101,100, 45,112,114,105,110,116,
+ 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,109,111,
+100,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50,
+ 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,113,112, 44, 32, 34, 34,
+ 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 40,109,111,100,101, 32, 61, 61, 32, 34,
+ 98,105,110, 97,114,121, 34, 41, 32, 97,110,100, 32, 34, 61, 48, 68, 61, 48, 65,
+ 34, 32,111,114, 32, 34, 92,114, 92,110, 34, 41, 10,101,110,100, 10, 10, 45, 45,
+ 32,100,101,102,105,110,101, 32,116,104,101, 32,100,101, 99,111,100,105,110,103,
+ 32,102,105,108,116,101,114,115, 10,100,101, 99,111,100,101,116, 91, 39, 98, 97,
+115,101, 54, 52, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 10,
+ 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,105,108,
+116,101,114, 46, 99,121, 99,108,101, 40,117,110, 98, 54, 52, 44, 32, 34, 34, 41,
+ 10,101,110,100, 10, 10,100,101, 99,111,100,101,116, 91, 39,113,117,111,116,101,
+100, 45,112,114,105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99,
+116,105,111,110, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,
+110, 49, 50, 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,117,110,113,
+112, 44, 32, 34, 34, 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,102,117,
+110, 99,116,105,111,110, 32,102,111,114,109, 97,116, 40, 99,104,117,110,107, 41,
+ 10, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,117,110,107, 32, 61, 61, 32, 34,
+ 34, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 34, 39, 39, 34, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,
+116,114,105,110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 32,101,110,100,
+ 10, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 34,110,105,
+108, 34, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,100,101,102,105,110,
+101, 32,116,104,101, 32,108,105,110,101, 45,119,114, 97,112, 32,102,105,108,116,
+101,114,115, 10,119,114, 97,112,116, 91, 39,116,101,120,116, 39, 93, 32, 61, 32,
+102,117,110, 99,116,105,111,110, 40,108,101,110,103,116,104, 41, 10, 32, 32, 32,
+ 32,108,101,110,103,116,104, 32, 61, 32,108,101,110,103,116,104, 32,111,114, 32,
+ 55, 54, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,
+102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,119,114,112, 44, 32,108,101,
+110,103,116,104, 44, 32,108,101,110,103,116,104, 41, 10,101,110,100, 10,119,114,
+ 97,112,116, 91, 39, 98, 97,115,101, 54, 52, 39, 93, 32, 61, 32,119,114, 97,112,
+116, 91, 39,116,101,120,116, 39, 93, 10,119,114, 97,112,116, 91, 39,100,101,102,
+ 97,117,108,116, 39, 93, 32, 61, 32,119,114, 97,112,116, 91, 39,116,101,120,116,
+ 39, 93, 10, 10,119,114, 97,112,116, 91, 39,113,117,111,116,101,100, 45,112,114,
+105,110,116, 97, 98,108,101, 39, 93, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,
+102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,113,112,119,114,112, 44, 32,
+ 55, 54, 44, 32, 55, 54, 41, 10,101,110,100, 10, 10, 45, 45, 32,102,117,110, 99,
+116,105,111,110, 32,116,104, 97,116, 32, 99,104,111,111,115,101, 32,116,104,101,
+ 32,101,110, 99,111,100,105,110,103, 44, 32,100,101, 99,111,100,105,110,103, 32,
+111,114, 32,119,114, 97,112, 32, 97,108,103,111,114,105,116,104,109, 10,101,110,
+ 99,111,100,101, 32, 61, 32, 99,104,111,111,115,101, 40,101,110, 99,111,100,101,
+116, 41, 10,100,101, 99,111,100,101, 32, 61, 32, 99,104,111,111,115,101, 40,100,
+101, 99,111,100,101,116, 41, 10,119,114, 97,112, 32, 61, 32, 99,104,111,111,115,
+101, 40,119,114, 97,112,116, 41, 10, 10, 45, 45, 32,100,101,102,105,110,101, 32,
+116,104,101, 32,101,110,100, 45,111,102, 45,108,105,110,101, 32,110,111,114,109,
+ 97,108,105,122, 97,116,105,111,110, 32,102,105,108,116,101,114, 10,102,117,110,
+ 99,116,105,111,110, 32,110,111,114,109, 97,108,105,122,101, 40,109, 97,114,107,
+101,114, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50,
+ 46,102,105,108,116,101,114, 46, 99,121, 99,108,101, 40,101,111,108, 44, 32, 48,
+ 44, 32,109, 97,114,107,101,114, 41, 10,101,110,100, 10, 10, 45, 45, 32,104,105,
+103,104, 32,108,101,118,101,108, 32,115,116,117,102,102,105,110,103, 32,102,105,
+108,116,101,114, 10,102,117,110, 99,116,105,111,110, 32,115,116,117,102,102, 40,
+ 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,116,110, 49, 50, 46,102,
+105,108,116,101,114, 46, 99,121, 99,108,101, 40,100,111,116, 44, 32, 50, 41, 10,
+101,110,100, 10,
0 };
return luaL_dostring(L, (const char*)B);
} /* end of embedded lua code */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/options.c b/Build/source/texk/web2c/luatexdir/luasocket/src/options.c
index 1eaae8d6939..6cae7eeb924 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/options.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/options.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Common option interface
* LuaSocket toolkit
-*
-* RCS ID: $Id: options.c,v 1.6 2005/11/20 07:20:23 diego Exp $
\*=========================================================================*/
#include <string.h>
@@ -12,14 +10,16 @@
#include "options.h"
#include "inet.h"
-
/*=========================================================================*\
* Internal functions prototypes
\*=========================================================================*/
static int opt_setmembership(lua_State *L, p_socket ps, int level, int name);
static int opt_setboolean(lua_State *L, p_socket ps, int level, int name);
+static int opt_getboolean(lua_State *L, p_socket ps, int level, int name);
static int opt_set(lua_State *L, p_socket ps, int level, int name,
void *val, int len);
+static int opt_get(lua_State *L, p_socket ps, int level, int name,
+ void *val, int* len);
/*=========================================================================*\
* Exported functions
@@ -33,7 +33,20 @@ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps)
while (opt->name && strcmp(name, opt->name))
opt++;
if (!opt->func) {
- char msg[60];
+ char msg[45];
+ sprintf(msg, "unsupported option `%.35s'", name);
+ luaL_argerror(L, 2, msg);
+ }
+ return opt->func(L, ps);
+}
+
+int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps)
+{
+ const char *name = luaL_checkstring(L, 2); /* obj, name, ... */
+ while (opt->name && strcmp(name, opt->name))
+ opt++;
+ if (!opt->func) {
+ char msg[45];
sprintf(msg, "unsupported option `%.35s'", name);
luaL_argerror(L, 2, msg);
}
@@ -41,41 +54,72 @@ int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps)
}
/* enables reuse of local address */
-int opt_reuseaddr(lua_State *L, p_socket ps)
+int opt_set_reuseaddr(lua_State *L, p_socket ps)
{
return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
}
+int opt_get_reuseaddr(lua_State *L, p_socket ps)
+{
+ return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
+}
+
+/* enables reuse of local port */
+int opt_set_reuseport(lua_State *L, p_socket ps)
+{
+ return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
+}
+
+int opt_get_reuseport(lua_State *L, p_socket ps)
+{
+ return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
+}
+
/* disables the Naggle algorithm */
-int opt_tcp_nodelay(lua_State *L, p_socket ps)
+int opt_set_tcp_nodelay(lua_State *L, p_socket ps)
{
return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
}
-int opt_keepalive(lua_State *L, p_socket ps)
+int opt_get_tcp_nodelay(lua_State *L, p_socket ps)
+{
+ return opt_getboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
+}
+
+int opt_set_keepalive(lua_State *L, p_socket ps)
{
return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
}
-int opt_dontroute(lua_State *L, p_socket ps)
+int opt_get_keepalive(lua_State *L, p_socket ps)
+{
+ return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
+}
+
+int opt_set_dontroute(lua_State *L, p_socket ps)
{
return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE);
}
-int opt_broadcast(lua_State *L, p_socket ps)
+int opt_set_broadcast(lua_State *L, p_socket ps)
{
return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
}
-int opt_ip_multicast_loop(lua_State *L, p_socket ps)
+int opt_set_ip_multicast_loop(lua_State *L, p_socket ps)
{
return opt_setboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP);
}
-int opt_linger(lua_State *L, p_socket ps)
+int opt_get_ip_multicast_loop(lua_State *L, p_socket ps)
+{
+ return opt_getboolean(L, ps, IPPROTO_IP, IP_MULTICAST_LOOP);
+}
+
+int opt_set_linger(lua_State *L, p_socket ps)
{
struct linger li; /* obj, name, table */
- if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE));
+ if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
lua_pushstring(L, "on");
lua_gettable(L, 3);
if (!lua_isboolean(L, -1))
@@ -89,29 +133,74 @@ int opt_linger(lua_State *L, p_socket ps)
return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li));
}
-int opt_ip_multicast_ttl(lua_State *L, p_socket ps)
+int opt_get_linger(lua_State *L, p_socket ps)
+{
+ struct linger li; /* obj, name */
+ int len = sizeof(li);
+ int err = opt_get(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, &len);
+ if (err)
+ return err;
+ lua_newtable(L);
+ lua_pushboolean(L, li.l_onoff);
+ lua_setfield(L, -2, "on");
+ lua_pushinteger(L, li.l_linger);
+ lua_setfield(L, -2, "timeout");
+ return 1;
+}
+
+int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps)
{
int val = (int) luaL_checknumber(L, 3); /* obj, name, int */
- return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &val, sizeof(val));
+ return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_TTL,
+ (char *) &val, sizeof(val));
+}
+
+int opt_set_ip_multicast_if(lua_State *L, p_socket ps)
+{
+ const char *address = luaL_checkstring(L, 3); /* obj, name, ip */
+ struct in_addr val;
+ val.s_addr = htonl(INADDR_ANY);
+ if (strcmp(address, "*") && !inet_aton(address, &val))
+ luaL_argerror(L, 3, "ip expected");
+ return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_IF,
+ (char *) &val, sizeof(val));
+}
+
+int opt_get_ip_multicast_if(lua_State *L, p_socket ps)
+{
+ struct in_addr val;
+ socklen_t len = sizeof(val);
+ if (getsockopt(*ps, IPPROTO_IP, IP_MULTICAST_IF, (char *) &val, &len) < 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, "getsockopt failed");
+ return 2;
+ }
+ lua_pushstring(L, inet_ntoa(val));
+ return 1;
}
-int opt_ip_add_membership(lua_State *L, p_socket ps)
+int opt_set_ip_add_membership(lua_State *L, p_socket ps)
{
return opt_setmembership(L, ps, IPPROTO_IP, IP_ADD_MEMBERSHIP);
}
-int opt_ip_drop_membersip(lua_State *L, p_socket ps)
+int opt_set_ip_drop_membersip(lua_State *L, p_socket ps)
{
return opt_setmembership(L, ps, IPPROTO_IP, IP_DROP_MEMBERSHIP);
}
+int opt_set_ip6_v6only(lua_State *L, p_socket ps)
+{
+ return opt_setboolean(L, ps, IPPROTO_IPV6, IPV6_V6ONLY);
+}
+
/*=========================================================================*\
* Auxiliar functions
\*=========================================================================*/
static int opt_setmembership(lua_State *L, p_socket ps, int level, int name)
{
struct ip_mreq val; /* obj, name, table */
- if (!lua_istable(L, 3)) luaL_typerror(L, 3, lua_typename(L, LUA_TTABLE));
+ if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
lua_pushstring(L, "multiaddr");
lua_gettable(L, 3);
if (!lua_isstring(L, -1))
@@ -130,6 +219,19 @@ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name)
}
static
+int opt_get(lua_State *L, p_socket ps, int level, int name, void *val, int* len)
+{
+ socklen_t socklen = *len;
+ if (getsockopt(*ps, level, name, (char *) val, &socklen) < 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, "getsockopt failed");
+ return 2;
+ }
+ *len = socklen;
+ return 0;
+}
+
+static
int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len)
{
if (setsockopt(*ps, level, name, (char *) val, len) < 0) {
@@ -141,6 +243,17 @@ int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len)
return 1;
}
+static int opt_getboolean(lua_State *L, p_socket ps, int level, int name)
+{
+ int val = 0;
+ int len = sizeof(val);
+ int err = opt_get(L, ps, level, name, (char *) &val, &len);
+ if (err)
+ return err;
+ lua_pushboolean(L, val);
+ return 1;
+}
+
static int opt_setboolean(lua_State *L, p_socket ps, int level, int name)
{
int val = auxiliar_checkboolean(L, 3); /* obj, name, bool */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/options.h b/Build/source/texk/web2c/luatexdir/luasocket/src/options.h
index 4981cf2a0ef..33825c8d25c 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/options.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/options.h
@@ -6,8 +6,6 @@
*
* This module provides a common interface to socket options, used mainly by
* modules UDP and TCP.
-*
-* RCS ID: $Id: options.h,v 1.4 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include "lua.h"
@@ -20,20 +18,37 @@ typedef struct t_opt {
} t_opt;
typedef t_opt *p_opt;
-/* supported options */
-int opt_dontroute(lua_State *L, p_socket ps);
-int opt_broadcast(lua_State *L, p_socket ps);
-int opt_reuseaddr(lua_State *L, p_socket ps);
-int opt_tcp_nodelay(lua_State *L, p_socket ps);
-int opt_keepalive(lua_State *L, p_socket ps);
-int opt_linger(lua_State *L, p_socket ps);
-int opt_reuseaddr(lua_State *L, p_socket ps);
-int opt_ip_multicast_ttl(lua_State *L, p_socket ps);
-int opt_ip_multicast_loop(lua_State *L, p_socket ps);
-int opt_ip_add_membership(lua_State *L, p_socket ps);
-int opt_ip_drop_membersip(lua_State *L, p_socket ps);
+#ifndef IPV6_V6ONLY
+#define IPV6_V6ONLY 27
+#endif
+
+/* supported options for setoption */
+int opt_set_dontroute(lua_State *L, p_socket ps);
+int opt_set_broadcast(lua_State *L, p_socket ps);
+int opt_set_reuseaddr(lua_State *L, p_socket ps);
+int opt_set_tcp_nodelay(lua_State *L, p_socket ps);
+int opt_set_keepalive(lua_State *L, p_socket ps);
+int opt_set_linger(lua_State *L, p_socket ps);
+int opt_set_reuseaddr(lua_State *L, p_socket ps);
+int opt_set_reuseport(lua_State *L, p_socket ps);
+int opt_set_ip_multicast_if(lua_State *L, p_socket ps);
+int opt_set_ip_multicast_ttl(lua_State *L, p_socket ps);
+int opt_set_ip_multicast_loop(lua_State *L, p_socket ps);
+int opt_set_ip_add_membership(lua_State *L, p_socket ps);
+int opt_set_ip_drop_membersip(lua_State *L, p_socket ps);
+int opt_set_ip6_v6only(lua_State *L, p_socket ps);
+
+/* supported options for getoption */
+int opt_get_reuseaddr(lua_State *L, p_socket ps);
+int opt_get_tcp_nodelay(lua_State *L, p_socket ps);
+int opt_get_keepalive(lua_State *L, p_socket ps);
+int opt_get_linger(lua_State *L, p_socket ps);
+int opt_get_reuseaddr(lua_State *L, p_socket ps);
+int opt_get_ip_multicast_loop(lua_State *L, p_socket ps);
+int opt_get_ip_multicast_if(lua_State *L, p_socket ps);
/* invokes the appropriate option handler */
int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps);
+int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps);
#endif
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/select.c b/Build/source/texk/web2c/luatexdir/luasocket/src/select.c
index d70f662713a..51fb198611a 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/select.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/select.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Select implementation
* LuaSocket toolkit
-*
-* RCS ID: $Id: select.c,v 1.22 2005/11/20 07:20:23 diego Exp $
\*=========================================================================*/
#include <string.h>
@@ -18,8 +16,8 @@
\*=========================================================================*/
static t_socket getfd(lua_State *L);
static int dirty(lua_State *L);
-static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd,
- int itab, fd_set *set);
+static void collect_fd(lua_State *L, int tab, int itab,
+ fd_set *set, t_socket *max_fd);
static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set);
static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
int itab, int tab, int start);
@@ -27,7 +25,7 @@ static void make_assoc(lua_State *L, int tab);
static int global_select(lua_State *L);
/* functions in library namespace */
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{"select", global_select},
{NULL, NULL}
};
@@ -39,6 +37,9 @@ static luaL_reg func[] = {
* Initializes module
\*-------------------------------------------------------------------------*/
int select_open(lua_State *L) {
+ lua_pushstring(L, "_SETSIZE");
+ lua_pushnumber(L, FD_SETSIZE);
+ lua_rawset(L, -3);
luaL_openlib(L, NULL, func, 0);
return 0;
}
@@ -51,7 +52,7 @@ int select_open(lua_State *L) {
\*-------------------------------------------------------------------------*/
static int global_select(lua_State *L) {
int rtab, wtab, itab, ret, ndirty;
- t_socket max_fd;
+ t_socket max_fd = SOCKET_INVALID;
fd_set rset, wset;
t_timeout tm;
double t = luaL_optnumber(L, 3, -1);
@@ -60,12 +61,12 @@ static int global_select(lua_State *L) {
lua_newtable(L); itab = lua_gettop(L);
lua_newtable(L); rtab = lua_gettop(L);
lua_newtable(L); wtab = lua_gettop(L);
- max_fd = collect_fd(L, 1, SOCKET_INVALID, itab, &rset);
+ collect_fd(L, 1, itab, &rset, &max_fd);
+ collect_fd(L, 2, itab, &wset, &max_fd);
ndirty = check_dirty(L, 1, rtab, &rset);
t = ndirty > 0? 0.0: t;
timeout_init(&tm, t, -1);
timeout_markstart(&tm);
- max_fd = collect_fd(L, 2, max_fd, itab, &wset);
ret = socket_select(max_fd+1, &rset, &wset, NULL, &tm);
if (ret > 0 || ndirty > 0) {
return_fd(L, &rset, max_fd+1, itab, rtab, ndirty);
@@ -77,7 +78,7 @@ static int global_select(lua_State *L) {
lua_pushstring(L, "timeout");
return 3;
} else {
- lua_pushstring(L, "error");
+ luaL_error(L, "select failed");
return 3;
}
}
@@ -92,8 +93,10 @@ static t_socket getfd(lua_State *L) {
if (!lua_isnil(L, -1)) {
lua_pushvalue(L, -2);
lua_call(L, 1, 1);
- if (lua_isnumber(L, -1))
- fd = (t_socket) lua_tonumber(L, -1);
+ if (lua_isnumber(L, -1)) {
+ double numfd = lua_tonumber(L, -1);
+ fd = (numfd >= 0.0)? (t_socket) numfd: SOCKET_INVALID;
+ }
}
lua_pop(L, 1);
return fd;
@@ -112,12 +115,14 @@ static int dirty(lua_State *L) {
return is;
}
-static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd,
- int itab, fd_set *set) {
- int i = 1;
- if (lua_isnil(L, tab))
- return max_fd;
- while (1) {
+static void collect_fd(lua_State *L, int tab, int itab,
+ fd_set *set, t_socket *max_fd) {
+ int i = 1, n = 0;
+ /* nil is the same as an empty table */
+ if (lua_isnil(L, tab)) return;
+ /* otherwise we need it to be a table */
+ luaL_checktype(L, tab, LUA_TTABLE);
+ for ( ;; ) {
t_socket fd;
lua_pushnumber(L, i);
lua_gettable(L, tab);
@@ -125,26 +130,37 @@ static t_socket collect_fd(lua_State *L, int tab, t_socket max_fd,
lua_pop(L, 1);
break;
}
+ /* getfd figures out if this is a socket */
fd = getfd(L);
if (fd != SOCKET_INVALID) {
+ /* make sure we don't overflow the fd_set */
+#ifdef _WIN32
+ if (n >= FD_SETSIZE)
+ luaL_argerror(L, tab, "too many sockets");
+#else
+ if (fd >= FD_SETSIZE)
+ luaL_argerror(L, tab, "descriptor too large for set size");
+#endif
FD_SET(fd, set);
- if (max_fd == SOCKET_INVALID || max_fd < fd)
- max_fd = fd;
- lua_pushnumber(L, fd);
+ n++;
+ /* keep track of the largest descriptor so far */
+ if (*max_fd == SOCKET_INVALID || *max_fd < fd)
+ *max_fd = fd;
+ /* make sure we can map back from descriptor to the object */
+ lua_pushnumber(L, (lua_Number) fd);
lua_pushvalue(L, -2);
lua_settable(L, itab);
}
lua_pop(L, 1);
i = i + 1;
}
- return max_fd;
}
static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
int ndirty = 0, i = 1;
if (lua_isnil(L, tab))
return 0;
- while (1) {
+ for ( ;; ) {
t_socket fd;
lua_pushnumber(L, i);
lua_gettable(L, tab);
@@ -171,7 +187,7 @@ static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
for (fd = 0; fd < max_fd; fd++) {
if (FD_ISSET(fd, set)) {
lua_pushnumber(L, ++start);
- lua_pushnumber(L, fd);
+ lua_pushnumber(L, (lua_Number) fd);
lua_gettable(L, itab);
lua_settable(L, tab);
}
@@ -181,7 +197,7 @@ static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
static void make_assoc(lua_State *L, int tab) {
int i = 1, atab;
lua_newtable(L); atab = lua_gettop(L);
- while (1) {
+ for ( ;; ) {
lua_pushnumber(L, i);
lua_gettable(L, tab);
if (!lua_isnil(L, -1)) {
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/select.h b/Build/source/texk/web2c/luatexdir/luasocket/src/select.h
index aa3db4adf3b..8750200395a 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/select.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/select.h
@@ -8,8 +8,6 @@
* method getfd() which returns the descriptor to be passed to the
* underlying select function. Another method, dirty(), should return
* true if there is data ready for reading (required for buffered input).
-*
-* RCS ID: $Id: select.h,v 1.7 2004/06/16 01:02:07 diego Exp $
\*=========================================================================*/
int select_open(lua_State *L);
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/serial.c b/Build/source/texk/web2c/luatexdir/luasocket/src/serial.c
new file mode 100644
index 00000000000..acee67181dd
--- /dev/null
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/serial.c
@@ -0,0 +1,191 @@
+/*=========================================================================*\
+* Serial stream
+* LuaSocket toolkit
+\*=========================================================================*/
+#include <string.h>
+
+#include "lua.h"
+#include "lauxlib.h"
+
+#include "auxiliar.h"
+#include "socket.h"
+#include "options.h"
+#include "unix.h"
+#ifndef _WIN32
+#include <sys/un.h>
+#endif
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+/*
+Reuses userdata definition from unix.h, since it is useful for all
+stream-like objects.
+
+If we stored the serial path for use in error messages or userdata
+printing, we might need our own userdata definition.
+
+Group usage is semi-inherited from unix.c, but unnecessary since we
+have only one object type.
+*/
+
+/*=========================================================================*\
+* Internal function prototypes
+\*=========================================================================*/
+static int global_create(lua_State *L);
+static int meth_send(lua_State *L);
+static int meth_receive(lua_State *L);
+static int meth_close(lua_State *L);
+static int meth_settimeout(lua_State *L);
+static int meth_getfd(lua_State *L);
+static int meth_setfd(lua_State *L);
+static int meth_dirty(lua_State *L);
+static int meth_getstats(lua_State *L);
+static int meth_setstats(lua_State *L);
+
+/* serial object methods */
+static luaL_Reg serial_methods[] = {
+ {"__gc", meth_close},
+ {"__tostring", auxiliar_tostring},
+ {"close", meth_close},
+ {"dirty", meth_dirty},
+ {"getfd", meth_getfd},
+ {"getstats", meth_getstats},
+ {"setstats", meth_setstats},
+ {"receive", meth_receive},
+ {"send", meth_send},
+ {"setfd", meth_setfd},
+ {"settimeout", meth_settimeout},
+ {NULL, NULL}
+};
+
+/* our socket creation function */
+static luaL_Reg func[] = {
+ {"serial", global_create},
+ {NULL, NULL}
+};
+
+
+/*-------------------------------------------------------------------------*\
+* Initializes module
+\*-------------------------------------------------------------------------*/
+LUASOCKET_API int luaopen_socket_serial(lua_State *L) {
+ /* create classes */
+ auxiliar_newclass(L, "serial{client}", serial_methods);
+ /* create class groups */
+ auxiliar_add2group(L, "serial{client}", "serial{any}");
+ /* make sure the function ends up in the package table */
+ luaL_openlib(L, "socket", func, 0);
+ /* return the function instead of the 'socket' table */
+ lua_pushstring(L, "serial");
+ lua_gettable(L, -2);
+ return 1;
+}
+
+/*=========================================================================*\
+* Lua methods
+\*=========================================================================*/
+/*-------------------------------------------------------------------------*\
+* Just call buffered IO methods
+\*-------------------------------------------------------------------------*/
+static int meth_send(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1);
+ return buffer_meth_send(L, &un->buf);
+}
+
+static int meth_receive(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1);
+ return buffer_meth_receive(L, &un->buf);
+}
+
+static int meth_getstats(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1);
+ return buffer_meth_getstats(L, &un->buf);
+}
+
+static int meth_setstats(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkclass(L, "serial{client}", 1);
+ return buffer_meth_setstats(L, &un->buf);
+}
+
+/*-------------------------------------------------------------------------*\
+* Select support methods
+\*-------------------------------------------------------------------------*/
+static int meth_getfd(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1);
+ lua_pushnumber(L, (int) un->sock);
+ return 1;
+}
+
+/* this is very dangerous, but can be handy for those that are brave enough */
+static int meth_setfd(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1);
+ un->sock = (t_socket) luaL_checknumber(L, 2);
+ return 0;
+}
+
+static int meth_dirty(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1);
+ lua_pushboolean(L, !buffer_isempty(&un->buf));
+ return 1;
+}
+
+/*-------------------------------------------------------------------------*\
+* Closes socket used by object
+\*-------------------------------------------------------------------------*/
+static int meth_close(lua_State *L)
+{
+ p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1);
+ socket_destroy(&un->sock);
+ lua_pushnumber(L, 1);
+ return 1;
+}
+
+
+/*-------------------------------------------------------------------------*\
+* Just call tm methods
+\*-------------------------------------------------------------------------*/
+static int meth_settimeout(lua_State *L) {
+ p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1);
+ return timeout_meth_settimeout(L, &un->tm);
+}
+
+/*=========================================================================*\
+* Library functions
+\*=========================================================================*/
+
+
+/*-------------------------------------------------------------------------*\
+* Creates a serial object
+\*-------------------------------------------------------------------------*/
+static int global_create(lua_State *L) {
+ const char* path = luaL_checkstring(L, 1);
+
+ /* allocate unix object */
+ p_unix un = (p_unix) lua_newuserdata(L, sizeof(t_unix));
+
+ /* open serial device */
+#ifdef __MINGW32__
+ t_socket sock = open(path, O_RDWR);
+#else
+ t_socket sock = open(path, O_NOCTTY|O_RDWR);
+#endif
+
+ /*printf("open %s on %d\n", path, sock);*/
+
+ if (sock < 0) {
+ lua_pushnil(L);
+ lua_pushstring(L, socket_strerror(errno));
+ lua_pushnumber(L, errno);
+ return 3;
+ }
+ /* set its type as client object */
+ auxiliar_setclass(L, "serial{client}", -1);
+ /* initialize remaining structure fields */
+ socket_setnonblocking(&sock);
+ un->sock = sock;
+ io_init(&un->io, (p_send) socket_write, (p_recv) socket_read,
+ (p_error) socket_ioerror, &un->sock);
+ timeout_init(&un->tm, -1, -1);
+ buffer_init(&un->buf, &un->io, &un->tm);
+ return 1;
+}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua
index 8f3cfcff6e4..7e7487cc612 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp.lua
@@ -2,20 +2,20 @@
-- SMTP client support for the Lua language.
-- LuaSocket toolkit.
-- Author: Diego Nehab
--- RCS ID: $Id: smtp.lua,v 1.46 2007/03/12 04:08:40 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-- Declare module and import dependencies
-----------------------------------------------------------------------------
local base = _G
-local coroutine = require("coroutine")
+--local coroutine = require("coroutine")
local string = require("string")
local math = require("math")
local os = require("os")
local socket = require("socket")
local tp = require("socket.tp")
local ltn12 = require("ltn12")
+local headers = require("socket.headers")
local mime = require("mime")
module("socket.smtp")
@@ -75,9 +75,9 @@ end
function metat.__index:login(user, password)
self.try(self.tp:command("AUTH", "LOGIN"))
self.try(self.tp:check("3.."))
- self.try(self.tp:command(mime.b64(user)))
+ self.try(self.tp:send(mime.b64(user) .. "\r\n"))
self.try(self.tp:check("3.."))
- self.try(self.tp:command(mime.b64(password)))
+ self.try(self.tp:send(mime.b64(password) .. "\r\n"))
return self.try(self.tp:check("2.."))
end
@@ -146,10 +146,11 @@ end
local send_message
-- yield the headers all at once, it's faster
-local function send_headers(headers)
+local function send_headers(tosend)
+ local canonic = headers.canonic
local h = "\r\n"
- for i,v in base.pairs(headers) do
- h = i .. ': ' .. v .. "\r\n" .. h
+ for f,v in base.pairs(tosend) do
+ h = (canonic[f] or f) .. ': ' .. v .. "\r\n" .. h
end
coroutine.yield(h)
end
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c
index 8743ff557eb..cc3a9316280 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/smtp_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c smtp.lua smtp_lua"
+ * This file is auto-generated by "lua2c smtp.lua smtp_lua"
*/
#include "lua.h"
@@ -15,36 +15,35 @@ int luatex_smtp_lua_open (lua_State *L) {
32,102,111,114, 32,116,104,101, 32, 76,117, 97, 32,108, 97,110,103,117, 97,103,
101, 46, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116, 32,116,111,111,108,
107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103,
-111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36,
- 73,100, 58, 32,115,109,116,112, 46,108,117, 97, 44,118, 32, 49, 46, 52, 54, 32,
- 50, 48, 48, 55, 47, 48, 51, 47, 49, 50, 32, 48, 52, 58, 48, 56, 58, 52, 48, 32,
-100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,
-109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,
-112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,
+108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,101,110,100,
+101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32,
- 61, 32, 95, 71, 10,108,111, 99, 97,108, 32, 99,111,114,111,117,116,105,110,101,
- 32, 61, 32,114,101,113,117,105,114,101, 40, 34, 99,111,114,111,117,116,105,110,
-101, 34, 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,
-101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99,
- 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109,
- 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,111,115, 32, 61, 32,114,101,113,
-117,105,114,101, 40, 34,111,115, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,
-107,101,116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,
-116, 34, 41, 10,108,111, 99, 97,108, 32,116,112, 32, 61, 32,114,101,113,117,105,
-114,101, 40, 34,115,111, 99,107,101,116, 46,116,112, 34, 41, 10,108,111, 99, 97,
-108, 32,108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,
-116,110, 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,109,105,109,101, 32, 61, 32,
+ 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71,
+ 10, 45, 45,108,111, 99, 97,108, 32, 99,111,114,111,117,116,105,110,101, 32, 61,
+ 32,114,101,113,117,105,114,101, 40, 34, 99,111,114,111,117,116,105,110,101, 34,
+ 41, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,
+117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108,
+ 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,116,
+104, 34, 41, 10,108,111, 99, 97,108, 32,111,115, 32, 61, 32,114,101,113,117,105,
+114,101, 40, 34,111,115, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,
+116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 34,
+ 41, 10,108,111, 99, 97,108, 32,116,112, 32, 61, 32,114,101,113,117,105,114,101,
+ 40, 34,115,111, 99,107,101,116, 46,116,112, 34, 41, 10,108,111, 99, 97,108, 32,
+108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110,
+ 49, 50, 34, 41, 10,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61,
+ 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,104,101, 97,
+100,101,114,115, 34, 41, 10,108,111, 99, 97,108, 32,109,105,109,101, 32, 61, 32,
114,101,113,117,105,114,101, 40, 34,109,105,109,101, 34, 41, 10,109,111,100,117,
108,101, 40, 34,115,111, 99,107,101,116, 46,115,109,116,112, 34, 41, 10, 10, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
@@ -134,278 +133,281 @@ int luatex_smtp_lua_open (lua_State *L) {
76, 79, 71, 73, 78, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,
121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 51, 46, 46,
34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,
-102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40,109,105,109,101, 46, 98, 54,
- 52, 40,117,115,101,114, 41, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,
-114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 51, 46,
- 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,
-108,102, 46,116,112, 58, 99,111,109,109, 97,110,100, 40,109,105,109,101, 46, 98,
- 54, 52, 40,112, 97,115,115,119,111,114,100, 41, 41, 41, 10, 32, 32, 32, 32,114,
-101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,
-116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100,
- 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,
-110,100,101,120, 58,112,108, 97,105,110, 40,117,115,101,114, 44, 32,112, 97,115,
-115,119,111,114,100, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,117,116,
-104, 32, 61, 32, 34, 80, 76, 65, 73, 78, 32, 34, 32, 46, 46, 32,109,105,109,101,
- 46, 98, 54, 52, 40, 34, 92, 48, 34, 32, 46, 46, 32,117,115,101,114, 32, 46, 46,
- 32, 34, 92, 48, 34, 32, 46, 46, 32,112, 97,115,115,119,111,114,100, 41, 10, 32,
- 32, 32, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,
- 99,111,109,109, 97,110,100, 40, 34, 65, 85, 84, 72, 34, 44, 32, 97,117,116,104,
- 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,
-114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46,
- 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,
-101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 97,117,116,104, 40,117,115,
-101,114, 44, 32,112, 97,115,115,119,111,114,100, 44, 32,101,120,116, 41, 10, 32,
- 32, 32, 32,105,102, 32,110,111,116, 32,117,115,101,114, 32,111,114, 32,110,111,
-116, 32,112, 97,115,115,119,111,114,100, 32,116,104,101,110, 32,114,101,116,117,
-114,110, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,
-110,103, 46,102,105,110,100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94,
- 92,110, 93, 43, 76, 79, 71, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32,
- 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 58,108,111,103,
-105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41, 10, 32,
- 32, 32, 32,101,108,115,101,105,102, 32,115,116,114,105,110,103, 46,102,105,110,
-100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 80, 76,
- 65, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,
-101,116,117,114,110, 32,115,101,108,102, 58,112,108, 97,105,110, 40,117,115,101,
+102, 46,116,112, 58,115,101,110,100, 40,109,105,109,101, 46, 98, 54, 52, 40,117,
+115,101,114, 41, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 41, 10, 32, 32, 32,
+ 32,115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,
+101, 99,107, 40, 34, 51, 46, 46, 34, 41, 41, 10, 32, 32, 32, 32,115,101,108,102,
+ 46,116,114,121, 40,115,101,108,102, 46,116,112, 58,115,101,110,100, 40,109,105,
+109,101, 46, 98, 54, 52, 40,112, 97,115,115,119,111,114,100, 41, 32, 46, 46, 32,
+ 34, 92,114, 92,110, 34, 41, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+115,101,108,102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,104,101,
+ 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,110,100, 10, 10,102,117,110, 99,
+116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,112,
+108, 97,105,110, 40,117,115,101,114, 44, 32,112, 97,115,115,119,111,114,100, 41,
+ 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,117,116,104, 32, 61, 32, 34, 80,
+ 76, 65, 73, 78, 32, 34, 32, 46, 46, 32,109,105,109,101, 46, 98, 54, 52, 40, 34,
+ 92, 48, 34, 32, 46, 46, 32,117,115,101,114, 32, 46, 46, 32, 34, 92, 48, 34, 32,
+ 46, 46, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,115,101,108,
+102, 46,116,114,121, 40,115,101,108,102, 46,116,112, 58, 99,111,109,109, 97,110,
+100, 40, 34, 65, 85, 84, 72, 34, 44, 32, 97,117,116,104, 41, 41, 10, 32, 32, 32,
+ 32,114,101,116,117,114,110, 32,115,101,108,102, 46,116,114,121, 40,115,101,108,
+102, 46,116,112, 58, 99,104,101, 99,107, 40, 34, 50, 46, 46, 34, 41, 41, 10,101,
+110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95,
+ 95,105,110,100,101,120, 58, 97,117,116,104, 40,117,115,101,114, 44, 32,112, 97,
+115,115,119,111,114,100, 44, 32,101,120,116, 41, 10, 32, 32, 32, 32,105,102, 32,
+110,111,116, 32,117,115,101,114, 32,111,114, 32,110,111,116, 32,112, 97,115,115,
+119,111,114,100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 49, 32,101,
+110,100, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,
+100, 40,101,120,116, 44, 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 76, 79,
+ 71, 73, 78, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,
+101,116,117,114,110, 32,115,101,108,102, 58,108,111,103,105,110, 40,117,115,101,
114, 44, 32,112, 97,115,115,119,111,114,100, 41, 10, 32, 32, 32, 32,101,108,115,
-101, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,110,
-105,108, 44, 32, 34, 97,117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32,
-110,111,116, 32,115,117,112,112,111,114,116,101,100, 34, 41, 10, 32, 32, 32, 32,
-101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101,110,100, 32,109,101,115,
-115, 97,103,101, 32,111,114, 32,116,104,114,111,119, 32, 97,110, 32,101,120, 99,
-101,112,116,105,111,110, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,
-116, 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,109, 97,105,108,116,
- 41, 10, 32, 32, 32, 32,115,101,108,102, 58,109, 97,105,108, 40,109, 97,105,108,
-116, 46,102,114,111,109, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,
-116,121,112,101, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 32, 61, 61, 32,
- 34,116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,105,112, 97,
-105,114,115, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 32,100,111, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,112,116,
- 40,118, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
-101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,
-112,116, 40,109, 97,105,108,116, 46,114, 99,112,116, 41, 10, 32, 32, 32, 32,101,
-110,100, 10, 32, 32, 32, 32,115,101,108,102, 58,100, 97,116, 97, 40,108,116,110,
- 49, 50, 46,115,111,117,114, 99,101, 46, 99,104, 97,105,110, 40,109, 97,105,108,
-116, 46,115,111,117,114, 99,101, 44, 32,109,105,109,101, 46,115,116,117,102,102,
- 40, 41, 41, 44, 32,109, 97,105,108,116, 46,115,116,101,112, 41, 10,101,110,100,
- 10, 10,102,117,110, 99,116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,
-101,114, 44, 32,112,111,114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32,
- 32, 32,108,111, 99, 97,108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,
-116,114,121, 40,116,112, 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,
-114, 32,111,114, 32, 83, 69, 82, 86, 69, 82, 44, 32,112,111,114,116, 32,111,114,
- 32, 80, 79, 82, 84, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 84, 73, 77, 69, 79,
- 85, 84, 44, 32, 99,114,101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,115, 32, 61, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116,
- 97, 98,108,101, 40,123,116,112, 32, 61, 32,116,112,125, 44, 32,109,101,116, 97,
-116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,
-116,112, 32,105,115, 32, 99,108,111,115,101,100, 32,105,102, 32,119,101, 32,103,
-101,116, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110, 10, 32, 32, 32, 32,
-115, 46,116,114,121, 32, 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,
-121, 40,102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,115, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10,
- 32, 32, 32, 32,114,101,116,117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45,
- 32, 99,111,110,118,101,114,116, 32,104,101, 97,100,101,114,115, 32,116,111, 32,
-108,111,119,101,114, 99, 97,115,101, 10,108,111, 99, 97,108, 32,102,117,110, 99,
-116,105,111,110, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,104,
-101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111,
-119,101,114, 32, 61, 32,123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118,
- 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,
-114,115, 32,111,114, 32,108,111,119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,108,111,119,101,114, 91,115,116,114,105,110,103, 46,108,111,119,
-101,114, 40,105, 41, 93, 32, 61, 32,118, 10, 32, 32, 32, 32,101,110,100, 10, 32,
- 32, 32, 32,114,101,116,117,114,110, 32,108,111,119,101,114, 10,101,110,100, 10,
- 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+101,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,101,120,116, 44,
+ 32, 34, 65, 85, 84, 72, 91, 94, 92,110, 93, 43, 80, 76, 65, 73, 78, 34, 41, 32,
+116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+115,101,108,102, 58,112,108, 97,105,110, 40,117,115,101,114, 44, 32,112, 97,115,
+115,119,111,114,100, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,115,101,108,102, 46,116,114,121, 40,110,105,108, 44, 32, 34, 97,
+117,116,104,101,110,116,105, 99, 97,116,105,111,110, 32,110,111,116, 32,115,117,
+112,112,111,114,116,101,100, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,
+100, 10, 10, 45, 45, 32,115,101,110,100, 32,109,101,115,115, 97,103,101, 32,111,
+114, 32,116,104,114,111,119, 32, 97,110, 32,101,120, 99,101,112,116,105,111,110,
+ 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,
+100,101,120, 58,115,101,110,100, 40,109, 97,105,108,116, 41, 10, 32, 32, 32, 32,
+115,101,108,102, 58,109, 97,105,108, 40,109, 97,105,108,116, 46,102,114,111,109,
+ 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,109,
+ 97,105,108,116, 46,114, 99,112,116, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101,
+ 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111,114, 32,105,
+ 44,118, 32,105,110, 32, 98, 97,115,101, 46,105,112, 97,105,114,115, 40,109, 97,
+105,108,116, 46,114, 99,112,116, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,112,116, 40,118, 41, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,115,101,108,102, 58,114, 99,112,116, 40,109, 97,105,
+108,116, 46,114, 99,112,116, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+ 32,115,101,108,102, 58,100, 97,116, 97, 40,108,116,110, 49, 50, 46,115,111,117,
+114, 99,101, 46, 99,104, 97,105,110, 40,109, 97,105,108,116, 46,115,111,117,114,
+ 99,101, 44, 32,109,105,109,101, 46,115,116,117,102,102, 40, 41, 41, 44, 32,109,
+ 97,105,108,116, 46,115,116,101,112, 41, 10,101,110,100, 10, 10,102,117,110, 99,
+116,105,111,110, 32,111,112,101,110, 40,115,101,114,118,101,114, 44, 32,112,111,
+114,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,
+108, 32,116,112, 32, 61, 32,115,111, 99,107,101,116, 46,116,114,121, 40,116,112,
+ 46, 99,111,110,110,101, 99,116, 40,115,101,114,118,101,114, 32,111,114, 32, 83,
+ 69, 82, 86, 69, 82, 44, 32,112,111,114,116, 32,111,114, 32, 80, 79, 82, 84, 44,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32, 84, 73, 77, 69, 79, 85, 84, 44, 32, 99,114,
+101, 97,116,101, 41, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61,
+ 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123,
+116,112, 32, 61, 32,116,112,125, 44, 32,109,101,116, 97,116, 41, 10, 32, 32, 32,
+ 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,116,112, 32,105,115, 32,
+ 99,108,111,115,101,100, 32,105,102, 32,119,101, 32,103,101,116, 32, 97,110, 32,
+101,120, 99,101,112,116,105,111,110, 10, 32, 32, 32, 32,115, 46,116,114,121, 32,
+ 61, 32,115,111, 99,107,101,116, 46,110,101,119,116,114,121, 40,102,117,110, 99,
+116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115, 58, 99,108,111,
+115,101, 40, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,
+116,117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45, 32, 99,111,110,118,101,
+114,116, 32,104,101, 97,100,101,114,115, 32,116,111, 32,108,111,119,101,114, 99,
+ 97,115,101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,108,
+111,119,101,114, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115,
+ 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,108,111,119,101,114, 32, 61, 32,
+123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,
+115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115, 32,111,114, 32,
+108,111,119,101,114, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111,
+119,101,114, 91,115,116,114,105,110,103, 46,108,111,119,101,114, 40,105, 41, 93,
+ 32, 61, 32,118, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,
+117,114,110, 32,108,111,119,101,114, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,117,108,116,105,112,
+ 97,114,116, 32,109,101,115,115, 97,103,101, 32,115,111,117,114, 99,101, 10, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,
- 77,117,108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32,115,111,
-117,114, 99,101, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 10, 45, 45, 32,114,101,116,117,114,110,115, 32, 97, 32,104,111,112,101,
-102,117,108,108,121, 32,117,110,105,113,117,101, 32,109,105,109,101, 32, 98,111,
-117,110,100, 97,114,121, 10,108,111, 99, 97,108, 32,115,101,113,110,111, 32, 61,
- 32, 48, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,101,
-119, 98,111,117,110,100, 97,114,121, 40, 41, 10, 32, 32, 32, 32,115,101,113,110,
-111, 32, 61, 32,115,101,113,110,111, 32, 43, 32, 49, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 39,
- 37,115, 37, 48, 53,100, 61, 61, 37, 48, 53,117, 39, 44, 32,111,115, 46,100, 97,
-116,101, 40, 39, 37,100, 37,109, 37, 89, 37, 72, 37, 77, 37, 83, 39, 41, 44, 10,
- 32, 32, 32, 32, 32, 32, 32, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40,
- 48, 44, 32, 57, 57, 57, 57, 57, 41, 44, 32,115,101,113,110,111, 41, 10,101,110,
-100, 10, 10, 45, 45, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 32,102,
-111,114,119, 97,114,100, 32,100,101, 99,108, 97,114, 97,116,105,111,110, 10,108,
-111, 99, 97,108, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 10, 10, 45,
- 45, 32,121,105,101,108,100, 32,116,104,101, 32,104,101, 97,100,101,114,115, 32,
- 97,108,108, 32, 97,116, 32,111,110, 99,101, 44, 32,105,116, 39,115, 32,102, 97,
-115,116,101,114, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,
-115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115,
- 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104, 32, 61, 32, 34, 92,114, 92,
-110, 34, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,
-115,101, 46,112, 97,105,114,115, 40,104,101, 97,100,101,114,115, 41, 32,100,111,
- 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61, 32,105, 32, 46, 46, 32, 39, 58,
- 32, 39, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 32, 46, 46,
- 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 99,111,114,111,117,
-116,105,110,101, 46,121,105,101,108,100, 40,104, 41, 10,101,110,100, 10, 10, 45,
- 45, 32,121,105,101,108,100, 32,109,117,108,116,105,112, 97,114,116, 32,109,101,
-115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, 32,109,117,
-108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32,116, 97, 98,108,
-101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110,
-100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103,116, 41, 10, 32,
- 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104,
- 97,118,101, 32,111,117,114, 32, 98,111,117,110,100, 97,114,121, 32, 97,110,100,
- 32,115,101,110,100, 32,104,101, 97,100,101,114,115, 10, 32, 32, 32, 32,108,111,
- 99, 97,108, 32, 98,100, 32, 61, 32,110,101,119, 98,111,117,110,100, 97,114,121,
- 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115,
- 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115,
-103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32,
- 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,
-121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,
-116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 32, 39,109,117,108,116,
-105,112, 97,114,116, 47,109,105,120,101,100, 39, 10, 32, 32, 32, 32,104,101, 97,
-100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93,
- 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,
-116,121,112,101, 39, 93, 32, 46, 46, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39, 59,
- 32, 98,111,117,110,100, 97,114,121, 61, 34, 39, 32, 46, 46, 32, 32, 98,100, 32,
- 46, 46, 32, 39, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97,100,
-101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, 32,
-115,101,110,100, 32,112,114,101, 97,109, 98,108,101, 10, 32, 32, 32, 32,105,102,
- 32,109,101,115,103,116, 46, 98,111,100,121, 46,112,114,101, 97,109, 98,108,101,
- 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,
-105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46, 98,111,100,121,
- 46,112,114,101, 97,109, 98,108,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,
-111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110,
- 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,115,101,
-110,100, 32,101, 97, 99,104, 32,112, 97,114,116, 32,115,101,112, 97,114, 97,116,
-101,100, 32, 98,121, 32, 97, 32, 98,111,117,110,100, 97,114,121, 10, 32, 32, 32,
- 32,102,111,114, 32,105, 44, 32,109, 32,105,110, 32, 98, 97,115,101, 46,105,112,
- 97,105,114,115, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32,100,111, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,
-101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32, 98,100, 32, 46,
- 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,101,
-110,100, 95,109,101,115,115, 97,103,101, 40,109, 41, 10, 32, 32, 32, 32,101,110,
-100, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,108, 97,115,116, 32, 98,
-111,117,110,100, 97,114,121, 10, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,
-101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32,
- 98,100, 32, 46, 46, 32, 34, 45, 45, 92,114, 92,110, 92,114, 92,110, 34, 41, 10,
- 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,101,112,105,108,111,103,117,101,
- 10, 32, 32, 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111,100,121, 46,101,
-112,105,108,111,103,117,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,
-103,116, 46, 98,111,100,121, 46,101,112,105,108,111,103,117,101, 41, 10, 32, 32,
- 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,
-100, 40, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,
-100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,101,115,115, 97,103,101, 32,
- 98,111,100,121, 32,102,114,111,109, 32, 97, 32,115,111,117,114, 99,101, 10,108,
-111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110,100, 95,115,
-111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,
-109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104, 97,118,101, 32, 97, 32,
- 99,111,110,116,101,110,116, 45,116,121,112,101, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,108,111,119,101,114, 95,104,
-101, 97,100,101,114,115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115,
- 32,111,114, 32,123,125, 41, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91,
- 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101,
- 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39,
- 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39,116,101,120,116, 47,112,
-108, 97,105,110, 59, 32, 99,104, 97,114,115,101,116, 61, 34,105,115,111, 45, 56,
- 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97,
-100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45,
- 32,115,101,110,100, 32, 98,111,100,121, 32,102,114,111,109, 32,115,111,117,114,
- 99,101, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,101, 32,100,111,
- 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107,
- 44, 32,101,114,114, 32, 61, 32,109,101,115,103,116, 46, 98,111,100,121, 40, 41,
- 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,116,104,101,110,
- 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,110,105,108,
- 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,
-102, 32, 99,104,117,110,107, 32,116,104,101,110, 32, 99,111,114,111,117,116,105,
-110,101, 46,121,105,101,108,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,101,108,115,101, 32, 98,114,101, 97,107, 32,101,110,100, 10, 32,
- 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,121,105,101,108,100,
- 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97,
- 32,115,116,114,105,110,103, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,
-111,110, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,101,115,103,116,
- 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119,
-101, 32,104, 97,118,101, 32, 97, 32, 99,111,110,116,101,110,116, 45,116,121,112,
-101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32,
- 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115,103,
-116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, 32,
+114,101,116,117,114,110,115, 32, 97, 32,104,111,112,101,102,117,108,108,121, 32,
+117,110,105,113,117,101, 32,109,105,109,101, 32, 98,111,117,110,100, 97,114,121,
+ 10,108,111, 99, 97,108, 32,115,101,113,110,111, 32, 61, 32, 48, 10,108,111, 99,
+ 97,108, 32,102,117,110, 99,116,105,111,110, 32,110,101,119, 98,111,117,110,100,
+ 97,114,121, 40, 41, 10, 32, 32, 32, 32,115,101,113,110,111, 32, 61, 32,115,101,
+113,110,111, 32, 43, 32, 49, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,
+116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 39, 37,115, 37, 48, 53,100,
+ 61, 61, 37, 48, 53,117, 39, 44, 32,111,115, 46,100, 97,116,101, 40, 39, 37,100,
+ 37,109, 37, 89, 37, 72, 37, 77, 37, 83, 39, 41, 44, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,109, 97,116,104, 46,114, 97,110,100,111,109, 40, 48, 44, 32, 57, 57, 57,
+ 57, 57, 41, 44, 32,115,101,113,110,111, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+115,101,110,100, 95,109,101,115,115, 97,103,101, 32,102,111,114,119, 97,114,100,
+ 32,100,101, 99,108, 97,114, 97,116,105,111,110, 10,108,111, 99, 97,108, 32,115,
+101,110,100, 95,109,101,115,115, 97,103,101, 10, 10, 45, 45, 32,121,105,101,108,
+100, 32,116,104,101, 32,104,101, 97,100,101,114,115, 32, 97,108,108, 32, 97,116,
+ 32,111,110, 99,101, 44, 32,105,116, 39,115, 32,102, 97,115,116,101,114, 10,108,
+111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,110,100, 95,104,
+101, 97,100,101,114,115, 40,116,111,115,101,110,100, 41, 10, 32, 32, 32, 32,108,
+111, 99, 97,108, 32, 99, 97,110,111,110,105, 99, 32, 61, 32,104,101, 97,100,101,
+114,115, 46, 99, 97,110,111,110,105, 99, 10, 32, 32, 32, 32,108,111, 99, 97,108,
+ 32,104, 32, 61, 32, 34, 92,114, 92,110, 34, 10, 32, 32, 32, 32,102,111,114, 32,
+102, 44,118, 32,105,110, 32, 98, 97,115,101, 46,112, 97,105,114,115, 40,116,111,
+115,101,110,100, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,104, 32, 61,
+ 32, 40, 99, 97,110,111,110,105, 99, 91,102, 93, 32,111,114, 32,102, 41, 32, 46,
+ 46, 32, 39, 58, 32, 39, 32, 46, 46, 32,118, 32, 46, 46, 32, 34, 92,114, 92,110,
+ 34, 32, 46, 46, 32,104, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 99,
+111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,104, 41, 10,101,110,
+100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,117,108,116,105,112, 97,114,
+116, 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32,
+ 97, 32,109,117,108,116,105,112, 97,114,116, 32,109,101,115,115, 97,103,101, 32,
+116, 97, 98,108,101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110,
+ 32,115,101,110,100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103,
+116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,
+119,101, 32,104, 97,118,101, 32,111,117,114, 32, 98,111,117,110,100, 97,114,121,
+ 32, 97,110,100, 32,115,101,110,100, 32,104,101, 97,100,101,114,115, 10, 32, 32,
+ 32, 32,108,111, 99, 97,108, 32, 98,100, 32, 61, 32,110,101,119, 98,111,117,110,
+100, 97,114,121, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,
+100,101,114,115, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115,
+ 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125,
+ 41, 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,
+110,116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91,
+ 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 32, 39,
+109,117,108,116,105,112, 97,114,116, 47,109,105,120,101,100, 39, 10, 32, 32, 32,
32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,
112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,
-101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 39,116,101,120,116, 47,112,108, 97,105,110, 59, 32, 99,104, 97,114,115,
-101,116, 61, 34,105,115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32,
- 32,115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,
-115, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32, 98,111,100,121, 32,
-102,114,111,109, 32,115,116,114,105,110,103, 10, 32, 32, 32, 32, 99,111,114,111,
-117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46, 98,111,
-100,121, 41, 10,101,110,100, 10, 10, 45, 45, 32,109,101,115,115, 97,103,101, 32,
-115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,115,101,110,100,
- 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,
-105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,109,101,115,103,116, 46, 98,
-111,100,121, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,116,104,101,110,
- 32,115,101,110,100, 95,109,117,108,116,105,112, 97,114,116, 40,109,101,115,103,
-116, 41, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32, 98, 97,115,101, 46,116,
-121,112,101, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32, 61, 61, 32, 34,
-102,117,110, 99,116,105,111,110, 34, 32,116,104,101,110, 32,115,101,110,100, 95,
-115,111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,101,108,
-115,101, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,101,115,103,116,
- 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101,116, 32,100,101,
-102, 97,117,108, 32,104,101, 97,100,101,114,115, 10,108,111, 99, 97,108, 32,102,
-117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116, 95,104,101, 97,100,101,
-114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
-108,111,119,101,114, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,
-115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32,
- 32,108,111,119,101,114, 91, 34,100, 97,116,101, 34, 93, 32, 61, 32,108,111,119,
-101,114, 91, 34,100, 97,116,101, 34, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,111,115, 46,100, 97,116,101, 40, 34, 33, 37, 97, 44, 32, 37,100, 32, 37,
- 98, 32, 37, 89, 32, 37, 72, 58, 37, 77, 58, 37, 83, 32, 34, 41, 32, 46, 46, 32,
- 40,109,101,115,103,116, 46,122,111,110,101, 32,111,114, 32, 90, 79, 78, 69, 41,
- 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,105,108,101,114,
- 34, 93, 32, 61, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,105,108,101,114,
- 34, 93, 32,111,114, 32,115,111, 99,107,101,116, 46, 95, 86, 69, 82, 83, 73, 79,
- 78, 10, 32, 32, 32, 32, 45, 45, 32,116,104,105,115, 32, 99, 97,110, 39,116, 32,
- 98,101, 32,111,118,101,114,114,105,100,101,110, 10, 32, 32, 32, 32,108,111,119,
-101,114, 91, 34,109,105,109,101, 45,118,101,114,115,105,111,110, 34, 93, 32, 61,
- 32, 34, 49, 46, 48, 34, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,108,111,
-119,101,114, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,
-115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,109,101,115,
-103,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106,117,115,116, 95,
-104,101, 97,100,101,114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32, 45,
- 45, 32, 99,114,101, 97,116,101, 32, 97,110,100, 32,114,101,116,117,114,110, 32,
-109,101,115,115, 97,103,101, 32,115,111,117,114, 99,101, 10, 32, 32, 32, 32,108,
-111, 99, 97,108, 32, 99,111, 32, 61, 32, 99,111,114,111,117,116,105,110,101, 46,
- 99,114,101, 97,116,101, 40,102,117,110, 99,116,105,111,110, 40, 41, 32,115,101,
-110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 32,101,110,
-100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,105,
-111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,
-101,116, 44, 32, 97, 44, 32, 98, 32, 61, 32, 99,111,114,111,117,116,105,110,101,
- 46,114,101,115,117,109,101, 40, 99,111, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-105,102, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 97,
- 44, 32, 98, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,
-117,114,110, 32,110,105,108, 44, 32, 97, 32,101,110,100, 10, 32, 32, 32, 32,101,
-110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118,101,108, 32, 83, 77,
- 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 10,115,101,110,100, 32, 61, 32,115,111, 99,107,101,116, 46,112,
-114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,109, 97,105,108,
-116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61, 32,111,112,101,
-110, 40,109, 97,105,108,116, 46,115,101,114,118,101,114, 44, 32,109, 97,105,108,
-116, 46,112,111,114,116, 44, 32,109, 97,105,108,116, 46, 99,114,101, 97,116,101,
- 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,101,120,116, 32, 61, 32,115, 58,
-103,114,101,101,116, 40,109, 97,105,108,116, 46,100,111,109, 97,105,110, 41, 10,
- 32, 32, 32, 32,115, 58, 97,117,116,104, 40,109, 97,105,108,116, 46,117,115,101,
-114, 44, 32,109, 97,105,108,116, 46,112, 97,115,115,119,111,114,100, 44, 32,101,
-120,116, 41, 10, 32, 32, 32, 32,115, 58,115,101,110,100, 40,109, 97,105,108,116,
- 41, 10, 32, 32, 32, 32,115, 58,113,117,105,116, 40, 41, 10, 32, 32, 32, 32,114,
-101,116,117,114,110, 32,115, 58, 99,108,111,115,101, 40, 41, 10,101,110,100, 41,
- 10,
+101,110,116, 45,116,121,112,101, 39, 93, 32, 46, 46, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32, 39, 59, 32, 98,111,117,110,100, 97,114,121, 61, 34, 39, 32, 46, 46, 32,
+ 32, 98,100, 32, 46, 46, 32, 39, 34, 39, 10, 32, 32, 32, 32,115,101,110,100, 95,
+104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32, 32,
+ 32, 45, 45, 32,115,101,110,100, 32,112,114,101, 97,109, 98,108,101, 10, 32, 32,
+ 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111,100,121, 46,112,114,101, 97,
+109, 98,108,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,
+114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,116, 46,
+ 98,111,100,121, 46,112,114,101, 97,109, 98,108,101, 41, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40, 34,
+ 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 45,
+ 45, 32,115,101,110,100, 32,101, 97, 99,104, 32,112, 97,114,116, 32,115,101,112,
+ 97,114, 97,116,101,100, 32, 98,121, 32, 97, 32, 98,111,117,110,100, 97,114,121,
+ 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32,109, 32,105,110, 32, 98, 97,115,
+101, 46,105,112, 97,105,114,115, 40,109,101,115,103,116, 46, 98,111,100,121, 41,
+ 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,
+101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34, 32, 46, 46, 32,
+ 98,100, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 40,109, 41, 10, 32, 32,
+ 32, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,108, 97,
+115,116, 32, 98,111,117,110,100, 97,114,121, 10, 32, 32, 32, 32, 99,111,114,111,
+117,116,105,110,101, 46,121,105,101,108,100, 40, 34, 92,114, 92,110, 45, 45, 34,
+ 32, 46, 46, 32, 98,100, 32, 46, 46, 32, 34, 45, 45, 92,114, 92,110, 92,114, 92,
+110, 34, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32,101,112,105,108,
+111,103,117,101, 10, 32, 32, 32, 32,105,102, 32,109,101,115,103,116, 46, 98,111,
+100,121, 46,101,112,105,108,111,103,117,101, 32,116,104,101,110, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100,
+ 40,109,101,115,103,116, 46, 98,111,100,121, 46,101,112,105,108,111,103,117,101,
+ 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99,111,114,111,117,116,105,110,101, 46,
+121,105,101,108,100, 40, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,
+100, 10,101,110,100, 10, 10, 45, 45, 32,121,105,101,108,100, 32,109,101,115,115,
+ 97,103,101, 32, 98,111,100,121, 32,102,114,111,109, 32, 97, 32,115,111,117,114,
+ 99,101, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,115,101,
+110,100, 95,115,111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32,
+ 32, 45, 45, 32,109, 97,107,101, 32,115,117,114,101, 32,119,101, 32,104, 97,118,
+101, 32, 97, 32, 99,111,110,116,101,110,116, 45,116,121,112,101, 10, 32, 32, 32,
+ 32,108,111, 99, 97,108, 32,104,101, 97,100,101,114,115, 32, 61, 32,108,111,119,
+101,114, 95,104,101, 97,100,101,114,115, 40,109,101,115,103,116, 46,104,101, 97,
+100,101,114,115, 32,111,114, 32,123,125, 41, 10, 32, 32, 32, 32,104,101, 97,100,
+101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32,
+ 61, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,116, 45,116,
+121,112,101, 39, 93, 32,111,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 39,116,101,
+120,116, 47,112,108, 97,105,110, 59, 32, 99,104, 97,114,115,101,116, 61, 34,105,
+115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39, 10, 32, 32, 32, 32,115,101,110,100,
+ 95,104,101, 97,100,101,114,115, 40,104,101, 97,100,101,114,115, 41, 10, 32, 32,
+ 32, 32, 45, 45, 32,115,101,110,100, 32, 98,111,100,121, 32,102,114,111,109, 32,
+115,111,117,114, 99,101, 10, 32, 32, 32, 32,119,104,105,108,101, 32,116,114,117,
+101, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,
+104,117,110,107, 44, 32,101,114,114, 32, 61, 32,109,101,115,103,116, 46, 98,111,
+100,121, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114, 32,
+116,104,101,110, 32, 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100,
+ 40,110,105,108, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,
+108,115,101,105,102, 32, 99,104,117,110,107, 32,116,104,101,110, 32, 99,111,114,
+111,117,116,105,110,101, 46,121,105,101,108,100, 40, 99,104,117,110,107, 41, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 98,114,101, 97,107, 32,101,
+110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,121,
+105,101,108,100, 32,109,101,115,115, 97,103,101, 32, 98,111,100,121, 32,102,114,
+111,109, 32, 97, 32,115,116,114,105,110,103, 10,108,111, 99, 97,108, 32,102,117,
+110, 99,116,105,111,110, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,
+101,115,103,116, 41, 10, 32, 32, 32, 32, 45, 45, 32,109, 97,107,101, 32,115,117,
+114,101, 32,119,101, 32,104, 97,118,101, 32, 97, 32, 99,111,110,116,101,110,116,
+ 45,116,121,112,101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,104,101, 97,100,
+101,114,115, 32, 61, 32,108,111,119,101,114, 95,104,101, 97,100,101,114,115, 40,
+109,101,115,103,116, 46,104,101, 97,100,101,114,115, 32,111,114, 32,123,125, 41,
+ 10, 32, 32, 32, 32,104,101, 97,100,101,114,115, 91, 39, 99,111,110,116,101,110,
+116, 45,116,121,112,101, 39, 93, 32, 61, 32,104,101, 97,100,101,114,115, 91, 39,
+ 99,111,110,116,101,110,116, 45,116,121,112,101, 39, 93, 32,111,114, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 39,116,101,120,116, 47,112,108, 97,105,110, 59, 32, 99,
+104, 97,114,115,101,116, 61, 34,105,115,111, 45, 56, 56, 53, 57, 45, 49, 34, 39,
+ 10, 32, 32, 32, 32,115,101,110,100, 95,104,101, 97,100,101,114,115, 40,104,101,
+ 97,100,101,114,115, 41, 10, 32, 32, 32, 32, 45, 45, 32,115,101,110,100, 32, 98,
+111,100,121, 32,102,114,111,109, 32,115,116,114,105,110,103, 10, 32, 32, 32, 32,
+ 99,111,114,111,117,116,105,110,101, 46,121,105,101,108,100, 40,109,101,115,103,
+116, 46, 98,111,100,121, 41, 10,101,110,100, 10, 10, 45, 45, 32,109,101,115,115,
+ 97,103,101, 32,115,111,117,114, 99,101, 10,102,117,110, 99,116,105,111,110, 32,
+115,101,110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 10,
+ 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40,109,101,115,
+103,116, 46, 98,111,100,121, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,
+116,104,101,110, 32,115,101,110,100, 95,109,117,108,116,105,112, 97,114,116, 40,
+109,101,115,103,116, 41, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32, 98, 97,
+115,101, 46,116,121,112,101, 40,109,101,115,103,116, 46, 98,111,100,121, 41, 32,
+ 61, 61, 32, 34,102,117,110, 99,116,105,111,110, 34, 32,116,104,101,110, 32,115,
+101,110,100, 95,115,111,117,114, 99,101, 40,109,101,115,103,116, 41, 10, 32, 32,
+ 32, 32,101,108,115,101, 32,115,101,110,100, 95,115,116,114,105,110,103, 40,109,
+101,115,103,116, 41, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,115,101,
+116, 32,100,101,102, 97,117,108, 32,104,101, 97,100,101,114,115, 10,108,111, 99,
+ 97,108, 32,102,117,110, 99,116,105,111,110, 32, 97,100,106,117,115,116, 95,104,
+101, 97,100,101,114,115, 40,109,101,115,103,116, 41, 10, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32,108,111,119,101,114, 32, 61, 32,108,111,119,101,114, 95,104,101,
+ 97,100,101,114,115, 40,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 41,
+ 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,100, 97,116,101, 34, 93, 32, 61,
+ 32,108,111,119,101,114, 91, 34,100, 97,116,101, 34, 93, 32,111,114, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,111,115, 46,100, 97,116,101, 40, 34, 33, 37, 97, 44, 32,
+ 37,100, 32, 37, 98, 32, 37, 89, 32, 37, 72, 58, 37, 77, 58, 37, 83, 32, 34, 41,
+ 32, 46, 46, 32, 40,109,101,115,103,116, 46,122,111,110,101, 32,111,114, 32, 90,
+ 79, 78, 69, 41, 10, 32, 32, 32, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,
+105,108,101,114, 34, 93, 32, 61, 32,108,111,119,101,114, 91, 34,120, 45,109, 97,
+105,108,101,114, 34, 93, 32,111,114, 32,115,111, 99,107,101,116, 46, 95, 86, 69,
+ 82, 83, 73, 79, 78, 10, 32, 32, 32, 32, 45, 45, 32,116,104,105,115, 32, 99, 97,
+110, 39,116, 32, 98,101, 32,111,118,101,114,114,105,100,101,110, 10, 32, 32, 32,
+ 32,108,111,119,101,114, 91, 34,109,105,109,101, 45,118,101,114,115,105,111,110,
+ 34, 93, 32, 61, 32, 34, 49, 46, 48, 34, 10, 32, 32, 32, 32,114,101,116,117,114,
+110, 32,108,111,119,101,114, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,
+110, 32,109,101,115,115, 97,103,101, 40,109,101,115,103,116, 41, 10, 32, 32, 32,
+ 32,109,101,115,103,116, 46,104,101, 97,100,101,114,115, 32, 61, 32, 97,100,106,
+117,115,116, 95,104,101, 97,100,101,114,115, 40,109,101,115,103,116, 41, 10, 32,
+ 32, 32, 32, 45, 45, 32, 99,114,101, 97,116,101, 32, 97,110,100, 32,114,101,116,
+117,114,110, 32,109,101,115,115, 97,103,101, 32,115,111,117,114, 99,101, 10, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32, 99,111, 32, 61, 32, 99,111,114,111,117,116,
+105,110,101, 46, 99,114,101, 97,116,101, 40,102,117,110, 99,116,105,111,110, 40,
+ 41, 32,115,101,110,100, 95,109,101,115,115, 97,103,101, 40,109,101,115,103,116,
+ 41, 32,101,110,100, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,
+110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99,
+ 97,108, 32,114,101,116, 44, 32, 97, 44, 32, 98, 32, 61, 32, 99,111,114,111,117,
+116,105,110,101, 46,114,101,115,117,109,101, 40, 99,111, 41, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,105,102, 32,114,101,116, 32,116,104,101,110, 32,114,101,116,117,
+114,110, 32, 97, 44, 32, 98, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,
+ 32,114,101,116,117,114,110, 32,110,105,108, 44, 32, 97, 32,101,110,100, 10, 32,
+ 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 72,105,103,104, 32,108,101,118,101,
+108, 32, 83, 77, 84, 80, 32, 65, 80, 73, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 10,115,101,110,100, 32, 61, 32,115,111, 99,107,
+101,116, 46,112,114,111,116,101, 99,116, 40,102,117,110, 99,116,105,111,110, 40,
+109, 97,105,108,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32, 61,
+ 32,111,112,101,110, 40,109, 97,105,108,116, 46,115,101,114,118,101,114, 44, 32,
+109, 97,105,108,116, 46,112,111,114,116, 44, 32,109, 97,105,108,116, 46, 99,114,
+101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,101,120,116, 32,
+ 61, 32,115, 58,103,114,101,101,116, 40,109, 97,105,108,116, 46,100,111,109, 97,
+105,110, 41, 10, 32, 32, 32, 32,115, 58, 97,117,116,104, 40,109, 97,105,108,116,
+ 46,117,115,101,114, 44, 32,109, 97,105,108,116, 46,112, 97,115,115,119,111,114,
+100, 44, 32,101,120,116, 41, 10, 32, 32, 32, 32,115, 58,115,101,110,100, 40,109,
+ 97,105,108,116, 41, 10, 32, 32, 32, 32,115, 58,113,117,105,116, 40, 41, 10, 32,
+ 32, 32, 32,114,101,116,117,114,110, 32,115, 58, 99,108,111,115,101, 40, 41, 10,
+101,110,100, 41, 10,
0 };
return luaL_dostring(L, (const char*)B);
} /* end of embedded lua code */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h
index 656c7f5d5ce..63573de5da1 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.h
@@ -8,8 +8,6 @@
* differences. Also, not all *nix platforms behave the same. This module
* (and the associated usocket.h and wsocket.h) factor these differences and
* creates a interface compatible with the io.h module.
-*
-* RCS ID: $Id: socket.h,v 1.20 2005/11/20 07:20:23 diego Exp $
\*=========================================================================*/
#include "io.h"
@@ -61,6 +59,7 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr,
socklen_t *addr_len, p_timeout tm);
const char *socket_hoststrerror(int err);
+const char *socket_gaistrerror(int err);
const char *socket_strerror(int err);
/* these are perfect to use with the io abstraction module
@@ -68,6 +67,9 @@ const char *socket_strerror(int err);
int socket_send(p_socket ps, const char *data, size_t count,
size_t *sent, p_timeout tm);
int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
+int socket_write(p_socket ps, const char *data, size_t count,
+ size_t *sent, p_timeout tm);
+int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm);
const char *socket_ioerror(p_socket ps, int err);
int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp);
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
index 211adcd1d98..e8def759f47 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/socket.lua
@@ -1,7 +1,6 @@
-----------------------------------------------------------------------------
-- LuaSocket helper module
-- Author: Diego Nehab
--- RCS ID: $Id: socket.lua,v 1.22 2005/11/22 08:33:29 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -16,27 +15,41 @@ module("socket")
-----------------------------------------------------------------------------
-- Exported auxiliar functions
-----------------------------------------------------------------------------
-function connect(address, port, laddress, lport)
- local sock, err = socket.tcp()
- if not sock then return nil, err end
- if laddress then
- local res, err = sock:bind(laddress, lport, -1)
- if not res then return nil, err end
- end
- local res, err = sock:connect(address, port)
- if not res then return nil, err end
- return sock
+function connect4(address, port, laddress, lport)
+ return socket.connect(address, port, laddress, lport, "inet")
+end
+
+function connect6(address, port, laddress, lport)
+ return socket.connect(address, port, laddress, lport, "inet6")
end
function bind(host, port, backlog)
- local sock, err = socket.tcp()
- if not sock then return nil, err end
- sock:setoption("reuseaddr", true)
- local res, err = sock:bind(host, port)
- if not res then return nil, err end
- res, err = sock:listen(backlog)
- if not res then return nil, err end
- return sock
+ if host == "*" then host = "0.0.0.0" end
+ local addrinfo, err = socket.dns.getaddrinfo(host);
+ if not addrinfo then return nil, err end
+ local sock, res
+ err = "no info on address"
+ for i, alt in base.ipairs(addrinfo) do
+ if alt.family == "inet" then
+ sock, err = socket.tcp()
+ else
+ sock, err = socket.tcp6()
+ end
+ if not sock then return nil, err end
+ sock:setoption("reuseaddr", true)
+ res, err = sock:bind(alt.addr, port)
+ if not res then
+ sock:close()
+ else
+ res, err = sock:listen(backlog)
+ if not res then
+ sock:close()
+ else
+ return sock
+ end
+ end
+ end
+ return nil, err
end
try = newtry()
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c
index 4f3709e0d0e..bf645579cc7 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/socket_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c socket.lua socket_lua"
+ * This file is auto-generated by "lua2c socket.lua socket_lua"
*/
#include "lua.h"
@@ -13,109 +13,189 @@ int luatex_socket_lua_open (lua_State *L) {
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
32, 76,117, 97, 83,111, 99,107,101,116, 32,104,101,108,112,101,114, 32,109,111,
100,117,108,101, 10, 45, 45, 32, 65,117,116,104,111,114, 58, 32, 68,105,101,103,
-111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36,
- 73,100, 58, 32,115,111, 99,107,101,116, 46,108,117, 97, 44,118, 32, 49, 46, 50,
- 50, 32, 50, 48, 48, 53, 47, 49, 49, 47, 50, 50, 32, 48, 56, 58, 51, 51, 58, 50,
- 57, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,
-101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,
-100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,
-101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32,
- 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,
-108,111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101,
- 40, 34,109, 97,116,104, 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,
-116, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46,
- 99,111,114,101, 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,
-116, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 10, 45, 45, 32, 69,120,112,111,114,116,101,100, 32, 97,117,120,105,108,
-105, 97,114, 32,102,117,110, 99,116,105,111,110,115, 10, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110,
- 32, 99,111,110,110,101, 99,116, 40, 97,100,100,114,101,115,115, 44, 32,112,111,
-114,116, 44, 32,108, 97,100,100,114,101,115,115, 44, 32,108,112,111,114,116, 41,
- 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,111, 99,107, 44, 32,101,114,114,
- 32, 61, 32,115,111, 99,107,101,116, 46,116, 99,112, 40, 41, 10, 32, 32, 32, 32,
-105,102, 32,110,111,116, 32,115,111, 99,107, 32,116,104,101,110, 32,114,101,116,
-117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32,
- 32,105,102, 32,108, 97,100,100,114,101,115,115, 32,116,104,101,110, 10, 32, 32,
- 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, 32,101,114,114,
- 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40,108, 97,100,100,114,101,115,
-115, 44, 32,108,112,111,114,116, 44, 32, 45, 49, 41, 10, 32, 32, 32, 32, 32, 32,
- 32, 32,105,102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32,114,101,
-116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32,
- 32, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44,
- 32,101,114,114, 32, 61, 32,115,111, 99,107, 58, 99,111,110,110,101, 99,116, 40,
- 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105,
-102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32,114,101,116,117,114,
-110, 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,114,
-101,116,117,114,110, 32,115,111, 99,107, 10,101,110,100, 10, 10,102,117,110, 99,
-116,105,111,110, 32, 98,105,110,100, 40,104,111,115,116, 44, 32,112,111,114,116,
- 44, 32, 98, 97, 99,107,108,111,103, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108,
- 32,115,111, 99,107, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101,116, 46,
-116, 99,112, 40, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,111, 99,
-107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,
-114,114, 32,101,110,100, 10, 32, 32, 32, 32,115,111, 99,107, 58,115,101,116,111,
-112,116,105,111,110, 40, 34,114,101,117,115,101, 97,100,100,114, 34, 44, 32,116,
-114,117,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,115, 44, 32,
-101,114,114, 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40,104,111,115,116,
- 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,
-101,115, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,
-101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,114,101,115, 44, 32,101,114,114,
- 32, 61, 32,115,111, 99,107, 58,108,105,115,116,101,110, 40, 98, 97, 99,107,108,
-111,103, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,115, 32,116,
-104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,
-101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,111, 99,107, 10,
-101,110,100, 10, 10,116,114,121, 32, 61, 32,110,101,119,116,114,121, 40, 41, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115,101, 40,116, 97, 98,
-108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,116,
-105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50,
- 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,121,
-112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116,114,105,110,103, 34,
- 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110, 97,
-109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100,101,
-102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111,112,116, 49, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,108,
-111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91,110, 97,109,101, 32,
-111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102,
- 32,110,111,116, 32,102, 32,116,104,101,110, 32, 98, 97,115,101, 46,101,114,114,
-111,114, 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 46, 46,
- 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101, 41,
- 32, 46, 46, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,
-108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32,111,
-112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100,
- 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
- 45, 45, 32, 83,111, 99,107,101,116, 32,115,111,117,114, 99,101,115, 32, 97,110,
-100, 32,115,105,110,107,115, 44, 32, 99,111,110,102,111,114,109,105,110,103, 32,
-116,111, 32, 76, 84, 78, 49, 50, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32,110, 97,109,
-101,115,112, 97, 99,101,115, 32,105,110,115,105,100,101, 32, 76,117, 97, 83,111,
- 99,107,101,116, 32,110, 97,109,101,115,112, 97, 99,101, 10,115,111,117,114, 99,
-101,116, 32, 61, 32,123,125, 10,115,105,110,107,116, 32, 61, 32,123,125, 10, 10,
- 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52, 56, 10, 10,115,105,
-110,107,116, 91, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110,101,
- 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10,
+111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,
+108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,101,112,101,110,100,
+101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71,
+ 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,
+105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32,
+109, 97,116,104, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,109, 97,116,104,
+ 34, 41, 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,
+113,117,105,114,101, 40, 34,115,111, 99,107,101,116, 46, 99,111,114,101, 34, 41,
+ 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10, 10, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,
+ 69,120,112,111,114,116,101,100, 32, 97,117,120,105,108,105, 97,114, 32,102,117,
+110, 99,116,105,111,110,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110,101,
+ 99,116, 52, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32,108,
+ 97,100,100,114,101,115,115, 44, 32,108,112,111,114,116, 41, 10, 32, 32, 32, 32,
+114,101,116,117,114,110, 32,115,111, 99,107,101,116, 46, 99,111,110,110,101, 99,
+116, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32,108, 97,100,
+100,114,101,115,115, 44, 32,108,112,111,114,116, 44, 32, 34,105,110,101,116, 34,
+ 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110,
+101, 99,116, 54, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32,
+108, 97,100,100,114,101,115,115, 44, 32,108,112,111,114,116, 41, 10, 32, 32, 32,
+ 32,114,101,116,117,114,110, 32,115,111, 99,107,101,116, 46, 99,111,110,110,101,
+ 99,116, 40, 97,100,100,114,101,115,115, 44, 32,112,111,114,116, 44, 32,108, 97,
+100,100,114,101,115,115, 44, 32,108,112,111,114,116, 44, 32, 34,105,110,101,116,
+ 54, 34, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 98,105,
+110,100, 40,104,111,115,116, 44, 32,112,111,114,116, 44, 32, 98, 97, 99,107,108,
+111,103, 41, 10, 32, 32, 32, 32,105,102, 32,104,111,115,116, 32, 61, 61, 32, 34,
+ 42, 34, 32,116,104,101,110, 32,104,111,115,116, 32, 61, 32, 34, 48, 46, 48, 46,
+ 48, 46, 48, 34, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 97,
+100,100,114,105,110,102,111, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101,
+116, 46,100,110,115, 46,103,101,116, 97,100,100,114,105,110,102,111, 40,104,111,
+115,116, 41, 59, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 97,100,100,114,
+105,110,102,111, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108,
+ 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+115,111, 99,107, 44, 32,114,101,115, 10, 32, 32, 32, 32,101,114,114, 32, 61, 32,
+ 34,110,111, 32,105,110,102,111, 32,111,110, 32, 97,100,100,114,101,115,115, 34,
+ 10, 32, 32, 32, 32,102,111,114, 32,105, 44, 32, 97,108,116, 32,105,110, 32, 98,
+ 97,115,101, 46,105,112, 97,105,114,115, 40, 97,100,100,114,105,110,102,111, 41,
+ 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 97,108,116, 46,102,
+ 97,109,105,108,121, 32, 61, 61, 32, 34,105,110,101,116, 34, 32,116,104,101,110,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 44, 32,101,
+114,114, 32, 61, 32,115,111, 99,107,101,116, 46,116, 99,112, 40, 41, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32,115,111, 99,107, 44, 32,101,114,114, 32, 61, 32,115,111, 99,107,101,
+116, 46,116, 99,112, 54, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,115,111, 99,107,
+ 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,
+114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58,115,
+101,116,111,112,116,105,111,110, 40, 34,114,101,117,115,101, 97,100,100,114, 34,
+ 44, 32,116,114,117,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115, 44,
+ 32,101,114,114, 32, 61, 32,115,111, 99,107, 58, 98,105,110,100, 40, 97,108,116,
+ 46, 97,100,100,114, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32,105,102, 32,110,111,116, 32,114,101,115, 32,116,104,101,110, 32, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108,111,115,101,
+ 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,115, 44, 32,101,114,114, 32, 61, 32,
+115,111, 99,107, 58,108,105,115,116,101,110, 40, 98, 97, 99,107,108,111,103, 41,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,
+114,101,115, 32,116,104,101,110, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108,111,115,101, 40, 41, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,
+111, 99,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 32, 10, 32, 32, 32, 32,101,110,100,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114,
+ 10,101,110,100, 10, 10,116,114,121, 32, 61, 32,110,101,119,116,114,121, 40, 41,
+ 10, 10,102,117,110, 99,116,105,111,110, 32, 99,104,111,111,115,101, 40,116, 97,
+ 98,108,101, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,102,117,110, 99,
+116,105,111,110, 40,110, 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116,
+ 50, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,116,
+121,112,101, 40,110, 97,109,101, 41, 32,126, 61, 32, 34,115,116,114,105,110,103,
+ 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,110,
+ 97,109,101, 44, 32,111,112,116, 49, 44, 32,111,112,116, 50, 32, 61, 32, 34,100,
+101,102, 97,117,108,116, 34, 44, 32,110, 97,109,101, 44, 32,111,112,116, 49, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+108,111, 99, 97,108, 32,102, 32, 61, 32,116, 97, 98,108,101, 91,110, 97,109,101,
+ 32,111,114, 32, 34,110,105,108, 34, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
+102, 32,110,111,116, 32,102, 32,116,104,101,110, 32, 98, 97,115,101, 46,101,114,
+114,111,114, 40, 34,117,110,107,110,111,119,110, 32,107,101,121, 32, 40, 34, 46,
+ 46, 32, 98, 97,115,101, 46,116,111,115,116,114,105,110,103, 40,110, 97,109,101,
+ 41, 32, 46, 46, 34, 41, 34, 44, 32, 51, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+101,108,115,101, 32,114,101,116,117,114,110, 32,102, 40,111,112,116, 49, 44, 32,
+111,112,116, 50, 41, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10,101,110,
+100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 10, 45, 45, 32, 83,111, 99,107,101,116, 32,115,111,117,114, 99,101,115, 32, 97,
+110,100, 32,115,105,110,107,115, 44, 32, 99,111,110,102,111,114,109,105,110,103,
+ 32,116,111, 32, 76, 84, 78, 49, 50, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 99,114,101, 97,116,101, 32,110, 97,
+109,101,115,112, 97, 99,101,115, 32,105,110,115,105,100,101, 32, 76,117, 97, 83,
+111, 99,107,101,116, 32,110, 97,109,101,115,112, 97, 99,101, 10,115,111,117,114,
+ 99,101,116, 32, 61, 32,123,125, 10,115,105,110,107,116, 32, 61, 32,123,125, 10,
+ 10, 66, 76, 79, 67, 75, 83, 73, 90, 69, 32, 61, 32, 50, 48, 52, 56, 10, 10,115,
+105,110,107,116, 91, 34, 99,108,111,115,101, 45,119,104,101,110, 45,100,111,110,
+101, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,
+109,101,116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+103,101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,
+101,116,117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,
+110,100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,
+102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111,
+ 99,107, 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125,
+ 44, 32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61,
+ 32,102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,
+107, 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+105,102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,
+108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111, 99,107,
+ 58,115,101,110,100, 40, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10,
+ 10,115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112,101,110, 34, 93, 32,
+ 61, 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32,
+ 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,
+116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,
+100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,
+110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,
+116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,
+105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110,
+ 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,
+114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,
+104,117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,111, 99,
+107, 58,115,101,110,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,
+101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+125, 41, 10,101,110,100, 10, 10,115,105,110,107,116, 91, 34,100,101,102, 97,117,
+108,116, 34, 93, 32, 61, 32,115,105,110,107,116, 91, 34,107,101,101,112, 45,111,
+112,101,110, 34, 93, 10, 10,115,105,110,107, 32, 61, 32, 99,104,111,111,115,101,
+ 40,115,105,110,107,116, 41, 10, 10,115,111,117,114, 99,101,116, 91, 34, 98,121,
+ 45,108,101,110,103,116,104, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110,
+ 40,115,111, 99,107, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32,114,
+101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97,
+ 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32,
+ 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,
+115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105,
+111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,
+116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,
+105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102,
+ 32,108,101,110,103,116,104, 32, 60, 61, 32, 48, 32,116,104,101,110, 32,114,101,
+116,117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,109, 97,
+116,104, 46,109,105,110, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83,
+ 73, 90, 69, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,
+114, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40,115,105,122,
+101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,
+114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,
+114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,
+101,110,103,116,104, 32, 61, 32,108,101,110,103,116,104, 32, 45, 32,115,116,114,
+105,110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,
+110,100, 10, 10,115,111,117,114, 99,101,116, 91, 34,117,110,116,105,108, 45, 99,
+108,111,115,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,
+111, 99,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 10,
32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,
101,116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,
101,116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,
@@ -124,93 +204,28 @@ int luatex_socket_lua_open (lua_State *L) {
117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,
107, 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44,
32,123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,
-102,117,110, 99,116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107,
- 44, 32,101,114,114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,
-102, 32,110,111,116, 32, 99,104,117,110,107, 32,116,104,101,110, 10, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111, 99,107, 58, 99,108,
-111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,114,101,116,117,114,110, 32, 49, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,
-115,101,110,100, 40, 99,104,117,110,107, 41, 32,101,110,100, 10, 32, 32, 32, 32,
- 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,100, 10, 10,
-115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112,101,110, 34, 93, 32, 61,
- 32,102,117,110, 99,116,105,111,110, 40,115,111, 99,107, 41, 10, 32, 32, 32, 32,
-114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116,
- 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100,
- 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110,
- 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,
-105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,
-114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32,
- 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,
-116,105,111,110, 40,115,101,108,102, 44, 32, 99,104,117,110,107, 44, 32,101,114,
-114, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32, 99,104,
-117,110,107, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,115,111, 99,107,
- 58,115,101,110,100, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 49, 32,101,
-110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125,
- 41, 10,101,110,100, 10, 10,115,105,110,107,116, 91, 34,100,101,102, 97,117,108,
-116, 34, 93, 32, 61, 32,115,105,110,107,116, 91, 34,107,101,101,112, 45,111,112,
-101,110, 34, 93, 10, 10,115,105,110,107, 32, 61, 32, 99,104,111,111,115,101, 40,
-115,105,110,107,116, 41, 10, 10,115,111,117,114, 99,101,116, 91, 34, 98,121, 45,
-108,101,110,103,116,104, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,
-115,111, 99,107, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,
-108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,116,102,100, 32, 61,
- 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,
-111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100, 44, 10, 32, 32, 32,
- 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,110, 99,116,105,111,
-110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107, 58,100,105,114,116,
-121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,123, 10, 32, 32, 32,
- 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,117,110, 99,116,105,
-111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,
-108,101,110,103,116,104, 32, 60, 61, 32, 48, 32,116,104,101,110, 32,114,101,116,
-117,114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,122,101, 32, 61, 32,109, 97,116,
-104, 46,109,105,110, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73,
- 90, 69, 44, 32,108,101,110,103,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114,
- 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,118,101, 40,115,105,122,101,
- 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,101,114,114,
- 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,
-114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,101,
-110,103,116,104, 32, 61, 32,108,101,110,103,116,104, 32, 45, 32,115,116,114,105,
-110,103, 46,108,101,110, 40, 99,104,117,110,107, 41, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,104,117,110,107, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,125, 41, 10,101,110,
-100, 10, 10,115,111,117,114, 99,101,116, 91, 34,117,110,116,105,108, 45, 99,108,
-111,115,101,100, 34, 93, 32, 61, 32,102,117,110, 99,116,105,111,110, 40,115,111,
- 99,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,100,111,110,101, 10, 32,
- 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,
-116, 97,116, 97, 98,108,101, 40,123, 10, 32, 32, 32, 32, 32, 32, 32, 32,103,101,
-116,102,100, 32, 61, 32,102,117,110, 99,116,105,111,110, 40, 41, 32,114,101,116,
-117,114,110, 32,115,111, 99,107, 58,103,101,116,102,100, 40, 41, 32,101,110,100,
- 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,100,105,114,116,121, 32, 61, 32,102,117,
-110, 99,116,105,111,110, 40, 41, 32,114,101,116,117,114,110, 32,115,111, 99,107,
- 58,100,105,114,116,121, 40, 41, 32,101,110,100, 10, 32, 32, 32, 32,125, 44, 32,
-123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 95, 95, 99, 97,108,108, 32, 61, 32,102,
-117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,105,102, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117,114,
-110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 44, 32,
-112, 97,114,116,105, 97,108, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,105,
-118,101, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73, 90, 69, 41,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,
-101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,110,
-107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,102,
- 32,101,114,114, 32, 61, 61, 32, 34, 99,108,111,115,101,100, 34, 32,116,104,101,
-110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,111,
- 99,107, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,100,111,110,101, 32, 61, 32, 49, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,112,
- 97,114,116,105, 97,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
-108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114, 32,
-101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
-125, 41, 10,101,110,100, 10, 10, 10,115,111,117,114, 99,101,116, 91, 34,100,101,
-102, 97,117,108,116, 34, 93, 32, 61, 32,115,111,117,114, 99,101,116, 91, 34,117,
-110,116,105,108, 45, 99,108,111,115,101,100, 34, 93, 10, 10,115,111,117,114, 99,
-101, 32, 61, 32, 99,104,111,111,115,101, 40,115,111,117,114, 99,101,116, 41, 10,
- 10,
+102,117,110, 99,116,105,111,110, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32,105,102, 32,100,111,110,101, 32,116,104,101,110, 32,114,101,116,117,
+114,110, 32,110,105,108, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 44,
+ 32,112, 97,114,116,105, 97,108, 32, 61, 32,115,111, 99,107, 58,114,101, 99,101,
+105,118,101, 40,115,111, 99,107,101,116, 46, 66, 76, 79, 67, 75, 83, 73, 90, 69,
+ 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116,
+ 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99,104,117,
+110,107, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101,105,
+102, 32,101,114,114, 32, 61, 61, 32, 34, 99,108,111,115,101,100, 34, 32,116,104,
+101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,115,
+111, 99,107, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,100,111,110,101, 32, 61, 32, 49, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+112, 97,114,116,105, 97,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114,
+ 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+ 32,125, 41, 10,101,110,100, 10, 10, 10,115,111,117,114, 99,101,116, 91, 34,100,
+101,102, 97,117,108,116, 34, 93, 32, 61, 32,115,111,117,114, 99,101,116, 91, 34,
+117,110,116,105,108, 45, 99,108,111,115,101,100, 34, 93, 10, 10,115,111,117,114,
+ 99,101, 32, 61, 32, 99,104,111,111,115,101, 40,115,111,117,114, 99,101,116, 41,
+ 10, 10,
0 };
return luaL_dostring(L, (const char*)B);
} /* end of embedded lua code */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c
index 6b8a79b4bc5..6734dc0b497 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.c
@@ -1,10 +1,8 @@
/*=========================================================================*\
-* TCP object
+* TCP object
* LuaSocket toolkit
-*
-* RCS ID: $Id: tcp.c,v 1.41 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
-#include <string.h>
+#include <string.h>
#include "lua.h"
#include "lauxlib.h"
@@ -19,8 +17,11 @@
* Internal function prototypes
\*=========================================================================*/
static int global_create(lua_State *L);
+static int global_create6(lua_State *L);
+static int global_connect(lua_State *L);
static int meth_connect(lua_State *L);
static int meth_listen(lua_State *L);
+static int meth_getfamily(lua_State *L);
static int meth_bind(lua_State *L);
static int meth_send(lua_State *L);
static int meth_getstats(lua_State *L);
@@ -31,6 +32,7 @@ static int meth_shutdown(lua_State *L);
static int meth_receive(lua_State *L);
static int meth_accept(lua_State *L);
static int meth_close(lua_State *L);
+static int meth_getoption(lua_State *L);
static int meth_setoption(lua_State *L);
static int meth_settimeout(lua_State *L);
static int meth_getfd(lua_State *L);
@@ -38,7 +40,7 @@ static int meth_setfd(lua_State *L);
static int meth_dirty(lua_State *L);
/* tcp object methods */
-static luaL_reg tcp[] = {
+static luaL_Reg tcp_methods[] = {
{"__gc", meth_close},
{"__tostring", auxiliar_tostring},
{"accept", meth_accept},
@@ -46,7 +48,9 @@ static luaL_reg tcp[] = {
{"close", meth_close},
{"connect", meth_connect},
{"dirty", meth_dirty},
+ {"getfamily", meth_getfamily},
{"getfd", meth_getfd},
+ {"getoption", meth_getoption},
{"getpeername", meth_getpeername},
{"getsockname", meth_getsockname},
{"getstats", meth_getstats},
@@ -64,17 +68,28 @@ static luaL_reg tcp[] = {
};
/* socket option handlers */
-static t_opt opt[] = {
- {"keepalive", opt_keepalive},
- {"reuseaddr", opt_reuseaddr},
- {"tcp-nodelay", opt_tcp_nodelay},
- {"linger", opt_linger},
+static t_opt optget[] = {
+ {"keepalive", opt_get_keepalive},
+ {"reuseaddr", opt_get_reuseaddr},
+ {"tcp-nodelay", opt_get_tcp_nodelay},
+ {"linger", opt_get_linger},
+ {NULL, NULL}
+};
+
+static t_opt optset[] = {
+ {"keepalive", opt_set_keepalive},
+ {"reuseaddr", opt_set_reuseaddr},
+ {"tcp-nodelay", opt_set_tcp_nodelay},
+ {"ipv6-v6only", opt_set_ip6_v6only},
+ {"linger", opt_set_linger},
{NULL, NULL}
};
/* functions in library namespace */
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{"tcp", global_create},
+ {"tcp6", global_create6},
+ {"connect", global_connect},
{NULL, NULL}
};
@@ -84,15 +99,15 @@ static luaL_reg func[] = {
int tcp_open(lua_State *L)
{
/* create classes */
- auxiliar_newclass(L, "tcp{master}", tcp);
- auxiliar_newclass(L, "tcp{client}", tcp);
- auxiliar_newclass(L, "tcp{server}", tcp);
+ auxiliar_newclass(L, "tcp{master}", tcp_methods);
+ auxiliar_newclass(L, "tcp{client}", tcp_methods);
+ auxiliar_newclass(L, "tcp{server}", tcp_methods);
/* create class groups */
auxiliar_add2group(L, "tcp{master}", "tcp{any}");
auxiliar_add2group(L, "tcp{client}", "tcp{any}");
auxiliar_add2group(L, "tcp{server}", "tcp{any}");
/* define library functions */
- luaL_openlib(L, NULL, func, 0);
+ luaL_openlib(L, NULL, func, 0);
return 0;
}
@@ -125,10 +140,16 @@ static int meth_setstats(lua_State *L) {
/*-------------------------------------------------------------------------*\
* Just call option handler
\*-------------------------------------------------------------------------*/
+static int meth_getoption(lua_State *L)
+{
+ p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
+ return opt_meth_getoption(L, optget, &tcp->sock);
+}
+
static int meth_setoption(lua_State *L)
{
p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
- return opt_meth_setoption(L, opt, &tcp->sock);
+ return opt_meth_setoption(L, optset, &tcp->sock);
}
/*-------------------------------------------------------------------------*\
@@ -145,7 +166,7 @@ static int meth_getfd(lua_State *L)
static int meth_setfd(lua_State *L)
{
p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
- tcp->sock = (t_socket) luaL_checknumber(L, 2);
+ tcp->sock = (t_socket) luaL_checknumber(L, 2);
return 0;
}
@@ -157,43 +178,52 @@ static int meth_dirty(lua_State *L)
}
/*-------------------------------------------------------------------------*\
-* Waits for and returns a client object attempting connection to the
-* server object
+* Waits for and returns a client object attempting connection to the
+* server object
\*-------------------------------------------------------------------------*/
static int meth_accept(lua_State *L)
{
p_tcp server = (p_tcp) auxiliar_checkclass(L, "tcp{server}", 1);
p_timeout tm = timeout_markstart(&server->tm);
t_socket sock;
- int err = socket_accept(&server->sock, &sock, NULL, NULL, tm);
+ const char *err = inet_tryaccept(&server->sock, server->family, &sock, tm);
/* if successful, push client socket */
- if (err == IO_DONE) {
+ if (err == NULL) {
p_tcp clnt = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
auxiliar_setclass(L, "tcp{client}", -1);
/* initialize structure fields */
+ memset(clnt, 0, sizeof(t_tcp));
socket_setnonblocking(&sock);
clnt->sock = sock;
- io_init(&clnt->io, (p_send) socket_send, (p_recv) socket_recv,
+ io_init(&clnt->io, (p_send) socket_send, (p_recv) socket_recv,
(p_error) socket_ioerror, &clnt->sock);
timeout_init(&clnt->tm, -1, -1);
buffer_init(&clnt->buf, &clnt->io, &clnt->tm);
+ clnt->family = server->family;
return 1;
} else {
- lua_pushnil(L);
- lua_pushstring(L, socket_strerror(err));
+ lua_pushnil(L);
+ lua_pushstring(L, err);
return 2;
}
}
/*-------------------------------------------------------------------------*\
-* Binds an object to an address
+* Binds an object to an address
\*-------------------------------------------------------------------------*/
static int meth_bind(lua_State *L)
{
p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1);
const char *address = luaL_checkstring(L, 2);
- unsigned short port = (unsigned short) luaL_checknumber(L, 3);
- const char *err = inet_trybind(&tcp->sock, address, port);
+ const char *port = luaL_checkstring(L, 3);
+ const char *err;
+ struct addrinfo bindhints;
+ memset(&bindhints, 0, sizeof(bindhints));
+ bindhints.ai_socktype = SOCK_STREAM;
+ bindhints.ai_family = tcp->family;
+ bindhints.ai_flags = AI_PASSIVE;
+ address = strcmp(address, "*")? address: NULL;
+ err = inet_trybind(&tcp->sock, address, port, &bindhints);
if (err) {
lua_pushnil(L);
lua_pushstring(L, err);
@@ -210,9 +240,15 @@ static int meth_connect(lua_State *L)
{
p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
const char *address = luaL_checkstring(L, 2);
- unsigned short port = (unsigned short) luaL_checknumber(L, 3);
- p_timeout tm = timeout_markstart(&tcp->tm);
- const char *err = inet_tryconnect(&tcp->sock, address, port, tm);
+ const char *port = luaL_checkstring(L, 3);
+ struct addrinfo connecthints;
+ const char *err;
+ memset(&connecthints, 0, sizeof(connecthints));
+ connecthints.ai_socktype = SOCK_STREAM;
+ /* make sure we try to connect only to the same family */
+ connecthints.ai_family = tcp->family;
+ timeout_markstart(&tcp->tm);
+ err = inet_tryconnect(&tcp->sock, address, port, &tcp->tm, &connecthints);
/* have to set the class even if it failed due to non-blocking connects */
auxiliar_setclass(L, "tcp{client}", 1);
if (err) {
@@ -220,13 +256,12 @@ static int meth_connect(lua_State *L)
lua_pushstring(L, err);
return 2;
}
- /* turn master object into a client object */
lua_pushnumber(L, 1);
return 1;
}
/*-------------------------------------------------------------------------*\
-* Closes socket used by object
+* Closes socket used by object
\*-------------------------------------------------------------------------*/
static int meth_close(lua_State *L)
{
@@ -237,6 +272,21 @@ static int meth_close(lua_State *L)
}
/*-------------------------------------------------------------------------*\
+* Returns family as string
+\*-------------------------------------------------------------------------*/
+static int meth_getfamily(lua_State *L)
+{
+ p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
+ if (tcp->family == PF_INET6) {
+ lua_pushliteral(L, "inet6");
+ return 1;
+ } else {
+ lua_pushliteral(L, "inet4");
+ return 1;
+ }
+}
+
+/*-------------------------------------------------------------------------*\
* Puts the sockt in listen mode
\*-------------------------------------------------------------------------*/
static int meth_listen(lua_State *L)
@@ -260,27 +310,13 @@ static int meth_listen(lua_State *L)
\*-------------------------------------------------------------------------*/
static int meth_shutdown(lua_State *L)
{
+ /* SHUT_RD, SHUT_WR, SHUT_RDWR have the value 0, 1, 2, so we can use method index directly */
+ static const char* methods[] = { "receive", "send", "both", NULL };
p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{client}", 1);
- const char *how = luaL_optstring(L, 2, "both");
- switch (how[0]) {
- case 'b':
- if (strcmp(how, "both")) goto error;
- socket_shutdown(&tcp->sock, 2);
- break;
- case 's':
- if (strcmp(how, "send")) goto error;
- socket_shutdown(&tcp->sock, 1);
- break;
- case 'r':
- if (strcmp(how, "receive")) goto error;
- socket_shutdown(&tcp->sock, 0);
- break;
- }
+ int how = luaL_checkoption(L, 2, "both", methods);
+ socket_shutdown(&tcp->sock, how);
lua_pushnumber(L, 1);
return 1;
-error:
- luaL_argerror(L, 2, "invalid shutdown method");
- return 0;
}
/*-------------------------------------------------------------------------*\
@@ -289,13 +325,13 @@ error:
static int meth_getpeername(lua_State *L)
{
p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
- return inet_meth_getpeername(L, &tcp->sock);
+ return inet_meth_getpeername(L, &tcp->sock, tcp->family);
}
static int meth_getsockname(lua_State *L)
{
p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
- return inet_meth_getsockname(L, &tcp->sock);
+ return inet_meth_getsockname(L, &tcp->sock, tcp->family);
}
/*-------------------------------------------------------------------------*\
@@ -311,25 +347,31 @@ static int meth_settimeout(lua_State *L)
* Library functions
\*=========================================================================*/
/*-------------------------------------------------------------------------*\
-* Creates a master tcp object
+* Creates a master tcp object
\*-------------------------------------------------------------------------*/
-static int global_create(lua_State *L)
-{
+static int tcp_create(lua_State *L, int family) {
t_socket sock;
- const char *err = inet_trycreate(&sock, SOCK_STREAM);
+ const char *err = inet_trycreate(&sock, family, SOCK_STREAM);
/* try to allocate a system socket */
- if (!err) {
+ if (!err) {
/* allocate tcp object */
p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
+ memset(tcp, 0, sizeof(t_tcp));
/* set its type as master object */
auxiliar_setclass(L, "tcp{master}", -1);
/* initialize remaining structure fields */
socket_setnonblocking(&sock);
+ if (family == PF_INET6) {
+ int yes = 1;
+ setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
+ (void *)&yes, sizeof(yes));
+ }
tcp->sock = sock;
- io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
+ io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
(p_error) socket_ioerror, &tcp->sock);
timeout_init(&tcp->tm, -1, -1);
buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
+ tcp->family = family;
return 1;
} else {
lua_pushnil(L);
@@ -337,3 +379,97 @@ static int global_create(lua_State *L)
return 2;
}
}
+
+static int global_create(lua_State *L) {
+ return tcp_create(L, AF_INET);
+}
+
+static int global_create6(lua_State *L) {
+ return tcp_create(L, AF_INET6);
+}
+
+static const char *tryconnect6(const char *remoteaddr, const char *remoteserv,
+ struct addrinfo *connecthints, p_tcp tcp) {
+ struct addrinfo *iterator = NULL, *resolved = NULL;
+ const char *err = NULL;
+ /* try resolving */
+ err = socket_gaistrerror(getaddrinfo(remoteaddr, remoteserv,
+ connecthints, &resolved));
+ if (err != NULL) {
+ if (resolved) freeaddrinfo(resolved);
+ return err;
+ }
+ /* iterate over all returned addresses trying to connect */
+ for (iterator = resolved; iterator; iterator = iterator->ai_next) {
+ p_timeout tm = timeout_markstart(&tcp->tm);
+ /* create new socket if one wasn't created by the bind stage */
+ if (tcp->sock == SOCKET_INVALID) {
+ err = socket_strerror(socket_create(&tcp->sock,
+ iterator->ai_family, iterator->ai_socktype,
+ iterator->ai_protocol));
+ if (err != NULL) {
+ freeaddrinfo(resolved);
+ return err;
+ }
+ tcp->family = iterator->ai_family;
+ /* all sockets initially non-blocking */
+ socket_setnonblocking(&tcp->sock);
+ }
+ /* finally try connecting to remote address */
+ err = socket_strerror(socket_connect(&tcp->sock,
+ (SA *) iterator->ai_addr,
+ (socklen_t) iterator->ai_addrlen, tm));
+ /* if success, break out of loop */
+ if (err == NULL) break;
+ }
+
+ freeaddrinfo(resolved);
+ /* here, if err is set, we failed */
+ return err;
+}
+
+static int global_connect(lua_State *L) {
+ const char *remoteaddr = luaL_checkstring(L, 1);
+ const char *remoteserv = luaL_checkstring(L, 2);
+ const char *localaddr = luaL_optstring(L, 3, NULL);
+ const char *localserv = luaL_optstring(L, 4, "0");
+ int family = inet_optfamily(L, 5, "unspec");
+ p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
+ struct addrinfo bindhints, connecthints;
+ const char *err = NULL;
+ /* initialize tcp structure */
+ memset(tcp, 0, sizeof(t_tcp));
+ io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
+ (p_error) socket_ioerror, &tcp->sock);
+ timeout_init(&tcp->tm, -1, -1);
+ buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
+ tcp->sock = SOCKET_INVALID;
+ /* allow user to pick local address and port */
+ memset(&bindhints, 0, sizeof(bindhints));
+ bindhints.ai_socktype = SOCK_STREAM;
+ bindhints.ai_family = family;
+ bindhints.ai_flags = AI_PASSIVE;
+ if (localaddr) {
+ err = inet_trybind(&tcp->sock, localaddr, localserv, &bindhints);
+ if (err) {
+ lua_pushnil(L);
+ lua_pushstring(L, err);
+ return 2;
+ }
+ tcp->family = bindhints.ai_family;
+ }
+ /* try to connect to remote address and port */
+ memset(&connecthints, 0, sizeof(connecthints));
+ connecthints.ai_socktype = SOCK_STREAM;
+ /* make sure we try to connect only to the same family */
+ connecthints.ai_family = bindhints.ai_family;
+ err = tryconnect6(remoteaddr, remoteserv, &connecthints, tcp);
+ if (err) {
+ socket_destroy(&tcp->sock);
+ lua_pushnil(L);
+ lua_pushstring(L, err);
+ return 2;
+ }
+ auxiliar_setclass(L, "tcp{client}", -1);
+ return 1;
+}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h
index 511357f371a..eded620324d 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tcp.h
@@ -13,8 +13,6 @@
* objects are tcp objects bound to some local address. Client objects are
* tcp objects either connected to some address or returned by the accept
* method of a server object.
-*
-* RCS ID: $Id: tcp.h,v 1.7 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include "lua.h"
@@ -27,6 +25,7 @@ typedef struct t_tcp_ {
t_io io;
t_buffer buf;
t_timeout tm;
+ int family;
} t_tcp;
typedef t_tcp *p_tcp;
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c
index c1df1021811..c7354b52f38 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.c
@@ -1,10 +1,10 @@
/*=========================================================================*\
* Timeout management functions
* LuaSocket toolkit
-*
-* RCS ID: $Id: timeout.c,v 1.30 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include <stdio.h>
+#include <limits.h>
+#include <float.h>
#include "lua.h"
#include "lauxlib.h"
@@ -33,7 +33,7 @@
static int timeout_lua_gettime(lua_State *L);
static int timeout_lua_sleep(lua_State *L);
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{ "gettime", timeout_lua_gettime },
{ "sleep", timeout_lua_sleep },
{ NULL, NULL }
@@ -187,13 +187,23 @@ static int timeout_lua_gettime(lua_State *L)
/*-------------------------------------------------------------------------*\
* Sleep for n seconds.
\*-------------------------------------------------------------------------*/
+#ifdef _WIN32
int timeout_lua_sleep(lua_State *L)
{
double n = luaL_checknumber(L, 1);
-#ifdef _WIN32
- Sleep((int)(n*1000));
+ if (n < 0.0) n = 0.0;
+ if (n < DBL_MAX/1000.0) n *= 1000.0;
+ if (n > INT_MAX) n = INT_MAX;
+ Sleep((int)n);
+ return 0;
+}
#else
+int timeout_lua_sleep(lua_State *L)
+{
+ double n = luaL_checknumber(L, 1);
struct timespec t, r;
+ if (n < 0.0) n = 0.0;
+ if (n > INT_MAX) n = INT_MAX;
t.tv_sec = (int) n;
n -= t.tv_sec;
t.tv_nsec = (int) (n * 1000000000);
@@ -202,6 +212,6 @@ int timeout_lua_sleep(lua_State *L)
t.tv_sec = r.tv_sec;
t.tv_nsec = r.tv_nsec;
}
-#endif
return 0;
}
+#endif
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h
index d2d8964100f..6715ca70a1b 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/timeout.h
@@ -3,8 +3,6 @@
/*=========================================================================*\
* Timeout management functions
* LuaSocket toolkit
-*
-* RCS ID: $Id: timeout.h,v 1.14 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include "lua.h"
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua
index 0683869499f..2ffe9a45818 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tp.lua
@@ -2,7 +2,6 @@
-- Unified SMTP/FTP subsystem
-- LuaSocket toolkit.
-- Author: Diego Nehab
--- RCS ID: $Id: tp.lua,v 1.22 2006/03/14 09:04:15 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -64,6 +63,7 @@ function metat.__index:check(ok)
end
function metat.__index:command(cmd, arg)
+ cmd = string.upper(cmd)
if arg then
return self.c:send(cmd .. " " .. arg.. "\r\n")
else
@@ -105,7 +105,7 @@ end
-- closes the underlying c
function metat.__index:close()
self.c:close()
- return 1
+ return 1
end
-- connect with server and return c object
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c
index 897579d53ef..78ae2111e02 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/tp_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c tp.lua tp_lua"
+ * This file is auto-generated by "lua2c tp.lua tp_lua"
*/
#include "lua.h"
@@ -14,180 +14,178 @@ int luatex_tp_lua_open (lua_State *L) {
32, 85,110,105,102,105,101,100, 32, 83, 77, 84, 80, 47, 70, 84, 80, 32,115,117,
98,115,121,115,116,101,109, 10, 45, 45, 32, 76,117, 97, 83,111, 99,107,101,116,
32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,117,116,104,111,114, 58,
- 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 32, 82, 67, 83, 32,
- 73, 68, 58, 32, 36, 73,100, 58, 32,116,112, 46,108,117, 97, 44,118, 32, 49, 46,
- 50, 50, 32, 50, 48, 48, 54, 47, 48, 51, 47, 49, 52, 32, 48, 57, 58, 48, 52, 58,
- 49, 53, 32,100,105,101,103,111, 32, 69,120,112, 32, 36, 10, 45, 45, 45, 45, 45,
+ 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,
-114,101, 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116,
- 32,100,101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 99,108, 97,114,101,
+ 32,109,111,100,117,108,101, 32, 97,110,100, 32,105,109,112,111,114,116, 32,100,
+101,112,101,110,100,101,110, 99,105,101,115, 10, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,
-115,101, 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103,
- 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41,
- 10,108,111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117,
-105,114,101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32,
-108,116,110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110,
- 49, 50, 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,
-116,112, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32, 98, 97,115,101,
+ 32, 61, 32, 95, 71, 10,108,111, 99, 97,108, 32,115,116,114,105,110,103, 32, 61,
+ 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,110,103, 34, 41, 10,108,
+111, 99, 97,108, 32,115,111, 99,107,101,116, 32, 61, 32,114,101,113,117,105,114,
+101, 40, 34,115,111, 99,107,101,116, 34, 41, 10,108,111, 99, 97,108, 32,108,116,
+110, 49, 50, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,108,116,110, 49, 50,
+ 34, 41, 10,109,111,100,117,108,101, 40, 34,115,111, 99,107,101,116, 46,116,112,
+ 34, 41, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116,
- 97,110,116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 10, 45, 45, 32, 80,114,111,103,114, 97,109, 32, 99,111,110,115,116, 97,110,
+116,115, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 10, 45, 45, 45,
+ 10, 84, 73, 77, 69, 79, 85, 84, 32, 61, 32, 54, 48, 10, 10, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 73,109,
-112,108,101,109,101,110,116, 97,116,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 73,109,112,108,
+101,109,101,110,116, 97,116,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,103,101,116,115, 32,115,
-101,114,118,101,114, 32,114,101,112,108,121, 32, 40,119,111,114,107,115, 32,102,
-111,114, 32, 83, 77, 84, 80, 32, 97,110,100, 32, 70, 84, 80, 41, 10,108,111, 99,
- 97,108, 32,102,117,110, 99,116,105,111,110, 32,103,101,116, 95,114,101,112,108,
-121, 40, 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44,
- 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 10, 32, 32, 32, 32,108,111,
- 99, 97,108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101,
- 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,
-112,108,121, 32, 61, 32,108,105,110,101, 10, 32, 32, 32, 32,105,102, 32,101,114,
-114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,
-114,114, 32,101,110,100, 10, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,101,112,
- 32, 61, 32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,
-114,105,110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37,
-100, 37,100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32,105,102,
- 32,110,111,116, 32, 99,111,100,101, 32,116,104,101,110, 32,114,101,116,117,114,
-110, 32,110,105,108, 44, 32, 34,105,110,118, 97,108,105,100, 32,115,101,114,118,
-101,114, 32,114,101,112,108,121, 34, 32,101,110,100, 10, 32, 32, 32, 32,105,102,
- 32,115,101,112, 32, 61, 61, 32, 34, 45, 34, 32,116,104,101,110, 32, 45, 45, 32,
-114,101,112,108,121, 32,105,115, 32,109,117,108,116,105,108,105,110,101, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,114,101,112,101, 97,116, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,
-114,101, 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110,
- 32,110,105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 32, 61,
+ 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,103,101,116,115, 32,115,101,114,
+118,101,114, 32,114,101,112,108,121, 32, 40,119,111,114,107,115, 32,102,111,114,
+ 32, 83, 77, 84, 80, 32, 97,110,100, 32, 70, 84, 80, 41, 10,108,111, 99, 97,108,
+ 32,102,117,110, 99,116,105,111,110, 32,103,101,116, 95,114,101,112,108,121, 40,
+ 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32, 99,
+117,114,114,101,110,116, 44, 32,115,101,112, 10, 32, 32, 32, 32,108,111, 99, 97,
+108, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, 99,101,
+105,118,101, 40, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,112,108,
+121, 32, 61, 32,108,105,110,101, 10, 32, 32, 32, 32,105,102, 32,101,114,114, 32,
+116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,114,114,
+ 32,101,110,100, 10, 32, 32, 32, 32, 99,111,100,101, 44, 32,115,101,112, 32, 61,
32,115,111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,114,105,
110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37,100, 37,
-100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32,114,101,112,108,121, 32, 61, 32,114,101,112,108,121, 32, 46, 46,
- 32, 34, 92,110, 34, 32, 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 45, 45, 32,114,101,112,108,121, 32,101,110,100,115, 32,119,105,116,104,
- 32,115, 97,109,101, 32, 99,111,100,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,
-110,116,105,108, 32, 99,111,100,101, 32, 61, 61, 32, 99,117,114,114,101,110,116,
- 32, 97,110,100, 32,115,101,112, 32, 61, 61, 32, 34, 32, 34, 10, 32, 32, 32, 32,
-101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,111,100,101, 44,
- 32,114,101,112,108,121, 10,101,110,100, 10, 10, 45, 45, 32,109,101,116, 97,116,
- 97, 98,108,101, 32,102,111,114, 32,115,111, 99,107, 32,111, 98,106,101, 99,116,
- 10,108,111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,
-110,100,101,120, 32, 61, 32,123,125, 32,125, 10, 10,102,117,110, 99,116,105,111,
-110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,104,101, 99,
-107, 40,111,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101,
- 44, 32,114,101,112,108,121, 32, 61, 32,103,101,116, 95,114,101,112,108,121, 40,
-115,101,108,102, 46, 99, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,
-111,100,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44,
- 32,114,101,112,108,121, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 98, 97,
-115,101, 46,116,121,112,101, 40,111,107, 41, 32,126, 61, 32, 34,102,117,110, 99,
-116,105,111,110, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
-102, 32, 98, 97,115,101, 46,116,121,112,101, 40,111,107, 41, 32, 61, 61, 32, 34,
-116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32,102,111,114, 32,105, 44, 32,118, 32,105,110, 32, 98, 97,115,101,
- 46,105,112, 97,105,114,115, 40,111,107, 41, 32,100,111, 10, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103,
- 46,102,105,110,100, 40, 99,111,100,101, 44, 32,118, 41, 32,116,104,101,110, 10,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
-114,101,116,117,114,110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114,
- 40, 99,111,100,101, 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108,121, 10,
- 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
- 99,111,100,101, 44, 32,111,107, 41, 32,116,104,101,110, 32,114,101,116,117,114,
-110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101,
- 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32,101,108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,
-112,108,121, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10,
- 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,111,107, 40, 98,
- 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,
-114,101,112,108,121, 41, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,
-116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,
-111,109,109, 97,110,100, 40, 99,109,100, 44, 32, 97,114,103, 41, 10, 32, 32, 32,
- 32,105,102, 32, 97,114,103, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101,110,100, 40,
- 99,109,100, 32, 46, 46, 32, 34, 32, 34, 32, 46, 46, 32, 97,114,103, 46, 46, 32,
- 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32,
- 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,
-101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32,
- 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
- 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,105,110,107, 40,
-115,110,107, 44, 32,112, 97,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
- 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101, 99,101,105,
-118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,
-110,107, 40, 99,104,117,110,107, 44, 32,101,114,114, 41, 10,101,110,100, 10, 10,
-102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,
-101,120, 58,115,101,110,100, 40,100, 97,116, 97, 41, 10, 32, 32, 32, 32,114,101,
-116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101,110,100, 40,100, 97,116,
- 97, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116,
- 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,101,105,118,101, 40,112,
- 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46,
- 99, 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41, 10,101,110,100, 10, 10,
-102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,
-101,120, 58,103,101,116,102,100, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,
-110, 32,115,101,108,102, 46, 99, 58,103,101,116,102,100, 40, 41, 10,101,110,100,
- 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,
-110,100,101,120, 58,100,105,114,116,121, 40, 41, 10, 32, 32, 32, 32,114,101,116,
-117,114,110, 32,115,101,108,102, 46, 99, 58,100,105,114,116,121, 40, 41, 10,101,
-110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95,
- 95,105,110,100,101,120, 58,103,101,116, 99,111,110,116,114,111,108, 40, 41, 10,
- 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 10,101,110,
-100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,
-105,110,100,101,120, 58,115,111,117,114, 99,101, 40,115,111,117,114, 99,101, 44,
- 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115,105,110,
-107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,107, 40, 34,107,101,101,
-112, 45,111,112,101,110, 34, 44, 32,115,101,108,102, 46, 99, 41, 10, 32, 32, 32,
- 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,114, 32, 61, 32,108,116,
-110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,111,117,114, 99,101, 44,
- 32,115,105,110,107, 44, 32,115,116,101,112, 32,111,114, 32,108,116,110, 49, 50,
- 46,112,117,109,112, 46,115,116,101,112, 41, 10, 32, 32, 32, 32,114,101,116,117,
-114,110, 32,114,101,116, 44, 32,101,114,114, 10,101,110,100, 10, 10, 45, 45, 32,
- 99,108,111,115,101,115, 32,116,104,101, 32,117,110,100,101,114,108,121,105,110,
-103, 32, 99, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95,
- 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32,115,
-101,108,102, 46, 99, 58, 99,108,111,115,101, 40, 41, 10, 9,114,101,116,117,114,
-110, 32, 49, 10,101,110,100, 10, 10, 45, 45, 32, 99,111,110,110,101, 99,116, 32,
-119,105,116,104, 32,115,101,114,118,101,114, 32, 97,110,100, 32,114,101,116,117,
-114,110, 32, 99, 32,111, 98,106,101, 99,116, 10,102,117,110, 99,116,105,111,110,
- 32, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112,111,114,116, 44,
- 32,116,105,109,101,111,117,116, 44, 32, 99,114,101, 97,116,101, 41, 10, 32, 32,
- 32, 32,108,111, 99, 97,108, 32, 99, 44, 32,101, 32, 61, 32, 40, 99,114,101, 97,
-116,101, 32,111,114, 32,115,111, 99,107,101,116, 46,116, 99,112, 41, 40, 41, 10,
- 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99, 32,116,104,101,110, 32,114,101,
-116,117,114,110, 32,110,105,108, 44, 32,101, 32,101,110,100, 10, 32, 32, 32, 32,
- 99, 58,115,101,116,116,105,109,101,111,117,116, 40,116,105,109,101,111,117,116,
- 32,111,114, 32, 84, 73, 77, 69, 79, 85, 84, 41, 10, 32, 32, 32, 32,108,111, 99,
- 97,108, 32,114, 44, 32,101, 32, 61, 32, 99, 58, 99,111,110,110,101, 99,116, 40,
-104,111,115,116, 44, 32,112,111,114,116, 41, 10, 32, 32, 32, 32,105,102, 32,110,
-111,116, 32,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 58,
- 99,108,111,115,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,
-114,110, 32,110,105,108, 44, 32,101, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32,
- 32, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 46,115,101,116,109,101,116,
- 97,116, 97, 98,108,101, 40,123, 99, 32, 61, 32, 99,125, 44, 32,109,101,116, 97,
-116, 41, 10,101,110,100, 10, 10,
+100, 37,100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32,105,102, 32,110,
+111,116, 32, 99,111,100,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,
+110,105,108, 44, 32, 34,105,110,118, 97,108,105,100, 32,115,101,114,118,101,114,
+ 32,114,101,112,108,121, 34, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,115,
+101,112, 32, 61, 61, 32, 34, 45, 34, 32,116,104,101,110, 32, 45, 45, 32,114,101,
+112,108,121, 32,105,115, 32,109,117,108,116,105,108,105,110,101, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,114,101,112,101, 97,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,108,105,110,101, 44, 32,101,114,114, 32, 61, 32, 99, 58,114,101,
+ 99,101,105,118,101, 40, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+105,102, 32,101,114,114, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,
+105,108, 44, 32,101,114,114, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 99,117,114,114,101,110,116, 44, 32,115,101,112, 32, 61, 32,115,
+111, 99,107,101,116, 46,115,107,105,112, 40, 50, 44, 32,115,116,114,105,110,103,
+ 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 94, 40, 37,100, 37,100, 37,
+100, 41, 40, 46, 63, 41, 34, 41, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,114,101,112,108,121, 32, 61, 32,114,101,112,108,121, 32, 46, 46, 32, 34,
+ 92,110, 34, 32, 46, 46, 32,108,105,110,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 45, 45, 32,114,101,112,108,121, 32,101,110,100,115, 32,119,105,116,104, 32,115,
+ 97,109,101, 32, 99,111,100,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,117,110,116,
+105,108, 32, 99,111,100,101, 32, 61, 61, 32, 99,117,114,114,101,110,116, 32, 97,
+110,100, 32,115,101,112, 32, 61, 61, 32, 34, 32, 34, 10, 32, 32, 32, 32,101,110,
+100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 99,111,100,101, 44, 32,114,
+101,112,108,121, 10,101,110,100, 10, 10, 45, 45, 32,109,101,116, 97,116, 97, 98,
+108,101, 32,102,111,114, 32,115,111, 99,107, 32,111, 98,106,101, 99,116, 10,108,
+111, 99, 97,108, 32,109,101,116, 97,116, 32, 61, 32,123, 32, 95, 95,105,110,100,
+101,120, 32, 61, 32,123,125, 32,125, 10, 10,102,117,110, 99,116,105,111,110, 32,
+109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,104,101, 99,107, 40,
+111,107, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99,111,100,101, 44, 32,
+114,101,112,108,121, 32, 61, 32,103,101,116, 95,114,101,112,108,121, 40,115,101,
+108,102, 46, 99, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 99,111,100,
+101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,
+101,112,108,121, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101,
+ 46,116,121,112,101, 40,111,107, 41, 32,126, 61, 32, 34,102,117,110, 99,116,105,
+111,110, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,
+ 98, 97,115,101, 46,116,121,112,101, 40,111,107, 41, 32, 61, 61, 32, 34,116, 97,
+ 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,102,111,114, 32,105, 44, 32,118, 32,105,110, 32, 98, 97,115,101, 46,105,
+112, 97,105,114,115, 40,111,107, 41, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,
+105,110,100, 40, 99,111,100,101, 44, 32,118, 41, 32,116,104,101,110, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+116,117,114,110, 32, 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,
+111,100,101, 41, 44, 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108,121, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 99,111,
+100,101, 44, 32,111,107, 41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,
+ 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44,
+ 32,114,101,112,108,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+108,115,101, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,114,101,112,108,
+121, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32,
+ 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,111,107, 40, 98, 97,115,
+101, 46,116,111,110,117,109, 98,101,114, 40, 99,111,100,101, 41, 44, 32,114,101,
+112,108,121, 41, 32,101,110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,111,109,
+109, 97,110,100, 40, 99,109,100, 44, 32, 97,114,103, 41, 10, 32, 32, 32, 32, 99,
+109,100, 32, 61, 32,115,116,114,105,110,103, 46,117,112,112,101,114, 40, 99,109,
+100, 41, 10, 32, 32, 32, 32,105,102, 32, 97,114,103, 32,116,104,101,110, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99,
+ 58,115,101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 32, 34, 32, 46, 46, 32,
+ 97,114,103, 46, 46, 32, 34, 92,114, 92,110, 34, 41, 10, 32, 32, 32, 32,101,108,
+115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,
+108,102, 46, 99, 58,115,101,110,100, 40, 99,109,100, 32, 46, 46, 32, 34, 92,114,
+ 92,110, 34, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10,102,117,
+110, 99,116,105,111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120,
+ 58,115,105,110,107, 40,115,110,107, 44, 32,112, 97,116, 41, 10, 32, 32, 32, 32,
+108,111, 99, 97,108, 32, 99,104,117,110,107, 44, 32,101,114,114, 32, 61, 32, 99,
+ 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101,
+116,117,114,110, 32,115,110,107, 40, 99,104,117,110,107, 44, 32,101,114,114, 41,
+ 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116,
+ 46, 95, 95,105,110,100,101,120, 58,115,101,110,100, 40,100, 97,116, 97, 41, 10,
+ 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,115,101,
+110,100, 40,100, 97,116, 97, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+111,110, 32,109,101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,114,101, 99,
+101,105,118,101, 40,112, 97,116, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110,
+ 32,115,101,108,102, 46, 99, 58,114,101, 99,101,105,118,101, 40,112, 97,116, 41,
+ 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116, 97,116,
+ 46, 95, 95,105,110,100,101,120, 58,103,101,116,102,100, 40, 41, 10, 32, 32, 32,
+ 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,103,101,116,102,100,
+ 40, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,116,
+ 97,116, 46, 95, 95,105,110,100,101,120, 58,100,105,114,116,121, 40, 41, 10, 32,
+ 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,102, 46, 99, 58,100,105,114,
+116,121, 40, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,
+101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58,103,101,116, 99,111,110,116,
+114,111,108, 40, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,101,108,
+102, 46, 99, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,109,101,
+116, 97,116, 46, 95, 95,105,110,100,101,120, 58,115,111,117,114, 99,101, 40,115,
+111,117,114, 99,101, 44, 32,115,116,101,112, 41, 10, 32, 32, 32, 32,108,111, 99,
+ 97,108, 32,115,105,110,107, 32, 61, 32,115,111, 99,107,101,116, 46,115,105,110,
+107, 40, 34,107,101,101,112, 45,111,112,101,110, 34, 44, 32,115,101,108,102, 46,
+ 99, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,116, 44, 32,101,114,
+114, 32, 61, 32,108,116,110, 49, 50, 46,112,117,109,112, 46, 97,108,108, 40,115,
+111,117,114, 99,101, 44, 32,115,105,110,107, 44, 32,115,116,101,112, 32,111,114,
+ 32,108,116,110, 49, 50, 46,112,117,109,112, 46,115,116,101,112, 41, 10, 32, 32,
+ 32, 32,114,101,116,117,114,110, 32,114,101,116, 44, 32,101,114,114, 10,101,110,
+100, 10, 10, 45, 45, 32, 99,108,111,115,101,115, 32,116,104,101, 32,117,110,100,
+101,114,108,121,105,110,103, 32, 99, 10,102,117,110, 99,116,105,111,110, 32,109,
+101,116, 97,116, 46, 95, 95,105,110,100,101,120, 58, 99,108,111,115,101, 40, 41,
+ 10, 32, 32, 32, 32,115,101,108,102, 46, 99, 58, 99,108,111,115,101, 40, 41, 10,
+ 32, 32, 32, 32,114,101,116,117,114,110, 32, 49, 10,101,110,100, 10, 10, 45, 45,
+ 32, 99,111,110,110,101, 99,116, 32,119,105,116,104, 32,115,101,114,118,101,114,
+ 32, 97,110,100, 32,114,101,116,117,114,110, 32, 99, 32,111, 98,106,101, 99,116,
+ 10,102,117,110, 99,116,105,111,110, 32, 99,111,110,110,101, 99,116, 40,104,111,
+115,116, 44, 32,112,111,114,116, 44, 32,116,105,109,101,111,117,116, 44, 32, 99,
+114,101, 97,116,101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32, 99, 44, 32,
+101, 32, 61, 32, 40, 99,114,101, 97,116,101, 32,111,114, 32,115,111, 99,107,101,
+116, 46,116, 99,112, 41, 40, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,
+ 99, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101,
+ 32,101,110,100, 10, 32, 32, 32, 32, 99, 58,115,101,116,116,105,109,101,111,117,
+116, 40,116,105,109,101,111,117,116, 32,111,114, 32, 84, 73, 77, 69, 79, 85, 84,
+ 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114, 44, 32,101, 32, 61, 32, 99,
+ 58, 99,111,110,110,101, 99,116, 40,104,111,115,116, 44, 32,112,111,114,116, 41,
+ 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114, 32,116,104,101,110, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 99, 58, 99,108,111,115,101, 40, 41, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,110,105,108, 44, 32,101, 10, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98, 97,
+115,101, 46,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,123, 99, 32, 61,
+ 32, 99,125, 44, 32,109,101,116, 97,116, 41, 10,101,110,100, 10, 10,
0 };
return luaL_dostring(L, (const char*)B);
} /* end of embedded lua code */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c
index fc25aa027dc..8e14fac290f 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.c
@@ -1,10 +1,8 @@
/*=========================================================================*\
-* UDP object
+* UDP object
* LuaSocket toolkit
-*
-* RCS ID: $Id: udp.c,v 1.29 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
-#include <string.h>
+#include <string.h>
#include "lua.h"
#include "lauxlib.h"
@@ -18,36 +16,40 @@
/* min and max macros */
#ifndef MIN
#define MIN(x, y) ((x) < (y) ? x : y)
-#endif
+#endif
#ifndef MAX
#define MAX(x, y) ((x) > (y) ? x : y)
-#endif
+#endif
/*=========================================================================*\
* Internal function prototypes
\*=========================================================================*/
static int global_create(lua_State *L);
+static int global_create6(lua_State *L);
static int meth_send(lua_State *L);
static int meth_sendto(lua_State *L);
static int meth_receive(lua_State *L);
static int meth_receivefrom(lua_State *L);
+static int meth_getfamily(lua_State *L);
static int meth_getsockname(lua_State *L);
static int meth_getpeername(lua_State *L);
static int meth_setsockname(lua_State *L);
static int meth_setpeername(lua_State *L);
static int meth_close(lua_State *L);
static int meth_setoption(lua_State *L);
+static int meth_getoption(lua_State *L);
static int meth_settimeout(lua_State *L);
static int meth_getfd(lua_State *L);
static int meth_setfd(lua_State *L);
static int meth_dirty(lua_State *L);
/* udp object methods */
-static luaL_reg udp[] = {
+static luaL_Reg udp_methods[] = {
{"__gc", meth_close},
{"__tostring", auxiliar_tostring},
{"close", meth_close},
{"dirty", meth_dirty},
+ {"getfamily", meth_getfamily},
{"getfd", meth_getfd},
{"getpeername", meth_getpeername},
{"getsockname", meth_getsockname},
@@ -57,27 +59,39 @@ static luaL_reg udp[] = {
{"sendto", meth_sendto},
{"setfd", meth_setfd},
{"setoption", meth_setoption},
+ {"getoption", meth_getoption},
{"setpeername", meth_setpeername},
{"setsockname", meth_setsockname},
{"settimeout", meth_settimeout},
{NULL, NULL}
};
-/* socket options */
-static t_opt opt[] = {
- {"dontroute", opt_dontroute},
- {"broadcast", opt_broadcast},
- {"reuseaddr", opt_reuseaddr},
- {"ip-multicast-ttl", opt_ip_multicast_ttl},
- {"ip-multicast-loop", opt_ip_multicast_loop},
- {"ip-add-membership", opt_ip_add_membership},
- {"ip-drop-membership", opt_ip_drop_membersip},
- {NULL, NULL}
+/* socket options for setoption */
+static t_opt optset[] = {
+ {"dontroute", opt_set_dontroute},
+ {"broadcast", opt_set_broadcast},
+ {"reuseaddr", opt_set_reuseaddr},
+ {"reuseport", opt_set_reuseport},
+ {"ip-multicast-if", opt_set_ip_multicast_if},
+ {"ip-multicast-ttl", opt_set_ip_multicast_ttl},
+ {"ip-multicast-loop", opt_set_ip_multicast_loop},
+ {"ip-add-membership", opt_set_ip_add_membership},
+ {"ip-drop-membership", opt_set_ip_drop_membersip},
+ {"ipv6-v6only", opt_set_ip6_v6only},
+ {NULL, NULL}
+};
+
+/* socket options for getoption */
+static t_opt optget[] = {
+ {"ip-multicast-if", opt_get_ip_multicast_if},
+ {"ip-multicast-loop", opt_get_ip_multicast_loop},
+ {NULL, NULL}
};
/* functions in library namespace */
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{"udp", global_create},
+ {"udp6", global_create6},
{NULL, NULL}
};
@@ -87,15 +101,15 @@ static luaL_reg func[] = {
int udp_open(lua_State *L)
{
/* create classes */
- auxiliar_newclass(L, "udp{connected}", udp);
- auxiliar_newclass(L, "udp{unconnected}", udp);
+ auxiliar_newclass(L, "udp{connected}", udp_methods);
+ auxiliar_newclass(L, "udp{unconnected}", udp_methods);
/* create class groups */
auxiliar_add2group(L, "udp{connected}", "udp{any}");
auxiliar_add2group(L, "udp{unconnected}", "udp{any}");
auxiliar_add2group(L, "udp{connected}", "select{able}");
auxiliar_add2group(L, "udp{unconnected}", "select{able}");
/* define library functions */
- luaL_openlib(L, NULL, func, 0);
+ luaL_openlib(L, NULL, func, 0);
return 0;
}
@@ -125,7 +139,7 @@ static int meth_send(lua_State *L) {
lua_pushstring(L, udp_strerror(err));
return 2;
}
- lua_pushnumber(L, sent);
+ lua_pushnumber(L, (lua_Number) sent);
return 1;
}
@@ -139,22 +153,43 @@ static int meth_sendto(lua_State *L) {
const char *ip = luaL_checkstring(L, 3);
unsigned short port = (unsigned short) luaL_checknumber(L, 4);
p_timeout tm = &udp->tm;
- struct sockaddr_in addr;
int err;
- memset(&addr, 0, sizeof(addr));
- if (!inet_aton(ip, &addr.sin_addr))
- luaL_argerror(L, 3, "invalid ip address");
- addr.sin_family = AF_INET;
- addr.sin_port = htons(port);
- timeout_markstart(tm);
- err = socket_sendto(&udp->sock, data, count, &sent,
- (SA *) &addr, sizeof(addr), tm);
+ switch (udp->family) {
+ case PF_INET: {
+ struct sockaddr_in addr;
+ memset(&addr, 0, sizeof(addr));
+ if (!inet_pton(AF_INET, ip, &addr.sin_addr))
+ luaL_argerror(L, 3, "invalid ip address");
+ addr.sin_family = AF_INET;
+ addr.sin_port = htons(port);
+ timeout_markstart(tm);
+ err = socket_sendto(&udp->sock, data, count, &sent,
+ (SA *) &addr, sizeof(addr), tm);
+ break;
+ }
+ case PF_INET6: {
+ struct sockaddr_in6 addr;
+ memset(&addr, 0, sizeof(addr));
+ if (!inet_pton(AF_INET6, ip, &addr.sin6_addr))
+ luaL_argerror(L, 3, "invalid ip address");
+ addr.sin6_family = AF_INET6;
+ addr.sin6_port = htons(port);
+ timeout_markstart(tm);
+ err = socket_sendto(&udp->sock, data, count, &sent,
+ (SA *) &addr, sizeof(addr), tm);
+ break;
+ }
+ default:
+ lua_pushnil(L);
+ lua_pushfstring(L, "unknown family %d", udp->family);
+ return 2;
+ }
if (err != IO_DONE) {
lua_pushnil(L);
lua_pushstring(L, udp_strerror(err));
return 2;
}
- lua_pushnumber(L, sent);
+ lua_pushnumber(L, (lua_Number) sent);
return 1;
}
@@ -170,6 +205,9 @@ static int meth_receive(lua_State *L) {
count = MIN(count, sizeof(buffer));
timeout_markstart(tm);
err = socket_recv(&udp->sock, buffer, count, &got, tm);
+ /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */
+ if (err == IO_CLOSED)
+ err = IO_DONE;
if (err != IO_DONE) {
lua_pushnil(L);
lua_pushstring(L, udp_strerror(err));
@@ -184,26 +222,82 @@ static int meth_receive(lua_State *L) {
\*-------------------------------------------------------------------------*/
static int meth_receivefrom(lua_State *L) {
p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1);
- struct sockaddr_in addr;
- socklen_t addr_len = sizeof(addr);
char buffer[UDP_DATAGRAMSIZE];
size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer));
int err;
p_timeout tm = &udp->tm;
timeout_markstart(tm);
count = MIN(count, sizeof(buffer));
- err = socket_recvfrom(&udp->sock, buffer, count, &got,
- (SA *) &addr, &addr_len, tm);
- if (err == IO_DONE) {
- lua_pushlstring(L, buffer, got);
- lua_pushstring(L, inet_ntoa(addr.sin_addr));
- lua_pushnumber(L, ntohs(addr.sin_port));
- return 3;
- } else {
+ switch (udp->family) {
+ case PF_INET: {
+ struct sockaddr_in addr;
+ socklen_t addr_len = sizeof(addr);
+ err = socket_recvfrom(&udp->sock, buffer, count, &got,
+ (SA *) &addr, &addr_len, tm);
+ /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */
+ if (err == IO_CLOSED)
+ err = IO_DONE;
+ if (err == IO_DONE) {
+ char addrstr[INET_ADDRSTRLEN];
+ lua_pushlstring(L, buffer, got);
+ if (!inet_ntop(AF_INET, &addr.sin_addr,
+ addrstr, sizeof(addrstr))) {
+ lua_pushnil(L);
+ lua_pushstring(L, "invalid source address");
+ return 2;
+ }
+ lua_pushstring(L, addrstr);
+ lua_pushnumber(L, ntohs(addr.sin_port));
+ return 3;
+ }
+ break;
+ }
+ case PF_INET6: {
+ struct sockaddr_in6 addr;
+ socklen_t addr_len = sizeof(addr);
+ err = socket_recvfrom(&udp->sock, buffer, count, &got,
+ (SA *) &addr, &addr_len, tm);
+ /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */
+ if (err == IO_CLOSED)
+ err = IO_DONE;
+ if (err == IO_DONE) {
+ char addrstr[INET6_ADDRSTRLEN];
+ lua_pushlstring(L, buffer, got);
+ if (!inet_ntop(AF_INET6, &addr.sin6_addr,
+ addrstr, sizeof(addrstr))) {
+ lua_pushnil(L);
+ lua_pushstring(L, "invalid source address");
+ return 2;
+ }
+ lua_pushstring(L, addrstr);
+ lua_pushnumber(L, ntohs(addr.sin6_port));
+ return 3;
+ }
+ break;
+ }
+ default:
lua_pushnil(L);
- lua_pushstring(L, udp_strerror(err));
+ lua_pushfstring(L, "unknown family %d", udp->family);
return 2;
}
+ lua_pushnil(L);
+ lua_pushstring(L, udp_strerror(err));
+ return 2;
+}
+
+/*-------------------------------------------------------------------------*\
+* Returns family as string
+\*-------------------------------------------------------------------------*/
+static int meth_getfamily(lua_State *L)
+{
+ p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
+ if (udp->family == PF_INET6) {
+ lua_pushliteral(L, "inet6");
+ return 1;
+ } else {
+ lua_pushliteral(L, "inet4");
+ return 1;
+ }
}
/*-------------------------------------------------------------------------*\
@@ -234,12 +328,12 @@ static int meth_dirty(lua_State *L) {
\*-------------------------------------------------------------------------*/
static int meth_getpeername(lua_State *L) {
p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{connected}", 1);
- return inet_meth_getpeername(L, &udp->sock);
+ return inet_meth_getpeername(L, &udp->sock, udp->family);
}
static int meth_getsockname(lua_State *L) {
p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
- return inet_meth_getsockname(L, &udp->sock);
+ return inet_meth_getsockname(L, &udp->sock, udp->family);
}
/*-------------------------------------------------------------------------*\
@@ -247,7 +341,15 @@ static int meth_getsockname(lua_State *L) {
\*-------------------------------------------------------------------------*/
static int meth_setoption(lua_State *L) {
p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
- return opt_meth_setoption(L, opt, &udp->sock);
+ return opt_meth_setoption(L, optset, &udp->sock);
+}
+
+/*-------------------------------------------------------------------------*\
+* Just call option handler
+\*-------------------------------------------------------------------------*/
+static int meth_getoption(lua_State *L) {
+ p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
+ return opt_meth_getoption(L, optget, &udp->sock);
}
/*-------------------------------------------------------------------------*\
@@ -264,26 +366,36 @@ static int meth_settimeout(lua_State *L) {
static int meth_setpeername(lua_State *L) {
p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
p_timeout tm = &udp->tm;
- const char *address = luaL_checkstring(L, 2);
+ const char *address = luaL_checkstring(L, 2);
int connecting = strcmp(address, "*");
- unsigned short port = connecting ?
- (unsigned short) luaL_checknumber(L, 3) :
- (unsigned short) luaL_optnumber(L, 3, 0);
- const char *err = inet_tryconnect(&udp->sock, address, port, tm);
- if (err) {
- lua_pushnil(L);
- lua_pushstring(L, err);
- return 2;
+ const char *port = connecting? luaL_checkstring(L, 3): "0";
+ struct addrinfo connecthints;
+ const char *err;
+ memset(&connecthints, 0, sizeof(connecthints));
+ connecthints.ai_socktype = SOCK_DGRAM;
+ /* make sure we try to connect only to the same family */
+ connecthints.ai_family = udp->family;
+ if (connecting) {
+ err = inet_tryconnect(&udp->sock, address, port, tm, &connecthints);
+ if (err) {
+ lua_pushnil(L);
+ lua_pushstring(L, err);
+ return 2;
+ }
+ auxiliar_setclass(L, "udp{connected}", 1);
+ } else {
+ /* we ignore possible errors because Mac OS X always
+ * returns EAFNOSUPPORT */
+ inet_trydisconnect(&udp->sock, udp->family, tm);
+ auxiliar_setclass(L, "udp{unconnected}", 1);
}
/* change class to connected or unconnected depending on address */
- if (connecting) auxiliar_setclass(L, "udp{connected}", 1);
- else auxiliar_setclass(L, "udp{unconnected}", 1);
lua_pushnumber(L, 1);
return 1;
}
/*-------------------------------------------------------------------------*\
-* Closes socket used by object
+* Closes socket used by object
\*-------------------------------------------------------------------------*/
static int meth_close(lua_State *L) {
p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
@@ -298,8 +410,14 @@ static int meth_close(lua_State *L) {
static int meth_setsockname(lua_State *L) {
p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1);
const char *address = luaL_checkstring(L, 2);
- unsigned short port = (unsigned short) luaL_checknumber(L, 3);
- const char *err = inet_trybind(&udp->sock, address, port);
+ const char *port = luaL_checkstring(L, 3);
+ const char *err;
+ struct addrinfo bindhints;
+ memset(&bindhints, 0, sizeof(bindhints));
+ bindhints.ai_socktype = SOCK_DGRAM;
+ bindhints.ai_family = udp->family;
+ bindhints.ai_flags = AI_PASSIVE;
+ err = inet_trybind(&udp->sock, address, port, &bindhints);
if (err) {
lua_pushnil(L);
lua_pushstring(L, err);
@@ -313,20 +431,26 @@ static int meth_setsockname(lua_State *L) {
* Library functions
\*=========================================================================*/
/*-------------------------------------------------------------------------*\
-* Creates a master udp object
+* Creates a master udp object
\*-------------------------------------------------------------------------*/
-static int global_create(lua_State *L) {
+static int udp_create(lua_State *L, int family) {
t_socket sock;
- const char *err = inet_trycreate(&sock, SOCK_DGRAM);
+ const char *err = inet_trycreate(&sock, family, SOCK_DGRAM);
/* try to allocate a system socket */
- if (!err) {
- /* allocate tcp object */
+ if (!err) {
+ /* allocate udp object */
p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp));
auxiliar_setclass(L, "udp{unconnected}", -1);
/* initialize remaining structure fields */
socket_setnonblocking(&sock);
+ if (family == PF_INET6) {
+ int yes = 1;
+ setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
+ (void *)&yes, sizeof(yes));
+ }
udp->sock = sock;
timeout_init(&udp->tm, -1, -1);
+ udp->family = family;
return 1;
} else {
lua_pushnil(L);
@@ -334,3 +458,11 @@ static int global_create(lua_State *L) {
return 2;
}
}
+
+static int global_create(lua_State *L) {
+ return udp_create(L, AF_INET);
+}
+
+static int global_create6(lua_State *L) {
+ return udp_create(L, AF_INET6);
+}
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h
index 28017121714..2b831a53716 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/udp.h
@@ -11,8 +11,6 @@
* originally unconnected. They can be "connected" to a given address
* with a call to the setpeername function. The same function can be used to
* break the connection.
-*
-* RCS ID: $Id: udp.h,v 1.10 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
#include "lua.h"
@@ -25,6 +23,7 @@
typedef struct t_udp_ {
t_socket sock;
t_timeout tm;
+ int family;
} t_udp;
typedef t_udp *p_udp;
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c
index 158d319a5f2..73e7b69544c 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.c
@@ -1,8 +1,6 @@
/*=========================================================================*\
* Unix domain socket
* LuaSocket toolkit
-*
-* RCS ID: $Id: unix.c,v 1.13 2006/03/13 07:16:39 diego Exp $
\*=========================================================================*/
#include <string.h>
@@ -39,7 +37,7 @@ static const char *unix_tryconnect(p_unix un, const char *path);
static const char *unix_trybind(p_unix un, const char *path);
/* unix object methods */
-static luaL_reg un[] = {
+static luaL_Reg unix_methods[] = {
{"__gc", meth_close},
{"__tostring", auxiliar_tostring},
{"accept", meth_accept},
@@ -63,15 +61,15 @@ static luaL_reg un[] = {
};
/* socket option handlers */
-static t_opt opt[] = {
- {"keepalive", opt_keepalive},
- {"reuseaddr", opt_reuseaddr},
- {"linger", opt_linger},
+static t_opt optset[] = {
+ {"keepalive", opt_set_keepalive},
+ {"reuseaddr", opt_set_reuseaddr},
+ {"linger", opt_set_linger},
{NULL, NULL}
};
/* our socket creation function */
-static luaL_reg func[] = {
+static luaL_Reg func[] = {
{"unix", global_create},
{NULL, NULL}
};
@@ -82,9 +80,9 @@ static luaL_reg func[] = {
\*-------------------------------------------------------------------------*/
int luaopen_socket_unix(lua_State *L) {
/* create classes */
- auxiliar_newclass(L, "unix{master}", un);
- auxiliar_newclass(L, "unix{client}", un);
- auxiliar_newclass(L, "unix{server}", un);
+ auxiliar_newclass(L, "unix{master}", unix_methods);
+ auxiliar_newclass(L, "unix{client}", unix_methods);
+ auxiliar_newclass(L, "unix{server}", unix_methods);
/* create class groups */
auxiliar_add2group(L, "unix{master}", "unix{any}");
auxiliar_add2group(L, "unix{client}", "unix{any}");
@@ -128,7 +126,7 @@ static int meth_setstats(lua_State *L) {
\*-------------------------------------------------------------------------*/
static int meth_setoption(lua_State *L) {
p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1);
- return opt_meth_setoption(L, opt, &un->sock);
+ return opt_meth_setoption(L, optset, &un->sock);
}
/*-------------------------------------------------------------------------*\
@@ -294,27 +292,13 @@ static int meth_listen(lua_State *L)
\*-------------------------------------------------------------------------*/
static int meth_shutdown(lua_State *L)
{
- p_unix un = (p_unix) auxiliar_checkclass(L, "unix{client}", 1);
- const char *how = luaL_optstring(L, 2, "both");
- switch (how[0]) {
- case 'b':
- if (strcmp(how, "both")) goto error;
- socket_shutdown(&un->sock, 2);
- break;
- case 's':
- if (strcmp(how, "send")) goto error;
- socket_shutdown(&un->sock, 1);
- break;
- case 'r':
- if (strcmp(how, "receive")) goto error;
- socket_shutdown(&un->sock, 0);
- break;
- }
+ /* SHUT_RD, SHUT_WR, SHUT_RDWR have the value 0, 1, 2, so we can use method index directly */
+ static const char* methods[] = { "receive", "send", "both", NULL };
+ p_unix tcp = (p_unix) auxiliar_checkclass(L, "unix{client}", 1);
+ int how = luaL_checkoption(L, 2, "both", methods);
+ socket_shutdown(&tcp->sock, how);
lua_pushnumber(L, 1);
return 1;
-error:
- luaL_argerror(L, 2, "invalid shutdown method");
- return 0;
}
/*-------------------------------------------------------------------------*\
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h
index 32b7380fffa..ad305079dd7 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/unix.h
@@ -6,14 +6,13 @@
*
* This module is just an example of how to extend LuaSocket with a new
* domain.
-*
-* RCS ID: $Id: unix.h,v 1.9 2006/03/13 07:16:39 diego Exp $
\*=========================================================================*/
#include "lua.h"
#include "buffer.h"
#include "timeout.h"
#include "socket.h"
+#include "luasocket.h"
typedef struct t_unix_ {
t_socket sock;
@@ -23,6 +22,6 @@ typedef struct t_unix_ {
} t_unix;
typedef t_unix *p_unix;
-int luaopen_socket_unix(lua_State *L);
+LUASOCKET_API int luaopen_socket_unix(lua_State *L);
#endif /* UNIX_H */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua b/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua
index 0e31d8af20d..6ca6d684499 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/url.lua
@@ -2,7 +2,6 @@
-- URI parsing, composition and relative URL resolution
-- LuaSocket toolkit.
-- Author: Diego Nehab
--- RCS ID: $Id: url.lua,v 1.38 2006/04/03 04:45:42 diego Exp $
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
@@ -16,7 +15,7 @@ module("socket.url")
-----------------------------------------------------------------------------
-- Module version
-----------------------------------------------------------------------------
-_VERSION = "URL 1.0.1"
+_VERSION = "URL 1.0.2"
-----------------------------------------------------------------------------
-- Encodes a string into its escaped hexadecimal representation
@@ -26,9 +25,9 @@ _VERSION = "URL 1.0.1"
-- escaped representation of string binary
-----------------------------------------------------------------------------
function escape(s)
- return string.gsub(s, "([^A-Za-z0-9_])", function(c)
+ return (string.gsub(s, "([^A-Za-z0-9_])", function(c)
return string.format("%%%02x", string.byte(c))
- end)
+ end))
end
-----------------------------------------------------------------------------
@@ -40,25 +39,25 @@ end
-- escaped representation of string binary
-----------------------------------------------------------------------------
local function make_set(t)
- local s = {}
- for i,v in base.ipairs(t) do
- s[t[i]] = 1
- end
- return s
+ local s = {}
+ for i,v in base.ipairs(t) do
+ s[t[i]] = 1
+ end
+ return s
end
-- these are allowed withing a path segment, along with alphanum
-- other characters must be escaped
local segment_set = make_set {
"-", "_", ".", "!", "~", "*", "'", "(",
- ")", ":", "@", "&", "=", "+", "$", ",",
+ ")", ":", "@", "&", "=", "+", "$", ",",
}
local function protect_segment(s)
- return string.gsub(s, "([^A-Za-z0-9_])", function (c)
- if segment_set[c] then return c
- else return string.format("%%%02x", string.byte(c)) end
- end)
+ return string.gsub(s, "([^A-Za-z0-9_])", function (c)
+ if segment_set[c] then return c
+ else return string.format("%%%02x", string.byte(c)) end
+ end)
end
-----------------------------------------------------------------------------
@@ -69,9 +68,9 @@ end
-- escaped representation of string binary
-----------------------------------------------------------------------------
function unescape(s)
- return string.gsub(s, "%%(%x%x)", function(hex)
+ return (string.gsub(s, "%%(%x%x)", function(hex)
return string.char(base.tonumber(hex, 16))
- end)
+ end))
end
-----------------------------------------------------------------------------
@@ -142,7 +141,7 @@ function parse(url, default)
parsed.authority = n
return ""
end)
- -- get query stringing
+ -- get query string
url = string.gsub(url, "%?(.*)", function(q)
parsed.query = q
return ""
@@ -158,9 +157,12 @@ function parse(url, default)
if not authority then return parsed end
authority = string.gsub(authority,"^([^@]*)@",
function(u) parsed.userinfo = u; return "" end)
- authority = string.gsub(authority, ":([^:]*)$",
+ authority = string.gsub(authority, ":([^:%]]*)$",
function(p) parsed.port = p; return "" end)
- if authority ~= "" then parsed.host = authority end
+ if authority ~= "" then
+ -- IPv6?
+ parsed.host = string.match(authority, "^%[(.+)%]$") or authority
+ end
local userinfo = parsed.userinfo
if not userinfo then return parsed end
userinfo = string.gsub(userinfo, ":([^:]*)$",
@@ -182,19 +184,22 @@ function build(parsed)
local url = build_path(ppath)
if parsed.params then url = url .. ";" .. parsed.params end
if parsed.query then url = url .. "?" .. parsed.query end
- local authority = parsed.authority
- if parsed.host then
- authority = parsed.host
- if parsed.port then authority = authority .. ":" .. parsed.port end
- local userinfo = parsed.userinfo
- if parsed.user then
- userinfo = parsed.user
- if parsed.password then
- userinfo = userinfo .. ":" .. parsed.password
- end
- end
- if userinfo then authority = userinfo .. "@" .. authority end
- end
+ local authority = parsed.authority
+ if parsed.host then
+ authority = parsed.host
+ if string.find(authority, ":") then -- IPv6?
+ authority = "[" .. authority .. "]"
+ end
+ if parsed.port then authority = authority .. ":" .. parsed.port end
+ local userinfo = parsed.userinfo
+ if parsed.user then
+ userinfo = parsed.user
+ if parsed.password then
+ userinfo = userinfo .. ":" .. parsed.password
+ end
+ end
+ if userinfo then authority = userinfo .. "@" .. authority end
+ end
if authority then url = "//" .. authority .. url end
if parsed.scheme then url = parsed.scheme .. ":" .. url end
if parsed.fragment then url = url .. "#" .. parsed.fragment end
@@ -250,16 +255,16 @@ end
-- segment: a table with one entry per segment
-----------------------------------------------------------------------------
function parse_path(path)
- local parsed = {}
- path = path or ""
- --path = string.gsub(path, "%s", "")
- string.gsub(path, "([^/]+)", function (s) table.insert(parsed, s) end)
- for i = 1, table.getn(parsed) do
- parsed[i] = unescape(parsed[i])
- end
- if string.sub(path, 1, 1) == "/" then parsed.is_absolute = 1 end
- if string.sub(path, -1, -1) == "/" then parsed.is_directory = 1 end
- return parsed
+ local parsed = {}
+ path = path or ""
+ --path = string.gsub(path, "%s", "")
+ string.gsub(path, "([^/]+)", function (s) table.insert(parsed, s) end)
+ for i = 1, #parsed do
+ parsed[i] = unescape(parsed[i])
+ end
+ if string.sub(path, 1, 1) == "/" then parsed.is_absolute = 1 end
+ if string.sub(path, -1, -1) == "/" then parsed.is_directory = 1 end
+ return parsed
end
-----------------------------------------------------------------------------
@@ -271,27 +276,27 @@ end
-- path: corresponding path stringing
-----------------------------------------------------------------------------
function build_path(parsed, unsafe)
- local path = ""
- local n = table.getn(parsed)
- if unsafe then
- for i = 1, n-1 do
- path = path .. parsed[i]
- path = path .. "/"
- end
- if n > 0 then
- path = path .. parsed[n]
- if parsed.is_directory then path = path .. "/" end
- end
- else
- for i = 1, n-1 do
- path = path .. protect_segment(parsed[i])
- path = path .. "/"
- end
- if n > 0 then
- path = path .. protect_segment(parsed[n])
- if parsed.is_directory then path = path .. "/" end
- end
- end
- if parsed.is_absolute then path = "/" .. path end
- return path
+ local path = ""
+ local n = #parsed
+ if unsafe then
+ for i = 1, n-1 do
+ path = path .. parsed[i]
+ path = path .. "/"
+ end
+ if n > 0 then
+ path = path .. parsed[n]
+ if parsed.is_directory then path = path .. "/" end
+ end
+ else
+ for i = 1, n-1 do
+ path = path .. protect_segment(parsed[i])
+ path = path .. "/"
+ end
+ if n > 0 then
+ path = path .. protect_segment(parsed[n])
+ if parsed.is_directory then path = path .. "/" end
+ end
+ end
+ if parsed.is_absolute then path = "/" .. path end
+ return path
end
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c b/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c
index 7b4a6e799c0..803d365444e 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/url_lua.c
@@ -1,5 +1,5 @@
/*
- * This file is auto-generated by "./lua2c url.lua url_lua"
+ * This file is auto-generated by "lua2c url.lua url_lua"
*/
#include "lua.h"
@@ -16,126 +16,125 @@ int luatex_url_lua_open (lua_State *L) {
82, 76, 32,114,101,115,111,108,117,116,105,111,110, 10, 45, 45, 32, 76,117, 97,
83,111, 99,107,101,116, 32,116,111,111,108,107,105,116, 46, 10, 45, 45, 32, 65,
117,116,104,111,114, 58, 32, 68,105,101,103,111, 32, 78,101,104, 97, 98, 10, 45,
- 45, 32, 82, 67, 83, 32, 73, 68, 58, 32, 36, 73,100, 58, 32,117,114,108, 46,108,
-117, 97, 44,118, 32, 49, 46, 51, 56, 32, 50, 48, 48, 54, 47, 48, 52, 47, 48, 51,
- 32, 48, 52, 58, 52, 53, 58, 52, 50, 32,100,105,101,103,111, 32, 69,120,112, 32,
- 36, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
- 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45,
- 45, 32, 68,101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 10, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,
+101, 99,108, 97,114,101, 32,109,111,100,117,108,101, 10, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108,
- 32,115,116,114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,
-116,114,105,110,103, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61,
- 32, 95, 71, 10,108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101,
-113,117,105,114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,109,111,100,117,108,
-101, 40, 34,115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10, 10, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,108,111, 99, 97,108, 32,115,116,
+114,105,110,103, 32, 61, 32,114,101,113,117,105,114,101, 40, 34,115,116,114,105,
+110,103, 34, 41, 10,108,111, 99, 97,108, 32, 98, 97,115,101, 32, 61, 32, 95, 71,
+ 10,108,111, 99, 97,108, 32,116, 97, 98,108,101, 32, 61, 32,114,101,113,117,105,
+114,101, 40, 34,116, 97, 98,108,101, 34, 41, 10,109,111,100,117,108,101, 40, 34,
+115,111, 99,107,101,116, 46,117,114,108, 34, 41, 10, 10, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,111,
-100,117,108,101, 32,118,101,114,115,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 77,111,100,117,108,
+101, 32,118,101,114,115,105,111,110, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32,
- 61, 32, 34, 85, 82, 76, 32, 49, 46, 48, 46, 49, 34, 10, 10, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 10, 95, 86, 69, 82, 83, 73, 79, 78, 32, 61, 32, 34,
+ 85, 82, 76, 32, 49, 46, 48, 46, 50, 34, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110, 99,111,
-100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,111, 32,105,116,
-115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105,109, 97,
-108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45, 45, 32,
- 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97,114,121,
- 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111,100,101,
-100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,101,115,
- 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110,
- 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110, 99,111,100,101,115,
+ 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,111, 32,105,116,115, 32,101,
+115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105,109, 97,108, 32,114,
+101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45, 45, 32, 73,110,112,
+117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97,114,121, 32,115,116,
+114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111,100,101,100, 10, 45,
+ 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,101,115, 99, 97,112,
+101,100, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 32,111,102,
+ 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,
-116,105,111,110, 32,101,115, 99, 97,112,101, 40,115, 41, 10, 32, 32, 32, 32,114,
-101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44,
- 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41, 34, 44, 32,
-102,117,110, 99,116,105,111,110, 40, 99, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
-114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116,
- 40, 34, 37, 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121,
-116,101, 40, 99, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10,
- 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,
+110, 32,101,115, 99, 97,112,101, 40,115, 41, 10, 32, 32, 32, 32,114,101,116,117,
+114,110, 32, 40,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32, 34,
+ 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41, 34, 44, 32,102,117,
+110, 99,116,105,111,110, 40, 99, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+116,117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34,
+ 37, 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121,116,101,
+ 40, 99, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 41, 10,101,110,100, 10, 10,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45,
- 45, 32, 80,114,111,116,101, 99,116,115, 32, 97, 32,112, 97,116,104, 32,115,101,
-103,109,101,110,116, 44, 32,116,111, 32,112,114,101,118,101,110,116, 32,105,116,
- 32,102,114,111,109, 32,105,110,116,101,114,102,101,114,105,110,103, 32,119,105,
-116,104, 32,116,104,101, 10, 45, 45, 32,117,114,108, 32,112, 97,114,115,105,110,
-103, 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32,
- 98,105,110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,
-101,110, 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45,
- 45, 32, 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,
-116, 97,116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110,
- 97,114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,109, 97,107,
-101, 95,115,101,116, 40,116, 41, 10, 9,108,111, 99, 97,108, 32,115, 32, 61, 32,
-123,125, 10, 9,102,111,114, 32,105, 44,118, 32,105,110, 32, 98, 97,115,101, 46,
-105,112, 97,105,114,115, 40,116, 41, 32,100,111, 10, 9, 9,115, 91,116, 91,105,
- 93, 93, 32, 61, 32, 49, 10, 9,101,110,100, 10, 9,114,101,116,117,114,110, 32,
-115, 10,101,110,100, 10, 10, 45, 45, 32,116,104,101,115,101, 32, 97,114,101, 32,
- 97,108,108,111,119,101,100, 32,119,105,116,104,105,110,103, 32, 97, 32,112, 97,
-116,104, 32,115,101,103,109,101,110,116, 44, 32, 97,108,111,110,103, 32,119,105,
-116,104, 32, 97,108,112,104, 97,110,117,109, 10, 45, 45, 32,111,116,104,101,114,
- 32, 99,104, 97,114, 97, 99,116,101,114,115, 32,109,117,115,116, 32, 98,101, 32,
-101,115, 99, 97,112,101,100, 10,108,111, 99, 97,108, 32,115,101,103,109,101,110,
-116, 95,115,101,116, 32, 61, 32,109, 97,107,101, 95,115,101,116, 32,123, 10, 32,
- 32, 32, 32, 34, 45, 34, 44, 32, 34, 95, 34, 44, 32, 34, 46, 34, 44, 32, 34, 33,
- 34, 44, 32, 34,126, 34, 44, 32, 34, 42, 34, 44, 32, 34, 39, 34, 44, 32, 34, 40,
- 34, 44, 10, 9, 34, 41, 34, 44, 32, 34, 58, 34, 44, 32, 34, 64, 34, 44, 32, 34,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+ 32, 80,114,111,116,101, 99,116,115, 32, 97, 32,112, 97,116,104, 32,115,101,103,
+109,101,110,116, 44, 32,116,111, 32,112,114,101,118,101,110,116, 32,105,116, 32,
+102,114,111,109, 32,105,110,116,101,114,102,101,114,105,110,103, 32,119,105,116,
+104, 32,116,104,101, 10, 45, 45, 32,117,114,108, 32,112, 97,114,115,105,110,103,
+ 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,
+105,110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,
+110, 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45,
+ 32, 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116,
+ 97,116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,
+114,121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110, 32,109, 97,107,101,
+ 95,115,101,116, 40,116, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,115, 32,
+ 61, 32,123,125, 10, 32, 32, 32, 32,102,111,114, 32,105, 44,118, 32,105,110, 32,
+ 98, 97,115,101, 46,105,112, 97,105,114,115, 40,116, 41, 32,100,111, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,115, 91,116, 91,105, 93, 93, 32, 61, 32, 49, 10, 32, 32,
+ 32, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115, 10,101,
+110,100, 10, 10, 45, 45, 32,116,104,101,115,101, 32, 97,114,101, 32, 97,108,108,
+111,119,101,100, 32,119,105,116,104,105,110,103, 32, 97, 32,112, 97,116,104, 32,
+115,101,103,109,101,110,116, 44, 32, 97,108,111,110,103, 32,119,105,116,104, 32,
+ 97,108,112,104, 97,110,117,109, 10, 45, 45, 32,111,116,104,101,114, 32, 99,104,
+ 97,114, 97, 99,116,101,114,115, 32,109,117,115,116, 32, 98,101, 32,101,115, 99,
+ 97,112,101,100, 10,108,111, 99, 97,108, 32,115,101,103,109,101,110,116, 95,115,
+101,116, 32, 61, 32,109, 97,107,101, 95,115,101,116, 32,123, 10, 32, 32, 32, 32,
+ 34, 45, 34, 44, 32, 34, 95, 34, 44, 32, 34, 46, 34, 44, 32, 34, 33, 34, 44, 32,
+ 34,126, 34, 44, 32, 34, 42, 34, 44, 32, 34, 39, 34, 44, 32, 34, 40, 34, 44, 10,
+ 32, 32, 32, 32, 34, 41, 34, 44, 32, 34, 58, 34, 44, 32, 34, 64, 34, 44, 32, 34,
38, 34, 44, 32, 34, 61, 34, 44, 32, 34, 43, 34, 44, 32, 34, 36, 34, 44, 32, 34,
44, 34, 44, 10,125, 10, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,
110, 32,112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116, 40,115, 41,
- 10, 9,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,115,117, 98,
- 40,115, 44, 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57, 95, 93, 41,
- 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 9, 9,105,102,
- 32,115,101,103,109,101,110,116, 95,115,101,116, 91, 99, 93, 32,116,104,101,110,
- 32,114,101,116,117,114,110, 32, 99, 10, 9, 9,101,108,115,101, 32,114,101,116,
-117,114,110, 32,115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37,
- 37, 37, 48, 50,120, 34, 44, 32,115,116,114,105,110,103, 46, 98,121,116,101, 40,
- 99, 41, 41, 32,101,110,100, 10, 9,101,110,100, 41, 10,101,110,100, 10, 10, 45,
+ 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,
+115,117, 98, 40,115, 44, 32, 34, 40, 91, 94, 65, 45, 90, 97, 45,122, 48, 45, 57,
+ 95, 93, 41, 34, 44, 32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,105,102, 32,115,101,103,109,101,110,116, 95,115,101,
+116, 91, 99, 93, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 99, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32,115,
+116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 34, 37, 37, 37, 48, 50,120,
+ 34, 44, 32,115,116,114,105,110,103, 46, 98,121,116,101, 40, 99, 41, 41, 32,101,
+110,100, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32,
- 69,110, 99,111,100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,
-111, 32,105,116,115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101,
- 99,105,109, 97,108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110,
- 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,
-110, 97,114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110,
- 99,111,100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32,
- 32, 32,101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97,
-116,105,111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,
-121, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 69,110,
+ 99,111,100,101,115, 32, 97, 32,115,116,114,105,110,103, 32,105,110,116,111, 32,
+105,116,115, 32,101,115, 99, 97,112,101,100, 32,104,101,120, 97,100,101, 99,105,
+109, 97,108, 32,114,101,112,114,101,115,101,110,116, 97,116,105,111,110, 10, 45,
+ 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,115, 58, 32, 98,105,110, 97,
+114,121, 32,115,116,114,105,110,103, 32,116,111, 32, 98,101, 32,101,110, 99,111,
+100,101,100, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,
+101,115, 99, 97,112,101,100, 32,114,101,112,114,101,115,101,110,116, 97,116,105,
+111,110, 32,111,102, 32,115,116,114,105,110,103, 32, 98,105,110, 97,114,121, 10,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
-102,117,110, 99,116,105,111,110, 32,117,110,101,115, 99, 97,112,101, 40,115, 41,
- 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,103,
-115,117, 98, 40,115, 44, 32, 34, 37, 37, 40, 37,120, 37,120, 41, 34, 44, 32,102,
-117,110, 99,116,105,111,110, 40,104,101,120, 41, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,114,101,116,117,114,110, 32,115,116,114,105,110,103, 46, 99,104, 97,114, 40,
- 98, 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104,101,120, 44, 32, 49,
- 54, 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,
+110, 99,116,105,111,110, 32,117,110,101,115, 99, 97,112,101, 40,115, 41, 10, 32,
+ 32, 32, 32,114,101,116,117,114,110, 32, 40,115,116,114,105,110,103, 46,103,115,
+117, 98, 40,115, 44, 32, 34, 37, 37, 40, 37,120, 37,120, 41, 34, 44, 32,102,117,
+110, 99,116,105,111,110, 40,104,101,120, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+114,101,116,117,114,110, 32,115,116,114,105,110,103, 46, 99,104, 97,114, 40, 98,
+ 97,115,101, 46,116,111,110,117,109, 98,101,114, 40,104,101,120, 44, 32, 49, 54,
+ 41, 41, 10, 32, 32, 32, 32,101,110,100, 41, 41, 10,101,110,100, 10, 10, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
@@ -267,272 +266,293 @@ int luatex_url_lua_open (lua_State *L) {
32, 32, 32, 32,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121,
32, 61, 32,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32,
34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32, 32, 45, 45, 32,103,
-101,116, 32,113,117,101,114,121, 32,115,116,114,105,110,103,105,110,103, 10, 32,
- 32, 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98,
- 40,117,114,108, 44, 32, 34, 37, 63, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,
-116,105,111,110, 40,113, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,
-101,100, 46,113,117,101,114,121, 32, 61, 32,113, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10,
- 32, 32, 32, 32, 45, 45, 32,103,101,116, 32,112, 97,114, 97,109,115, 10, 32, 32,
- 32, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
-117,114,108, 44, 32, 34, 37, 59, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116,
-105,111,110, 40,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,
-100, 46,112, 97,114, 97,109,115, 32, 61, 32,112, 10, 32, 32, 32, 32, 32, 32, 32,
- 32,114,101,116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10,
- 32, 32, 32, 32, 45, 45, 32,112, 97,116,104, 32,105,115, 32,119,104, 97,116,101,
-118,101,114, 32,119, 97,115, 32,108,101,102,116, 10, 32, 32, 32, 32,105,102, 32,
-117,114,108, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112, 97,114,115,101,
-100, 46,112, 97,116,104, 32, 61, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32,
- 32,108,111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112,
- 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32,
-105,102, 32,110,111,116, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101,
-110, 32,114,101,116,117,114,110, 32,112, 97,114,115,101,100, 32,101,110,100, 10,
- 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,115,116,114,105,
-110,103, 46,103,115,117, 98, 40, 97,117,116,104,111,114,105,116,121, 44, 34, 94,
- 40, 91, 94, 64, 93, 42, 41, 64, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,
-117,110, 99,116,105,111,110, 40,117, 41, 32,112, 97,114,115,101,100, 46,117,115,
-101,114,105,110,102,111, 32, 61, 32,117, 59, 32,114,101,116,117,114,110, 32, 34,
- 34, 32,101,110,100, 41, 10, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121,
- 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40, 97,117,116,104,111,
-114,105,116,121, 44, 32, 34, 58, 40, 91, 94, 58, 93, 42, 41, 36, 34, 44, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112,
- 97,114,115,101,100, 46,112,111,114,116, 32, 61, 32,112, 59, 32,114,101,116,117,
-114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,105,102, 32, 97,117,
-116,104,111,114,105,116,121, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112,
- 97,114,115,101,100, 46,104,111,115,116, 32, 61, 32, 97,117,116,104,111,114,105,
-116,121, 32,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,115,101,
-114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114,105,
-110,102,111, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32,117,115,101,114,105,
-110,102,111, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,112, 97,114,115,
-101,100, 32,101,110,100, 10, 32, 32, 32, 32,117,115,101,114,105,110,102,111, 32,
- 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,115,101,114,105,110,
-102,111, 44, 32, 34, 58, 40, 91, 94, 58, 93, 42, 41, 36, 34, 44, 10, 32, 32, 32,
- 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112, 97,114,
-115,101,100, 46,112, 97,115,115,119,111,114,100, 32, 61, 32,112, 59, 32,114,101,
-116,117,114,110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,112, 97,114,
-115,101,100, 46,117,115,101,114, 32, 61, 32,117,115,101,114,105,110,102,111, 10,
- 32, 32, 32, 32,114,101,116,117,114,110, 32,112, 97,114,115,101,100, 10,101,110,
-100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 10, 45, 45, 32, 82,101, 98,117,105,108,100,115, 32, 97, 32,112, 97,114,115,101,
-100, 32, 85, 82, 76, 32,102,114,111,109, 32,105,116,115, 32, 99,111,109,112,111,
-110,101,110,116,115, 46, 10, 45, 45, 32, 67,111,109,112,111,110,101,110,116,115,
- 32, 97,114,101, 32,112,114,111,116,101, 99,116,101,100, 32,105,102, 32, 97,110,
-121, 32,114,101,115,101,114,118,101,100, 32,111,114, 32,117,110, 97,108,108,111,
-119,101,100, 32, 99,104, 97,114, 97, 99,116,101,114,115, 32, 97,114,101, 32,102,
-111,117,110,100, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,112,
- 97,114,115,101,100, 58, 32,112, 97,114,115,101,100, 32, 85, 82, 76, 44, 32, 97,
-115, 32,114,101,116,117,114,110,101,100, 32, 98,121, 32,112, 97,114,115,101, 10,
- 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32, 97, 32,115,116,
-114,105,110,103,105,110,103, 32,119,105,116,104, 32,116,104,101, 32, 99,111,114,
-114,101,115,112,111,110,100,105,110,103, 32, 85, 82, 76, 10, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,
-110, 32, 98,117,105,108,100, 40,112, 97,114,115,101,100, 41, 10, 32, 32, 32, 32,
-108,111, 99, 97,108, 32,112,112, 97,116,104, 32, 61, 32,112, 97,114,115,101, 95,
-112, 97,116,104, 40,112, 97,114,115,101,100, 46,112, 97,116,104, 32,111,114, 32,
- 34, 34, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,114,108, 32, 61, 32,
- 98,117,105,108,100, 95,112, 97,116,104, 40,112,112, 97,116,104, 41, 10, 32, 32,
- 32, 32,105,102, 32,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,116,
-104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, 32, 34, 59, 34,
- 32, 46, 46, 32,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,101,110,
-100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,113,117,101,114,
-121, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46, 32,
- 34, 63, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,113,117,101,114,121, 32,
-101,110,100, 10, 9,108,111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121,
- 32, 61, 32,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10,
- 9,105,102, 32,112, 97,114,115,101,100, 46,104,111,115,116, 32,116,104,101,110,
- 10, 9, 9, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,115,101,
-100, 46,104,111,115,116, 10, 9, 9,105,102, 32,112, 97,114,115,101,100, 46,112,
-111,114,116, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121, 32, 61,
- 32, 97,117,116,104,111,114,105,116,121, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46,
- 32,112, 97,114,115,101,100, 46,112,111,114,116, 32,101,110,100, 10, 9, 9,108,
-111, 99, 97,108, 32,117,115,101,114,105,110,102,111, 32, 61, 32,112, 97,114,115,
-101,100, 46,117,115,101,114,105,110,102,111, 10, 9, 9,105,102, 32,112, 97,114,
-115,101,100, 46,117,115,101,114, 32,116,104,101,110, 10, 9, 9, 9,117,115,101,
-114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114, 10,
- 9, 9, 9,105,102, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114,
-100, 32,116,104,101,110, 10, 9, 9, 9, 9,117,115,101,114,105,110,102,111, 32,
- 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46,
- 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114,100, 10, 9, 9, 9,
-101,110,100, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,117,115,101,114,105,
-110,102,111, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121, 32, 61,
- 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 64, 34, 32, 46, 46, 32,
- 97,117,116,104,111,114,105,116,121, 32,101,110,100, 10, 9,101,110,100, 10, 32,
- 32, 32, 32,105,102, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101,110,
- 32,117,114,108, 32, 61, 32, 34, 47, 47, 34, 32, 46, 46, 32, 97,117,116,104,111,
-114,105,116,121, 32, 46, 46, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, 32,
-105,102, 32,112, 97,114,115,101,100, 46,115, 99,104,101,109,101, 32,116,104,101,
-110, 32,117,114,108, 32, 61, 32,112, 97,114,115,101,100, 46,115, 99,104,101,109,
-101, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,117,114,108, 32,101,110,100, 10,
- 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,102,114, 97,103,109,101,
-110,116, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,117,114,108, 32, 46, 46,
- 32, 34, 35, 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,102,114, 97,103,109,
-101,110,116, 32,101,110,100, 10, 32, 32, 32, 32, 45, 45, 32,117,114,108, 32, 61,
- 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,108, 44, 32, 34, 37,
-115, 34, 44, 32, 34, 34, 41, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,117,
-114,108, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105,108,100,115, 32, 97, 32, 97, 98,
-115,111,108,117,116,101, 32, 85, 82, 76, 32,102,114,111,109, 32, 97, 32, 98, 97,
-115,101, 32, 97,110,100, 32, 97, 32,114,101,108, 97,116,105,118,101, 32, 85, 82,
- 76, 32, 97, 99, 99,111,114,100,105,110,103, 32,116,111, 32, 82, 70, 67, 32, 50,
- 51, 57, 54, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32, 98, 97,
-115,101, 95,117,114,108, 10, 45, 45, 32, 32, 32,114,101,108, 97,116,105,118,101,
- 95,117,114,108, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32,
- 32, 99,111,114,114,101,115,112,111,110,100,105,110,103, 32, 97, 98,115,111,108,
-117,116,101, 32,117,114,108, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 97, 98,115,111,108,
-117,116,101, 40, 98, 97,115,101, 95,117,114,108, 44, 32,114,101,108, 97,116,105,
-118,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,105,102, 32, 98, 97,115,101, 46,
-116,121,112,101, 40, 98, 97,115,101, 95,117,114,108, 41, 32, 61, 61, 32, 34,116,
- 97, 98,108,101, 34, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98,
- 97,115,101, 95,112, 97,114,115,101,100, 32, 61, 32, 98, 97,115,101, 95,117,114,
-108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 95,117,114,108, 32, 61,
- 32, 98,117,105,108,100, 40, 98, 97,115,101, 95,112, 97,114,115,101,100, 41, 10,
- 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,115,
-101, 95,112, 97,114,115,101,100, 32, 61, 32,112, 97,114,115,101, 40, 98, 97,115,
-101, 95,117,114,108, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,108,
-111, 99, 97,108, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100,
- 32, 61, 32,112, 97,114,115,101, 40,114,101,108, 97,116,105,118,101, 95,117,114,
-108, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,116, 32, 98, 97,115,101, 95,112,
- 97,114,115,101,100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,114,101,
-108, 97,116,105,118,101, 95,117,114,108, 10, 32, 32, 32, 32,101,108,115,101,105,
+101,116, 32,113,117,101,114,121, 32,115,116,114,105,110,103, 10, 32, 32, 32, 32,
+117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,
+108, 44, 32, 34, 37, 63, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116,105,111,
+110, 40,113, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 46,
+113,117,101,114,121, 32, 61, 32,113, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32,
+ 32, 45, 45, 32,103,101,116, 32,112, 97,114, 97,109,115, 10, 32, 32, 32, 32,117,
+114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,117,114,108,
+ 44, 32, 34, 37, 59, 40, 46, 42, 41, 34, 44, 32,102,117,110, 99,116,105,111,110,
+ 40,112, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 46,112,
+ 97,114, 97,109,115, 32, 61, 32,112, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+116,117,114,110, 32, 34, 34, 10, 32, 32, 32, 32,101,110,100, 41, 10, 32, 32, 32,
+ 32, 45, 45, 32,112, 97,116,104, 32,105,115, 32,119,104, 97,116,101,118,101,114,
+ 32,119, 97,115, 32,108,101,102,116, 10, 32, 32, 32, 32,105,102, 32,117,114,108,
+ 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,112,
+ 97,116,104, 32, 61, 32,117,114,108, 32,101,110,100, 10, 32, 32, 32, 32,108,111,
+ 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,115,
+101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32,105,102, 32,
+110,111,116, 32, 97,117,116,104,111,114,105,116,121, 32,116,104,101,110, 32,114,
+101,116,117,114,110, 32,112, 97,114,115,101,100, 32,101,110,100, 10, 32, 32, 32,
+ 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,115,116,114,105,110,103, 46,
+103,115,117, 98, 40, 97,117,116,104,111,114,105,116,121, 44, 34, 94, 40, 91, 94,
+ 64, 93, 42, 41, 64, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,117,110, 99,
+116,105,111,110, 40,117, 41, 32,112, 97,114,115,101,100, 46,117,115,101,114,105,
+110,102,111, 32, 61, 32,117, 59, 32,114,101,116,117,114,110, 32, 34, 34, 32,101,
+110,100, 41, 10, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,
+115,116,114,105,110,103, 46,103,115,117, 98, 40, 97,117,116,104,111,114,105,116,
+121, 44, 32, 34, 58, 40, 91, 94, 58, 37, 93, 93, 42, 41, 36, 34, 44, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,102,117,110, 99,116,105,111,110, 40,112, 41, 32,112, 97,
+114,115,101,100, 46,112,111,114,116, 32, 61, 32,112, 59, 32,114,101,116,117,114,
+110, 32, 34, 34, 32,101,110,100, 41, 10, 32, 32, 32, 32,105,102, 32, 97,117,116,
+104,111,114,105,116,121, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 32, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 45, 45, 32, 73, 80,118, 54, 63, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,112, 97,114,115,101,100, 46,104,111,115,116, 32, 61, 32,115,116,
+114,105,110,103, 46,109, 97,116, 99,104, 40, 97,117,116,104,111,114,105,116,121,
+ 44, 32, 34, 94, 37, 91, 40, 46, 43, 41, 37, 93, 36, 34, 41, 32,111,114, 32, 97,
+117,116,104,111,114,105,116,121, 32, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32,
+ 32, 32,108,111, 99, 97,108, 32,117,115,101,114,105,110,102,111, 32, 61, 32,112,
+ 97,114,115,101,100, 46,117,115,101,114,105,110,102,111, 10, 32, 32, 32, 32,105,
+102, 32,110,111,116, 32,117,115,101,114,105,110,102,111, 32,116,104,101,110, 32,
+114,101,116,117,114,110, 32,112, 97,114,115,101,100, 32,101,110,100, 10, 32, 32,
+ 32, 32,117,115,101,114,105,110,102,111, 32, 61, 32,115,116,114,105,110,103, 46,
+103,115,117, 98, 40,117,115,101,114,105,110,102,111, 44, 32, 34, 58, 40, 91, 94,
+ 58, 93, 42, 41, 36, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,117,110, 99,
+116,105,111,110, 40,112, 41, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,
+111,114,100, 32, 61, 32,112, 59, 32,114,101,116,117,114,110, 32, 34, 34, 32,101,
+110,100, 41, 10, 32, 32, 32, 32,112, 97,114,115,101,100, 46,117,115,101,114, 32,
+ 61, 32,117,115,101,114,105,110,102,111, 10, 32, 32, 32, 32,114,101,116,117,114,
+110, 32,112, 97,114,115,101,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 82,101, 98,117,105,
+108,100,115, 32, 97, 32,112, 97,114,115,101,100, 32, 85, 82, 76, 32,102,114,111,
+109, 32,105,116,115, 32, 99,111,109,112,111,110,101,110,116,115, 46, 10, 45, 45,
+ 32, 67,111,109,112,111,110,101,110,116,115, 32, 97,114,101, 32,112,114,111,116,
+101, 99,116,101,100, 32,105,102, 32, 97,110,121, 32,114,101,115,101,114,118,101,
+100, 32,111,114, 32,117,110, 97,108,108,111,119,101,100, 32, 99,104, 97,114, 97,
+ 99,116,101,114,115, 32, 97,114,101, 32,102,111,117,110,100, 10, 45, 45, 32, 73,
+110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,114,115,101,100, 58, 32,112, 97,
+114,115,101,100, 32, 85, 82, 76, 44, 32, 97,115, 32,114,101,116,117,114,110,101,
+100, 32, 98,121, 32,112, 97,114,115,101, 10, 45, 45, 32, 82,101,116,117,114,110,
+115, 10, 45, 45, 32, 32, 32, 97, 32,115,116,114,105,110,103,105,110,103, 32,119,
+105,116,104, 32,116,104,101, 32, 99,111,114,114,101,115,112,111,110,100,105,110,
+103, 32, 85, 82, 76, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 98,117,105,108,100, 40,112,
+ 97,114,115,101,100, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112,112, 97,
+116,104, 32, 61, 32,112, 97,114,115,101, 95,112, 97,116,104, 40,112, 97,114,115,
+101,100, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 41, 10, 32, 32, 32, 32,108,
+111, 99, 97,108, 32,117,114,108, 32, 61, 32, 98,117,105,108,100, 95,112, 97,116,
+104, 40,112,112, 97,116,104, 41, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,
+101,100, 46,112, 97,114, 97,109,115, 32,116,104,101,110, 32,117,114,108, 32, 61,
+ 32,117,114,108, 32, 46, 46, 32, 34, 59, 34, 32, 46, 46, 32,112, 97,114,115,101,
+100, 46,112, 97,114, 97,109,115, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,
+112, 97,114,115,101,100, 46,113,117,101,114,121, 32,116,104,101,110, 32,117,114,
+108, 32, 61, 32,117,114,108, 32, 46, 46, 32, 34, 63, 34, 32, 46, 46, 32,112, 97,
+114,115,101,100, 46,113,117,101,114,121, 32,101,110,100, 10, 32, 32, 32, 32,108,
+111, 99, 97,108, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,114,
+115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32,105,102,
+ 32,112, 97,114,115,101,100, 46,104,111,115,116, 32,116,104,101,110, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 97,117,116,104,111,114,105,116,121, 32, 61, 32,112, 97,
+114,115,101,100, 46,104,111,115,116, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102,
+ 32,115,116,114,105,110,103, 46,102,105,110,100, 40, 97,117,116,104,111,114,105,
+116,121, 44, 32, 34, 58, 34, 41, 32,116,104,101,110, 32, 45, 45, 32, 73, 80,118,
+ 54, 63, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97,117,116,104,111,
+114,105,116,121, 32, 61, 32, 34, 91, 34, 32, 46, 46, 32, 97,117,116,104,111,114,
+105,116,121, 32, 46, 46, 32, 34, 93, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,
+110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100,
+ 46,112,111,114,116, 32,116,104,101,110, 32, 97,117,116,104,111,114,105,116,121,
+ 32, 61, 32, 97,117,116,104,111,114,105,116,121, 32, 46, 46, 32, 34, 58, 34, 32,
+ 46, 46, 32,112, 97,114,115,101,100, 46,112,111,114,116, 32,101,110,100, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,117,115,101,114,105,110,102,
+111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,101,114,105,110,102,111, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,117,115,
+101,114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+117,115,101,114,105,110,102,111, 32, 61, 32,112, 97,114,115,101,100, 46,117,115,
+101,114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,112, 97,
+114,115,101,100, 46,112, 97,115,115,119,111,114,100, 32,116,104,101,110, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,117,115,101,114,105,
+110,102,111, 32, 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 58,
+ 34, 32, 46, 46, 32,112, 97,114,115,101,100, 46,112, 97,115,115,119,111,114,100,
+ 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,
+117,115,101,114,105,110,102,111, 32,116,104,101,110, 32, 97,117,116,104,111,114,
+105,116,121, 32, 61, 32,117,115,101,114,105,110,102,111, 32, 46, 46, 32, 34, 64,
+ 34, 32, 46, 46, 32, 97,117,116,104,111,114,105,116,121, 32,101,110,100, 10, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32, 97,117,116,104,111,114,
+105,116,121, 32,116,104,101,110, 32,117,114,108, 32, 61, 32, 34, 47, 47, 34, 32,
+ 46, 46, 32, 97,117,116,104,111,114,105,116,121, 32, 46, 46, 32,117,114,108, 32,
+101,110,100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,115, 99,
+104,101,109,101, 32,116,104,101,110, 32,117,114,108, 32, 61, 32,112, 97,114,115,
+101,100, 46,115, 99,104,101,109,101, 32, 46, 46, 32, 34, 58, 34, 32, 46, 46, 32,
+117,114,108, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,
+100, 46,102,114, 97,103,109,101,110,116, 32,116,104,101,110, 32,117,114,108, 32,
+ 61, 32,117,114,108, 32, 46, 46, 32, 34, 35, 34, 32, 46, 46, 32,112, 97,114,115,
+101,100, 46,102,114, 97,103,109,101,110,116, 32,101,110,100, 10, 32, 32, 32, 32,
+ 45, 45, 32,117,114,108, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98,
+ 40,117,114,108, 44, 32, 34, 37,115, 34, 44, 32, 34, 34, 41, 10, 32, 32, 32, 32,
+114,101,116,117,114,110, 32,117,114,108, 10,101,110,100, 10, 10, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105,
+108,100,115, 32, 97, 32, 97, 98,115,111,108,117,116,101, 32, 85, 82, 76, 32,102,
+114,111,109, 32, 97, 32, 98, 97,115,101, 32, 97,110,100, 32, 97, 32,114,101,108,
+ 97,116,105,118,101, 32, 85, 82, 76, 32, 97, 99, 99,111,114,100,105,110,103, 32,
+116,111, 32, 82, 70, 67, 32, 50, 51, 57, 54, 10, 45, 45, 32, 73,110,112,117,116,
+ 10, 45, 45, 32, 32, 32, 98, 97,115,101, 95,117,114,108, 10, 45, 45, 32, 32, 32,
+114,101,108, 97,116,105,118,101, 95,117,114,108, 10, 45, 45, 32, 82,101,116,117,
+114,110,115, 10, 45, 45, 32, 32, 32, 99,111,114,114,101,115,112,111,110,100,105,
+110,103, 32, 97, 98,115,111,108,117,116,101, 32,117,114,108, 10, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,
+111,110, 32, 97, 98,115,111,108,117,116,101, 40, 98, 97,115,101, 95,117,114,108,
+ 44, 32,114,101,108, 97,116,105,118,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,
+105,102, 32, 98, 97,115,101, 46,116,121,112,101, 40, 98, 97,115,101, 95,117,114,
+108, 41, 32, 61, 61, 32, 34,116, 97, 98,108,101, 34, 32,116,104,101,110, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32, 61,
+ 32, 98, 97,115,101, 95,117,114,108, 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 97,
+115,101, 95,117,114,108, 32, 61, 32, 98,117,105,108,100, 40, 98, 97,115,101, 95,
+112, 97,114,115,101,100, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32, 61, 32,112,
+ 97,114,115,101, 40, 98, 97,115,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,101,
+110,100, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,114,101,108, 97,116,105,118,
+101, 95,112, 97,114,115,101,100, 32, 61, 32,112, 97,114,115,101, 40,114,101,108,
+ 97,116,105,118,101, 95,117,114,108, 41, 10, 32, 32, 32, 32,105,102, 32,110,111,
+116, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 32,116,104,101,110, 32,114,
+101,116,117,114,110, 32,114,101,108, 97,116,105,118,101, 95,117,114,108, 10, 32,
+ 32, 32, 32,101,108,115,101,105,102, 32,110,111,116, 32,114,101,108, 97,116,105,
+118,101, 95,112, 97,114,115,101,100, 32,116,104,101,110, 32,114,101,116,117,114,
+110, 32, 98, 97,115,101, 95,117,114,108, 10, 32, 32, 32, 32,101,108,115,101,105,
+102, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,115, 99,
+104,101,109,101, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,114,101,108,
+ 97,116,105,118,101, 95,117,114,108, 10, 32, 32, 32, 32,101,108,115,101, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,
+101,100, 46,115, 99,104,101,109,101, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,
+115,101,100, 46,115, 99,104,101,109,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,
102, 32,110,111,116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,
-100, 32,116,104,101,110, 32,114,101,116,117,114,110, 32, 98, 97,115,101, 95,117,
-114,108, 10, 32, 32, 32, 32,101,108,115,101,105,102, 32,114,101,108, 97,116,105,
-118,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101,109,101, 32,116,104,101,
-110, 32,114,101,116,117,114,110, 32,114,101,108, 97,116,105,118,101, 95,117,114,
-108, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,
-101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101,109,
-101, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,115, 99,104,101,
-109,101, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,
-108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,
-105,116,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46, 97,117,116,
-104,111,114,105,116,121, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100,
- 46, 97,117,116,104,111,114,105,116,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116,105,118,101, 95,112,
- 97,114,115,101,100, 46,112, 97,116,104, 32,116,104,101,110, 10, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101,
- 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32, 61, 32, 98, 97,115,101, 95,
-112, 97,114,115,101,100, 46,112, 97,116,104, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116,
-105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32,116,104,
-101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112,
- 97,114, 97,109,115, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,
-112, 97,114, 97,109,115, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,108, 97,116,105,
-118,101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 32,116,104,101,110,
- 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100,
- 46,113,117,101,114,121, 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100,
- 46,113,117,101,114,121, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,101,108,115,101, 32, 32, 32, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,
-115,101,100, 46,112, 97,116,104, 32, 61, 32, 97, 98,115,111,108,117,116,101, 95,
-112, 97,116,104, 40, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,112, 97,116,
-104, 32,111,114, 32, 34, 34, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+100, 46, 97,117,116,104,111,114,105,116,121, 32,116,104,101,110, 10, 32, 32, 32,
32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,112, 97,
-114,115,101,100, 46,112, 97,116,104, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
- 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32,
- 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,110, 32, 98,117,105,108,100, 40,
-114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 41, 10, 32, 32, 32,
- 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 32, 61, 32, 98, 97,115,
+101, 95,112, 97,114,115,101,100, 46, 97,117,116,104,111,114,105,116,121, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,116, 32,114,101,
+108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32,116,
+104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104,
+ 32, 61, 32, 98, 97,115,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,
+111,116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112,
+ 97,114, 97,109,115, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,101, 95,
+112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 32, 61, 32, 98, 97,115,101,
+ 95,112, 97,114,115,101,100, 46,112, 97,114, 97,109,115, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,105,102, 32,110,111,
+116, 32,114,101,108, 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,113,117,
+101,114,121, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,116,105,118,
+101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 32, 61, 32, 98, 97,115,
+101, 95,112, 97,114,115,101,100, 46,113,117,101,114,121, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,108,115,101, 32, 32, 32, 32, 10,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108, 97,
+116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 32, 61, 32, 97,
+ 98,115,111,108,117,116,101, 95,112, 97,116,104, 40, 98, 97,115,101, 95,112, 97,
+114,115,101,100, 46,112, 97,116,104, 32,111,114, 32, 34, 34, 44, 10, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,108,
+ 97,116,105,118,101, 95,112, 97,114,115,101,100, 46,112, 97,116,104, 41, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,114,
+110, 32, 98,117,105,108,100, 40,114,101,108, 97,116,105,118,101, 95,112, 97,114,
+115,101,100, 41, 10, 32, 32, 32, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,114,101, 97,107,115, 32, 97, 32,
-112, 97,116,104, 32,105,110,116,111, 32,105,116,115, 32,115,101,103,109,101,110,
-116,115, 44, 32,117,110,101,115, 99, 97,112,105,110,103, 32,116,104,101, 32,115,
-101,103,109,101,110,116,115, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32,
- 32, 32,112, 97,116,104, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45, 45,
- 32, 32, 32,115,101,103,109,101,110,116, 58, 32, 97, 32,116, 97, 98,108,101, 32,
-119,105,116,104, 32,111,110,101, 32,101,110,116,114,121, 32,112,101,114, 32,115,
-101,103,109,101,110,116, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,
+114,101, 97,107,115, 32, 97, 32,112, 97,116,104, 32,105,110,116,111, 32,105,116,
+115, 32,115,101,103,109,101,110,116,115, 44, 32,117,110,101,115, 99, 97,112,105,
+110,103, 32,116,104,101, 32,115,101,103,109,101,110,116,115, 10, 45, 45, 32, 73,
+110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,116,104, 10, 45, 45, 32, 82,101,
+116,117,114,110,115, 10, 45, 45, 32, 32, 32,115,101,103,109,101,110,116, 58, 32,
+ 97, 32,116, 97, 98,108,101, 32,119,105,116,104, 32,111,110,101, 32,101,110,116,
+114,121, 32,112,101,114, 32,115,101,103,109,101,110,116, 10, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32,112, 97,114,115,101, 95,
-112, 97,116,104, 40,112, 97,116,104, 41, 10, 9,108,111, 99, 97,108, 32,112, 97,
-114,115,101,100, 32, 61, 32,123,125, 10, 9,112, 97,116,104, 32, 61, 32,112, 97,
-116,104, 32,111,114, 32, 34, 34, 10, 9, 45, 45,112, 97,116,104, 32, 61, 32,115,
-116,114,105,110,103, 46,103,115,117, 98, 40,112, 97,116,104, 44, 32, 34, 37,115,
- 34, 44, 32, 34, 34, 41, 10, 9,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,
+110, 32,112, 97,114,115,101, 95,112, 97,116,104, 40,112, 97,116,104, 41, 10, 32,
+ 32, 32, 32,108,111, 99, 97,108, 32,112, 97,114,115,101,100, 32, 61, 32,123,125,
+ 10, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32,111,114, 32,
+ 34, 34, 10, 32, 32, 32, 32, 45, 45,112, 97,116,104, 32, 61, 32,115,116,114,105,
+110,103, 46,103,115,117, 98, 40,112, 97,116,104, 44, 32, 34, 37,115, 34, 44, 32,
+ 34, 34, 41, 10, 32, 32, 32, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
112, 97,116,104, 44, 32, 34, 40, 91, 94, 47, 93, 43, 41, 34, 44, 32,102,117,110,
99,116,105,111,110, 32, 40,115, 41, 32,116, 97, 98,108,101, 46,105,110,115,101,
-114,116, 40,112, 97,114,115,101,100, 44, 32,115, 41, 32,101,110,100, 41, 10, 9,
-102,111,114, 32,105, 32, 61, 32, 49, 44, 32,116, 97, 98,108,101, 46,103,101,116,
-110, 40,112, 97,114,115,101,100, 41, 32,100,111, 10, 9, 9,112, 97,114,115,101,
-100, 91,105, 93, 32, 61, 32,117,110,101,115, 99, 97,112,101, 40,112, 97,114,115,
-101,100, 91,105, 93, 41, 10, 9,101,110,100, 10, 9,105,102, 32,115,116,114,105,
-110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 49, 44, 32, 49, 41, 32, 61,
- 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,105,115,
- 95, 97, 98,115,111,108,117,116,101, 32, 61, 32, 49, 32,101,110,100, 10, 9,105,
-102, 32,115,116,114,105,110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 45,
- 49, 44, 32, 45, 49, 41, 32, 61, 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112,
- 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114,121, 32, 61,
- 32, 49, 32,101,110,100, 10, 9,114,101,116,117,114,110, 32,112, 97,114,115,101,
-100, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 10, 45, 45, 32, 66,117,105,108,100,115, 32, 97, 32,112, 97,116,
-104, 32, 99,111,109,112,111,110,101,110,116, 32,102,114,111,109, 32,105,116,115,
- 32,115,101,103,109,101,110,116,115, 44, 32,101,115, 99, 97,112,105,110,103, 32,
-112,114,111,116,101, 99,116,101,100, 32, 99,104, 97,114, 97, 99,116,101,114,115,
- 46, 10, 45, 45, 32, 73,110,112,117,116, 10, 45, 45, 32, 32, 32,112, 97,114,115,
-101,100, 58, 32,112, 97,116,104, 32,115,101,103,109,101,110,116,115, 10, 45, 45,
- 32, 32, 32,117,110,115, 97,102,101, 58, 32,105,102, 32,116,114,117,101, 44, 32,
-115,101,103,109,101,110,116,115, 32, 97,114,101, 32,110,111,116, 32,112,114,111,
-116,101, 99,116,101,100, 32, 98,101,102,111,114,101, 32,112, 97,116,104, 32,105,
-115, 32, 98,117,105,108,116, 10, 45, 45, 32, 82,101,116,117,114,110,115, 10, 45,
- 45, 32, 32, 32,112, 97,116,104, 58, 32, 99,111,114,114,101,115,112,111,110,100,
-105,110,103, 32,112, 97,116,104, 32,115,116,114,105,110,103,105,110,103, 10, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
- 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,102,117,110,
- 99,116,105,111,110, 32, 98,117,105,108,100, 95,112, 97,116,104, 40,112, 97,114,
-115,101,100, 44, 32,117,110,115, 97,102,101, 41, 10, 9,108,111, 99, 97,108, 32,
-112, 97,116,104, 32, 61, 32, 34, 34, 10, 9,108,111, 99, 97,108, 32,110, 32, 61,
- 32,116, 97, 98,108,101, 46,103,101,116,110, 40,112, 97,114,115,101,100, 41, 10,
- 9,105,102, 32,117,110,115, 97,102,101, 32,116,104,101,110, 10, 9, 9,102,111,
-114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100,111, 10, 9, 9, 9,112,
- 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112, 97,114,115,101,100,
- 91,105, 93, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46,
- 46, 32, 34, 47, 34, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,110, 32, 62,
- 32, 48, 32,116,104,101,110, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,
-116,104, 32, 46, 46, 32,112, 97,114,115,101,100, 91,110, 93, 10, 9, 9, 9,105,
-102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114,
-121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46,
- 46, 32, 34, 47, 34, 32,101,110,100, 10, 9, 9,101,110,100, 10, 9,101,108,115,
-101, 10, 9, 9,102,111,114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100,
-111, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,
-112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116, 40,112, 97,114,115,
-101,100, 91,105, 93, 41, 10, 9, 9, 9,112, 97,116,104, 32, 61, 32,112, 97,116,
-104, 32, 46, 46, 32, 34, 47, 34, 10, 9, 9,101,110,100, 10, 9, 9,105,102, 32,
-110, 32, 62, 32, 48, 32,116,104,101,110, 10, 9, 9, 9,112, 97,116,104, 32, 61,
- 32,112, 97,116,104, 32, 46, 46, 32,112,114,111,116,101, 99,116, 95,115,101,103,
-109,101,110,116, 40,112, 97,114,115,101,100, 91,110, 93, 41, 10, 9, 9, 9,105,
-102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,111,114,
-121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46,
- 46, 32, 34, 47, 34, 32,101,110,100, 10, 9, 9,101,110,100, 10, 9,101,110,100,
- 10, 9,105,102, 32,112, 97,114,115,101,100, 46,105,115, 95, 97, 98,115,111,108,
-117,116,101, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32, 34, 47, 34, 32,
- 46, 46, 32,112, 97,116,104, 32,101,110,100, 10, 9,114,101,116,117,114,110, 32,
+114,116, 40,112, 97,114,115,101,100, 44, 32,115, 41, 32,101,110,100, 41, 10, 32,
+ 32, 32, 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32, 35,112, 97,114,115,101,
+100, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,114,115,101,100, 91,
+105, 93, 32, 61, 32,117,110,101,115, 99, 97,112,101, 40,112, 97,114,115,101,100,
+ 91,105, 93, 41, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,105,102, 32,
+115,116,114,105,110,103, 46,115,117, 98, 40,112, 97,116,104, 44, 32, 49, 44, 32,
+ 49, 41, 32, 61, 61, 32, 34, 47, 34, 32,116,104,101,110, 32,112, 97,114,115,101,
+100, 46,105,115, 95, 97, 98,115,111,108,117,116,101, 32, 61, 32, 49, 32,101,110,
+100, 10, 32, 32, 32, 32,105,102, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+112, 97,116,104, 44, 32, 45, 49, 44, 32, 45, 49, 41, 32, 61, 61, 32, 34, 47, 34,
+ 32,116,104,101,110, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101,
+ 99,116,111,114,121, 32, 61, 32, 49, 32,101,110,100, 10, 32, 32, 32, 32,114,101,
+116,117,114,110, 32,112, 97,114,115,101,100, 10,101,110,100, 10, 10, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 66,117,
+105,108,100,115, 32, 97, 32,112, 97,116,104, 32, 99,111,109,112,111,110,101,110,
+116, 32,102,114,111,109, 32,105,116,115, 32,115,101,103,109,101,110,116,115, 44,
+ 32,101,115, 99, 97,112,105,110,103, 32,112,114,111,116,101, 99,116,101,100, 32,
+ 99,104, 97,114, 97, 99,116,101,114,115, 46, 10, 45, 45, 32, 73,110,112,117,116,
+ 10, 45, 45, 32, 32, 32,112, 97,114,115,101,100, 58, 32,112, 97,116,104, 32,115,
+101,103,109,101,110,116,115, 10, 45, 45, 32, 32, 32,117,110,115, 97,102,101, 58,
+ 32,105,102, 32,116,114,117,101, 44, 32,115,101,103,109,101,110,116,115, 32, 97,
+114,101, 32,110,111,116, 32,112,114,111,116,101, 99,116,101,100, 32, 98,101,102,
+111,114,101, 32,112, 97,116,104, 32,105,115, 32, 98,117,105,108,116, 10, 45, 45,
+ 32, 82,101,116,117,114,110,115, 10, 45, 45, 32, 32, 32,112, 97,116,104, 58, 32,
+ 99,111,114,114,101,115,112,111,110,100,105,110,103, 32,112, 97,116,104, 32,115,
+116,114,105,110,103,105,110,103, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 10,102,117,110, 99,116,105,111,110, 32, 98,117,105,108,
+100, 95,112, 97,116,104, 40,112, 97,114,115,101,100, 44, 32,117,110,115, 97,102,
+101, 41, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,112, 97,116,104, 32, 61, 32,
+ 34, 34, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,110, 32, 61, 32, 35,112, 97,
+114,115,101,100, 10, 32, 32, 32, 32,105,102, 32,117,110,115, 97,102,101, 32,116,
+104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,102,111,114, 32,105, 32, 61, 32,
+ 49, 44, 32,110, 45, 49, 32,100,111, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112, 97,114,
+115,101,100, 91,105, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112,
+ 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32, 34, 47, 34, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,105,102,
+ 32,110, 32, 62, 32, 48, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,112,
+ 97,114,115,101,100, 91,110, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32,105,102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,101, 99,116,
+111,114,121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104,
+ 32, 46, 46, 32, 34, 47, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+101,110,100, 10, 32, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32,102,111,114, 32,105, 32, 61, 32, 49, 44, 32,110, 45, 49, 32,100,111, 10, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,
+116,104, 32, 46, 46, 32,112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,
+116, 40,112, 97,114,115,101,100, 91,105, 93, 41, 10, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,104, 32, 46, 46, 32,
+ 34, 47, 34, 10, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+ 32, 32, 32, 32,105,102, 32,110, 32, 62, 32, 48, 32,116,104,101,110, 10, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,112, 97,116,104, 32, 61, 32,112, 97,116,
+104, 32, 46, 46, 32,112,114,111,116,101, 99,116, 95,115,101,103,109,101,110,116,
+ 40,112, 97,114,115,101,100, 91,110, 93, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32,105,102, 32,112, 97,114,115,101,100, 46,105,115, 95,100,105,114,
+101, 99,116,111,114,121, 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32,112,
+ 97,116,104, 32, 46, 46, 32, 34, 47, 34, 32,101,110,100, 10, 32, 32, 32, 32, 32,
+ 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,105,
+102, 32,112, 97,114,115,101,100, 46,105,115, 95, 97, 98,115,111,108,117,116,101,
+ 32,116,104,101,110, 32,112, 97,116,104, 32, 61, 32, 34, 47, 34, 32, 46, 46, 32,
+112, 97,116,104, 32,101,110,100, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
112, 97,116,104, 10,101,110,100, 10,
0 };
return luaL_dostring(L, (const char*)B);
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c
index 40d7596227c..a2a2c3ec23c 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.c
@@ -5,25 +5,16 @@
* The code is now interrupt-safe.
* The penalty of calling select to avoid busy-wait is only paid when
* the I/O call fail in the first place.
-*
-* RCS ID: $Id: usocket.c,v 1.38 2007/10/13 23:55:20 diego Exp $
\*=========================================================================*/
#include <string.h>
#include <signal.h>
#include "socket.h"
-#if defined(__sun__)
-#define HSTRERROR(A) "unknown host error"
-#else
-#define HSTRERROR(A) hstrerror(A)
-#endif
-
-
/*-------------------------------------------------------------------------*\
* Wait for readable/writable/connected socket with timeout
\*-------------------------------------------------------------------------*/
-#ifdef SOCKET_POLL
+#ifndef SOCKET_SELECT
#include <sys/poll.h>
#define WAITFD_R POLLIN
@@ -37,9 +28,9 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
pfd.revents = 0;
if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
do {
- int t = (int)(timeout_getretry(tm)*1e3);
- ret = poll(&pfd, 1, t >= 0? t: -1);
- } while (ret == -1 && errno == EINTR);
+ int t = (int)(timeout_getretry(tm)*1e3);
+ ret = poll(&pfd, 1, t >= 0? t: -1);
+ } while (ret == -1 && errno == EINTR);
if (ret == -1) return errno;
if (ret == 0) return IO_TIMEOUT;
if (sw == WAITFD_C && (pfd.revents & (POLLIN|POLLERR))) return IO_CLOSED;
@@ -56,6 +47,7 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
fd_set rfds, wfds, *rp, *wp;
struct timeval tv, *tp;
double t;
+ if (*ps >= FD_SETSIZE) return EINVAL;
if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
do {
/* must set bits within loop, because select may have modifed them */
@@ -189,11 +181,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
* Accept with timeout
\*-------------------------------------------------------------------------*/
int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) {
- SA daddr;
- socklen_t dlen = sizeof(daddr);
if (*ps == SOCKET_INVALID) return IO_CLOSED;
- if (!addr) addr = &daddr;
- if (!len) len = &dlen;
for ( ;; ) {
int err;
if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE;
@@ -220,14 +208,13 @@ int socket_send(p_socket ps, const char *data, size_t count,
for ( ;; ) {
long put = (long) send(*ps, data, count, 0);
/* if we sent anything, we are done */
- if (put > 0) {
+ if (put >= 0) {
*sent = put;
return IO_DONE;
}
err = errno;
- /* send can't really return 0, but EPIPE means the connection was
- closed */
- if (put == 0 || err == EPIPE) return IO_CLOSED;
+ /* EPIPE means the connection was closed */
+ if (err == EPIPE) return IO_CLOSED;
/* we call was interrupted, just try again */
if (err == EINTR) continue;
/* if failed fatal reason, report error */
@@ -250,12 +237,12 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
if (*ps == SOCKET_INVALID) return IO_CLOSED;
for ( ;; ) {
long put = (long) sendto(*ps, data, count, 0, addr, len);
- if (put > 0) {
+ if (put >= 0) {
*sent = put;
return IO_DONE;
}
err = errno;
- if (put == 0 || err == EPIPE) return IO_CLOSED;
+ if (err == EPIPE) return IO_CLOSED;
if (err == EINTR) continue;
if (err != EAGAIN) return err;
if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
@@ -308,6 +295,66 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
return IO_UNKNOWN;
}
+
+/*-------------------------------------------------------------------------*\
+* Write with timeout
+*
+* socket_read and socket_write are cut-n-paste of socket_send and socket_recv,
+* with send/recv replaced with write/read. We can't just use write/read
+* in the socket version, because behaviour when size is zero is different.
+\*-------------------------------------------------------------------------*/
+int socket_write(p_socket ps, const char *data, size_t count,
+ size_t *sent, p_timeout tm)
+{
+ int err;
+ *sent = 0;
+ /* avoid making system calls on closed sockets */
+ if (*ps == SOCKET_INVALID) return IO_CLOSED;
+ /* loop until we send something or we give up on error */
+ for ( ;; ) {
+ long put = (long) write(*ps, data, count);
+ /* if we sent anything, we are done */
+ if (put >= 0) {
+ *sent = put;
+ return IO_DONE;
+ }
+ err = errno;
+ /* EPIPE means the connection was closed */
+ if (err == EPIPE) return IO_CLOSED;
+ /* we call was interrupted, just try again */
+ if (err == EINTR) continue;
+ /* if failed fatal reason, report error */
+ if (err != EAGAIN) return err;
+ /* wait until we can send something or we timeout */
+ if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
+ }
+ /* can't reach here */
+ return IO_UNKNOWN;
+}
+
+/*-------------------------------------------------------------------------*\
+* Read with timeout
+* See note for socket_write
+\*-------------------------------------------------------------------------*/
+int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm) {
+ int err;
+ *got = 0;
+ if (*ps == SOCKET_INVALID) return IO_CLOSED;
+ for ( ;; ) {
+ long taken = (long) read(*ps, data, count);
+ if (taken > 0) {
+ *got = taken;
+ return IO_DONE;
+ }
+ err = errno;
+ if (taken == 0) return IO_CLOSED;
+ if (err == EINTR) continue;
+ if (err != EAGAIN) return err;
+ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
+ }
+ return IO_UNKNOWN;
+}
+
/*-------------------------------------------------------------------------*\
* Put socket into blocking mode
\*-------------------------------------------------------------------------*/
@@ -353,7 +400,7 @@ const char *socket_hoststrerror(int err) {
if (err <= 0) return io_strerror(err);
switch (err) {
case HOST_NOT_FOUND: return "host not found";
- default: return HSTRERROR(err);
+ default: return hstrerror(err);
}
}
@@ -367,7 +414,7 @@ const char *socket_strerror(int err) {
case ECONNABORTED: return "closed";
case ECONNRESET: return "closed";
case ETIMEDOUT: return "timeout";
- default: return strerror(errno);
+ default: return strerror(err);
}
}
@@ -375,3 +422,30 @@ const char *socket_ioerror(p_socket ps, int err) {
(void) ps;
return socket_strerror(err);
}
+
+const char *socket_gaistrerror(int err) {
+ if (err == 0) return NULL;
+ switch (err) {
+ case EAI_AGAIN: return "temporary failure in name resolution";
+ case EAI_BADFLAGS: return "invalid value for ai_flags";
+#ifdef EAI_BADHINTS
+ case EAI_BADHINTS: return "invalid value for hints";
+#endif
+ case EAI_FAIL: return "non-recoverable failure in name resolution";
+ case EAI_FAMILY: return "ai_family not supported";
+ case EAI_MEMORY: return "memory allocation failure";
+ case EAI_NONAME:
+ return "host or service not provided, or not known";
+#ifdef EAI_OVERFLOW
+ case EAI_OVERFLOW: return "argument buffer overflow";
+#endif
+#ifdef EAI_PROTOCOL
+ case EAI_PROTOCOL: return "resolved protocol is unknown";
+#endif
+ case EAI_SERVICE: return "service not supported for socket type";
+ case EAI_SOCKTYPE: return "ai_socktype not supported";
+ case EAI_SYSTEM: return strerror(errno);
+ default: return gai_strerror(err);
+ }
+}
+
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h
index f2a89aa0d21..8b3241bf3c2 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/usocket.h
@@ -3,8 +3,6 @@
/*=========================================================================*\
* Socket compatibilization module for Unix
* LuaSocket toolkit
-*
-* RCS ID: $Id: usocket.h,v 1.7 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
/*=========================================================================*\
@@ -32,8 +30,13 @@
/* TCP options (nagle algorithm disable) */
#include <netinet/tcp.h>
+#ifndef SO_REUSEPORT
+#define SO_REUSEPORT SO_REUSEADDR
+#endif
+
typedef int t_socket;
typedef t_socket *p_socket;
+typedef struct sockaddr_storage t_sockaddr_storage;
#define SOCKET_INVALID (-1)
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c
index 6022565188a..d6dd004e7e2 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.c
@@ -4,8 +4,6 @@
*
* The penalty of calling select to avoid busy-wait is only paid when
* the I/O call fail in the first place.
-*
-* RCS ID: $Id: wsocket.c,v 1.36 2007/06/11 23:44:54 diego Exp $
\*=========================================================================*/
#include <string.h>
@@ -54,7 +52,7 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
if (sw & WAITFD_R) {
FD_ZERO(&rfds);
- FD_SET(*ps, &rfds);
+ FD_SET(*ps, &rfds);
rp = &rfds;
}
if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; }
@@ -171,11 +169,7 @@ int socket_listen(p_socket ps, int backlog) {
\*-------------------------------------------------------------------------*/
int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
p_timeout tm) {
- SA daddr;
- socklen_t dlen = sizeof(daddr);
if (*ps == SOCKET_INVALID) return IO_CLOSED;
- if (!addr) addr = &daddr;
- if (!len) len = &dlen;
for ( ;; ) {
int err;
/* try to get client socket */
@@ -187,8 +181,6 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
/* call select to avoid busy wait */
if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
}
- /* can't reach here */
- return IO_UNKNOWN;
}
/*-------------------------------------------------------------------------*\
@@ -207,7 +199,7 @@ int socket_send(p_socket ps, const char *data, size_t count,
/* loop until we send something or we give up on error */
for ( ;; ) {
/* try to send something */
- int put = send(*ps, data, (int) count, 0);
+ int put = send(*ps, data, (int) count, 0);
/* if we sent something, we are done */
if (put > 0) {
*sent = put;
@@ -220,8 +212,6 @@ int socket_send(p_socket ps, const char *data, size_t count,
/* avoid busy wait */
if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
}
- /* can't reach here */
- return IO_UNKNOWN;
}
/*-------------------------------------------------------------------------*\
@@ -243,7 +233,6 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
if (err != WSAEWOULDBLOCK) return err;
if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
}
- return IO_UNKNOWN;
}
/*-------------------------------------------------------------------------*\
@@ -264,7 +253,6 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm
if (err != WSAEWOULDBLOCK) return err;
if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
}
- return IO_UNKNOWN;
}
/*-------------------------------------------------------------------------*\
@@ -286,7 +274,6 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
if (err != WSAEWOULDBLOCK) return err;
if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
}
- return IO_UNKNOWN;
}
/*-------------------------------------------------------------------------*\
@@ -346,8 +333,8 @@ const char *socket_strerror(int err) {
}
const char *socket_ioerror(p_socket ps, int err) {
- (void) ps;
- return socket_strerror(err);
+ (void) ps;
+ return socket_strerror(err);
}
static const char *wstrerror(int err) {
@@ -399,3 +386,28 @@ static const char *wstrerror(int err) {
default: return "Unknown error";
}
}
+
+const char *socket_gaistrerror(int err) {
+ if (err == 0) return NULL;
+ switch (err) {
+ case EAI_AGAIN: return "temporary failure in name resolution";
+ case EAI_BADFLAGS: return "invalid value for ai_flags";
+#ifdef EAI_BADHINTS
+ case EAI_BADHINTS: return "invalid value for hints";
+#endif
+ case EAI_FAIL: return "non-recoverable failure in name resolution";
+ case EAI_FAMILY: return "ai_family not supported";
+ case EAI_MEMORY: return "memory allocation failure";
+ case EAI_NONAME:
+ return "host or service not provided, or not known";
+// case EAI_OVERFLOW: return "argument buffer overflow";
+#ifdef EAI_PROTOCOL
+ case EAI_PROTOCOL: return "resolved protocol is unknown";
+#endif
+ case EAI_SERVICE: return "service not supported for socket type";
+ case EAI_SOCKTYPE: return "ai_socktype not supported";
+// case EAI_SYSTEM: return strerror(errno);
+ default: return gai_strerror(err);
+ }
+}
+
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h
index b536683685c..2a1db71a80e 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h
+++ b/Build/source/texk/web2c/luatexdir/luasocket/src/wsocket.h
@@ -3,19 +3,26 @@
/*=========================================================================*\
* Socket compatibilization module for Win32
* LuaSocket toolkit
-*
-* RCS ID: $Id: wsocket.h,v 1.4 2005/10/07 04:40:59 diego Exp $
\*=========================================================================*/
/*=========================================================================*\
* WinSock include files
\*=========================================================================*/
-#include <winsock.h>
+#if defined(__MINGW32__)
+#define _WIN32_WINNT 0x0501
+#endif
+#include <winsock2.h>
+#include <ws2tcpip.h>
typedef int socklen_t;
+typedef SOCKADDR_STORAGE t_sockaddr_storage;
typedef SOCKET t_socket;
typedef t_socket *p_socket;
#define SOCKET_INVALID (INVALID_SOCKET)
+#ifndef SO_REUSEPORT
+#define SO_REUSEPORT SO_REUSEADDR
+#endif
+
#endif /* WSOCKET_H */
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/README b/Build/source/texk/web2c/luatexdir/luasocket/test/README
index 180fa277ca7..27837e04d90 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/test/README
+++ b/Build/source/texk/web2c/luatexdir/luasocket/test/README
@@ -8,5 +8,7 @@ The files provided are:
To run these tests, just run lua on the server and then on the client.
+ hello.lua -- run to verify if installation worked
+
Good luck,
Diego.
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua b/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua
index a7ca1ba6768..8acb3d04bac 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/test/testclnt.lua
@@ -3,25 +3,29 @@ local socket = require"socket"
host = host or "localhost"
port = port or "8383"
+function printf(...)
+ io.stderr:write(string.format(...))
+end
+
function pass(...)
- local s = string.format(unpack(arg))
- io.stderr:write(s, "\n")
+ printf(...)
+ io.stderr:write("\n")
end
function fail(...)
- local s = string.format(unpack(arg))
- io.stderr:write("ERROR: ", s, "!\n")
-socket.sleep(3)
+ io.stderr:write("ERROR: ")
+ printf(...)
+ io.stderr:write("!\n")
os.exit()
end
function warn(...)
- local s = string.format(unpack(arg))
+ local s = string.format(...)
io.stderr:write("WARNING: ", s, "\n")
end
function remote(...)
- local s = string.format(unpack(arg))
+ local s = string.format(...)
s = string.gsub(s, "\n", ";")
s = string.gsub(s, "%s+", " ")
s = string.gsub(s, "^%s*", "")
@@ -80,7 +84,6 @@ io.stderr:write("----------------------------------------------\n",
start = socket.gettime()
function reconnect()
- io.stderr:write("attempting data connection... ")
if data then data:close() end
remote [[
if data then data:close() data = nil end
@@ -88,12 +91,11 @@ function reconnect()
data:setoption("tcp-nodelay", true)
]]
data, err = socket.connect(host, port)
- if not data then fail(err)
- else pass("connected!") end
+ if not data then fail(err) end
data:setoption("tcp-nodelay", true)
end
-pass("attempting control connection...")
+printf("attempting control connection...")
control, err = socket.connect(host, port)
if err then fail(err)
else pass("connected!") end
@@ -112,6 +114,7 @@ end
------------------------------------------------------------------------
function test_mixed(len)
reconnect()
+ io.stderr:write("length " .. len .. ": ")
local inter = math.ceil(len/4)
local p1 = "unix " .. string.rep("x", inter) .. "line\n"
local p2 = "dos " .. string.rep("y", inter) .. "line\r\n"
@@ -137,8 +140,12 @@ remote "data:send(str); data:close()"
end
------------------------------------------------------------------------
+if not math.mod then
+ math.mod = math.fmod
+end
function test_asciiline(len)
reconnect()
+ io.stderr:write("length " .. len .. ": ")
local str, str10, back, err
str = string.rep("x", math.mod(len, 10))
str10 = string.rep("aZb.c#dAe?", math.floor(len/10))
@@ -156,6 +163,7 @@ end
------------------------------------------------------------------------
function test_rawline(len)
reconnect()
+ io.stderr:write("length " .. len .. ": ")
local str, str10, back, err
str = string.rep(string.char(47), math.mod(len, 10))
str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100),
@@ -174,6 +182,7 @@ end
------------------------------------------------------------------------
function test_raw(len)
reconnect()
+ io.stderr:write("length " .. len .. ": ")
local half = math.floor(len/2)
local s1, s2, back, err
s1 = string.rep("x", half)
@@ -194,7 +203,7 @@ end
function test_totaltimeoutreceive(len, tm, sl)
reconnect()
local str, err, partial
- pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl)
+ printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl)
remote (string.format ([[
data:settimeout(%d)
str = string.rep('a', %d)
@@ -215,7 +224,7 @@ end
function test_totaltimeoutsend(len, tm, sl)
reconnect()
local str, err, total
- pass("%d bytes, %ds total timeout, %ds pause", len, tm, sl)
+ printf("%d bytes, %ds total timeout, %ds pause: ", len, tm, sl)
remote (string.format ([[
data:settimeout(%d)
str = data:receive(%d)
@@ -235,7 +244,7 @@ end
function test_blockingtimeoutreceive(len, tm, sl)
reconnect()
local str, err, partial
- pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl)
+ printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl)
remote (string.format ([[
data:settimeout(%d)
str = string.rep('a', %d)
@@ -255,7 +264,7 @@ end
function test_blockingtimeoutsend(len, tm, sl)
reconnect()
local str, err, total
- pass("%d bytes, %ds blocking timeout, %ds pause", len, tm, sl)
+ printf("%d bytes, %ds blocking timeout, %ds pause: ", len, tm, sl)
remote (string.format ([[
data:settimeout(%d)
str = data:receive(%d)
@@ -273,6 +282,7 @@ end
------------------------------------------------------------------------
function empty_connect()
+ printf("empty connect: ")
reconnect()
if data then data:close() data = nil end
remote [[
@@ -284,7 +294,7 @@ function empty_connect()
pass("ok")
data = socket.connect(host, port)
else
- pass("gethostbyname returns localhost on empty string...")
+ pass("gethostbyname returns localhost on empty string...")
end
end
@@ -311,7 +321,7 @@ function test_closed()
local back, partial, err
local str = 'little string'
reconnect()
- pass("trying read detection")
+ printf("trying read detection: ")
remote (string.format ([[
data:send('%s')
data:close()
@@ -324,7 +334,7 @@ function test_closed()
elseif str ~= partial then fail("didn't receive partial result.")
else pass("graceful 'closed' received") end
reconnect()
- pass("trying write detection")
+ printf("trying write detection: ")
remote [[
data:close()
data = nil
@@ -352,15 +362,28 @@ function test_selectbugs()
(e == "timeout" or e == "error"))
pass("closed sockets: ok")
e = pcall(socket.select, "wrong", 1, 0.1)
- assert(e == false)
+ assert(e == false, tostring(e))
e = pcall(socket.select, {}, 1, 0.1)
- assert(e == false)
+ assert(e == false, tostring(e))
pass("invalid input: ok")
+ local toomany = {}
+ for i = 1, socket._SETSIZE+1 do
+ toomany[#toomany+1] = socket.udp()
+ end
+ if #toomany > socket._SETSIZE then
+ local e = pcall(socket.select, toomany, nil, 0.1)
+ assert(e == false, tostring(e))
+ pass("too many sockets (" .. #toomany .. "): ok")
+ else
+ pass("unable to create enough sockets (max was "..#toomany..")")
+ pass("try using ulimit")
+ end
+ for _, c in ipairs(toomany) do c:close() end
end
------------------------------------------------------------------------
function accept_timeout()
- io.stderr:write("accept with timeout (if it hangs, it failed): ")
+ printf("accept with timeout (if it hangs, it failed): ")
local s, e = socket.bind("*", 0, 0)
assert(s, e)
local t = socket.gettime()
@@ -376,23 +399,22 @@ end
------------------------------------------------------------------------
function connect_timeout()
- io.stderr:write("connect with timeout (if it hangs, it failed!): ")
+ printf("connect with timeout (if it hangs, it failed!): ")
local t = socket.gettime()
local c, e = socket.tcp()
assert(c, e)
c:settimeout(0.1)
local t = socket.gettime()
local r, e = c:connect("10.0.0.1", 81)
-print(r, e)
assert(not r, "should not connect")
assert(socket.gettime() - t < 2, "took too long to give up.")
c:close()
- print("ok")
+ pass("ok")
end
------------------------------------------------------------------------
function accept_errors()
- io.stderr:write("not listening: ")
+ printf("not listening: ")
local d, e = socket.bind("*", 0)
assert(d, e);
local c, e = socket.tcp();
@@ -401,31 +423,35 @@ function accept_errors()
d:settimeout(2)
local r, e = d:accept()
assert(not r and e)
- print("ok: ", e)
- io.stderr:write("not supported: ")
+ pass("ok")
+ printf("not supported: ")
local c, e = socket.udp()
assert(c, e);
d:setfd(c:getfd())
local r, e = d:accept()
assert(not r and e)
- print("ok: ", e)
+ pass("ok")
end
------------------------------------------------------------------------
function connect_errors()
- io.stderr:write("connection refused: ")
+ printf("connection refused: ")
local c, e = socket.connect("localhost", 1);
assert(not c and e)
- print("ok: ", e)
- io.stderr:write("host not found: ")
+ pass("ok")
+ printf("host not found: ")
local c, e = socket.connect("host.is.invalid", 1);
assert(not c and e, e)
- print("ok: ", e)
+ pass("ok")
end
------------------------------------------------------------------------
function rebind_test()
- local c = socket.bind("localhost", 0)
+ --local c ,c1 = socket.bind("localhost", 0)
+ local c ,c1 = socket.bind("127.0.0.1", 0)
+ if not c then pass ("failed to bind! " .. tostring(c) .. ' ' .. tostring(c1)) return end
+ assert(c,c1)
+
local i, p = c:getsockname()
local s, e = socket.tcp()
assert(s, e)
@@ -433,7 +459,7 @@ function rebind_test()
r, e = s:bind("localhost", p)
assert(not r, "managed to rebind!")
assert(e)
- print("ok: ", e)
+ pass("ok")
end
------------------------------------------------------------------------
@@ -455,14 +481,14 @@ function getstats_test()
assert(s == t, "sent count failed" .. tostring(s)
.. "/" .. tostring(t))
end
- print("ok")
+ pass("ok")
end
------------------------------------------------------------------------
function test_nonblocking(size)
reconnect()
-print("Testing " .. 2*size .. " bytes")
+ printf("testing " .. 2*size .. " bytes: ")
remote(string.format([[
data:send(string.rep("a", %d))
socket.sleep(0.5)
@@ -494,7 +520,7 @@ remote(string.format([[
data:settimeout(-1)
local back = data:receive(2*size)
assert(back == str, "'" .. back .. "' vs '" .. str .. "'")
- print("ok")
+ pass("ok")
end
------------------------------------------------------------------------
@@ -502,7 +528,7 @@ function test_readafterclose()
local back, partial, err
local str = 'little string'
reconnect()
- pass("trying repeated '*a' pattern")
+ printf("trying repeated '*a' pattern")
remote (string.format ([[
data:send('%s')
data:close()
@@ -512,9 +538,9 @@ function test_readafterclose()
assert(back == str, "unexpected data read")
back, err, partial = data:receive("*a")
assert(back == nil and err == "closed", "should have returned 'closed'")
- print("ok")
+ pass("ok")
reconnect()
- pass("trying active close before '*a'")
+ printf("trying active close before '*a'")
remote (string.format ([[
data:close()
data = nil
@@ -522,9 +548,9 @@ function test_readafterclose()
data:close()
back, err, partial = data:receive("*a")
assert(back == nil and err == "closed", "should have returned 'closed'")
- print("ok")
+ pass("ok")
reconnect()
- pass("trying active close before '*l'")
+ printf("trying active close before '*l'")
remote (string.format ([[
data:close()
data = nil
@@ -532,9 +558,9 @@ function test_readafterclose()
data:close()
back, err, partial = data:receive()
assert(back == nil and err == "closed", "should have returned 'closed'")
- print("ok")
+ pass("ok")
reconnect()
- pass("trying active close before raw 1")
+ printf("trying active close before raw 1")
remote (string.format ([[
data:close()
data = nil
@@ -542,9 +568,9 @@ function test_readafterclose()
data:close()
back, err, partial = data:receive(1)
assert(back == nil and err == "closed", "should have returned 'closed'")
- print("ok")
+ pass("ok")
reconnect()
- pass("trying active close before raw 0")
+ printf("trying active close before raw 0")
remote (string.format ([[
data:close()
data = nil
@@ -552,17 +578,55 @@ function test_readafterclose()
data:close()
back, err, partial = data:receive(0)
assert(back == nil and err == "closed", "should have returned 'closed'")
- print("ok")
+ pass("ok")
end
+------------------------------------------------------------------------
+function test_writeafterclose()
+ local str = 'little string'
+ reconnect()
+ remote (string.format ([[
+ data:close()
+ data = nil
+ ]]))
+ local sent, err, errsent
+ while not err do
+ sent, err, errsent, time = data:send(str)
+ end
+ assert(err == "closed", "should have returned 'closed'")
+ pass("ok")
+end
+
+------------------------------------------------------------------------
+
+function test_partialrecv()
+ local str = 'little string'
+ reconnect()
+remote([[
+ data:send("7890")
+]])
+ data:settimeout(1)
+ back, err = data:receive(10, "123456")
+ assert(back == "1234567890", "failed on exact mixed length")
+ back, err = data:receive(8, "87654321")
+ assert(back == "87654321", "failed on exact length")
+ back, err = data:receive(4, "87654321")
+ assert(back == "87654321", "failed on smaller length")
+ pass("ok")
+end
+
+------------------------------------------------------------------------
test("method registration")
-test_methods(socket.tcp(), {
+
+local tcp_methods = {
"accept",
"bind",
"close",
"connect",
"dirty",
+ "getfamily",
"getfd",
+ "getoption",
"getpeername",
"getsockname",
"getstats",
@@ -576,13 +640,16 @@ test_methods(socket.tcp(), {
"setsockname",
"settimeout",
"shutdown",
-})
+}
+test_methods(socket.tcp(), tcp_methods)
+test_methods(socket.tcp6(), tcp_methods)
-test_methods(socket.udp(), {
+local udp_methods = {
"close",
- "getpeername",
"dirty",
+ "getfamily",
"getfd",
+ "getoption",
"getpeername",
"getsockname",
"receive",
@@ -594,14 +661,25 @@ test_methods(socket.udp(), {
"setpeername",
"setsockname",
"settimeout"
-})
+}
-test("testing read after close")
-test_readafterclose()
+
+------------------------------------------------------------------------
+test_methods(socket.udp(), udp_methods)
+test_methods(socket.udp6(), udp_methods)
+
+test("partial receive")
+test_partialrecv()
test("select function")
test_selectbugs()
+test("read after close")
+test_readafterclose()
+
+test("write after close")
+test_writeafterclose()
+
test("connect function")
connect_timeout()
empty_connect()
@@ -710,4 +788,8 @@ test_blockingtimeoutreceive(800091, 2, 3)
test_blockingtimeoutreceive(800091, 3, 2)
test_blockingtimeoutreceive(800091, 3, 1)
+test("shutting server down")
+reconnect()
+remote("os.exit()")
+
test(string.format("done in %.2fs", socket.gettime() - start))
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua b/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua
index f1972c2273c..72b93abe66e 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/test/testsrvr.lua
@@ -7,9 +7,14 @@ while 1 do
print("server: waiting for client connection...");
control = assert(server:accept());
while 1 do
- command = assert(control:receive());
+ command, emsg = control:receive();
+ if emsg == "closed" then
+ control:close()
+ break
+ end
+ assert(command, emsg)
assert(control:send(ack));
print(command);
- (loadstring(command))();
+ ((loadstring or load)(command))();
end
end
diff --git a/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua b/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua
index acad8f5bce6..b9860882c2f 100644
--- a/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua
+++ b/Build/source/texk/web2c/luatexdir/luasocket/test/testsupport.lua
@@ -1,13 +1,13 @@
function readfile(name)
- local f = io.open(name, "rb")
- if not f then return nil end
- local s = f:read("*a")
- f:close()
- return s
+ local f = io.open(name, "rb")
+ if not f then return nil end
+ local s = f:read("*a")
+ f:close()
+ return s
end
function similar(s1, s2)
- return string.lower(string.gsub(s1 or "", "%s", "")) ==
+ return string.lower(string.gsub(s1 or "", "%s", "")) ==
string.lower(string.gsub(s2 or "", "%s", ""))
end
@@ -28,7 +28,7 @@ local set = rawset
local warn = print
local setglobal = function(table, key, value)
- warn("changed " .. key)
+ warn("changed " .. key)
set(table, key, value)
end