quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

commit 383e2b06c8af144b5cd729dc7bc4ce2e2613f178
parent 0e8fffd4de4a10f498f46cd0e99f53da6a523542
Author: bellard <6490144+bellard@users.noreply.github.com>
Date:   Sun,  6 Sep 2020 19:02:03 +0200

2020-03-16 release
Diffstat:
MChangelog | 11+++++++++++
MTODO | 5+++--
MVERSION | 2+-
Mdoc/jsbignum.html | 33+++++++++++++++------------------
Mdoc/jsbignum.pdf | 0
Mdoc/jsbignum.texi | 29+++++++++++++----------------
Mdoc/quickjs.html | 131++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Mdoc/quickjs.pdf | 0
Mdoc/quickjs.texi | 124+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Mlibbf.c | 47++++++++++++++++++++++++++++++++++++++++-------
Mlibbf.h | 1+
Mlibregexp.c | 92++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
Mlibunicode-table.h | 3183++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mquickjs-libc.c | 388+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Mquickjs-opcode.h | 1-
Mquickjs.c | 204+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Mquickjs.h | 28+++++++++++++++++++++++++++-
Mrelease.sh | 21+++++++++++++++------
Mrun-test262.c | 5++++-
Mtest262.conf | 1+
Mtest262_errors.txt | 9+++++++--
Mtests/microbench.js | 6++----
Mtests/test_builtin.js | 4++++
Mtests/test_std.js | 11++++++++++-
Municode_download.sh | 12++++++------
Municode_gen_def.h | 14+++++++++-----
26 files changed, 2347 insertions(+), 2015 deletions(-)

diff --git a/Changelog b/Changelog @@ -1,3 +1,14 @@ +2020-03-16: + +- reworked error handling in std and os libraries: suppressed I/O + exceptions in std FILE functions and return a positive errno value + when it is explicit +- output exception messages to stderr +- added std.loadFile(), std.strerror(), std.FILE.prototype.tello() +- added JS_GetRuntimeOpaque(), JS_SetRuntimeOpaque(), JS_NewUint32() +- updated to Unicode 13.0.0 +- misc bug fixes + 2020-01-19: - keep CONFIG_BIGNUM in the makefile diff --git a/TODO b/TODO @@ -73,5 +73,6 @@ REPL: Test262o: 0/11262 errors, 463 excluded Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch) -Test262: 17/69942 errors, 855 excluded, 581 skipped -test262 commit: 28b4fcca4b1b1d278dfe0cc0e69c7d9d59b31aab +Test262: 22/70040 errors, 860 excluded, 581 skipped +test262 commit: 25c9e334d301944537215caba1d7f44319f3e0da + diff --git a/VERSION b/VERSION @@ -1 +1 @@ -2020-01-19 +2020-03-16 diff --git a/doc/jsbignum.html b/doc/jsbignum.html @@ -1,8 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> -<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> +<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ --> <head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Javascript Bignum Extensions</title> <meta name="description" content="Javascript Bignum Extensions"> @@ -10,6 +9,7 @@ <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="#SEC_Contents" rel="contents" title="Table of Contents"> <style type="text/css"> <!-- @@ -121,7 +121,7 @@ changes were done in order to simplify the implementation. <ul> <li> <code>with operators from</code> is not supported. Operator overloading is always enabled. -</li><li> The dispatch is not based on a static <code>[[OperatorSet]]</code> field in all instances. Instead, a dynamic lookup the of the <code>Symbol.operatorSet</code> property is done. This property is typically added in the prototype of each object. +</li><li> The dispatch is not based on a static <code>[[OperatorSet]]</code> field in all instances. Instead, a dynamic lookup of the <code>Symbol.operatorSet</code> property is done. This property is typically added in the prototype of each object. </li><li> <code>Operators.create(...dictionaries)</code> is used to create a new OperatorSet object. The <code>Operators</code> function is supported as an helper to be closer to the TC39 proposal. @@ -194,7 +194,7 @@ raised if <em>a &lt; 0</em>. <h3 class="section">4.1 Introduction</h3> <p>This extension adds the <code>BigFloat</code> primitive type. The -<code>BigFloat</code> type represents floating point numbers are in base 2 +<code>BigFloat</code> type represents floating point numbers in base 2 with the IEEE 754 semantics. A floating point number is represented as a sign, mantissa and exponent. The special values <code>NaN</code>, <code>+/-Infinity</code>, <code>+0</code> and <code>-0</code> @@ -216,15 +216,13 @@ point environment is used. <code>RNDN</code> (&ldquo;round to nearest with ties to even&rdquo;)<a name="DOCF1" href="#FOOT1"><sup>1</sup></a>. The status flags of the global environment cannot be read<a name="DOCF2" href="#FOOT2"><sup>2</sup></a>. The precision of the global environment is <code>BigFloatEnv.prec</code>. The number of exponent bits of the global -environment is <code>BigFloatEnv.expBits</code>. If <code>BigFloatEnv.expBits</code> is -strictly smaller than the maximum allowed number of exponent bits -(<code>BigFloatEnv.expBitsMax</code>), then the global environment subnormal -flag is set to <code>true</code>. Otherwise it is set to <code>false</code>; +environment is <code>BigFloatEnv.expBits</code>. The global environment +subnormal flag is set to <code>true</code>. </p> -<p>For example, <code>prec = 53</code> and <code> expBits = 11</code> give exactly -the same precision as the IEEE 754 64 bit floating point. The +<p>For example, <code>prec = 53</code> and <code> expBits = 11</code> exactly give +the same precision as the IEEE 754 64 bit floating point format. The default precision is <code>prec = 113</code> and <code> expBits = 15</code> (IEEE -754 128 bit floating point). +754 128 bit floating point format). </p> <p>The global floating point environment can only be modified temporarily when calling a function (see <code>BigFloatEnv.setPrec</code>). Hence a @@ -433,9 +431,8 @@ environment. The initial value is <code>113</code>. </dd> <dt><code>expBits</code></dt> <dd><p>Getter. Return the exponent size in bits of the global floating point -environment assuming an IEEE 754 representation. If <code>expBits &lt; -expBitsMax</code>, then subnormal numbers are supported. The initial value -is <code>15</code>. +environment assuming an IEEE 754 representation. The initial value is +<code>15</code>. </p> </dd> <dt><code>setPrec(f, p[, e])</code></dt> @@ -608,7 +605,7 @@ Number value. <p>It returns <code>0m</code> if no parameter is provided. Otherwise the first parameter is converted to a bigdecimal by using ToString(). Hence -Number value are not converted to their exact numerical value as +Number values are not converted to their exact numerical value as BigDecimal. </p> <a name="Properties-of-the-BigDecimal-object"></a> @@ -702,11 +699,11 @@ always represented as BigFloat. </li><li> The logical xor operator is still available with the <code>^^</code> operator. -</li><li> The integer division operator can be overloaded by modifying the corresponding operator in <code>BigInt.prototype.[[OperatorSet]]</code>. +</li><li> The modulo operator (<code>%</code>) returns the Euclidian remainder (always positive) instead of the truncated remainder. -</li><li> The integer power operator with a non zero negative exponent can be overloaded by modifying the corresponding operator in <code>BigInt.prototype.[[OperatorSet]]</code>. +</li><li> The integer division operator can be overloaded with <code>Operators.updateBigIntOperators(dictionary)</code>. -</li><li> The modulo operator (<code>%</code>) returns the Euclidian remainder (always positive) instead of the truncated remainder. +</li><li> The integer power operator with a non zero negative exponent can be overloaded with <code>Operators.updateBigIntOperators(dictionary)</code>. </li></ul> diff --git a/doc/jsbignum.pdf b/doc/jsbignum.pdf Binary files differ. diff --git a/doc/jsbignum.texi b/doc/jsbignum.texi @@ -57,7 +57,7 @@ More precisely, the following modifications were made: @item @code{with operators from} is not supported. Operator overloading is always enabled. -@item The dispatch is not based on a static @code{[[OperatorSet]]} field in all instances. Instead, a dynamic lookup the of the @code{Symbol.operatorSet} property is done. This property is typically added in the prototype of each object. +@item The dispatch is not based on a static @code{[[OperatorSet]]} field in all instances. Instead, a dynamic lookup of the @code{Symbol.operatorSet} property is done. This property is typically added in the prototype of each object. @item @code{Operators.create(...dictionaries)} is used to create a new OperatorSet object. The @code{Operators} function is supported as an helper to be closer to the TC39 proposal. @@ -119,7 +119,7 @@ Return the number of trailing zeros in the two's complement binary representatio @section Introduction This extension adds the @code{BigFloat} primitive type. The -@code{BigFloat} type represents floating point numbers are in base 2 +@code{BigFloat} type represents floating point numbers in base 2 with the IEEE 754 semantics. A floating point number is represented as a sign, mantissa and exponent. The special values @code{NaN}, @code{+/-Infinity}, @code{+0} and @code{-0} @@ -143,15 +143,13 @@ explicit.}. The status flags of the global environment cannot be read@footnote{The rationale is to avoid side effects for the built-in operators.}. The precision of the global environment is @code{BigFloatEnv.prec}. The number of exponent bits of the global -environment is @code{BigFloatEnv.expBits}. If @code{BigFloatEnv.expBits} is -strictly smaller than the maximum allowed number of exponent bits -(@code{BigFloatEnv.expBitsMax}), then the global environment subnormal -flag is set to @code{true}. Otherwise it is set to @code{false}; +environment is @code{BigFloatEnv.expBits}. The global environment +subnormal flag is set to @code{true}. -For example, @code{prec = 53} and @code{ expBits = 11} give exactly -the same precision as the IEEE 754 64 bit floating point. The +For example, @code{prec = 53} and @code{ expBits = 11} exactly give +the same precision as the IEEE 754 64 bit floating point format. The default precision is @code{prec = 113} and @code{ expBits = 15} (IEEE -754 128 bit floating point). +754 128 bit floating point format). The global floating point environment can only be modified temporarily when calling a function (see @code{BigFloatEnv.setPrec}). Hence a @@ -345,9 +343,8 @@ environment. The initial value is @code{113}. @item expBits Getter. Return the exponent size in bits of the global floating point -environment assuming an IEEE 754 representation. If @code{expBits < -expBitsMax}, then subnormal numbers are supported. The initial value -is @code{15}. +environment assuming an IEEE 754 representation. The initial value is +@code{15}. @item setPrec(f, p[, e]) Set the precision of the global floating point environment to @code{p} @@ -492,7 +489,7 @@ BigDecimal literals are decimal floating point numbers with a trailing It returns @code{0m} if no parameter is provided. Otherwise the first parameter is converted to a bigdecimal by using ToString(). Hence -Number value are not converted to their exact numerical value as +Number values are not converted to their exact numerical value as BigDecimal. @subsection Properties of the @code{BigDecimal} object @@ -581,11 +578,11 @@ The following changes are made to the Javascript semantics: @item The logical xor operator is still available with the @code{^^} operator. -@item The integer division operator can be overloaded by modifying the corresponding operator in @code{BigInt.prototype.[[OperatorSet]]}. +@item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder. -@item The integer power operator with a non zero negative exponent can be overloaded by modifying the corresponding operator in @code{BigInt.prototype.[[OperatorSet]]}. +@item The integer division operator can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}. -@item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder. +@item The integer power operator with a non zero negative exponent can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}. @end itemize diff --git a/doc/quickjs.html b/doc/quickjs.html @@ -1,8 +1,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> -<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ --> +<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ --> <head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>QuickJS Javascript Engine</title> <meta name="description" content="QuickJS Javascript Engine"> @@ -10,6 +9,7 @@ <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="makeinfo"> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="#SEC_Contents" rel="contents" title="Table of Contents"> <style type="text/css"> <!-- @@ -519,50 +519,39 @@ optional properties: <dd><p>Evaluate the file <code>filename</code> as a script (global eval). </p> </dd> -<dt><code>Error(errno)</code></dt> -<dd> -<p><code>std.Error</code> constructor. Error instances contain the field -<code>errno</code> (error code) and <code>message</code> (result of -<code>std.Error.strerror(errno)</code>). +<dt><code>loadFile(filename)</code></dt> +<dd><p>Load the file <code>filename</code> and return it as a string assuming UTF-8 +encoding. Return <code>null</code> in case of I/O error. </p> -<p>The constructor contains the following fields: -</p> -<dl compact="compact"> -<dt><code>EINVAL</code></dt> -<dt><code>EIO</code></dt> -<dt><code>EACCES</code></dt> -<dt><code>EEXIST</code></dt> -<dt><code>ENOSPC</code></dt> -<dt><code>ENOSYS</code></dt> -<dt><code>EBUSY</code></dt> -<dt><code>ENOENT</code></dt> -<dt><code>EPERM</code></dt> -<dt><code>EPIPE</code></dt> -<dd><p>Integer value of common errors (additional error codes may be defined). - </p></dd> -<dt><code>strerror(errno)</code></dt> -<dd><p>Return a string that describes the error <code>errno</code>. - </p></dd> -</dl> - </dd> -<dt><code>open(filename, flags)</code></dt> -<dd><p>Open a file (wrapper to the libc <code>fopen()</code>). Throws -<code>std.Error</code> in case of I/O error. +<dt><code>open(filename, flags, errorObj = undefined)</code></dt> +<dd><p>Open a file (wrapper to the libc <code>fopen()</code>). Return the FILE +object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not +undefined, set its <code>errno</code> property to the error code or to 0 if +no error occured. </p> </dd> -<dt><code>popen(command, flags)</code></dt> -<dd><p>Open a process by creating a pipe (wrapper to the libc <code>popen()</code>). Throws -<code>std.Error</code> in case of I/O error. +<dt><code>popen(command, flags, errorObj = undefined)</code></dt> +<dd><p>Open a process by creating a pipe (wrapper to the libc +<code>popen()</code>). Return the FILE +object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not +undefined, set its <code>errno</code> property to the error code or to 0 if +no error occured. </p> </dd> -<dt><code>fdopen(fd, flags)</code></dt> +<dt><code>fdopen(fd, flags, errorObj = undefined)</code></dt> <dd><p>Open a file from a file handle (wrapper to the libc -<code>fdopen()</code>). Throws <code>std.Error</code> in case of I/O error. +<code>fdopen()</code>). Return the FILE +object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not +undefined, set its <code>errno</code> property to the error code or to 0 if +no error occured. </p> </dd> -<dt><code>tmpfile()</code></dt> -<dd><p>Open a temporary file. Throws <code>std.Error</code> in case of I/O error. +<dt><code>tmpfile(errorObj = undefined)</code></dt> +<dd><p>Open a temporary file. Return the FILE +object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not +undefined, set its <code>errno</code> property to the error code or to 0 if +no error occured. </p> </dd> <dt><code>puts(str)</code></dt> @@ -589,6 +578,29 @@ optional properties: <dd><p>Constants for seek(). </p> </dd> +<dt><code>Error</code></dt> +<dd> +<p>Enumeration object containing the integer value of common errors +(additional error codes may be defined): +</p> +<dl compact="compact"> +<dt><code>EINVAL</code></dt> +<dt><code>EIO</code></dt> +<dt><code>EACCES</code></dt> +<dt><code>EEXIST</code></dt> +<dt><code>ENOSPC</code></dt> +<dt><code>ENOSYS</code></dt> +<dt><code>EBUSY</code></dt> +<dt><code>ENOENT</code></dt> +<dt><code>EPERM</code></dt> +<dt><code>EPIPE</code></dt> +</dl> + +</dd> +<dt><code>strerror(errno)</code></dt> +<dd><p>Return a string that describes the error <code>errno</code>. +</p> +</dd> <dt><code>gc()</code></dt> <dd><p>Manually invoke the cycle removal algorithm. The cycle removal algorithm is automatically started when needed, so this function is @@ -614,12 +626,14 @@ optional properties: </p> </dd> <dt><code>full</code></dt> -<dd><p>Boolean (default = false). If true, return the an object contains +<dd> +<p>Boolean (default = false). If true, return the an object contains the properties <code>response</code> (response content), <code>responseHeaders</code> (headers separated by CRLF), <code>status</code> - (status code). If <code>full</code> is false, only the response is - returned if the status is between 200 and 299. Otherwise an - <code>std.Error</code> exception is raised. + (status code). <code>response</code> is <code>null</code> is case of protocol or + network error. If <code>full</code> is false, only the response is + returned if the status is between 200 and 299. Otherwise <code>null</code> + is returned. </p> </dd> </dl> @@ -631,7 +645,7 @@ optional properties: </p> <dl compact="compact"> <dt><code>close()</code></dt> -<dd><p>Close the file. +<dd><p>Close the file. Return 0 if OK or <code>-errno</code> in case of I/O error. </p></dd> <dt><code>puts(str)</code></dt> <dd><p>Outputs the string with the UTF-8 encoding. @@ -643,17 +657,27 @@ optional properties: <dd><p>Flush the buffered file. </p></dd> <dt><code>seek(offset, whence)</code></dt> -<dd><p>Seek to a give file position (whence is <code>std.SEEK_*</code>). Throws a -<code>std.Error</code> in case of I/O error. +<dd><p>Seek to a give file position (whence is +<code>std.SEEK_*</code>). <code>offset</code> can be a number or a bigint. Return +0 if OK or <code>-errno</code> in case of I/O error. </p></dd> <dt><code>tell()</code></dt> <dd><p>Return the current file position. </p></dd> +<dt><code>tello()</code></dt> +<dd><p>Return the current file position as a bigint. +</p></dd> <dt><code>eof()</code></dt> <dd><p>Return true if end of file. </p></dd> <dt><code>fileno()</code></dt> <dd><p>Return the associated OS handle. +</p></dd> +<dt><code>error()</code></dt> +<dd><p>Return true if there was an error. +</p></dd> +<dt><code>clearerr()</code></dt> +<dd><p>Clear the error indication. </p> </dd> <dt><code>read(buffer, position, length)</code></dt> @@ -727,7 +751,9 @@ error code. </p> </dd> <dt><code>seek(fd, offset, whence)</code></dt> -<dd><p>Seek in the file. Use <code>std.SEEK_*</code> for <code>whence</code>. +<dd><p>Seek in the file. Use <code>std.SEEK_*</code> for +<code>whence</code>. <code>offset</code> is either a number or a bigint. If +<code>offset</code> is a bigint, a bigint is returned too. </p> </dd> <dt><code>read(fd, buffer, offset, length)</code></dt> @@ -755,11 +781,11 @@ Return the number of written bytes or &lt; 0 if error. </p> </dd> <dt><code>remove(filename)</code></dt> -<dd><p>Remove a file. Return 0 if OK or &lt; 0 if error. +<dd><p>Remove a file. Return 0 if OK or <code>-errno</code>. </p> </dd> <dt><code>rename(oldname, newname)</code></dt> -<dd><p>Rename a file. Return 0 if OK or &lt; 0 if error. +<dd><p>Rename a file. Return 0 if OK or <code>-errno</code>. </p> </dd> <dt><code>realpath(path)</code></dt> @@ -773,11 +799,11 @@ and <code>err</code> the error code. </p> </dd> <dt><code>chdir(path)</code></dt> -<dd><p>Change the current directory. Return the error code. +<dd><p>Change the current directory. Return 0 if OK or <code>-errno</code>. </p> </dd> <dt><code>mkdir(path, mode = 0o777)</code></dt> -<dd><p>Create a directory at <code>path</code>. Return the error code. +<dd><p>Create a directory at <code>path</code>. Return 0 if OK or <code>-errno</code>. </p> </dd> <dt><code>stat(path)</code></dt> @@ -809,11 +835,11 @@ itself. </dd> <dt><code>utimes(path, atime, mtime)</code></dt> <dd><p>Change the access and modification times of the file <code>path</code>. The -times are specified in milliseconds since 1970. +times are specified in milliseconds since 1970. Return 0 if OK or <code>-errno</code>. </p> </dd> <dt><code>symlink(target, linkpath)</code></dt> -<dd><p>Create a link at <code>linkpath</code> containing the string <code>target</code>. +<dd><p>Create a link at <code>linkpath</code> containing the string <code>target</code>. Return 0 if OK or <code>-errno</code>. </p> </dd> <dt><code>readlink(path)</code></dt> @@ -896,7 +922,8 @@ object containing optional parameters: </dd> <dt><code>waitpid(pid, options)</code></dt> -<dd><p><code>waitpid</code> Unix system call. Return the array <code>[ret, status]</code>. +<dd><p><code>waitpid</code> Unix system call. Return the array <code>[ret, +status]</code>. <code>ret</code> contains <code>-errno</code> in case of error. </p> </dd> <dt><code>WNOHANG</code></dt> diff --git a/doc/quickjs.pdf b/doc/quickjs.pdf Binary files differ. diff --git a/doc/quickjs.texi b/doc/quickjs.texi @@ -373,44 +373,35 @@ optional properties: @item loadScript(filename) Evaluate the file @code{filename} as a script (global eval). -@item Error(errno) - -@code{std.Error} constructor. Error instances contain the field -@code{errno} (error code) and @code{message} (result of -@code{std.Error.strerror(errno)}). - -The constructor contains the following fields: - - @table @code - @item EINVAL - @item EIO - @item EACCES - @item EEXIST - @item ENOSPC - @item ENOSYS - @item EBUSY - @item ENOENT - @item EPERM - @item EPIPE - Integer value of common errors (additional error codes may be defined). - @item strerror(errno) - Return a string that describes the error @code{errno}. - @end table - -@item open(filename, flags) -Open a file (wrapper to the libc @code{fopen()}). Throws -@code{std.Error} in case of I/O error. - -@item popen(command, flags) -Open a process by creating a pipe (wrapper to the libc @code{popen()}). Throws -@code{std.Error} in case of I/O error. - -@item fdopen(fd, flags) +@item loadFile(filename) +Load the file @code{filename} and return it as a string assuming UTF-8 +encoding. Return @code{null} in case of I/O error. + +@item open(filename, flags, errorObj = undefined) +Open a file (wrapper to the libc @code{fopen()}). Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. + +@item popen(command, flags, errorObj = undefined) +Open a process by creating a pipe (wrapper to the libc +@code{popen()}). Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. + +@item fdopen(fd, flags, errorObj = undefined) Open a file from a file handle (wrapper to the libc -@code{fdopen()}). Throws @code{std.Error} in case of I/O error. +@code{fdopen()}). Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. -@item tmpfile() -Open a temporary file. Throws @code{std.Error} in case of I/O error. +@item tmpfile(errorObj = undefined) +Open a temporary file. Return the FILE +object or @code{null} in case of I/O error. If @code{errorObj} is not +undefined, set its @code{errno} property to the error code or to 0 if +no error occured. @item puts(str) Equivalent to @code{std.out.puts(str)}. @@ -431,6 +422,27 @@ Wrappers to the libc file @code{stdin}, @code{stdout}, @code{stderr}. @item SEEK_END Constants for seek(). +@item Error + +Enumeration object containing the integer value of common errors +(additional error codes may be defined): + + @table @code + @item EINVAL + @item EIO + @item EACCES + @item EEXIST + @item ENOSPC + @item ENOSYS + @item EBUSY + @item ENOENT + @item EPERM + @item EPIPE + @end table + +@item strerror(errno) +Return a string that describes the error @code{errno}. + @item gc() Manually invoke the cycle removal algorithm. The cycle removal algorithm is automatically started when needed, so this function is @@ -453,12 +465,14 @@ optional properties: to be UTF-8 encoded. @item full + Boolean (default = false). If true, return the an object contains the properties @code{response} (response content), @code{responseHeaders} (headers separated by CRLF), @code{status} - (status code). If @code{full} is false, only the response is - returned if the status is between 200 and 299. Otherwise an - @code{std.Error} exception is raised. + (status code). @code{response} is @code{null} is case of protocol or + network error. If @code{full} is false, only the response is + returned if the status is between 200 and 299. Otherwise @code{null} + is returned. @end table @@ -468,7 +482,7 @@ FILE prototype: @table @code @item close() -Close the file. +Close the file. Return 0 if OK or @code{-errno} in case of I/O error. @item puts(str) Outputs the string with the UTF-8 encoding. @item printf(fmt, ...args) @@ -476,14 +490,21 @@ Formatted printf, same formats as the libc printf. @item flush() Flush the buffered file. @item seek(offset, whence) -Seek to a give file position (whence is @code{std.SEEK_*}). Throws a -@code{std.Error} in case of I/O error. +Seek to a give file position (whence is +@code{std.SEEK_*}). @code{offset} can be a number or a bigint. Return +0 if OK or @code{-errno} in case of I/O error. @item tell() Return the current file position. +@item tello() +Return the current file position as a bigint. @item eof() Return true if end of file. @item fileno() Return the associated OS handle. +@item error() +Return true if there was an error. +@item clearerr() +Clear the error indication. @item read(buffer, position, length) Read @code{length} bytes from the file to the ArrayBuffer @code{buffer} at byte @@ -545,7 +566,9 @@ POSIX open flags. Close the file handle @code{fd}. @item seek(fd, offset, whence) -Seek in the file. Use @code{std.SEEK_*} for @code{whence}. +Seek in the file. Use @code{std.SEEK_*} for +@code{whence}. @code{offset} is either a number or a bigint. If +@code{offset} is a bigint, a bigint is returned too. @item read(fd, buffer, offset, length) Read @code{length} bytes from the file handle @code{fd} to the @@ -567,10 +590,10 @@ Return the TTY size as @code{[width, height]} or @code{null} if not available. Set the TTY in raw mode. @item remove(filename) -Remove a file. Return 0 if OK or < 0 if error. +Remove a file. Return 0 if OK or @code{-errno}. @item rename(oldname, newname) -Rename a file. Return 0 if OK or < 0 if error. +Rename a file. Return 0 if OK or @code{-errno}. @item realpath(path) Return @code{[str, err]} where @code{str} is the canonicalized absolute @@ -581,10 +604,10 @@ Return @code{[str, err]} where @code{str} is the current working directory and @code{err} the error code. @item chdir(path) -Change the current directory. Return the error code. +Change the current directory. Return 0 if OK or @code{-errno}. @item mkdir(path, mode = 0o777) -Create a directory at @code{path}. Return the error code. +Create a directory at @code{path}. Return 0 if OK or @code{-errno}. @item stat(path) @item lstat(path) @@ -613,10 +636,10 @@ Constants to interpret the @code{mode} property returned by @item utimes(path, atime, mtime) Change the access and modification times of the file @code{path}. The -times are specified in milliseconds since 1970. +times are specified in milliseconds since 1970. Return 0 if OK or @code{-errno}. @item symlink(target, linkpath) -Create a link at @code{linkpath} containing the string @code{target}. +Create a link at @code{linkpath} containing the string @code{target}. Return 0 if OK or @code{-errno}. @item readlink(path) Return @code{[str, err]} where @code{str} is the link target and @code{err} @@ -685,7 +708,8 @@ object containing optional parameters: @end table @item waitpid(pid, options) -@code{waitpid} Unix system call. Return the array @code{[ret, status]}. +@code{waitpid} Unix system call. Return the array @code{[ret, +status]}. @code{ret} contains @code{-errno} in case of error. @item WNOHANG Constant for the @code{options} argument of @code{waitpid}. diff --git a/libbf.c b/libbf.c @@ -2526,19 +2526,18 @@ fail: return BF_ST_MEM_ERROR; } -/* The rounding mode is always BF_RNDZ. Return BF_ST_OVERFLOW if there +/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there is an overflow and 0 otherwise. */ int bf_get_int32(int *pres, const bf_t *a, int flags) { uint32_t v; int ret; if (a->expn >= BF_EXP_INF) { - ret = 0; + ret = BF_ST_INVALID_OP; if (flags & BF_GET_INT_MOD) { v = 0; } else if (a->expn == BF_EXP_INF) { v = (uint32_t)INT32_MAX + a->sign; - /* XXX: return overflow ? */ } else { v = INT32_MAX; } @@ -2551,7 +2550,7 @@ int bf_get_int32(int *pres, const bf_t *a, int flags) v = -v; ret = 0; } else if (!(flags & BF_GET_INT_MOD)) { - ret = BF_ST_OVERFLOW; + ret = BF_ST_INVALID_OP; if (a->sign) { v = (uint32_t)INT32_MAX + 1; if (a->expn == 32 && @@ -2571,14 +2570,14 @@ int bf_get_int32(int *pres, const bf_t *a, int flags) return ret; } -/* The rounding mode is always BF_RNDZ. Return BF_ST_OVERFLOW if there +/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there is an overflow and 0 otherwise. */ int bf_get_int64(int64_t *pres, const bf_t *a, int flags) { uint64_t v; int ret; if (a->expn >= BF_EXP_INF) { - ret = 0; + ret = BF_ST_INVALID_OP; if (flags & BF_GET_INT_MOD) { v = 0; } else if (a->expn == BF_EXP_INF) { @@ -2603,7 +2602,7 @@ int bf_get_int64(int64_t *pres, const bf_t *a, int flags) v = -v; ret = 0; } else if (!(flags & BF_GET_INT_MOD)) { - ret = BF_ST_OVERFLOW; + ret = BF_ST_INVALID_OP; if (a->sign) { uint64_t v1; v = (uint64_t)INT64_MAX + 1; @@ -2632,6 +2631,40 @@ int bf_get_int64(int64_t *pres, const bf_t *a, int flags) return ret; } +/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there + is an overflow and 0 otherwise. */ +int bf_get_uint64(uint64_t *pres, const bf_t *a) +{ + uint64_t v; + int ret; + if (a->expn == BF_EXP_NAN) { + goto overflow; + } else if (a->expn <= 0) { + v = 0; + ret = 0; + } else if (a->sign) { + v = 0; + ret = BF_ST_INVALID_OP; + } else if (a->expn <= 64) { +#if LIMB_BITS == 32 + if (a->expn <= 32) + v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn); + else + v = (((uint64_t)a->tab[a->len - 1] << 32) | + get_limbz(a, a->len - 2)) >> (64 - a->expn); +#else + v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn); +#endif + ret = 0; + } else { + overflow: + v = UINT64_MAX; + ret = BF_ST_INVALID_OP; + } + *pres = v; + return ret; +} + /* base conversion from radix */ static const uint8_t digits_per_limb_table[BF_RADIX_MAX - 1] = { diff --git a/libbf.h b/libbf.h @@ -376,6 +376,7 @@ char *bf_ftoa(size_t *plen, const bf_t *a, int radix, limb_t prec, #define BF_GET_INT_MOD (1 << 0) int bf_get_int32(int *pres, const bf_t *a, int flags); int bf_get_int64(int64_t *pres, const bf_t *a, int flags); +int bf_get_uint64(uint64_t *pres, const bf_t *a); /* the following functions are exported for testing only. */ void mp_print_str(const char *str, const limb_t *tab, limb_t n); diff --git a/libregexp.c b/libregexp.c @@ -434,8 +434,9 @@ static int __attribute__((format(printf, 2, 3))) re_parse_error(REParseState *s, return -1; } -/* Return -1 in case of overflow */ -static int parse_digits(const uint8_t **pp) +/* If allow_overflow is false, return -1 in case of + overflow. Otherwise return INT32_MAX. */ +static int parse_digits(const uint8_t **pp, BOOL allow_overflow) { const uint8_t *p; uint64_t v; @@ -448,8 +449,12 @@ static int parse_digits(const uint8_t **pp) if (c < '0' || c > '9') break; v = v * 10 + c - '0'; - if (v >= INT32_MAX) - return -1; + if (v >= INT32_MAX) { + if (allow_overflow) + v = INT32_MAX; + else + return -1; + } p++; } *pp = p; @@ -1225,14 +1230,27 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) re_emit_op(s, REOP_prev); break; case '{': - /* As an extension (see ES6 annex B), we accept '{' not - followed by digits as a normal atom */ - if (!is_digit(p[1])) { - if (s->is_utf16) - goto invalid_quant_count; + if (s->is_utf16) { + return re_parse_error(s, "syntax error"); + } else if (!is_digit(p[1])) { + /* Annex B: we accept '{' not followed by digits as a + normal atom */ goto parse_class_atom; + } else { + const uint8_t *p1 = p + 1; + /* Annex B: error if it is like a repetition count */ + parse_digits(&p1, TRUE); + if (*p1 == ',') { + p1++; + if (is_digit(*p1)) { + parse_digits(&p1, TRUE); + } + } + if (*p1 != '}') { + goto parse_class_atom; + } } - /* fall tru */ + /* fall thru */ case '*': case '+': case '?': @@ -1387,7 +1405,7 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) { const uint8_t *q = ++p; - c = parse_digits(&p); + c = parse_digits(&p, FALSE); if (c < 0 || (c >= s->capture_count && c >= re_count_captures(s))) { if (!s->is_utf16) { /* Annex B.1.4: accept legacy octal */ @@ -1484,32 +1502,38 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) quant_max = 1; goto quantifier; case '{': - /* As an extension (see ES6 annex B), we accept '{' not - followed by digits as a normal atom */ - if (!is_digit(p[1])) { - if (s->is_utf16) - goto invalid_quant_count; - break; - } - p++; - quant_min = parse_digits(&p); - if (quant_min < 0) { - invalid_quant_count: - return re_parse_error(s, "invalid repetition count"); - } - quant_max = quant_min; - if (*p == ',') { - p++; - if (is_digit(*p)) { - quant_max = parse_digits(&p); - if (quant_max < 0 || quant_max < quant_min) + { + const uint8_t *p1 = p; + /* As an extension (see ES6 annex B), we accept '{' not + followed by digits as a normal atom */ + if (!is_digit(p[1])) { + if (s->is_utf16) goto invalid_quant_count; - } else { - quant_max = INT32_MAX; /* infinity */ + break; + } + p++; + quant_min = parse_digits(&p, TRUE); + quant_max = quant_min; + if (*p == ',') { + p++; + if (is_digit(*p)) { + quant_max = parse_digits(&p, TRUE); + if (quant_max < quant_min) { + invalid_quant_count: + return re_parse_error(s, "invalid repetition count"); + } + } else { + quant_max = INT32_MAX; /* infinity */ + } } + if (*p != '}' && !s->is_utf16) { + /* Annex B: normal atom if invalid '{' syntax */ + p = p1; + break; + } + if (re_parse_expect(s, &p, '}')) + return -1; } - if (re_parse_expect(s, &p, '}')) - return -1; quantifier: greedy = TRUE; if (*p == '?') { diff --git a/libunicode-table.h b/libunicode-table.h @@ -3,7 +3,7 @@ #include <stdint.h> -static const uint32_t case_conv_table1[359] = { +static const uint32_t case_conv_table1[361] = { 0x00209a30, 0x00309a00, 0x005a8173, 0x00601730, 0x006c0730, 0x006f81b3, 0x00701700, 0x007c0700, 0x007f8100, 0x00803040, 0x009801c3, 0x00988190, @@ -86,17 +86,18 @@ static const uint32_t case_conv_table1[359] = { 0x53cb1440, 0x53d50130, 0x53d58130, 0x53d60130, 0x53d68130, 0x53d70130, 0x53d80130, 0x53d88130, 0x53d90130, 0x53d98131, 0x53da0c40, 0x53e10240, - 0x53e20131, 0x53e28130, 0x53e30130, 0x55a98101, - 0x55b85020, 0x7d8001b2, 0x7d8081b2, 0x7d8101b2, - 0x7d8181da, 0x7d8201da, 0x7d8281b3, 0x7d8301b3, - 0x7d8981bb, 0x7d8a01bb, 0x7d8a81bb, 0x7d8b01bc, - 0x7d8b81bb, 0x7f909a31, 0x7fa09a01, 0x82002831, - 0x82142801, 0x82582431, 0x826c2401, 0x86403331, - 0x86603301, 0x8c502031, 0x8c602001, 0xb7202031, - 0xb7302001, 0xf4802231, 0xf4912201, + 0x53e20131, 0x53e28130, 0x53e30130, 0x53e38440, + 0x53fa8240, 0x55a98101, 0x55b85020, 0x7d8001b2, + 0x7d8081b2, 0x7d8101b2, 0x7d8181da, 0x7d8201da, + 0x7d8281b3, 0x7d8301b3, 0x7d8981bb, 0x7d8a01bb, + 0x7d8a81bb, 0x7d8b01bc, 0x7d8b81bb, 0x7f909a31, + 0x7fa09a01, 0x82002831, 0x82142801, 0x82582431, + 0x826c2401, 0x86403331, 0x86603301, 0x8c502031, + 0x8c602001, 0xb7202031, 0xb7302001, 0xf4802231, + 0xf4912201, }; -static const uint8_t case_conv_table2[359] = { +static const uint8_t case_conv_table2[361] = { 0x01, 0x00, 0x9c, 0x06, 0x07, 0x4d, 0x03, 0x04, 0x10, 0x00, 0x8f, 0x0b, 0x00, 0x00, 0x11, 0x00, 0x08, 0x00, 0x53, 0x4a, 0x51, 0x00, 0x52, 0x00, @@ -118,7 +119,7 @@ static const uint8_t case_conv_table2[359] = { 0x33, 0x95, 0x00, 0x8e, 0x00, 0x74, 0x99, 0x98, 0x97, 0x96, 0x00, 0x00, 0x9e, 0x00, 0x9c, 0x00, 0xa1, 0xa0, 0x15, 0x2e, 0x2f, 0x30, 0xb4, 0xb5, - 0x4c, 0xaa, 0xa9, 0x12, 0x14, 0x1e, 0x21, 0x22, + 0x4e, 0xaa, 0xa9, 0x12, 0x14, 0x1e, 0x21, 0x22, 0x22, 0x2a, 0x34, 0x35, 0xa6, 0xa7, 0x36, 0x1f, 0x4a, 0x00, 0x00, 0x97, 0x01, 0x5a, 0xda, 0x1d, 0x36, 0x05, 0x00, 0xc4, 0xc3, 0xc6, 0xc5, 0xc8, @@ -137,11 +138,12 @@ static const uint8_t case_conv_table2[359] = { 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xa3, 0xa4, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x5a, 0x00, 0x48, 0x00, 0x5b, 0x56, 0x58, - 0x60, 0x5e, 0x70, 0x69, 0x6f, 0x4b, 0x00, 0x00, - 0x3b, 0x67, 0xb8, 0x45, 0xa8, 0x8a, 0x8b, 0x8c, - 0xab, 0xac, 0x58, 0x58, 0xaf, 0x94, 0xb0, 0x6f, - 0xb2, 0x5a, 0x59, 0x5c, 0x5b, 0x5e, 0x5d, 0x60, - 0x5f, 0x62, 0x61, 0x64, 0x63, 0x66, 0x65, + 0x60, 0x5e, 0x70, 0x69, 0x6f, 0x4d, 0x00, 0x00, + 0x3b, 0x67, 0xb8, 0x00, 0x00, 0x45, 0xa8, 0x8a, + 0x8b, 0x8c, 0xab, 0xac, 0x58, 0x58, 0xaf, 0x94, + 0xb0, 0x6f, 0xb2, 0x5c, 0x5b, 0x5e, 0x5d, 0x60, + 0x5f, 0x62, 0x61, 0x64, 0x63, 0x66, 0x65, 0x68, + 0x67, }; static const uint16_t case_conv_ext[58] = { @@ -170,7 +172,7 @@ static const uint8_t unicode_prop_Cased1_table[172] = { 0x26, 0x01, 0x01, 0x86, 0xe5, 0x80, 0x60, 0x79, 0xb6, 0x81, 0x40, 0x91, 0x81, 0xbd, 0x88, 0x94, 0x05, 0x80, 0x98, 0x80, 0xc7, 0x82, 0x43, 0x34, - 0xa2, 0x06, 0x80, 0x8b, 0x61, 0x28, 0x97, 0xd4, + 0xa2, 0x06, 0x80, 0x8c, 0x61, 0x28, 0x96, 0xd4, 0x80, 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, @@ -186,107 +188,109 @@ static const uint8_t unicode_prop_Cased1_index[18] = { 0xf1, 0x01, }; -static const uint8_t unicode_prop_Case_Ignorable_table[678] = { +static const uint8_t unicode_prop_Case_Ignorable_table[692] = { 0xa6, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80, 0xc6, 0x03, 0x00, 0x03, 0x01, 0x81, 0x41, 0xf6, 0x40, 0xbf, 0x19, 0x18, 0x88, 0x08, 0x80, 0x40, - 0xfa, 0x86, 0x40, 0xce, 0x80, 0xb6, 0xac, 0x00, - 0x01, 0x01, 0x00, 0xab, 0x80, 0x8a, 0x85, 0x89, - 0x8a, 0x00, 0xa2, 0x80, 0x89, 0x94, 0x8f, 0x80, - 0xe4, 0x38, 0x89, 0x03, 0xa0, 0x00, 0x80, 0x9d, - 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0x18, 0x08, 0x97, - 0x97, 0xaa, 0x82, 0xf6, 0xaf, 0xb6, 0x00, 0x03, - 0x3b, 0x02, 0x86, 0x89, 0x81, 0x8c, 0x80, 0x8e, - 0x80, 0xb9, 0x03, 0x1f, 0x80, 0x93, 0x81, 0x99, - 0x01, 0x81, 0xb8, 0x03, 0x0b, 0x09, 0x12, 0x80, - 0x9d, 0x0a, 0x80, 0x8a, 0x81, 0xb8, 0x03, 0x20, - 0x0b, 0x80, 0x93, 0x81, 0x95, 0x28, 0x80, 0xb9, - 0x01, 0x00, 0x1f, 0x07, 0x80, 0x8a, 0x81, 0x9d, - 0x80, 0xbc, 0x80, 0x8b, 0x80, 0xb1, 0x02, 0x80, - 0xb8, 0x14, 0x10, 0x1e, 0x81, 0x8a, 0x81, 0x9c, - 0x80, 0xb9, 0x01, 0x05, 0x04, 0x81, 0x93, 0x81, - 0x9b, 0x81, 0xb8, 0x0b, 0x1f, 0x80, 0x93, 0x81, - 0xe5, 0x06, 0x10, 0x80, 0xd9, 0x01, 0x86, 0x8a, - 0x88, 0xe1, 0x01, 0x88, 0x88, 0x00, 0x85, 0xc9, - 0x81, 0x9a, 0x00, 0x00, 0x80, 0xb6, 0x8d, 0x04, - 0x01, 0x84, 0x8a, 0x80, 0xa3, 0x88, 0x80, 0xe5, - 0x18, 0x28, 0x09, 0x81, 0x98, 0x0b, 0x82, 0x8f, - 0x83, 0x8c, 0x01, 0x0d, 0x80, 0x8e, 0x80, 0xdd, - 0x80, 0x42, 0x5f, 0x82, 0x43, 0xb1, 0x82, 0x9c, - 0x82, 0x9c, 0x81, 0x9d, 0x81, 0xbf, 0x08, 0x37, - 0x01, 0x8a, 0x10, 0x20, 0xac, 0x83, 0xb3, 0x80, - 0xc0, 0x81, 0xa1, 0x80, 0xf5, 0x13, 0x81, 0x88, - 0x05, 0x82, 0x40, 0xda, 0x09, 0x80, 0xb9, 0x00, - 0x30, 0x00, 0x01, 0x3d, 0x89, 0x08, 0xa6, 0x07, - 0x8e, 0xc0, 0x83, 0xaf, 0x00, 0x20, 0x04, 0x80, - 0xa7, 0x88, 0x8b, 0x81, 0x9f, 0x19, 0x08, 0x82, - 0xb7, 0x00, 0x0a, 0x00, 0x82, 0xb9, 0x39, 0x81, - 0xbf, 0x85, 0xd1, 0x10, 0x8c, 0x06, 0x18, 0x28, - 0x11, 0xb1, 0xbe, 0x8c, 0x80, 0xa1, 0xde, 0x04, - 0x41, 0xbc, 0x00, 0x82, 0x8a, 0x82, 0x8c, 0x82, - 0x8c, 0x82, 0x8c, 0x81, 0x8b, 0x27, 0x81, 0x89, - 0x01, 0x01, 0x84, 0xb0, 0x20, 0x89, 0x00, 0x8c, - 0x80, 0x8f, 0x8c, 0xb2, 0xa0, 0x4b, 0x8a, 0x81, - 0xf0, 0x82, 0xfc, 0x80, 0x8e, 0x80, 0xdf, 0x9f, - 0xae, 0x80, 0x41, 0xd4, 0x80, 0xa3, 0x1a, 0x24, - 0x80, 0xdc, 0x85, 0xdc, 0x82, 0x60, 0x6f, 0x15, - 0x80, 0x44, 0xe1, 0x85, 0x41, 0x0d, 0x80, 0xe1, - 0x18, 0x89, 0x00, 0x9b, 0x83, 0xcf, 0x81, 0x8d, - 0xa1, 0xcd, 0x80, 0x96, 0x82, 0xec, 0x0f, 0x02, - 0x03, 0x80, 0x98, 0x81, 0x40, 0x9c, 0x81, 0x99, - 0x91, 0x8c, 0x80, 0xa5, 0x87, 0x98, 0x8a, 0xad, - 0x82, 0xaf, 0x01, 0x19, 0x81, 0x90, 0x80, 0x94, - 0x81, 0xc1, 0x29, 0x09, 0x81, 0x8b, 0x07, 0x80, - 0xa2, 0x80, 0x8a, 0x80, 0xb2, 0x00, 0x11, 0x0c, - 0x08, 0x80, 0x9a, 0x80, 0x8d, 0x0c, 0x08, 0x80, - 0xe3, 0x84, 0x40, 0x84, 0x01, 0x03, 0x80, 0x60, - 0x4f, 0x2f, 0x80, 0x40, 0x92, 0x8f, 0x42, 0x3d, - 0x8f, 0x10, 0x8b, 0x8f, 0xa1, 0x01, 0x80, 0x40, - 0xa8, 0x06, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00, - 0x80, 0xae, 0x80, 0xac, 0x81, 0xc2, 0x80, 0x94, - 0x82, 0x42, 0x00, 0x80, 0x40, 0xe1, 0x80, 0x40, - 0x94, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83, 0xa7, - 0x13, 0x80, 0x40, 0xa4, 0x81, 0x42, 0x3c, 0x83, - 0x42, 0x1d, 0x8a, 0x40, 0xaf, 0x80, 0xb5, 0x8e, + 0xfa, 0x86, 0x40, 0xce, 0x04, 0x80, 0xb0, 0xac, + 0x00, 0x01, 0x01, 0x00, 0xab, 0x80, 0x8a, 0x85, + 0x89, 0x8a, 0x00, 0xa2, 0x80, 0x89, 0x94, 0x8f, + 0x80, 0xe4, 0x38, 0x89, 0x03, 0xa0, 0x00, 0x80, + 0x9d, 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0x18, 0x08, + 0x97, 0x97, 0xaa, 0x82, 0xf6, 0xaf, 0xb6, 0x00, + 0x03, 0x3b, 0x02, 0x86, 0x89, 0x81, 0x8c, 0x80, + 0x8e, 0x80, 0xb9, 0x03, 0x1f, 0x80, 0x93, 0x81, + 0x99, 0x01, 0x81, 0xb8, 0x03, 0x0b, 0x09, 0x12, + 0x80, 0x9d, 0x0a, 0x80, 0x8a, 0x81, 0xb8, 0x03, + 0x20, 0x0b, 0x80, 0x93, 0x81, 0x95, 0x28, 0x80, + 0xb9, 0x01, 0x00, 0x1f, 0x06, 0x81, 0x8a, 0x81, + 0x9d, 0x80, 0xbc, 0x80, 0x8b, 0x80, 0xb1, 0x02, + 0x80, 0xb8, 0x14, 0x10, 0x1e, 0x81, 0x8a, 0x81, + 0x9c, 0x80, 0xb9, 0x01, 0x05, 0x04, 0x81, 0x93, + 0x81, 0x9b, 0x81, 0xb8, 0x0b, 0x1f, 0x80, 0x93, + 0x81, 0x9c, 0x80, 0xc7, 0x06, 0x10, 0x80, 0xd9, + 0x01, 0x86, 0x8a, 0x88, 0xe1, 0x01, 0x88, 0x88, + 0x00, 0x85, 0xc9, 0x81, 0x9a, 0x00, 0x00, 0x80, + 0xb6, 0x8d, 0x04, 0x01, 0x84, 0x8a, 0x80, 0xa3, + 0x88, 0x80, 0xe5, 0x18, 0x28, 0x09, 0x81, 0x98, + 0x0b, 0x82, 0x8f, 0x83, 0x8c, 0x01, 0x0d, 0x80, + 0x8e, 0x80, 0xdd, 0x80, 0x42, 0x5f, 0x82, 0x43, + 0xb1, 0x82, 0x9c, 0x82, 0x9c, 0x81, 0x9d, 0x81, + 0xbf, 0x08, 0x37, 0x01, 0x8a, 0x10, 0x20, 0xac, + 0x83, 0xb3, 0x80, 0xc0, 0x81, 0xa1, 0x80, 0xf5, + 0x13, 0x81, 0x88, 0x05, 0x82, 0x40, 0xda, 0x09, + 0x80, 0xb9, 0x00, 0x30, 0x00, 0x01, 0x3d, 0x89, + 0x08, 0xa6, 0x07, 0x90, 0xbe, 0x83, 0xaf, 0x00, + 0x20, 0x04, 0x80, 0xa7, 0x88, 0x8b, 0x81, 0x9f, + 0x19, 0x08, 0x82, 0xb7, 0x00, 0x0a, 0x00, 0x82, + 0xb9, 0x39, 0x81, 0xbf, 0x85, 0xd1, 0x10, 0x8c, + 0x06, 0x18, 0x28, 0x11, 0xb1, 0xbe, 0x8c, 0x80, + 0xa1, 0xde, 0x04, 0x41, 0xbc, 0x00, 0x82, 0x8a, + 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81, 0x8b, + 0x27, 0x81, 0x89, 0x01, 0x01, 0x84, 0xb0, 0x20, + 0x89, 0x00, 0x8c, 0x80, 0x8f, 0x8c, 0xb2, 0xa0, + 0x4b, 0x8a, 0x81, 0xf0, 0x82, 0xfc, 0x80, 0x8e, + 0x80, 0xdf, 0x9f, 0xae, 0x80, 0x41, 0xd4, 0x80, + 0xa3, 0x1a, 0x24, 0x80, 0xdc, 0x85, 0xdc, 0x82, + 0x60, 0x6f, 0x15, 0x80, 0x44, 0xe1, 0x85, 0x41, + 0x0d, 0x80, 0xe1, 0x18, 0x89, 0x00, 0x9b, 0x83, + 0xcf, 0x81, 0x8d, 0xa1, 0xcd, 0x80, 0x96, 0x82, + 0xec, 0x0f, 0x02, 0x03, 0x80, 0x98, 0x0c, 0x80, + 0x40, 0x96, 0x81, 0x99, 0x91, 0x8c, 0x80, 0xa5, + 0x87, 0x98, 0x8a, 0xad, 0x82, 0xaf, 0x01, 0x19, + 0x81, 0x90, 0x80, 0x94, 0x81, 0xc1, 0x29, 0x09, + 0x81, 0x8b, 0x07, 0x80, 0xa2, 0x80, 0x8a, 0x80, + 0xb2, 0x00, 0x11, 0x0c, 0x08, 0x80, 0x9a, 0x80, + 0x8d, 0x0c, 0x08, 0x80, 0xe3, 0x84, 0x88, 0x82, + 0xf8, 0x01, 0x03, 0x80, 0x60, 0x4f, 0x2f, 0x80, + 0x40, 0x92, 0x8f, 0x42, 0x3d, 0x8f, 0x10, 0x8b, + 0x8f, 0xa1, 0x01, 0x80, 0x40, 0xa8, 0x06, 0x05, + 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80, 0xae, 0x80, + 0xac, 0x81, 0xc2, 0x80, 0x94, 0x82, 0x42, 0x00, + 0x80, 0x40, 0xe1, 0x80, 0x40, 0x94, 0x84, 0x46, + 0x85, 0x10, 0x0c, 0x83, 0xa7, 0x13, 0x80, 0x40, + 0xa4, 0x81, 0x42, 0x3c, 0x83, 0x41, 0x82, 0x81, + 0x40, 0x98, 0x8a, 0x40, 0xaf, 0x80, 0xb5, 0x8e, 0xb7, 0x82, 0xb0, 0x19, 0x09, 0x80, 0x8e, 0x80, 0xb1, 0x82, 0xa3, 0x20, 0x87, 0xbd, 0x80, 0x8b, - 0x81, 0xb3, 0x88, 0x89, 0x83, 0xe1, 0x11, 0x00, - 0x0d, 0x80, 0x40, 0x9f, 0x02, 0x87, 0x94, 0x81, - 0xb8, 0x0a, 0x80, 0xa4, 0x32, 0x84, 0x40, 0xc2, - 0x39, 0x10, 0x80, 0x96, 0x80, 0xd3, 0x28, 0x03, - 0x08, 0x81, 0x40, 0xed, 0x1d, 0x08, 0x81, 0x9a, - 0x81, 0xd4, 0x39, 0x00, 0x81, 0xe9, 0x00, 0x01, - 0x28, 0x80, 0xe4, 0x11, 0x18, 0x84, 0x41, 0x02, - 0x88, 0x01, 0x41, 0x98, 0x19, 0x0b, 0x80, 0x9f, - 0x89, 0xa7, 0x29, 0x1f, 0x80, 0x88, 0x29, 0x82, - 0xad, 0x8c, 0x01, 0x41, 0x95, 0x30, 0x28, 0x80, - 0xd1, 0x95, 0x0e, 0x01, 0x01, 0xf9, 0x2a, 0x00, - 0x08, 0x30, 0x80, 0xc7, 0x0a, 0x00, 0x80, 0x41, - 0x5a, 0x81, 0x55, 0x3a, 0x88, 0x60, 0x36, 0xb6, - 0x84, 0xba, 0x86, 0x88, 0x83, 0x44, 0x0a, 0x80, - 0xbe, 0x90, 0xbf, 0x08, 0x80, 0x60, 0x4c, 0xb8, - 0x08, 0x83, 0x54, 0xc2, 0x82, 0x88, 0x8f, 0x0e, - 0x9d, 0x83, 0x40, 0x93, 0x82, 0x47, 0xba, 0xb6, - 0x83, 0xb1, 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e, - 0x45, 0x4f, 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41, - 0x04, 0x8d, 0x41, 0xad, 0x83, 0x45, 0xdf, 0x86, - 0xec, 0x87, 0x4a, 0xae, 0x84, 0x6c, 0x0c, 0x00, - 0x80, 0x9d, 0xdf, 0xff, 0x40, 0xef, + 0x81, 0xb3, 0x88, 0x89, 0x19, 0x80, 0xde, 0x11, + 0x00, 0x0d, 0x80, 0x40, 0x9f, 0x02, 0x87, 0x94, + 0x81, 0xb8, 0x0a, 0x80, 0xa4, 0x32, 0x84, 0x40, + 0xc2, 0x39, 0x10, 0x80, 0x96, 0x80, 0xd3, 0x28, + 0x03, 0x08, 0x81, 0x40, 0xed, 0x1d, 0x08, 0x81, + 0x9a, 0x81, 0xd4, 0x39, 0x00, 0x81, 0xe9, 0x00, + 0x01, 0x28, 0x80, 0xe4, 0x11, 0x18, 0x84, 0x41, + 0x02, 0x88, 0x01, 0x40, 0xff, 0x08, 0x03, 0x80, + 0x40, 0x8f, 0x19, 0x0b, 0x80, 0x9f, 0x89, 0xa7, + 0x29, 0x1f, 0x80, 0x88, 0x29, 0x82, 0xad, 0x8c, + 0x01, 0x41, 0x95, 0x30, 0x28, 0x80, 0xd1, 0x95, + 0x0e, 0x01, 0x01, 0xf9, 0x2a, 0x00, 0x08, 0x30, + 0x80, 0xc7, 0x0a, 0x00, 0x80, 0x41, 0x5a, 0x81, + 0x55, 0x3a, 0x88, 0x60, 0x36, 0xb6, 0x84, 0xba, + 0x86, 0x88, 0x83, 0x44, 0x0a, 0x80, 0xbe, 0x90, + 0xbf, 0x08, 0x81, 0x60, 0x4c, 0xb7, 0x08, 0x83, + 0x54, 0xc2, 0x82, 0x88, 0x8f, 0x0e, 0x9d, 0x83, + 0x40, 0x93, 0x82, 0x47, 0xba, 0xb6, 0x83, 0xb1, + 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e, 0x45, 0x4f, + 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41, 0x04, 0x8d, + 0x41, 0xad, 0x83, 0x45, 0xdf, 0x86, 0xec, 0x87, + 0x4a, 0xae, 0x84, 0x6c, 0x0c, 0x00, 0x80, 0x9d, + 0xdf, 0xff, 0x40, 0xef, }; static const uint8_t unicode_prop_Case_Ignorable_index[66] = { - 0xc0, 0x05, 0x00, 0x2e, 0x08, 0x20, 0x52, 0x0a, - 0x00, 0x05, 0x0c, 0x00, 0x4f, 0x0e, 0x20, 0x75, - 0x10, 0x20, 0x44, 0x18, 0x00, 0x43, 0x1b, 0x00, - 0x00, 0x1e, 0x00, 0x7e, 0x2c, 0x00, 0x7e, 0xa6, - 0x40, 0x83, 0xa9, 0x20, 0xf7, 0xaa, 0x00, 0x41, - 0xff, 0x20, 0x28, 0x0d, 0x01, 0x3f, 0x12, 0x41, - 0xde, 0x15, 0x21, 0x5c, 0x1a, 0x01, 0xf5, 0x6a, - 0x21, 0x37, 0xda, 0x01, 0x02, 0x00, 0x2e, 0xf0, + 0xbe, 0x05, 0x00, 0xfe, 0x07, 0x00, 0x52, 0x0a, + 0x20, 0x05, 0x0c, 0x20, 0x3b, 0x0e, 0x40, 0x61, + 0x10, 0x40, 0x0f, 0x18, 0x20, 0x43, 0x1b, 0x60, + 0x79, 0x1d, 0x00, 0xf1, 0x20, 0x00, 0x0d, 0xa6, + 0x40, 0x2e, 0xa9, 0x20, 0xde, 0xaa, 0x00, 0x0f, + 0xff, 0x20, 0xe7, 0x0a, 0x41, 0x82, 0x11, 0x21, + 0xc4, 0x14, 0x61, 0x44, 0x19, 0x01, 0x48, 0x1d, + 0x21, 0xa4, 0xbc, 0x01, 0x3e, 0xe1, 0x01, 0xf0, 0x01, 0x0e, }; -static const uint8_t unicode_prop_ID_Start_table[1024] = { +static const uint8_t unicode_prop_ID_Start_table[1045] = { 0xc0, 0x99, 0x85, 0x99, 0xae, 0x80, 0x89, 0x03, 0x04, 0x96, 0x80, 0x9e, 0x80, 0x41, 0xc9, 0x83, 0x8b, 0x8d, 0x26, 0x00, 0x80, 0x40, 0x80, 0x20, @@ -297,142 +301,146 @@ static const uint8_t unicode_prop_ID_Start_table[1024] = { 0x89, 0x11, 0x80, 0x8f, 0x00, 0x9d, 0x9c, 0xd8, 0x8a, 0x80, 0x97, 0xa0, 0x88, 0x0b, 0x04, 0x95, 0x18, 0x88, 0x02, 0x80, 0x96, 0x98, 0x86, 0x8a, - 0xb4, 0x94, 0x07, 0xc5, 0xb5, 0x10, 0x91, 0x06, - 0x89, 0x8e, 0x8f, 0x1f, 0x09, 0x81, 0x95, 0x06, - 0x00, 0x13, 0x10, 0x8f, 0x80, 0x8c, 0x08, 0x82, - 0x8d, 0x81, 0x89, 0x07, 0x2b, 0x09, 0x95, 0x06, - 0x01, 0x01, 0x01, 0x9e, 0x18, 0x80, 0x92, 0x82, - 0x8f, 0x88, 0x02, 0x80, 0x95, 0x06, 0x01, 0x04, - 0x10, 0x91, 0x80, 0x8e, 0x81, 0x96, 0x80, 0x8a, - 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, 0x10, 0x9d, - 0x08, 0x82, 0x8e, 0x80, 0x90, 0x00, 0x2a, 0x10, - 0x1a, 0x08, 0x00, 0x0a, 0x0a, 0x12, 0x8b, 0x95, - 0x80, 0xb3, 0x38, 0x10, 0x96, 0x80, 0x8f, 0x10, - 0x99, 0x14, 0x81, 0x9d, 0x03, 0x38, 0x10, 0x96, - 0x80, 0x89, 0x04, 0x10, 0x9f, 0x00, 0x81, 0x8e, - 0x81, 0x91, 0x38, 0x10, 0xa8, 0x08, 0x8f, 0x04, - 0x17, 0x82, 0x97, 0x2c, 0x91, 0x82, 0x97, 0x80, - 0x88, 0x00, 0x0e, 0xb9, 0xaf, 0x01, 0x8b, 0x86, - 0xb9, 0x08, 0x00, 0x20, 0x97, 0x00, 0x80, 0x89, - 0x01, 0x88, 0x01, 0x20, 0x80, 0x94, 0x83, 0x9f, - 0x80, 0xbe, 0x38, 0xa3, 0x9a, 0x84, 0xf2, 0xaa, - 0x93, 0x80, 0x8f, 0x2b, 0x1a, 0x02, 0x0e, 0x13, - 0x8c, 0x8b, 0x80, 0x90, 0xa5, 0x00, 0x20, 0x81, - 0xaa, 0x80, 0x41, 0x4c, 0x03, 0x0e, 0x00, 0x03, - 0x81, 0xa8, 0x03, 0x81, 0xa0, 0x03, 0x0e, 0x00, - 0x03, 0x81, 0x8e, 0x80, 0xb8, 0x03, 0x81, 0xc2, - 0xa4, 0x8f, 0x8f, 0xd5, 0x0d, 0x82, 0x42, 0x6b, - 0x81, 0x90, 0x80, 0x99, 0x84, 0xca, 0x82, 0x8a, - 0x86, 0x8c, 0x03, 0x8d, 0x91, 0x8d, 0x91, 0x8d, - 0x8c, 0x02, 0x8e, 0xb3, 0xa2, 0x03, 0x80, 0xc2, - 0xd8, 0x86, 0xa8, 0x00, 0x84, 0xc5, 0x89, 0x9e, - 0xb0, 0x9d, 0x0c, 0x8a, 0xab, 0x83, 0x99, 0xb5, - 0x96, 0x88, 0xb4, 0xd1, 0x80, 0xdc, 0xae, 0x90, - 0x86, 0xb6, 0x9d, 0x8c, 0x81, 0x89, 0xab, 0x99, - 0xa3, 0xa8, 0x82, 0x89, 0xa3, 0x81, 0x88, 0x86, - 0xaa, 0x0a, 0xa8, 0x18, 0x28, 0x0a, 0x04, 0x40, - 0xbf, 0xbf, 0x41, 0x15, 0x0d, 0x81, 0xa5, 0x0d, - 0x0f, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x81, 0xb4, - 0x06, 0x00, 0x12, 0x06, 0x13, 0x0d, 0x83, 0x8c, - 0x22, 0x06, 0xf3, 0x80, 0x8c, 0x80, 0x8f, 0x8c, - 0xe4, 0x03, 0x01, 0x89, 0x00, 0x0d, 0x28, 0x00, - 0x00, 0x80, 0x8f, 0x0b, 0x24, 0x18, 0x90, 0xa8, - 0x4a, 0x76, 0xae, 0x80, 0xae, 0x80, 0x40, 0x84, - 0x2b, 0x11, 0x8b, 0xa5, 0x00, 0x20, 0x81, 0xb7, - 0x30, 0x8f, 0x96, 0x88, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x86, 0x42, 0x25, 0x82, 0x98, - 0x88, 0x34, 0x0c, 0x83, 0xd5, 0x1c, 0x80, 0xd9, - 0x03, 0x84, 0xaa, 0x80, 0xdd, 0x90, 0x9a, 0xb4, - 0x8f, 0x41, 0xff, 0x59, 0xb5, 0xc9, 0x60, 0x51, - 0xef, 0x8f, 0x44, 0x8c, 0xc2, 0xad, 0x81, 0x41, - 0x0c, 0x82, 0x8f, 0x89, 0x81, 0x93, 0xae, 0x8f, - 0x9e, 0x81, 0xcf, 0xa6, 0x88, 0x81, 0xe6, 0x81, - 0xb4, 0x0c, 0xaf, 0x8a, 0x02, 0x03, 0x80, 0x96, - 0x9c, 0xb3, 0x8d, 0xb1, 0xbd, 0x2a, 0x00, 0x81, - 0x8a, 0x9b, 0x89, 0x96, 0x98, 0x9c, 0x86, 0xae, - 0x9b, 0x80, 0x8f, 0x20, 0x89, 0x89, 0x20, 0xa8, - 0x96, 0x10, 0x87, 0x93, 0x96, 0x10, 0x82, 0xb1, - 0x00, 0x11, 0x0c, 0x08, 0x00, 0x97, 0x11, 0x8a, - 0x32, 0x8b, 0x29, 0x29, 0x85, 0x88, 0x30, 0x30, - 0xaa, 0x80, 0x8b, 0x87, 0xf2, 0x9c, 0x60, 0x2b, - 0xa3, 0x8b, 0x96, 0x83, 0xb0, 0x60, 0x21, 0x03, - 0x41, 0x6d, 0x81, 0xe9, 0xa5, 0x86, 0x8b, 0x24, - 0x00, 0x89, 0x80, 0x8c, 0x04, 0x00, 0x01, 0x01, - 0x80, 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf, 0x81, - 0xb5, 0xa7, 0x8b, 0xf3, 0x20, 0x40, 0x86, 0xa3, - 0x99, 0x85, 0x99, 0x8a, 0xd8, 0x15, 0x0d, 0x0d, - 0x0a, 0xa2, 0x8b, 0x80, 0x99, 0x80, 0x92, 0x01, - 0x80, 0x8e, 0x81, 0x8d, 0xa1, 0xfa, 0xc4, 0xb4, - 0x41, 0x0a, 0x9c, 0x82, 0xb0, 0xae, 0x9f, 0x8c, - 0x9d, 0x84, 0xa5, 0x89, 0x9d, 0x81, 0xa3, 0x1f, - 0x04, 0xa9, 0x40, 0x9d, 0x91, 0xa3, 0x83, 0xa3, - 0x83, 0xa7, 0x87, 0xb3, 0x40, 0x9b, 0x41, 0x36, - 0x88, 0x95, 0x89, 0x87, 0x40, 0x97, 0x29, 0x00, - 0xab, 0x01, 0x10, 0x81, 0x96, 0x89, 0x96, 0x88, - 0x9e, 0xc0, 0x92, 0x01, 0x89, 0x95, 0x89, 0x99, - 0xc5, 0xb7, 0x29, 0xbf, 0x80, 0x8e, 0x18, 0x10, - 0x9c, 0xa9, 0x9c, 0x82, 0x9c, 0xa2, 0x38, 0x9b, - 0x9a, 0xb5, 0x89, 0x95, 0x89, 0x92, 0x8c, 0x91, - 0xed, 0xc8, 0xb6, 0xb2, 0x8c, 0xb2, 0x8c, 0xa3, - 0x41, 0xdb, 0x9c, 0x89, 0x07, 0x95, 0x40, 0x99, - 0x96, 0x8b, 0xb4, 0xca, 0xac, 0x9f, 0x98, 0x99, - 0xa3, 0x9c, 0x80, 0x8a, 0xa2, 0x10, 0x8b, 0xaf, - 0x8d, 0x83, 0x94, 0x00, 0x80, 0xa2, 0x91, 0x80, - 0x98, 0xd3, 0x30, 0x00, 0x18, 0x8e, 0x80, 0x89, - 0x86, 0xae, 0xa5, 0x39, 0x09, 0x95, 0x06, 0x01, - 0x04, 0x10, 0x91, 0x80, 0x8b, 0x84, 0x40, 0x9d, - 0xb4, 0x91, 0x83, 0x93, 0x80, 0x9f, 0xaf, 0x93, - 0x08, 0x80, 0x40, 0xb7, 0xae, 0xa8, 0x83, 0xa3, - 0xaf, 0x93, 0x80, 0xba, 0xaa, 0x8c, 0x80, 0xc6, - 0x9a, 0x40, 0xe4, 0xab, 0xf3, 0xbf, 0x9e, 0x80, - 0x40, 0x9f, 0x39, 0xa6, 0x8f, 0x00, 0x80, 0x9b, - 0x80, 0x89, 0xa7, 0x30, 0x94, 0x80, 0x8a, 0xad, - 0x92, 0x80, 0xa1, 0xb8, 0x41, 0x06, 0x88, 0x80, - 0xa4, 0x90, 0x80, 0xb0, 0x9d, 0xef, 0x30, 0x08, - 0xa5, 0x94, 0x80, 0x98, 0x28, 0x08, 0x9f, 0x8d, - 0x80, 0x41, 0x46, 0x92, 0x41, 0x0c, 0x43, 0x99, - 0xe5, 0xee, 0x90, 0x40, 0xc3, 0x4a, 0xbb, 0x44, - 0x2e, 0x4f, 0xd0, 0x42, 0x46, 0x60, 0x21, 0xb8, - 0x42, 0x38, 0x86, 0x9e, 0xf0, 0x9d, 0x91, 0xaf, - 0x8f, 0x83, 0x9e, 0x94, 0x84, 0x92, 0x42, 0xaf, - 0xbf, 0xff, 0xca, 0x20, 0xc1, 0x8c, 0xbf, 0x08, - 0x80, 0x9b, 0x57, 0xf7, 0x87, 0x42, 0xf2, 0x60, - 0x25, 0x0c, 0x41, 0x1e, 0xb0, 0x82, 0x90, 0x1f, - 0x41, 0x8b, 0x49, 0x03, 0xea, 0x84, 0x8c, 0x82, - 0x88, 0x86, 0x89, 0x57, 0x65, 0xd4, 0x80, 0xc6, - 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06, - 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03, - 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, 0x98, - 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, 0x9e, - 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, 0x9e, - 0x80, 0x98, 0x07, 0x49, 0x33, 0xac, 0x89, 0x86, - 0x8f, 0x80, 0x41, 0x70, 0xab, 0x45, 0x13, 0x40, - 0xc4, 0xba, 0xc3, 0x30, 0x44, 0xb3, 0x18, 0x9a, - 0x01, 0x00, 0x08, 0x80, 0x89, 0x03, 0x00, 0x00, - 0x28, 0x18, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x06, - 0x03, 0x03, 0x00, 0x80, 0x89, 0x80, 0x90, 0x22, - 0x04, 0x80, 0x90, 0x51, 0x43, 0x60, 0xa6, 0xd6, - 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd, 0x81, 0x56, - 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e, 0x42, 0x1d, + 0xb4, 0x94, 0x80, 0x91, 0xbb, 0xb5, 0x10, 0x91, + 0x06, 0x89, 0x8e, 0x8f, 0x1f, 0x09, 0x81, 0x95, + 0x06, 0x00, 0x13, 0x10, 0x8f, 0x80, 0x8c, 0x08, + 0x82, 0x8d, 0x81, 0x89, 0x07, 0x2b, 0x09, 0x95, + 0x06, 0x01, 0x01, 0x01, 0x9e, 0x18, 0x80, 0x92, + 0x82, 0x8f, 0x88, 0x02, 0x80, 0x95, 0x06, 0x01, + 0x04, 0x10, 0x91, 0x80, 0x8e, 0x81, 0x96, 0x80, + 0x8a, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, 0x10, + 0x9d, 0x08, 0x82, 0x8e, 0x80, 0x90, 0x00, 0x2a, + 0x10, 0x1a, 0x08, 0x00, 0x0a, 0x0a, 0x12, 0x8b, + 0x95, 0x80, 0xb3, 0x38, 0x10, 0x96, 0x80, 0x8f, + 0x10, 0x99, 0x14, 0x81, 0x9d, 0x03, 0x38, 0x10, + 0x96, 0x80, 0x89, 0x04, 0x10, 0x9f, 0x00, 0x81, + 0x8e, 0x81, 0x90, 0x88, 0x02, 0x80, 0xa8, 0x08, + 0x8f, 0x04, 0x17, 0x82, 0x97, 0x2c, 0x91, 0x82, + 0x97, 0x80, 0x88, 0x00, 0x0e, 0xb9, 0xaf, 0x01, + 0x8b, 0x86, 0xb9, 0x08, 0x00, 0x20, 0x97, 0x00, + 0x80, 0x89, 0x01, 0x88, 0x01, 0x20, 0x80, 0x94, + 0x83, 0x9f, 0x80, 0xbe, 0x38, 0xa3, 0x9a, 0x84, + 0xf2, 0xaa, 0x93, 0x80, 0x8f, 0x2b, 0x1a, 0x02, + 0x0e, 0x13, 0x8c, 0x8b, 0x80, 0x90, 0xa5, 0x00, + 0x20, 0x81, 0xaa, 0x80, 0x41, 0x4c, 0x03, 0x0e, + 0x00, 0x03, 0x81, 0xa8, 0x03, 0x81, 0xa0, 0x03, + 0x0e, 0x00, 0x03, 0x81, 0x8e, 0x80, 0xb8, 0x03, + 0x81, 0xc2, 0xa4, 0x8f, 0x8f, 0xd5, 0x0d, 0x82, + 0x42, 0x6b, 0x81, 0x90, 0x80, 0x99, 0x84, 0xca, + 0x82, 0x8a, 0x86, 0x8c, 0x03, 0x8d, 0x91, 0x8d, + 0x91, 0x8d, 0x8c, 0x02, 0x8e, 0xb3, 0xa2, 0x03, + 0x80, 0xc2, 0xd8, 0x86, 0xa8, 0x00, 0x84, 0xc5, + 0x89, 0x9e, 0xb0, 0x9d, 0x0c, 0x8a, 0xab, 0x83, + 0x99, 0xb5, 0x96, 0x88, 0xb4, 0xd1, 0x80, 0xdc, + 0xae, 0x90, 0x86, 0xb6, 0x9d, 0x8c, 0x81, 0x89, + 0xab, 0x99, 0xa3, 0xa8, 0x82, 0x89, 0xa3, 0x81, + 0x88, 0x86, 0xaa, 0x0a, 0xa8, 0x18, 0x28, 0x0a, + 0x04, 0x40, 0xbf, 0xbf, 0x41, 0x15, 0x0d, 0x81, + 0xa5, 0x0d, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x9e, + 0x81, 0xb4, 0x06, 0x00, 0x12, 0x06, 0x13, 0x0d, + 0x83, 0x8c, 0x22, 0x06, 0xf3, 0x80, 0x8c, 0x80, + 0x8f, 0x8c, 0xe4, 0x03, 0x01, 0x89, 0x00, 0x0d, + 0x28, 0x00, 0x00, 0x80, 0x8f, 0x0b, 0x24, 0x18, + 0x90, 0xa8, 0x4a, 0x76, 0xae, 0x80, 0xae, 0x80, + 0x40, 0x84, 0x2b, 0x11, 0x8b, 0xa5, 0x00, 0x20, + 0x81, 0xb7, 0x30, 0x8f, 0x96, 0x88, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x86, 0x42, 0x25, + 0x82, 0x98, 0x88, 0x34, 0x0c, 0x83, 0xd5, 0x1c, + 0x80, 0xd9, 0x03, 0x84, 0xaa, 0x80, 0xdd, 0x90, + 0x9f, 0xaf, 0x8f, 0x41, 0xff, 0x59, 0xbf, 0xbf, + 0x60, 0x51, 0xfc, 0x82, 0x44, 0x8c, 0xc2, 0xad, + 0x81, 0x41, 0x0c, 0x82, 0x8f, 0x89, 0x81, 0x93, + 0xae, 0x8f, 0x9e, 0x81, 0xcf, 0xa6, 0x88, 0x81, + 0xe6, 0x81, 0xb4, 0x81, 0x88, 0xa9, 0x8c, 0x02, + 0x03, 0x80, 0x96, 0x9c, 0xb3, 0x8d, 0xb1, 0xbd, + 0x2a, 0x00, 0x81, 0x8a, 0x9b, 0x89, 0x96, 0x98, + 0x9c, 0x86, 0xae, 0x9b, 0x80, 0x8f, 0x20, 0x89, + 0x89, 0x20, 0xa8, 0x96, 0x10, 0x87, 0x93, 0x96, + 0x10, 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08, 0x00, + 0x97, 0x11, 0x8a, 0x32, 0x8b, 0x29, 0x29, 0x85, + 0x88, 0x30, 0x30, 0xaa, 0x80, 0x8d, 0x85, 0xf2, + 0x9c, 0x60, 0x2b, 0xa3, 0x8b, 0x96, 0x83, 0xb0, + 0x60, 0x21, 0x03, 0x41, 0x6d, 0x81, 0xe9, 0xa5, + 0x86, 0x8b, 0x24, 0x00, 0x89, 0x80, 0x8c, 0x04, + 0x00, 0x01, 0x01, 0x80, 0xeb, 0xa0, 0x41, 0x6a, + 0x91, 0xbf, 0x81, 0xb5, 0xa7, 0x8b, 0xf3, 0x20, + 0x40, 0x86, 0xa3, 0x99, 0x85, 0x99, 0x8a, 0xd8, + 0x15, 0x0d, 0x0d, 0x0a, 0xa2, 0x8b, 0x80, 0x99, + 0x80, 0x92, 0x01, 0x80, 0x8e, 0x81, 0x8d, 0xa1, + 0xfa, 0xc4, 0xb4, 0x41, 0x0a, 0x9c, 0x82, 0xb0, + 0xae, 0x9f, 0x8c, 0x9d, 0x84, 0xa5, 0x89, 0x9d, + 0x81, 0xa3, 0x1f, 0x04, 0xa9, 0x40, 0x9d, 0x91, + 0xa3, 0x83, 0xa3, 0x83, 0xa7, 0x87, 0xb3, 0x40, + 0x9b, 0x41, 0x36, 0x88, 0x95, 0x89, 0x87, 0x40, + 0x97, 0x29, 0x00, 0xab, 0x01, 0x10, 0x81, 0x96, + 0x89, 0x96, 0x88, 0x9e, 0xc0, 0x92, 0x01, 0x89, + 0x95, 0x89, 0x99, 0xc5, 0xb7, 0x29, 0xbf, 0x80, + 0x8e, 0x18, 0x10, 0x9c, 0xa9, 0x9c, 0x82, 0x9c, + 0xa2, 0x38, 0x9b, 0x9a, 0xb5, 0x89, 0x95, 0x89, + 0x92, 0x8c, 0x91, 0xed, 0xc8, 0xb6, 0xb2, 0x8c, + 0xb2, 0x8c, 0xa3, 0x41, 0x5b, 0xa9, 0x29, 0xcd, + 0x9c, 0x89, 0x07, 0x95, 0xe9, 0x94, 0x9a, 0x96, + 0x8b, 0xb4, 0xca, 0xac, 0x9f, 0x98, 0x99, 0xa3, + 0x9c, 0x01, 0x07, 0xa2, 0x10, 0x8b, 0xaf, 0x8d, + 0x83, 0x94, 0x00, 0x80, 0xa2, 0x91, 0x80, 0x98, + 0xd3, 0x30, 0x00, 0x18, 0x8e, 0x80, 0x89, 0x86, + 0xae, 0xa5, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, + 0x10, 0x91, 0x80, 0x8b, 0x84, 0x40, 0x9d, 0xb4, + 0x91, 0x83, 0x93, 0x82, 0x9d, 0xaf, 0x93, 0x08, + 0x80, 0x40, 0xb7, 0xae, 0xa8, 0x83, 0xa3, 0xaf, + 0x93, 0x80, 0xba, 0xaa, 0x8c, 0x80, 0xc6, 0x9a, + 0x40, 0xe4, 0xab, 0xf3, 0xbf, 0x9e, 0x39, 0x01, + 0x38, 0x08, 0x97, 0x8e, 0x00, 0x80, 0xdd, 0x39, + 0xa6, 0x8f, 0x00, 0x80, 0x9b, 0x80, 0x89, 0xa7, + 0x30, 0x94, 0x80, 0x8a, 0xad, 0x92, 0x80, 0xa1, + 0xb8, 0x41, 0x06, 0x88, 0x80, 0xa4, 0x90, 0x80, + 0xb0, 0x9d, 0xef, 0x30, 0x08, 0xa5, 0x94, 0x80, + 0x98, 0x28, 0x08, 0x9f, 0x8d, 0x80, 0x41, 0x46, + 0x92, 0x40, 0xbc, 0x80, 0xce, 0x43, 0x99, 0xe5, + 0xee, 0x90, 0x40, 0xc3, 0x4a, 0xbb, 0x44, 0x2e, + 0x4f, 0xd0, 0x42, 0x46, 0x60, 0x21, 0xb8, 0x42, + 0x38, 0x86, 0x9e, 0xf0, 0x9d, 0x91, 0xaf, 0x8f, + 0x83, 0x9e, 0x94, 0x84, 0x92, 0x42, 0xaf, 0xbf, + 0xff, 0xca, 0x20, 0xc1, 0x8c, 0xbf, 0x08, 0x80, + 0x9b, 0x57, 0xf7, 0x87, 0x44, 0xd5, 0xa9, 0x88, + 0x60, 0x22, 0xf6, 0x41, 0x1e, 0xb0, 0x82, 0x90, + 0x1f, 0x41, 0x8b, 0x49, 0x03, 0xea, 0x84, 0x8c, + 0x82, 0x88, 0x86, 0x89, 0x57, 0x65, 0xd4, 0x80, + 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, + 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, + 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, + 0x98, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, + 0x9e, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, + 0x9e, 0x80, 0x98, 0x07, 0x49, 0x33, 0xac, 0x89, + 0x86, 0x8f, 0x80, 0x41, 0x70, 0xab, 0x45, 0x13, + 0x40, 0xc4, 0xba, 0xc3, 0x30, 0x44, 0xb3, 0x18, + 0x9a, 0x01, 0x00, 0x08, 0x80, 0x89, 0x03, 0x00, + 0x00, 0x28, 0x18, 0x00, 0x00, 0x02, 0x01, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, + 0x06, 0x03, 0x03, 0x00, 0x80, 0x89, 0x80, 0x90, + 0x22, 0x04, 0x80, 0x90, 0x51, 0x43, 0x60, 0xa6, + 0xdd, 0xa1, 0x50, 0x34, 0x8a, 0x40, 0xdd, 0x81, + 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e, 0x42, + 0x1d, 0x45, 0xe1, 0x53, 0x4a, }; -static const uint8_t unicode_prop_ID_Start_index[96] = { - 0xf6, 0x03, 0x20, 0xa6, 0x07, 0x00, 0xb1, 0x09, - 0x00, 0xba, 0x0a, 0x00, 0xd1, 0x0b, 0x20, 0x62, - 0x0d, 0x40, 0x01, 0x0f, 0x20, 0x5e, 0x12, 0x00, - 0xf9, 0x16, 0x00, 0x17, 0x1a, 0x20, 0xc0, 0x1d, - 0x20, 0x9d, 0x20, 0x00, 0x68, 0x2d, 0x00, 0x00, - 0x32, 0x20, 0xc0, 0xa7, 0x20, 0x29, 0xaa, 0x00, - 0xa4, 0xd7, 0x20, 0xc8, 0xfd, 0x20, 0x75, 0x01, - 0x01, 0x37, 0x07, 0x01, 0x36, 0x0a, 0x21, 0xf7, - 0x0f, 0x21, 0xa9, 0x12, 0x01, 0x30, 0x16, 0x21, - 0x8a, 0x1a, 0x01, 0x9a, 0x23, 0x01, 0x80, 0x6e, - 0x21, 0x89, 0xbc, 0x21, 0xc1, 0xd6, 0x01, 0xc5, - 0xe8, 0x21, 0x73, 0xee, 0x01, 0x1e, 0xfa, 0x02, +static const uint8_t unicode_prop_ID_Start_index[99] = { + 0xf6, 0x03, 0x20, 0xa6, 0x07, 0x00, 0xa9, 0x09, + 0x00, 0xb4, 0x0a, 0x00, 0xba, 0x0b, 0x00, 0x3e, + 0x0d, 0x00, 0xe0, 0x0e, 0x20, 0x57, 0x12, 0x00, + 0xeb, 0x16, 0x00, 0xca, 0x19, 0x20, 0xc0, 0x1d, + 0x60, 0x80, 0x20, 0x00, 0x2e, 0x2d, 0x00, 0xc0, + 0x31, 0x20, 0x89, 0xa7, 0x20, 0xf0, 0xa9, 0x00, + 0xe3, 0xab, 0x00, 0x3e, 0xfd, 0x00, 0xfb, 0x00, + 0x21, 0x37, 0x07, 0x61, 0x01, 0x0a, 0x01, 0x1d, + 0x0f, 0x21, 0x2c, 0x12, 0x01, 0xc8, 0x14, 0x21, + 0xd1, 0x19, 0x21, 0x47, 0x1d, 0x01, 0x39, 0x6a, + 0x21, 0x09, 0x8d, 0x01, 0xbc, 0xd4, 0x01, 0xa9, + 0xd7, 0x21, 0x3a, 0xee, 0x01, 0xde, 0xa6, 0x22, + 0x4b, 0x13, 0x03, }; -static const uint8_t unicode_prop_ID_Continue1_table[607] = { +static const uint8_t unicode_prop_ID_Continue1_table[626] = { 0xaf, 0x89, 0xa4, 0x80, 0xd6, 0x80, 0x42, 0x47, 0xef, 0x96, 0x80, 0x40, 0xfa, 0x84, 0x41, 0x08, 0xac, 0x00, 0x01, 0x01, 0x00, 0xc7, 0x8a, 0xaf, @@ -445,14 +453,14 @@ static const uint8_t unicode_prop_ID_Continue1_table[607] = { 0x09, 0x89, 0x8d, 0x01, 0x82, 0xb7, 0x00, 0x23, 0x09, 0x12, 0x80, 0x93, 0x8b, 0x10, 0x8a, 0x82, 0xb7, 0x00, 0x38, 0x10, 0x82, 0x93, 0x09, 0x89, - 0x89, 0x28, 0x82, 0xb7, 0x00, 0x31, 0x09, 0x17, - 0x81, 0x89, 0x09, 0x89, 0x91, 0x80, 0xba, 0x22, + 0x89, 0x28, 0x82, 0xb7, 0x00, 0x31, 0x09, 0x16, + 0x82, 0x89, 0x09, 0x89, 0x91, 0x80, 0xba, 0x22, 0x10, 0x83, 0x88, 0x80, 0x8d, 0x89, 0x8f, 0x84, 0xb8, 0x30, 0x10, 0x1e, 0x81, 0x8a, 0x09, 0x89, 0x90, 0x82, 0xb7, 0x00, 0x30, 0x10, 0x1e, 0x81, 0x8a, 0x09, 0x89, 0x8f, 0x83, 0xb6, 0x08, 0x30, - 0x10, 0x83, 0x88, 0x80, 0x89, 0x09, 0x89, 0x91, - 0x81, 0xc5, 0x03, 0x28, 0x00, 0x3d, 0x89, 0x09, + 0x10, 0x83, 0x88, 0x80, 0x89, 0x09, 0x89, 0x90, + 0x82, 0xc5, 0x03, 0x28, 0x00, 0x3d, 0x89, 0x09, 0xbc, 0x01, 0x86, 0x8b, 0x38, 0x89, 0xd6, 0x01, 0x88, 0x8a, 0x29, 0x89, 0xbd, 0x0d, 0x89, 0x8a, 0x00, 0x00, 0x03, 0x81, 0xb0, 0x93, 0x01, 0x84, @@ -464,67 +472,70 @@ static const uint8_t unicode_prop_ID_Continue1_table[607] = { 0x89, 0x40, 0x8e, 0x80, 0xf5, 0x8b, 0x83, 0x8b, 0x89, 0x89, 0xff, 0x8a, 0xbb, 0x84, 0xb8, 0x89, 0x80, 0x9c, 0x81, 0x8a, 0x85, 0x89, 0x95, 0x8d, - 0xc1, 0x84, 0xae, 0x90, 0x8a, 0x89, 0x90, 0x88, - 0x8b, 0x82, 0x9d, 0x8c, 0x81, 0x89, 0xab, 0x8d, - 0xaf, 0x93, 0x87, 0x89, 0x85, 0x89, 0xf5, 0x10, - 0x94, 0x18, 0x28, 0x0a, 0x40, 0xc5, 0xb9, 0x04, - 0x42, 0x3e, 0x81, 0x92, 0x80, 0xfa, 0x8c, 0x18, - 0x82, 0x8b, 0x4b, 0xfd, 0x82, 0x40, 0x8c, 0x80, - 0xdf, 0x9f, 0x42, 0x29, 0x85, 0xe8, 0x81, 0x60, - 0x75, 0x84, 0x89, 0xc4, 0x03, 0x89, 0x9f, 0x81, - 0xcf, 0x81, 0x41, 0x0f, 0x02, 0x03, 0x80, 0x96, - 0x84, 0xd7, 0x81, 0xb1, 0x91, 0x89, 0x89, 0x85, - 0x91, 0x8c, 0x8a, 0x9b, 0x87, 0x98, 0x8c, 0xab, - 0x83, 0xae, 0x8d, 0x8e, 0x89, 0x8a, 0x80, 0x89, - 0x89, 0xae, 0x8d, 0x8b, 0x07, 0x09, 0x89, 0xa0, - 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08, 0x80, 0xa8, - 0x24, 0x81, 0x40, 0xeb, 0x38, 0x09, 0x89, 0x60, - 0x4f, 0x23, 0x80, 0x42, 0xe0, 0x8f, 0x8f, 0x8f, - 0x11, 0x97, 0x82, 0x40, 0xbf, 0x89, 0xa4, 0x80, - 0x42, 0xbc, 0x80, 0x40, 0xe1, 0x80, 0x40, 0x94, - 0x84, 0x41, 0x24, 0x89, 0x45, 0x56, 0x10, 0x0c, - 0x83, 0xa7, 0x13, 0x80, 0x40, 0xa4, 0x81, 0x42, - 0x3c, 0x1f, 0x89, 0x42, 0x0b, 0x8a, 0x40, 0xae, - 0x82, 0xb4, 0x8e, 0x9e, 0x89, 0x8e, 0x83, 0xac, - 0x8a, 0xb4, 0x89, 0x2a, 0xa3, 0x8d, 0x80, 0x89, - 0x21, 0xab, 0x80, 0x8b, 0x82, 0xaf, 0x8d, 0x3b, - 0x82, 0x89, 0xd1, 0x8b, 0x28, 0x40, 0x9f, 0x8b, - 0x84, 0x89, 0x2b, 0xb6, 0x08, 0x31, 0x09, 0x82, - 0x88, 0x80, 0x89, 0x09, 0x32, 0x84, 0x40, 0xbf, - 0x91, 0x88, 0x89, 0x18, 0xd0, 0x93, 0x8b, 0x89, - 0x40, 0xd4, 0x31, 0x88, 0x9a, 0x81, 0xd1, 0x90, - 0x8e, 0x89, 0xd0, 0x8c, 0x87, 0x89, 0xd2, 0x8e, - 0x83, 0x89, 0x40, 0xf1, 0x8e, 0x40, 0xa4, 0x89, - 0x40, 0xe6, 0x31, 0x32, 0x80, 0x9b, 0x89, 0xa7, - 0x30, 0x1f, 0x80, 0x88, 0x8a, 0xad, 0x8f, 0x41, - 0x94, 0x38, 0x87, 0x8f, 0x89, 0xb7, 0x95, 0x80, - 0x8d, 0xf9, 0x2a, 0x00, 0x08, 0x30, 0x07, 0x89, - 0xaf, 0x20, 0x08, 0x27, 0x89, 0x41, 0x48, 0x83, - 0x60, 0x4b, 0x68, 0x89, 0x40, 0x85, 0x84, 0xba, - 0x86, 0x98, 0x89, 0x43, 0xf4, 0x00, 0xb6, 0x33, - 0x60, 0x4d, 0x09, 0x81, 0x54, 0xc5, 0x22, 0x2f, + 0x01, 0xbe, 0x84, 0xae, 0x90, 0x8a, 0x89, 0x90, + 0x88, 0x8b, 0x82, 0x9d, 0x8c, 0x81, 0x89, 0xab, + 0x8d, 0xaf, 0x93, 0x87, 0x89, 0x85, 0x89, 0xf5, + 0x10, 0x94, 0x18, 0x28, 0x0a, 0x40, 0xc5, 0xb9, + 0x04, 0x42, 0x3e, 0x81, 0x92, 0x80, 0xfa, 0x8c, + 0x18, 0x82, 0x8b, 0x4b, 0xfd, 0x82, 0x40, 0x8c, + 0x80, 0xdf, 0x9f, 0x42, 0x29, 0x85, 0xe8, 0x81, + 0x60, 0x75, 0x84, 0x89, 0xc4, 0x03, 0x89, 0x9f, + 0x81, 0xcf, 0x81, 0x41, 0x0f, 0x02, 0x03, 0x80, + 0x96, 0x23, 0x80, 0xd2, 0x81, 0xb1, 0x91, 0x89, + 0x89, 0x85, 0x91, 0x8c, 0x8a, 0x9b, 0x87, 0x98, + 0x8c, 0xab, 0x83, 0xae, 0x8d, 0x8e, 0x89, 0x8a, + 0x80, 0x89, 0x89, 0xae, 0x8d, 0x8b, 0x07, 0x09, + 0x89, 0xa0, 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08, + 0x80, 0xa8, 0x24, 0x81, 0x40, 0xeb, 0x38, 0x09, + 0x89, 0x60, 0x4f, 0x23, 0x80, 0x42, 0xe0, 0x8f, + 0x8f, 0x8f, 0x11, 0x97, 0x82, 0x40, 0xbf, 0x89, + 0xa4, 0x80, 0x42, 0xbc, 0x80, 0x40, 0xe1, 0x80, + 0x40, 0x94, 0x84, 0x41, 0x24, 0x89, 0x45, 0x56, + 0x10, 0x0c, 0x83, 0xa7, 0x13, 0x80, 0x40, 0xa4, + 0x81, 0x42, 0x3c, 0x1f, 0x89, 0x41, 0x70, 0x81, + 0x40, 0x98, 0x8a, 0x40, 0xae, 0x82, 0xb4, 0x8e, + 0x9e, 0x89, 0x8e, 0x83, 0xac, 0x8a, 0xb4, 0x89, + 0x2a, 0xa3, 0x8d, 0x80, 0x89, 0x21, 0xab, 0x80, + 0x8b, 0x82, 0xaf, 0x8d, 0x3b, 0x80, 0x8b, 0xd1, + 0x8b, 0x28, 0x40, 0x9f, 0x8b, 0x84, 0x89, 0x2b, + 0xb6, 0x08, 0x31, 0x09, 0x82, 0x88, 0x80, 0x89, + 0x09, 0x32, 0x84, 0x40, 0xbf, 0x91, 0x88, 0x89, + 0x18, 0xd0, 0x93, 0x8b, 0x89, 0x40, 0xd4, 0x31, + 0x88, 0x9a, 0x81, 0xd1, 0x90, 0x8e, 0x89, 0xd0, + 0x8c, 0x87, 0x89, 0xd2, 0x8e, 0x83, 0x89, 0x40, + 0xf1, 0x8e, 0x40, 0xa4, 0x89, 0xc5, 0x28, 0x09, + 0x18, 0x00, 0x81, 0x8b, 0x89, 0xf6, 0x31, 0x32, + 0x80, 0x9b, 0x89, 0xa7, 0x30, 0x1f, 0x80, 0x88, + 0x8a, 0xad, 0x8f, 0x41, 0x94, 0x38, 0x87, 0x8f, + 0x89, 0xb7, 0x95, 0x80, 0x8d, 0xf9, 0x2a, 0x00, + 0x08, 0x30, 0x07, 0x89, 0xaf, 0x20, 0x08, 0x27, + 0x89, 0x41, 0x48, 0x83, 0x60, 0x4b, 0x68, 0x89, + 0x40, 0x85, 0x84, 0xba, 0x86, 0x98, 0x89, 0x43, + 0xf4, 0x00, 0xb6, 0x33, 0xd0, 0x80, 0x8a, 0x81, + 0x60, 0x4c, 0xaa, 0x81, 0x54, 0xc5, 0x22, 0x2f, 0x39, 0x86, 0x9d, 0x83, 0x40, 0x93, 0x82, 0x45, 0x88, 0xb1, 0x41, 0xff, 0xb6, 0x83, 0xb1, 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e, 0x45, 0x4f, 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41, 0x04, 0x86, 0x88, 0x89, 0x41, 0xa1, 0x8d, 0x45, 0xd5, 0x86, 0xec, - 0x34, 0x89, 0x6c, 0x17, 0xa5, 0x40, 0xef, + 0x34, 0x89, 0x52, 0x95, 0x89, 0x6c, 0x05, 0x05, + 0x40, 0xef, }; -static const uint8_t unicode_prop_ID_Continue1_index[57] = { +static const uint8_t unicode_prop_ID_Continue1_index[60] = { 0xfa, 0x06, 0x00, 0x84, 0x09, 0x00, 0xf0, 0x0a, 0x00, 0x70, 0x0c, 0x00, 0xf4, 0x0d, 0x00, 0x4a, - 0x10, 0x20, 0x1a, 0x18, 0x20, 0x74, 0x1b, 0x00, - 0xe2, 0x20, 0x00, 0x28, 0xa8, 0x20, 0x7e, 0xaa, - 0x20, 0x40, 0xff, 0x00, 0x03, 0x10, 0x21, 0xeb, - 0x12, 0x01, 0x41, 0x16, 0x01, 0x40, 0x1c, 0x61, - 0x37, 0x6b, 0x21, 0x76, 0xda, 0x01, 0xf0, 0x01, - 0x0e, + 0x10, 0x20, 0x1a, 0x18, 0x20, 0x74, 0x1b, 0x20, + 0xdd, 0x20, 0x00, 0x0c, 0xa8, 0x00, 0x5a, 0xaa, + 0x20, 0x1a, 0xff, 0x00, 0xad, 0x0e, 0x01, 0x38, + 0x12, 0x21, 0xc1, 0x15, 0x21, 0xe5, 0x19, 0x21, + 0xaa, 0x1d, 0x21, 0x8c, 0xd1, 0x41, 0x4a, 0xe1, + 0x21, 0xf0, 0x01, 0x0e, }; #ifdef CONFIG_ALL_UNICODE -static const uint8_t unicode_cc_table[831] = { +static const uint8_t unicode_cc_table[851] = { 0xb2, 0xcf, 0xd4, 0x00, 0xe8, 0x03, 0xdc, 0x00, 0xe8, 0x00, 0xd8, 0x04, 0xdc, 0x01, 0xca, 0x03, 0xdc, 0x01, 0xca, 0x0a, 0xdc, 0x04, 0x01, 0x03, @@ -574,77 +585,81 @@ static const uint8_t unicode_cc_table[831] = { 0x9a, 0x00, 0xe4, 0xb0, 0x5e, 0x00, 0xde, 0xc0, 0x00, 0xdc, 0xb0, 0xaa, 0xc0, 0x00, 0xdc, 0xb0, 0x16, 0x00, 0x09, 0x93, 0xc7, 0x81, 0x00, 0xdc, - 0xaf, 0xc4, 0x05, 0xdc, 0xc1, 0x00, 0xdc, 0xb0, - 0x45, 0x00, 0x07, 0x8e, 0x00, 0x09, 0xa5, 0xc0, - 0x00, 0xdc, 0xc6, 0xb0, 0x05, 0x01, 0x09, 0xb0, - 0x09, 0x00, 0x07, 0x8a, 0x01, 0x09, 0xb0, 0x12, - 0x00, 0x07, 0xb0, 0x67, 0xc2, 0x41, 0x00, 0x04, - 0xdc, 0xc1, 0x03, 0xdc, 0xc0, 0x41, 0x00, 0x05, - 0x01, 0x83, 0x00, 0xdc, 0x85, 0xc0, 0x82, 0xc1, - 0xb0, 0x95, 0xc1, 0x00, 0xdc, 0xc6, 0x00, 0xdc, - 0xc1, 0x00, 0xea, 0x00, 0xd6, 0x00, 0xdc, 0x00, - 0xca, 0xe4, 0x00, 0xe8, 0x01, 0xe4, 0x00, 0xdc, - 0x80, 0xc0, 0x00, 0xe9, 0x00, 0xdc, 0xc0, 0x00, - 0xdc, 0xb2, 0x9f, 0xc1, 0x01, 0x01, 0xc3, 0x02, - 0x01, 0xc1, 0x83, 0xc0, 0x82, 0x01, 0x01, 0xc0, - 0x00, 0xdc, 0xc0, 0x01, 0x01, 0x03, 0xdc, 0xc0, - 0xb8, 0x03, 0xcd, 0xc2, 0xb0, 0x5c, 0x00, 0x09, - 0xb0, 0x2f, 0xdf, 0xb1, 0xf9, 0x00, 0xda, 0x00, - 0xe4, 0x00, 0xe8, 0x00, 0xde, 0x01, 0xe0, 0xb0, - 0x38, 0x01, 0x08, 0xb8, 0x6d, 0xa3, 0xc0, 0x83, - 0xc9, 0x9f, 0xc1, 0xb0, 0x1f, 0xc1, 0xb0, 0xe3, - 0x00, 0x09, 0xb0, 0x8c, 0x00, 0x09, 0x9a, 0xd1, - 0xb0, 0x08, 0x02, 0xdc, 0xa4, 0x00, 0x09, 0xb0, - 0x2e, 0x00, 0x07, 0x8b, 0x00, 0x09, 0xb0, 0xbe, - 0xc0, 0x80, 0xc1, 0x00, 0xdc, 0x81, 0xc1, 0x84, - 0xc1, 0x80, 0xc0, 0xb0, 0x03, 0x00, 0x09, 0xb0, - 0xc5, 0x00, 0x09, 0xb8, 0x46, 0xff, 0x00, 0x1a, - 0xb2, 0xd0, 0xc6, 0x06, 0xdc, 0xc1, 0xb3, 0x9c, - 0x00, 0xdc, 0xb0, 0xb1, 0x00, 0xdc, 0xb0, 0x64, - 0xc4, 0xb6, 0x61, 0x00, 0xdc, 0x80, 0xc0, 0xa7, - 0xc0, 0x00, 0x01, 0x00, 0xdc, 0x83, 0x00, 0x09, - 0xb0, 0x74, 0xc0, 0x00, 0xdc, 0xb2, 0x0c, 0xc3, - 0xb1, 0xed, 0x01, 0xdc, 0xc2, 0x00, 0xdc, 0xc0, - 0x03, 0xdc, 0xb0, 0xc4, 0x00, 0x09, 0xb0, 0x07, - 0x00, 0x09, 0xb0, 0x08, 0x00, 0x09, 0x00, 0x07, - 0xb0, 0x14, 0xc2, 0xaf, 0x01, 0x09, 0xb0, 0x0d, - 0x00, 0x07, 0xb0, 0x1b, 0x00, 0x09, 0x88, 0x00, - 0x07, 0xb0, 0x39, 0x00, 0x09, 0x00, 0x07, 0xb0, - 0x81, 0x00, 0x07, 0x00, 0x09, 0xb0, 0x1f, 0x01, - 0x07, 0x8f, 0x00, 0x09, 0x97, 0xc6, 0x82, 0xc4, - 0xb0, 0x9c, 0x00, 0x09, 0x82, 0x00, 0x07, 0x96, - 0xc0, 0xb0, 0x32, 0x00, 0x09, 0x00, 0x07, 0xb0, - 0xca, 0x00, 0x09, 0x00, 0x07, 0xb0, 0x4d, 0x00, - 0x09, 0xb0, 0x45, 0x00, 0x09, 0x00, 0x07, 0xb0, - 0x42, 0x00, 0x09, 0xb0, 0xdc, 0x00, 0x09, 0x00, - 0x07, 0xb1, 0x74, 0x00, 0x09, 0xb0, 0x22, 0x00, + 0xaf, 0xc4, 0x05, 0xdc, 0xc1, 0x00, 0xdc, 0x80, + 0x01, 0xdc, 0xb0, 0x42, 0x00, 0x07, 0x8e, 0x00, + 0x09, 0xa5, 0xc0, 0x00, 0xdc, 0xc6, 0xb0, 0x05, + 0x01, 0x09, 0xb0, 0x09, 0x00, 0x07, 0x8a, 0x01, + 0x09, 0xb0, 0x12, 0x00, 0x07, 0xb0, 0x67, 0xc2, + 0x41, 0x00, 0x04, 0xdc, 0xc1, 0x03, 0xdc, 0xc0, + 0x41, 0x00, 0x05, 0x01, 0x83, 0x00, 0xdc, 0x85, + 0xc0, 0x82, 0xc1, 0xb0, 0x95, 0xc1, 0x00, 0xdc, + 0xc6, 0x00, 0xdc, 0xc1, 0x00, 0xea, 0x00, 0xd6, + 0x00, 0xdc, 0x00, 0xca, 0xe4, 0x00, 0xe8, 0x01, + 0xe4, 0x00, 0xdc, 0x80, 0xc0, 0x00, 0xe9, 0x00, + 0xdc, 0xc0, 0x00, 0xdc, 0xb2, 0x9f, 0xc1, 0x01, + 0x01, 0xc3, 0x02, 0x01, 0xc1, 0x83, 0xc0, 0x82, + 0x01, 0x01, 0xc0, 0x00, 0xdc, 0xc0, 0x01, 0x01, + 0x03, 0xdc, 0xc0, 0xb8, 0x03, 0xcd, 0xc2, 0xb0, + 0x5c, 0x00, 0x09, 0xb0, 0x2f, 0xdf, 0xb1, 0xf9, + 0x00, 0xda, 0x00, 0xe4, 0x00, 0xe8, 0x00, 0xde, + 0x01, 0xe0, 0xb0, 0x38, 0x01, 0x08, 0xb8, 0x6d, + 0xa3, 0xc0, 0x83, 0xc9, 0x9f, 0xc1, 0xb0, 0x1f, + 0xc1, 0xb0, 0xe3, 0x00, 0x09, 0xa4, 0x00, 0x09, + 0xb0, 0x66, 0x00, 0x09, 0x9a, 0xd1, 0xb0, 0x08, + 0x02, 0xdc, 0xa4, 0x00, 0x09, 0xb0, 0x2e, 0x00, + 0x07, 0x8b, 0x00, 0x09, 0xb0, 0xbe, 0xc0, 0x80, + 0xc1, 0x00, 0xdc, 0x81, 0xc1, 0x84, 0xc1, 0x80, + 0xc0, 0xb0, 0x03, 0x00, 0x09, 0xb0, 0xc5, 0x00, + 0x09, 0xb8, 0x46, 0xff, 0x00, 0x1a, 0xb2, 0xd0, + 0xc6, 0x06, 0xdc, 0xc1, 0xb3, 0x9c, 0x00, 0xdc, + 0xb0, 0xb1, 0x00, 0xdc, 0xb0, 0x64, 0xc4, 0xb6, + 0x61, 0x00, 0xdc, 0x80, 0xc0, 0xa7, 0xc0, 0x00, + 0x01, 0x00, 0xdc, 0x83, 0x00, 0x09, 0xb0, 0x74, + 0xc0, 0x00, 0xdc, 0xb2, 0x0c, 0xc3, 0xb1, 0x52, + 0xc1, 0xb0, 0x68, 0x01, 0xdc, 0xc2, 0x00, 0xdc, + 0xc0, 0x03, 0xdc, 0xb0, 0xc4, 0x00, 0x09, 0xb0, + 0x07, 0x00, 0x09, 0xb0, 0x08, 0x00, 0x09, 0x00, + 0x07, 0xb0, 0x14, 0xc2, 0xaf, 0x01, 0x09, 0xb0, + 0x0d, 0x00, 0x07, 0xb0, 0x1b, 0x00, 0x09, 0x88, + 0x00, 0x07, 0xb0, 0x39, 0x00, 0x09, 0x00, 0x07, + 0xb0, 0x81, 0x00, 0x07, 0x00, 0x09, 0xb0, 0x1f, + 0x01, 0x07, 0x8f, 0x00, 0x09, 0x97, 0xc6, 0x82, + 0xc4, 0xb0, 0x9c, 0x00, 0x09, 0x82, 0x00, 0x07, + 0x96, 0xc0, 0xb0, 0x32, 0x00, 0x09, 0x00, 0x07, + 0xb0, 0xca, 0x00, 0x09, 0x00, 0x07, 0xb0, 0x4d, + 0x00, 0x09, 0xb0, 0x45, 0x00, 0x09, 0x00, 0x07, + 0xb0, 0x42, 0x00, 0x09, 0xb0, 0xdc, 0x00, 0x09, + 0x00, 0x07, 0xb0, 0xd1, 0x01, 0x09, 0x83, 0x00, + 0x07, 0xb0, 0x6b, 0x00, 0x09, 0xb0, 0x22, 0x00, 0x09, 0x91, 0x00, 0x09, 0xb0, 0x20, 0x00, 0x09, 0xb1, 0x74, 0x00, 0x09, 0xb0, 0xd1, 0x00, 0x07, 0x80, 0x01, 0x09, 0xb0, 0x20, 0x00, 0x09, 0xb8, - 0x45, 0x27, 0x04, 0x01, 0xb0, 0x0a, 0xc6, 0xb8, - 0x49, 0x36, 0x00, 0x01, 0xb8, 0x0c, 0x95, 0x01, - 0xd8, 0x02, 0x01, 0x82, 0x00, 0xe2, 0x04, 0xd8, - 0x87, 0x07, 0xdc, 0x81, 0xc4, 0x01, 0xdc, 0x9d, - 0xc3, 0xb0, 0x63, 0xc2, 0xb8, 0x05, 0x8a, 0xc6, - 0x80, 0xd0, 0x81, 0xc6, 0x80, 0xc1, 0x80, 0xc4, - 0xb0, 0xd4, 0xc6, 0xb1, 0x84, 0xc3, 0xb5, 0xaf, - 0x06, 0xdc, 0xb0, 0x3c, 0xc5, 0x00, 0x07, + 0x45, 0x27, 0x04, 0x01, 0xb0, 0x0a, 0xc6, 0xb4, + 0x88, 0x01, 0x06, 0xb8, 0x44, 0x7b, 0x00, 0x01, + 0xb8, 0x0c, 0x95, 0x01, 0xd8, 0x02, 0x01, 0x82, + 0x00, 0xe2, 0x04, 0xd8, 0x87, 0x07, 0xdc, 0x81, + 0xc4, 0x01, 0xdc, 0x9d, 0xc3, 0xb0, 0x63, 0xc2, + 0xb8, 0x05, 0x8a, 0xc6, 0x80, 0xd0, 0x81, 0xc6, + 0x80, 0xc1, 0x80, 0xc4, 0xb0, 0xd4, 0xc6, 0xb1, + 0x84, 0xc3, 0xb5, 0xaf, 0x06, 0xdc, 0xb0, 0x3c, + 0xc5, 0x00, 0x07, }; -static const uint8_t unicode_cc_index[78] = { +static const uint8_t unicode_cc_index[81] = { 0x4d, 0x03, 0x00, 0x97, 0x05, 0x20, 0xc6, 0x05, 0x00, 0xe7, 0x06, 0x00, 0x45, 0x07, 0x00, 0xe2, 0x08, 0x00, 0x53, 0x09, 0x00, 0xcd, 0x0b, 0x20, 0x38, 0x0e, 0x00, 0x73, 0x0f, 0x20, 0x5d, 0x13, - 0x20, 0x60, 0x1a, 0x20, 0xe6, 0x1b, 0x20, 0xfa, - 0x1c, 0x00, 0x00, 0x1e, 0x20, 0x80, 0x2d, 0x00, - 0x06, 0xa8, 0x00, 0xbe, 0xaa, 0x00, 0x76, 0x03, - 0x01, 0x4d, 0x0f, 0x01, 0xcb, 0x11, 0x21, 0x5e, - 0x14, 0x01, 0x3b, 0x18, 0x21, 0xf0, 0x6a, 0x41, - 0xaa, 0xd1, 0x01, 0x4b, 0xe9, 0x01, + 0x20, 0x60, 0x1a, 0x20, 0xaa, 0x1b, 0x00, 0xf4, + 0x1c, 0x00, 0xfe, 0x1d, 0x20, 0x7f, 0x2d, 0x20, + 0xf0, 0xa6, 0x00, 0xb2, 0xaa, 0x00, 0xfe, 0x01, + 0x01, 0xab, 0x0e, 0x01, 0x73, 0x11, 0x21, 0x70, + 0x13, 0x01, 0xb8, 0x16, 0x01, 0x9a, 0x1a, 0x01, + 0x9f, 0xbc, 0x01, 0x22, 0xe0, 0x01, 0x4b, 0xe9, + 0x01, }; -static const uint32_t unicode_decomp_table1[687] = { +static const uint32_t unicode_decomp_table1[690] = { 0x00280081, 0x002a0097, 0x002a8081, 0x002bc097, 0x002c8115, 0x002d0097, 0x002d4081, 0x002e0097, 0x002e4115, 0x002f0199, 0x00302016, 0x00400842, @@ -771,55 +786,56 @@ static const uint32_t unicode_decomp_table1[687] = { 0x0cf54119, 0x0cf5c097, 0x0cf6009b, 0x0cf64099, 0x0cf68217, 0x0cf78119, 0x0cf804a1, 0x0cfa4525, 0x0cfcc525, 0x0cff4125, 0x0cffc099, 0x29a70103, - 0x29dc0081, 0x29fe0103, 0x2ad70203, 0x3e401482, - 0x3e4a7f82, 0x3e6a3f82, 0x3e8aa102, 0x3e9b0110, - 0x3e9c2f82, 0x3eb3c590, 0x3ec00197, 0x3ec0c119, - 0x3ec1413f, 0x3ec4c2af, 0x3ec74184, 0x3ec804ad, - 0x3eca4081, 0x3eca8304, 0x3ecc03a0, 0x3ece02a0, - 0x3ecf8084, 0x3ed00120, 0x3ed0c120, 0x3ed184ae, - 0x3ed3c085, 0x3ed4312d, 0x3ef4cbad, 0x3efa892f, - 0x3eff022d, 0x3f002f2f, 0x3f1782a5, 0x3f18c0b1, - 0x3f1907af, 0x3f1cffaf, 0x3f3c81a5, 0x3f3d64af, - 0x3f542031, 0x3f649b31, 0x3f7c0131, 0x3f7c83b3, - 0x3f7e40b1, 0x3f7e80bd, 0x3f7ec0bb, 0x3f7f00b3, - 0x3f840503, 0x3f8c01ad, 0x3f8cc315, 0x3f8e462d, - 0x3f91cc03, 0x3f97c695, 0x3f9c01af, 0x3f9d0085, - 0x3f9d852f, 0x3fa03aad, 0x3fbd442f, 0x3fc06f1f, - 0x3fd7c11f, 0x3fd85fad, 0x3fe80081, 0x3fe84f1f, - 0x3ff0831f, 0x3ff2831f, 0x3ff4831f, 0x3ff6819f, - 0x3ff80783, 0x44268192, 0x442ac092, 0x444b8112, - 0x44d2c112, 0x452ec212, 0x456e8112, 0x74578392, - 0x746ec312, 0x75000d1f, 0x75068d1f, 0x750d0d1f, - 0x7513839f, 0x7515891f, 0x751a0d1f, 0x75208d1f, - 0x75271015, 0x752f439f, 0x7531459f, 0x75340d1f, - 0x753a8d1f, 0x75410395, 0x7543441f, 0x7545839f, - 0x75478d1f, 0x754e0795, 0x7552839f, 0x75548d1f, - 0x755b0d1f, 0x75618d1f, 0x75680d1f, 0x756e8d1f, - 0x75750d1f, 0x757b8d1f, 0x75820d1f, 0x75888d1f, - 0x758f0d1f, 0x75958d1f, 0x759c0d1f, 0x75a28d1f, - 0x75a90103, 0x75aa089f, 0x75ae4081, 0x75ae839f, - 0x75b04081, 0x75b08c9f, 0x75b6c081, 0x75b7032d, - 0x75b8889f, 0x75bcc081, 0x75bd039f, 0x75bec081, - 0x75bf0c9f, 0x75c54081, 0x75c5832d, 0x75c7089f, - 0x75cb4081, 0x75cb839f, 0x75cd4081, 0x75cd8c9f, - 0x75d3c081, 0x75d4032d, 0x75d5889f, 0x75d9c081, - 0x75da039f, 0x75dbc081, 0x75dc0c9f, 0x75e24081, - 0x75e2832d, 0x75e4089f, 0x75e84081, 0x75e8839f, - 0x75ea4081, 0x75ea8c9f, 0x75f0c081, 0x75f1042d, - 0x75f3851f, 0x75f6051f, 0x75f8851f, 0x75fb051f, - 0x75fd851f, 0x7b80022d, 0x7b814dad, 0x7b884203, - 0x7b89c081, 0x7b8a452d, 0x7b8d0403, 0x7b908081, - 0x7b91dc03, 0x7ba0052d, 0x7ba2c8ad, 0x7ba84483, - 0x7baac8ad, 0x7c400097, 0x7c404521, 0x7c440d25, - 0x7c4a8087, 0x7c4ac115, 0x7c4b4117, 0x7c4c0d1f, - 0x7c528217, 0x7c538099, 0x7c53c097, 0x7c5a8197, - 0x7c640097, 0x7c80012f, 0x7c808081, 0x7c841603, - 0x7c9004c1, 0x7c940103, 0xbe0001ac, 0xbe00d110, - 0xbe0947ac, 0xbe0d3910, 0xbe29872c, 0xbe2d022c, - 0xbe2e3790, 0xbe49ff90, 0xbe69bc10, + 0x29dc0081, 0x29fe0103, 0x2ad70203, 0x2ada4081, + 0x3e401482, 0x3e4a7f82, 0x3e6a3f82, 0x3e8aa102, + 0x3e9b0110, 0x3e9c2f82, 0x3eb3c590, 0x3ec00197, + 0x3ec0c119, 0x3ec1413f, 0x3ec4c2af, 0x3ec74184, + 0x3ec804ad, 0x3eca4081, 0x3eca8304, 0x3ecc03a0, + 0x3ece02a0, 0x3ecf8084, 0x3ed00120, 0x3ed0c120, + 0x3ed184ae, 0x3ed3c085, 0x3ed4312d, 0x3ef4cbad, + 0x3efa892f, 0x3eff022d, 0x3f002f2f, 0x3f1782a5, + 0x3f18c0b1, 0x3f1907af, 0x3f1cffaf, 0x3f3c81a5, + 0x3f3d64af, 0x3f542031, 0x3f649b31, 0x3f7c0131, + 0x3f7c83b3, 0x3f7e40b1, 0x3f7e80bd, 0x3f7ec0bb, + 0x3f7f00b3, 0x3f840503, 0x3f8c01ad, 0x3f8cc315, + 0x3f8e462d, 0x3f91cc03, 0x3f97c695, 0x3f9c01af, + 0x3f9d0085, 0x3f9d852f, 0x3fa03aad, 0x3fbd442f, + 0x3fc06f1f, 0x3fd7c11f, 0x3fd85fad, 0x3fe80081, + 0x3fe84f1f, 0x3ff0831f, 0x3ff2831f, 0x3ff4831f, + 0x3ff6819f, 0x3ff80783, 0x44268192, 0x442ac092, + 0x444b8112, 0x44d2c112, 0x452ec212, 0x456e8112, + 0x464e0092, 0x74578392, 0x746ec312, 0x75000d1f, + 0x75068d1f, 0x750d0d1f, 0x7513839f, 0x7515891f, + 0x751a0d1f, 0x75208d1f, 0x75271015, 0x752f439f, + 0x7531459f, 0x75340d1f, 0x753a8d1f, 0x75410395, + 0x7543441f, 0x7545839f, 0x75478d1f, 0x754e0795, + 0x7552839f, 0x75548d1f, 0x755b0d1f, 0x75618d1f, + 0x75680d1f, 0x756e8d1f, 0x75750d1f, 0x757b8d1f, + 0x75820d1f, 0x75888d1f, 0x758f0d1f, 0x75958d1f, + 0x759c0d1f, 0x75a28d1f, 0x75a90103, 0x75aa089f, + 0x75ae4081, 0x75ae839f, 0x75b04081, 0x75b08c9f, + 0x75b6c081, 0x75b7032d, 0x75b8889f, 0x75bcc081, + 0x75bd039f, 0x75bec081, 0x75bf0c9f, 0x75c54081, + 0x75c5832d, 0x75c7089f, 0x75cb4081, 0x75cb839f, + 0x75cd4081, 0x75cd8c9f, 0x75d3c081, 0x75d4032d, + 0x75d5889f, 0x75d9c081, 0x75da039f, 0x75dbc081, + 0x75dc0c9f, 0x75e24081, 0x75e2832d, 0x75e4089f, + 0x75e84081, 0x75e8839f, 0x75ea4081, 0x75ea8c9f, + 0x75f0c081, 0x75f1042d, 0x75f3851f, 0x75f6051f, + 0x75f8851f, 0x75fb051f, 0x75fd851f, 0x7b80022d, + 0x7b814dad, 0x7b884203, 0x7b89c081, 0x7b8a452d, + 0x7b8d0403, 0x7b908081, 0x7b91dc03, 0x7ba0052d, + 0x7ba2c8ad, 0x7ba84483, 0x7baac8ad, 0x7c400097, + 0x7c404521, 0x7c440d25, 0x7c4a8087, 0x7c4ac115, + 0x7c4b4117, 0x7c4c0d1f, 0x7c528217, 0x7c538099, + 0x7c53c097, 0x7c5a8197, 0x7c640097, 0x7c80012f, + 0x7c808081, 0x7c841603, 0x7c9004c1, 0x7c940103, + 0x7efc051f, 0xbe0001ac, 0xbe00d110, 0xbe0947ac, + 0xbe0d3910, 0xbe29872c, 0xbe2d022c, 0xbe2e3790, + 0xbe49ff90, 0xbe69bc10, }; -static const uint16_t unicode_decomp_table2[687] = { +static const uint16_t unicode_decomp_table2[690] = { 0x0020, 0x0000, 0x0061, 0x0002, 0x0004, 0x0006, 0x03bc, 0x0008, 0x000a, 0x000c, 0x0015, 0x0095, 0x00a5, 0x00b9, 0x00c1, 0x00c3, 0x00c7, 0x00cb, 0x00d1, 0x00d7, 0x00dd, 0x00e0, 0x00e6, 0x00f8, @@ -883,32 +899,33 @@ static const uint16_t unicode_decomp_table2[687] = { 0x10f4, 0x1100, 0x1105, 0x1111, 0x1141, 0x1149, 0x114d, 0x1153, 0x1157, 0x115a, 0x116e, 0x1171, 0x1175, 0x117b, 0x117d, 0x1181, 0x1184, 0x118c, 0x1192, 0x1196, 0x119c, 0x11a2, 0x11a8, 0x11ab, - 0xa76f, 0x11af, 0x11b3, 0x11bb, 0x120d, 0x130b, 0x1409, 0x148d, - 0x1492, 0x1550, 0x1569, 0x156f, 0x1575, 0x157b, 0x1587, 0x1593, - 0x002b, 0x159e, 0x15b6, 0x15ba, 0x15be, 0x15c2, 0x15c6, 0x15ca, - 0x15de, 0x15e2, 0x1646, 0x165f, 0x1685, 0x168b, 0x1749, 0x174f, - 0x1754, 0x1774, 0x1874, 0x187a, 0x190e, 0x19d0, 0x1a74, 0x1a7c, - 0x1a9a, 0x1a9f, 0x1ab3, 0x1abd, 0x1ac3, 0x1ad7, 0x1adc, 0x1ae2, - 0x1af0, 0x1b20, 0x1b2d, 0x1b35, 0x1b39, 0x1b4f, 0x1bc6, 0x1bd8, - 0x1bda, 0x1bdc, 0x3164, 0x1c1d, 0x1c1f, 0x1c21, 0x1c23, 0x1c25, - 0x1c27, 0x1c45, 0x1c53, 0x1c58, 0x1c61, 0x1c6a, 0x1c7c, 0x1c85, - 0x1ca5, 0x1cc0, 0x1cc2, 0x1cc4, 0x1cc6, 0x1cc8, 0x1cca, 0x1ccc, - 0x1cce, 0x1cee, 0x1cf0, 0x1cf2, 0x1cf4, 0x1cf6, 0x1cfd, 0x1cff, - 0x1d01, 0x1d03, 0x1d12, 0x1d14, 0x1d16, 0x1d18, 0x1d1a, 0x1d1c, - 0x1d1e, 0x1d20, 0x1d22, 0x1d24, 0x1d26, 0x1d28, 0x1d2a, 0x1d2c, - 0x1d2e, 0x1d32, 0x03f4, 0x1d34, 0x2207, 0x1d36, 0x2202, 0x1d38, - 0x1d40, 0x03f4, 0x1d42, 0x2207, 0x1d44, 0x2202, 0x1d46, 0x1d4e, - 0x03f4, 0x1d50, 0x2207, 0x1d52, 0x2202, 0x1d54, 0x1d5c, 0x03f4, - 0x1d5e, 0x2207, 0x1d60, 0x2202, 0x1d62, 0x1d6a, 0x03f4, 0x1d6c, - 0x2207, 0x1d6e, 0x2202, 0x1d70, 0x1d7a, 0x1d7c, 0x1d7e, 0x1d80, - 0x1d82, 0x1d84, 0x1d8a, 0x1da7, 0x062d, 0x1daf, 0x1dbb, 0x062c, - 0x1dcb, 0x1e3b, 0x1e47, 0x1e5a, 0x1e6c, 0x1e7f, 0x1e81, 0x1e85, - 0x1e8b, 0x1e91, 0x1e93, 0x1e97, 0x1e99, 0x1ea1, 0x1ea4, 0x1ea6, - 0x1eac, 0x1eae, 0x30b5, 0x1eb4, 0x1f0c, 0x1f22, 0x1f26, 0x1f2b, - 0x1f78, 0x1f89, 0x208a, 0x209a, 0x20a0, 0x219a, 0x22b8, + 0xa76f, 0x11af, 0x11b3, 0x028d, 0x11bb, 0x120d, 0x130b, 0x1409, + 0x148d, 0x1492, 0x1550, 0x1569, 0x156f, 0x1575, 0x157b, 0x1587, + 0x1593, 0x002b, 0x159e, 0x15b6, 0x15ba, 0x15be, 0x15c2, 0x15c6, + 0x15ca, 0x15de, 0x15e2, 0x1646, 0x165f, 0x1685, 0x168b, 0x1749, + 0x174f, 0x1754, 0x1774, 0x1874, 0x187a, 0x190e, 0x19d0, 0x1a74, + 0x1a7c, 0x1a9a, 0x1a9f, 0x1ab3, 0x1abd, 0x1ac3, 0x1ad7, 0x1adc, + 0x1ae2, 0x1af0, 0x1b20, 0x1b2d, 0x1b35, 0x1b39, 0x1b4f, 0x1bc6, + 0x1bd8, 0x1bda, 0x1bdc, 0x3164, 0x1c1d, 0x1c1f, 0x1c21, 0x1c23, + 0x1c25, 0x1c27, 0x1c45, 0x1c53, 0x1c58, 0x1c61, 0x1c6a, 0x1c7c, + 0x1c85, 0x1c8a, 0x1caa, 0x1cc5, 0x1cc7, 0x1cc9, 0x1ccb, 0x1ccd, + 0x1ccf, 0x1cd1, 0x1cd3, 0x1cf3, 0x1cf5, 0x1cf7, 0x1cf9, 0x1cfb, + 0x1d02, 0x1d04, 0x1d06, 0x1d08, 0x1d17, 0x1d19, 0x1d1b, 0x1d1d, + 0x1d1f, 0x1d21, 0x1d23, 0x1d25, 0x1d27, 0x1d29, 0x1d2b, 0x1d2d, + 0x1d2f, 0x1d31, 0x1d33, 0x1d37, 0x03f4, 0x1d39, 0x2207, 0x1d3b, + 0x2202, 0x1d3d, 0x1d45, 0x03f4, 0x1d47, 0x2207, 0x1d49, 0x2202, + 0x1d4b, 0x1d53, 0x03f4, 0x1d55, 0x2207, 0x1d57, 0x2202, 0x1d59, + 0x1d61, 0x03f4, 0x1d63, 0x2207, 0x1d65, 0x2202, 0x1d67, 0x1d6f, + 0x03f4, 0x1d71, 0x2207, 0x1d73, 0x2202, 0x1d75, 0x1d7f, 0x1d81, + 0x1d83, 0x1d85, 0x1d87, 0x1d89, 0x1d8f, 0x1dac, 0x062d, 0x1db4, + 0x1dc0, 0x062c, 0x1dd0, 0x1e40, 0x1e4c, 0x1e5f, 0x1e71, 0x1e84, + 0x1e86, 0x1e8a, 0x1e90, 0x1e96, 0x1e98, 0x1e9c, 0x1e9e, 0x1ea6, + 0x1ea9, 0x1eab, 0x1eb1, 0x1eb3, 0x30b5, 0x1eb9, 0x1f11, 0x1f27, + 0x1f2b, 0x1f2d, 0x1f32, 0x1f7f, 0x1f90, 0x2091, 0x20a1, 0x20a7, + 0x21a1, 0x22bf, }; -static const uint8_t unicode_decomp_data[9158] = { +static const uint8_t unicode_decomp_data[9165] = { 0x20, 0x88, 0x20, 0x84, 0x32, 0x33, 0x20, 0x81, 0x20, 0xa7, 0x31, 0x6f, 0x31, 0xd0, 0x34, 0x31, 0xd0, 0x32, 0x33, 0xd0, 0x34, 0x41, 0x80, 0x41, @@ -1821,242 +1838,243 @@ static const uint8_t unicode_decomp_data[9158] = { 0x13, 0x55, 0xb9, 0x14, 0xba, 0x14, 0xb9, 0x14, 0xb0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x14, 0xbd, 0x14, 0x55, 0x50, 0xb8, 0x15, 0xaf, 0x15, - 0xb9, 0x15, 0xaf, 0x15, 0x55, 0x57, 0xd1, 0x65, - 0xd1, 0x58, 0xd1, 0x65, 0xd1, 0x5f, 0xd1, 0x6e, - 0xd1, 0x5f, 0xd1, 0x6f, 0xd1, 0x5f, 0xd1, 0x70, - 0xd1, 0x5f, 0xd1, 0x71, 0xd1, 0x5f, 0xd1, 0x72, - 0xd1, 0x55, 0x55, 0x55, 0x05, 0xb9, 0xd1, 0x65, - 0xd1, 0xba, 0xd1, 0x65, 0xd1, 0xbb, 0xd1, 0x6e, - 0xd1, 0xbc, 0xd1, 0x6e, 0xd1, 0xbb, 0xd1, 0x6f, - 0xd1, 0xbc, 0xd1, 0x6f, 0xd1, 0x55, 0x55, 0x55, - 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, - 0x69, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, - 0x43, 0x44, 0x00, 0x00, 0x47, 0x00, 0x00, 0x4a, - 0x4b, 0x00, 0x00, 0x4e, 0x4f, 0x50, 0x51, 0x00, - 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, - 0x61, 0x62, 0x63, 0x64, 0x00, 0x66, 0x68, 0x00, - 0x70, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x42, - 0x00, 0x44, 0x45, 0x46, 0x47, 0x4a, 0x00, 0x53, + 0xb9, 0x15, 0xaf, 0x15, 0x55, 0x35, 0x19, 0x30, + 0x19, 0x05, 0x57, 0xd1, 0x65, 0xd1, 0x58, 0xd1, + 0x65, 0xd1, 0x5f, 0xd1, 0x6e, 0xd1, 0x5f, 0xd1, + 0x6f, 0xd1, 0x5f, 0xd1, 0x70, 0xd1, 0x5f, 0xd1, + 0x71, 0xd1, 0x5f, 0xd1, 0x72, 0xd1, 0x55, 0x55, + 0x55, 0x05, 0xb9, 0xd1, 0x65, 0xd1, 0xba, 0xd1, + 0x65, 0xd1, 0xbb, 0xd1, 0x6e, 0xd1, 0xbc, 0xd1, + 0x6e, 0xd1, 0xbb, 0xd1, 0x6f, 0xd1, 0xbc, 0xd1, + 0x6f, 0xd1, 0x55, 0x55, 0x55, 0x41, 0x00, 0x61, + 0x00, 0x41, 0x00, 0x61, 0x00, 0x69, 0x00, 0x41, + 0x00, 0x61, 0x00, 0x41, 0x00, 0x43, 0x44, 0x00, + 0x00, 0x47, 0x00, 0x00, 0x4a, 0x4b, 0x00, 0x00, + 0x4e, 0x4f, 0x50, 0x51, 0x00, 0x53, 0x54, 0x55, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63, + 0x64, 0x00, 0x66, 0x68, 0x00, 0x70, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x42, 0x00, 0x44, 0x45, - 0x46, 0x47, 0x00, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, - 0x00, 0x4f, 0x53, 0x00, 0x61, 0x00, 0x41, 0x00, - 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, - 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, - 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x31, 0x01, - 0x37, 0x02, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, - 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, - 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, - 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, - 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, - 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, - 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, - 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, - 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, - 0x0b, 0x0c, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, - 0x30, 0x00, 0x30, 0x00, 0x27, 0x06, 0x00, 0x01, - 0x05, 0x08, 0x2a, 0x06, 0x1e, 0x08, 0x03, 0x0d, - 0x20, 0x19, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17, - 0x0b, 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, 0x06, - 0x0c, 0x0e, 0x10, 0x44, 0x90, 0x77, 0x45, 0x28, - 0x06, 0x2c, 0x06, 0x00, 0x00, 0x47, 0x06, 0x33, - 0x06, 0x17, 0x10, 0x11, 0x12, 0x13, 0x00, 0x06, - 0x0e, 0x02, 0x0f, 0x34, 0x06, 0x2a, 0x06, 0x2b, - 0x06, 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00, - 0x00, 0x3a, 0x06, 0x2d, 0x06, 0x00, 0x00, 0x4a, - 0x06, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x46, - 0x06, 0x33, 0x06, 0x39, 0x06, 0x00, 0x00, 0x35, - 0x06, 0x42, 0x06, 0x00, 0x00, 0x34, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x2e, 0x06, 0x00, 0x00, 0x36, - 0x06, 0x00, 0x00, 0x3a, 0x06, 0x00, 0x00, 0xba, - 0x06, 0x00, 0x00, 0x6f, 0x06, 0x00, 0x00, 0x28, - 0x06, 0x2c, 0x06, 0x00, 0x00, 0x47, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x2d, 0x06, 0x37, 0x06, 0x4a, - 0x06, 0x43, 0x06, 0x00, 0x00, 0x45, 0x06, 0x46, - 0x06, 0x33, 0x06, 0x39, 0x06, 0x41, 0x06, 0x35, - 0x06, 0x42, 0x06, 0x00, 0x00, 0x34, 0x06, 0x2a, - 0x06, 0x2b, 0x06, 0x2e, 0x06, 0x00, 0x00, 0x36, - 0x06, 0x38, 0x06, 0x3a, 0x06, 0x6e, 0x06, 0x00, - 0x00, 0xa1, 0x06, 0x27, 0x06, 0x00, 0x01, 0x05, - 0x08, 0x20, 0x21, 0x0b, 0x06, 0x10, 0x23, 0x2a, - 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17, 0x0b, - 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, 0x06, 0x0c, - 0x0e, 0x10, 0x28, 0x06, 0x2c, 0x06, 0x2f, 0x06, - 0x00, 0x00, 0x48, 0x06, 0x32, 0x06, 0x2d, 0x06, - 0x37, 0x06, 0x4a, 0x06, 0x2a, 0x06, 0x1a, 0x1b, + 0x46, 0x47, 0x4a, 0x00, 0x53, 0x00, 0x61, 0x00, + 0x41, 0x42, 0x00, 0x44, 0x45, 0x46, 0x47, 0x00, + 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x00, 0x4f, 0x53, + 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, + 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, + 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, + 0x00, 0x61, 0x00, 0x31, 0x01, 0x37, 0x02, 0x91, + 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, + 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, + 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, + 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, + 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, + 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, + 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, + 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, + 0x00, 0x1f, 0x04, 0x20, 0x05, 0x0b, 0x0c, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x27, 0x06, 0x00, 0x01, 0x05, 0x08, 0x2a, + 0x06, 0x1e, 0x08, 0x03, 0x0d, 0x20, 0x19, 0x1a, + 0x1b, 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07, + 0x0a, 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, + 0x44, 0x90, 0x77, 0x45, 0x28, 0x06, 0x2c, 0x06, + 0x00, 0x00, 0x47, 0x06, 0x33, 0x06, 0x17, 0x10, + 0x11, 0x12, 0x13, 0x00, 0x06, 0x0e, 0x02, 0x0f, + 0x34, 0x06, 0x2a, 0x06, 0x2b, 0x06, 0x2e, 0x06, + 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, 0x3a, 0x06, + 0x2d, 0x06, 0x00, 0x00, 0x4a, 0x06, 0x00, 0x00, + 0x44, 0x06, 0x00, 0x00, 0x46, 0x06, 0x33, 0x06, + 0x39, 0x06, 0x00, 0x00, 0x35, 0x06, 0x42, 0x06, + 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, + 0x3a, 0x06, 0x00, 0x00, 0xba, 0x06, 0x00, 0x00, + 0x6f, 0x06, 0x00, 0x00, 0x28, 0x06, 0x2c, 0x06, + 0x00, 0x00, 0x47, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x2d, 0x06, 0x37, 0x06, 0x4a, 0x06, 0x43, 0x06, + 0x00, 0x00, 0x45, 0x06, 0x46, 0x06, 0x33, 0x06, + 0x39, 0x06, 0x41, 0x06, 0x35, 0x06, 0x42, 0x06, + 0x00, 0x00, 0x34, 0x06, 0x2a, 0x06, 0x2b, 0x06, + 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x38, 0x06, + 0x3a, 0x06, 0x6e, 0x06, 0x00, 0x00, 0xa1, 0x06, + 0x27, 0x06, 0x00, 0x01, 0x05, 0x08, 0x20, 0x21, + 0x0b, 0x06, 0x10, 0x23, 0x2a, 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07, 0x0a, - 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x30, - 0x2e, 0x30, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x41, - 0x00, 0x29, 0x00, 0x14, 0x30, 0x53, 0x00, 0x15, - 0x30, 0x43, 0x52, 0x43, 0x44, 0x57, 0x5a, 0x41, - 0x00, 0x48, 0x56, 0x4d, 0x56, 0x53, 0x44, 0x53, - 0x53, 0x50, 0x50, 0x56, 0x57, 0x43, 0x4d, 0x43, - 0x4d, 0x44, 0x4d, 0x52, 0x44, 0x4a, 0x4b, 0x30, - 0x30, 0x00, 0x68, 0x68, 0x4b, 0x62, 0x57, 0x5b, - 0xcc, 0x53, 0xc7, 0x30, 0x8c, 0x4e, 0x1a, 0x59, - 0xe3, 0x89, 0x29, 0x59, 0xa4, 0x4e, 0x20, 0x66, - 0x21, 0x71, 0x99, 0x65, 0x4d, 0x52, 0x8c, 0x5f, - 0x8d, 0x51, 0xb0, 0x65, 0x1d, 0x52, 0x42, 0x7d, - 0x1f, 0x75, 0xa9, 0x8c, 0xf0, 0x58, 0x39, 0x54, - 0x14, 0x6f, 0x95, 0x62, 0x55, 0x63, 0x00, 0x4e, - 0x09, 0x4e, 0x4a, 0x90, 0xe6, 0x5d, 0x2d, 0x4e, - 0xf3, 0x53, 0x07, 0x63, 0x70, 0x8d, 0x53, 0x62, - 0x81, 0x79, 0x7a, 0x7a, 0x08, 0x54, 0x80, 0x6e, - 0x09, 0x67, 0x08, 0x67, 0x33, 0x75, 0x72, 0x52, - 0xb6, 0x55, 0x4d, 0x91, 0x14, 0x30, 0x15, 0x30, - 0x2c, 0x67, 0x09, 0x4e, 0x8c, 0x4e, 0x89, 0x5b, - 0xb9, 0x70, 0x53, 0x62, 0xd7, 0x76, 0xdd, 0x52, - 0x57, 0x65, 0x97, 0x5f, 0xef, 0x53, 0x38, 0x4e, - 0x05, 0x00, 0x09, 0x22, 0x01, 0x60, 0x4f, 0xae, - 0x4f, 0xbb, 0x4f, 0x02, 0x50, 0x7a, 0x50, 0x99, - 0x50, 0xe7, 0x50, 0xcf, 0x50, 0x9e, 0x34, 0x3a, - 0x06, 0x4d, 0x51, 0x54, 0x51, 0x64, 0x51, 0x77, - 0x51, 0x1c, 0x05, 0xb9, 0x34, 0x67, 0x51, 0x8d, - 0x51, 0x4b, 0x05, 0x97, 0x51, 0xa4, 0x51, 0xcc, - 0x4e, 0xac, 0x51, 0xb5, 0x51, 0xdf, 0x91, 0xf5, - 0x51, 0x03, 0x52, 0xdf, 0x34, 0x3b, 0x52, 0x46, - 0x52, 0x72, 0x52, 0x77, 0x52, 0x15, 0x35, 0x02, - 0x00, 0x20, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, - 0xc7, 0x52, 0x00, 0x02, 0x1d, 0x33, 0x3e, 0x3f, - 0x50, 0x82, 0x8a, 0x93, 0xac, 0xb6, 0xb8, 0xb8, - 0xb8, 0x2c, 0x0a, 0x70, 0x70, 0xca, 0x53, 0xdf, - 0x53, 0x63, 0x0b, 0xeb, 0x53, 0xf1, 0x53, 0x06, - 0x54, 0x9e, 0x54, 0x38, 0x54, 0x48, 0x54, 0x68, - 0x54, 0xa2, 0x54, 0xf6, 0x54, 0x10, 0x55, 0x53, - 0x55, 0x63, 0x55, 0x84, 0x55, 0x84, 0x55, 0x99, - 0x55, 0xab, 0x55, 0xb3, 0x55, 0xc2, 0x55, 0x16, - 0x57, 0x06, 0x56, 0x17, 0x57, 0x51, 0x56, 0x74, - 0x56, 0x07, 0x52, 0xee, 0x58, 0xce, 0x57, 0xf4, - 0x57, 0x0d, 0x58, 0x8b, 0x57, 0x32, 0x58, 0x31, - 0x58, 0xac, 0x58, 0xe4, 0x14, 0xf2, 0x58, 0xf7, - 0x58, 0x06, 0x59, 0x1a, 0x59, 0x22, 0x59, 0x62, - 0x59, 0xa8, 0x16, 0xea, 0x16, 0xec, 0x59, 0x1b, - 0x5a, 0x27, 0x5a, 0xd8, 0x59, 0x66, 0x5a, 0xee, - 0x36, 0xfc, 0x36, 0x08, 0x5b, 0x3e, 0x5b, 0x3e, - 0x5b, 0xc8, 0x19, 0xc3, 0x5b, 0xd8, 0x5b, 0xe7, - 0x5b, 0xf3, 0x5b, 0x18, 0x1b, 0xff, 0x5b, 0x06, - 0x5c, 0x53, 0x5f, 0x22, 0x5c, 0x81, 0x37, 0x60, - 0x5c, 0x6e, 0x5c, 0xc0, 0x5c, 0x8d, 0x5c, 0xe4, - 0x1d, 0x43, 0x5d, 0xe6, 0x1d, 0x6e, 0x5d, 0x6b, - 0x5d, 0x7c, 0x5d, 0xe1, 0x5d, 0xe2, 0x5d, 0x2f, - 0x38, 0xfd, 0x5d, 0x28, 0x5e, 0x3d, 0x5e, 0x69, - 0x5e, 0x62, 0x38, 0x83, 0x21, 0x7c, 0x38, 0xb0, - 0x5e, 0xb3, 0x5e, 0xb6, 0x5e, 0xca, 0x5e, 0x92, - 0xa3, 0xfe, 0x5e, 0x31, 0x23, 0x31, 0x23, 0x01, - 0x82, 0x22, 0x5f, 0x22, 0x5f, 0xc7, 0x38, 0xb8, - 0x32, 0xda, 0x61, 0x62, 0x5f, 0x6b, 0x5f, 0xe3, - 0x38, 0x9a, 0x5f, 0xcd, 0x5f, 0xd7, 0x5f, 0xf9, - 0x5f, 0x81, 0x60, 0x3a, 0x39, 0x1c, 0x39, 0x94, - 0x60, 0xd4, 0x26, 0xc7, 0x60, 0x02, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0a, 0x00, 0x00, 0x02, 0x08, 0x00, 0x80, 0x08, - 0x00, 0x00, 0x08, 0x80, 0x28, 0x80, 0x02, 0x00, - 0x00, 0x02, 0x48, 0x61, 0x00, 0x04, 0x06, 0x04, - 0x32, 0x46, 0x6a, 0x5c, 0x67, 0x96, 0xaa, 0xae, - 0xc8, 0xd3, 0x5d, 0x62, 0x00, 0x54, 0x77, 0xf3, - 0x0c, 0x2b, 0x3d, 0x63, 0xfc, 0x62, 0x68, 0x63, - 0x83, 0x63, 0xe4, 0x63, 0xf1, 0x2b, 0x22, 0x64, - 0xc5, 0x63, 0xa9, 0x63, 0x2e, 0x3a, 0x69, 0x64, - 0x7e, 0x64, 0x9d, 0x64, 0x77, 0x64, 0x6c, 0x3a, - 0x4f, 0x65, 0x6c, 0x65, 0x0a, 0x30, 0xe3, 0x65, - 0xf8, 0x66, 0x49, 0x66, 0x19, 0x3b, 0x91, 0x66, - 0x08, 0x3b, 0xe4, 0x3a, 0x92, 0x51, 0x95, 0x51, - 0x00, 0x67, 0x9c, 0x66, 0xad, 0x80, 0xd9, 0x43, - 0x17, 0x67, 0x1b, 0x67, 0x21, 0x67, 0x5e, 0x67, - 0x53, 0x67, 0xc3, 0x33, 0x49, 0x3b, 0xfa, 0x67, - 0x85, 0x67, 0x52, 0x68, 0x85, 0x68, 0x6d, 0x34, - 0x8e, 0x68, 0x1f, 0x68, 0x14, 0x69, 0x9d, 0x3b, - 0x42, 0x69, 0xa3, 0x69, 0xea, 0x69, 0xa8, 0x6a, - 0xa3, 0x36, 0xdb, 0x6a, 0x18, 0x3c, 0x21, 0x6b, - 0xa7, 0x38, 0x54, 0x6b, 0x4e, 0x3c, 0x72, 0x6b, - 0x9f, 0x6b, 0xba, 0x6b, 0xbb, 0x6b, 0x8d, 0x3a, - 0x0b, 0x1d, 0xfa, 0x3a, 0x4e, 0x6c, 0xbc, 0x3c, - 0xbf, 0x6c, 0xcd, 0x6c, 0x67, 0x6c, 0x16, 0x6d, - 0x3e, 0x6d, 0x77, 0x6d, 0x41, 0x6d, 0x69, 0x6d, - 0x78, 0x6d, 0x85, 0x6d, 0x1e, 0x3d, 0x34, 0x6d, - 0x2f, 0x6e, 0x6e, 0x6e, 0x33, 0x3d, 0xcb, 0x6e, - 0xc7, 0x6e, 0xd1, 0x3e, 0xf9, 0x6d, 0x6e, 0x6f, - 0x5e, 0x3f, 0x8e, 0x3f, 0xc6, 0x6f, 0x39, 0x70, - 0x1e, 0x70, 0x1b, 0x70, 0x96, 0x3d, 0x4a, 0x70, - 0x7d, 0x70, 0x77, 0x70, 0xad, 0x70, 0x25, 0x05, - 0x45, 0x71, 0x63, 0x42, 0x9c, 0x71, 0xab, 0x43, - 0x28, 0x72, 0x35, 0x72, 0x50, 0x72, 0x08, 0x46, - 0x80, 0x72, 0x95, 0x72, 0x35, 0x47, 0x02, 0x20, - 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x80, 0x00, 0x00, 0x02, 0x02, 0x80, 0x8a, 0x00, - 0x00, 0x20, 0x00, 0x08, 0x0a, 0x00, 0x80, 0x88, - 0x80, 0x20, 0x14, 0x48, 0x7a, 0x73, 0x8b, 0x73, - 0xac, 0x3e, 0xa5, 0x73, 0xb8, 0x3e, 0xb8, 0x3e, - 0x47, 0x74, 0x5c, 0x74, 0x71, 0x74, 0x85, 0x74, - 0xca, 0x74, 0x1b, 0x3f, 0x24, 0x75, 0x36, 0x4c, - 0x3e, 0x75, 0x92, 0x4c, 0x70, 0x75, 0x9f, 0x21, - 0x10, 0x76, 0xa1, 0x4f, 0xb8, 0x4f, 0x44, 0x50, - 0xfc, 0x3f, 0x08, 0x40, 0xf4, 0x76, 0xf3, 0x50, - 0xf2, 0x50, 0x19, 0x51, 0x33, 0x51, 0x1e, 0x77, - 0x1f, 0x77, 0x1f, 0x77, 0x4a, 0x77, 0x39, 0x40, - 0x8b, 0x77, 0x46, 0x40, 0x96, 0x40, 0x1d, 0x54, - 0x4e, 0x78, 0x8c, 0x78, 0xcc, 0x78, 0xe3, 0x40, - 0x26, 0x56, 0x56, 0x79, 0x9a, 0x56, 0xc5, 0x56, - 0x8f, 0x79, 0xeb, 0x79, 0x2f, 0x41, 0x40, 0x7a, - 0x4a, 0x7a, 0x4f, 0x7a, 0x7c, 0x59, 0xa7, 0x5a, - 0xa7, 0x5a, 0xee, 0x7a, 0x02, 0x42, 0xab, 0x5b, - 0xc6, 0x7b, 0xc9, 0x7b, 0x27, 0x42, 0x80, 0x5c, - 0xd2, 0x7c, 0xa0, 0x42, 0xe8, 0x7c, 0xe3, 0x7c, - 0x00, 0x7d, 0x86, 0x5f, 0x63, 0x7d, 0x01, 0x43, - 0xc7, 0x7d, 0x02, 0x7e, 0x45, 0x7e, 0x34, 0x43, - 0x28, 0x62, 0x47, 0x62, 0x59, 0x43, 0xd9, 0x62, - 0x7a, 0x7f, 0x3e, 0x63, 0x95, 0x7f, 0xfa, 0x7f, - 0x05, 0x80, 0xda, 0x64, 0x23, 0x65, 0x60, 0x80, - 0xa8, 0x65, 0x70, 0x80, 0x5f, 0x33, 0xd5, 0x43, - 0xb2, 0x80, 0x03, 0x81, 0x0b, 0x44, 0x3e, 0x81, - 0xb5, 0x5a, 0xa7, 0x67, 0xb5, 0x67, 0x93, 0x33, - 0x9c, 0x33, 0x01, 0x82, 0x04, 0x82, 0x9e, 0x8f, - 0x6b, 0x44, 0x91, 0x82, 0x8b, 0x82, 0x9d, 0x82, - 0xb3, 0x52, 0xb1, 0x82, 0xb3, 0x82, 0xbd, 0x82, - 0xe6, 0x82, 0x3c, 0x6b, 0xe5, 0x82, 0x1d, 0x83, - 0x63, 0x83, 0xad, 0x83, 0x23, 0x83, 0xbd, 0x83, - 0xe7, 0x83, 0x57, 0x84, 0x53, 0x83, 0xca, 0x83, - 0xcc, 0x83, 0xdc, 0x83, 0x36, 0x6c, 0x6b, 0x6d, - 0x02, 0x00, 0x00, 0x20, 0x22, 0x2a, 0xa0, 0x0a, - 0x00, 0x20, 0x80, 0x28, 0x00, 0xa8, 0x20, 0x20, - 0x00, 0x02, 0x80, 0x22, 0x02, 0x8a, 0x08, 0x00, - 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28, - 0xd5, 0x6c, 0x2b, 0x45, 0xf1, 0x84, 0xf3, 0x84, - 0x16, 0x85, 0xca, 0x73, 0x64, 0x85, 0x2c, 0x6f, - 0x5d, 0x45, 0x61, 0x45, 0xb1, 0x6f, 0xd2, 0x70, - 0x6b, 0x45, 0x50, 0x86, 0x5c, 0x86, 0x67, 0x86, - 0x69, 0x86, 0xa9, 0x86, 0x88, 0x86, 0x0e, 0x87, - 0xe2, 0x86, 0x79, 0x87, 0x28, 0x87, 0x6b, 0x87, - 0x86, 0x87, 0xd7, 0x45, 0xe1, 0x87, 0x01, 0x88, - 0xf9, 0x45, 0x60, 0x88, 0x63, 0x88, 0x67, 0x76, - 0xd7, 0x88, 0xde, 0x88, 0x35, 0x46, 0xfa, 0x88, - 0xbb, 0x34, 0xae, 0x78, 0x66, 0x79, 0xbe, 0x46, - 0xc7, 0x46, 0xa0, 0x8a, 0xed, 0x8a, 0x8a, 0x8b, - 0x55, 0x8c, 0xa8, 0x7c, 0xab, 0x8c, 0xc1, 0x8c, - 0x1b, 0x8d, 0x77, 0x8d, 0x2f, 0x7f, 0x04, 0x08, - 0xcb, 0x8d, 0xbc, 0x8d, 0xf0, 0x8d, 0xde, 0x08, - 0xd4, 0x8e, 0x38, 0x8f, 0xd2, 0x85, 0xed, 0x85, - 0x94, 0x90, 0xf1, 0x90, 0x11, 0x91, 0x2e, 0x87, - 0x1b, 0x91, 0x38, 0x92, 0xd7, 0x92, 0xd8, 0x92, - 0x7c, 0x92, 0xf9, 0x93, 0x15, 0x94, 0xfa, 0x8b, - 0x8b, 0x95, 0x95, 0x49, 0xb7, 0x95, 0x77, 0x8d, - 0xe6, 0x49, 0xc3, 0x96, 0xb2, 0x5d, 0x23, 0x97, - 0x45, 0x91, 0x1a, 0x92, 0x6e, 0x4a, 0x76, 0x4a, - 0xe0, 0x97, 0x0a, 0x94, 0xb2, 0x4a, 0x96, 0x94, - 0x0b, 0x98, 0x0b, 0x98, 0x29, 0x98, 0xb6, 0x95, - 0xe2, 0x98, 0x33, 0x4b, 0x29, 0x99, 0xa7, 0x99, - 0xc2, 0x99, 0xfe, 0x99, 0xce, 0x4b, 0x30, 0x9b, - 0x12, 0x9b, 0x40, 0x9c, 0xfd, 0x9c, 0xce, 0x4c, - 0xed, 0x4c, 0x67, 0x9d, 0xce, 0xa0, 0xf8, 0x4c, - 0x05, 0xa1, 0x0e, 0xa2, 0x91, 0xa2, 0xbb, 0x9e, - 0x56, 0x4d, 0xf9, 0x9e, 0xfe, 0x9e, 0x05, 0x9f, - 0x0f, 0x9f, 0x16, 0x9f, 0x3b, 0x9f, 0x00, 0xa6, - 0x02, 0x88, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x00, 0x28, 0x00, 0x08, 0xa0, 0x80, 0xa0, 0x80, - 0x00, 0x80, 0x80, 0x00, 0x0a, 0x88, 0x80, 0x00, - 0x80, 0x00, 0x20, 0x2a, 0x00, 0x80, + 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x28, + 0x06, 0x2c, 0x06, 0x2f, 0x06, 0x00, 0x00, 0x48, + 0x06, 0x32, 0x06, 0x2d, 0x06, 0x37, 0x06, 0x4a, + 0x06, 0x2a, 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, + 0x17, 0x0b, 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, + 0x06, 0x0c, 0x0e, 0x10, 0x30, 0x2e, 0x30, 0x00, + 0x2c, 0x00, 0x28, 0x00, 0x41, 0x00, 0x29, 0x00, + 0x14, 0x30, 0x53, 0x00, 0x15, 0x30, 0x43, 0x52, + 0x43, 0x44, 0x57, 0x5a, 0x41, 0x00, 0x48, 0x56, + 0x4d, 0x56, 0x53, 0x44, 0x53, 0x53, 0x50, 0x50, + 0x56, 0x57, 0x43, 0x4d, 0x43, 0x4d, 0x44, 0x4d, + 0x52, 0x44, 0x4a, 0x4b, 0x30, 0x30, 0x00, 0x68, + 0x68, 0x4b, 0x62, 0x57, 0x5b, 0xcc, 0x53, 0xc7, + 0x30, 0x8c, 0x4e, 0x1a, 0x59, 0xe3, 0x89, 0x29, + 0x59, 0xa4, 0x4e, 0x20, 0x66, 0x21, 0x71, 0x99, + 0x65, 0x4d, 0x52, 0x8c, 0x5f, 0x8d, 0x51, 0xb0, + 0x65, 0x1d, 0x52, 0x42, 0x7d, 0x1f, 0x75, 0xa9, + 0x8c, 0xf0, 0x58, 0x39, 0x54, 0x14, 0x6f, 0x95, + 0x62, 0x55, 0x63, 0x00, 0x4e, 0x09, 0x4e, 0x4a, + 0x90, 0xe6, 0x5d, 0x2d, 0x4e, 0xf3, 0x53, 0x07, + 0x63, 0x70, 0x8d, 0x53, 0x62, 0x81, 0x79, 0x7a, + 0x7a, 0x08, 0x54, 0x80, 0x6e, 0x09, 0x67, 0x08, + 0x67, 0x33, 0x75, 0x72, 0x52, 0xb6, 0x55, 0x4d, + 0x91, 0x14, 0x30, 0x15, 0x30, 0x2c, 0x67, 0x09, + 0x4e, 0x8c, 0x4e, 0x89, 0x5b, 0xb9, 0x70, 0x53, + 0x62, 0xd7, 0x76, 0xdd, 0x52, 0x57, 0x65, 0x97, + 0x5f, 0xef, 0x53, 0x30, 0x00, 0x38, 0x4e, 0x05, + 0x00, 0x09, 0x22, 0x01, 0x60, 0x4f, 0xae, 0x4f, + 0xbb, 0x4f, 0x02, 0x50, 0x7a, 0x50, 0x99, 0x50, + 0xe7, 0x50, 0xcf, 0x50, 0x9e, 0x34, 0x3a, 0x06, + 0x4d, 0x51, 0x54, 0x51, 0x64, 0x51, 0x77, 0x51, + 0x1c, 0x05, 0xb9, 0x34, 0x67, 0x51, 0x8d, 0x51, + 0x4b, 0x05, 0x97, 0x51, 0xa4, 0x51, 0xcc, 0x4e, + 0xac, 0x51, 0xb5, 0x51, 0xdf, 0x91, 0xf5, 0x51, + 0x03, 0x52, 0xdf, 0x34, 0x3b, 0x52, 0x46, 0x52, + 0x72, 0x52, 0x77, 0x52, 0x15, 0x35, 0x02, 0x00, + 0x20, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, 0xc7, + 0x52, 0x00, 0x02, 0x1d, 0x33, 0x3e, 0x3f, 0x50, + 0x82, 0x8a, 0x93, 0xac, 0xb6, 0xb8, 0xb8, 0xb8, + 0x2c, 0x0a, 0x70, 0x70, 0xca, 0x53, 0xdf, 0x53, + 0x63, 0x0b, 0xeb, 0x53, 0xf1, 0x53, 0x06, 0x54, + 0x9e, 0x54, 0x38, 0x54, 0x48, 0x54, 0x68, 0x54, + 0xa2, 0x54, 0xf6, 0x54, 0x10, 0x55, 0x53, 0x55, + 0x63, 0x55, 0x84, 0x55, 0x84, 0x55, 0x99, 0x55, + 0xab, 0x55, 0xb3, 0x55, 0xc2, 0x55, 0x16, 0x57, + 0x06, 0x56, 0x17, 0x57, 0x51, 0x56, 0x74, 0x56, + 0x07, 0x52, 0xee, 0x58, 0xce, 0x57, 0xf4, 0x57, + 0x0d, 0x58, 0x8b, 0x57, 0x32, 0x58, 0x31, 0x58, + 0xac, 0x58, 0xe4, 0x14, 0xf2, 0x58, 0xf7, 0x58, + 0x06, 0x59, 0x1a, 0x59, 0x22, 0x59, 0x62, 0x59, + 0xa8, 0x16, 0xea, 0x16, 0xec, 0x59, 0x1b, 0x5a, + 0x27, 0x5a, 0xd8, 0x59, 0x66, 0x5a, 0xee, 0x36, + 0xfc, 0x36, 0x08, 0x5b, 0x3e, 0x5b, 0x3e, 0x5b, + 0xc8, 0x19, 0xc3, 0x5b, 0xd8, 0x5b, 0xe7, 0x5b, + 0xf3, 0x5b, 0x18, 0x1b, 0xff, 0x5b, 0x06, 0x5c, + 0x53, 0x5f, 0x22, 0x5c, 0x81, 0x37, 0x60, 0x5c, + 0x6e, 0x5c, 0xc0, 0x5c, 0x8d, 0x5c, 0xe4, 0x1d, + 0x43, 0x5d, 0xe6, 0x1d, 0x6e, 0x5d, 0x6b, 0x5d, + 0x7c, 0x5d, 0xe1, 0x5d, 0xe2, 0x5d, 0x2f, 0x38, + 0xfd, 0x5d, 0x28, 0x5e, 0x3d, 0x5e, 0x69, 0x5e, + 0x62, 0x38, 0x83, 0x21, 0x7c, 0x38, 0xb0, 0x5e, + 0xb3, 0x5e, 0xb6, 0x5e, 0xca, 0x5e, 0x92, 0xa3, + 0xfe, 0x5e, 0x31, 0x23, 0x31, 0x23, 0x01, 0x82, + 0x22, 0x5f, 0x22, 0x5f, 0xc7, 0x38, 0xb8, 0x32, + 0xda, 0x61, 0x62, 0x5f, 0x6b, 0x5f, 0xe3, 0x38, + 0x9a, 0x5f, 0xcd, 0x5f, 0xd7, 0x5f, 0xf9, 0x5f, + 0x81, 0x60, 0x3a, 0x39, 0x1c, 0x39, 0x94, 0x60, + 0xd4, 0x26, 0xc7, 0x60, 0x02, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a, + 0x00, 0x00, 0x02, 0x08, 0x00, 0x80, 0x08, 0x00, + 0x00, 0x08, 0x80, 0x28, 0x80, 0x02, 0x00, 0x00, + 0x02, 0x48, 0x61, 0x00, 0x04, 0x06, 0x04, 0x32, + 0x46, 0x6a, 0x5c, 0x67, 0x96, 0xaa, 0xae, 0xc8, + 0xd3, 0x5d, 0x62, 0x00, 0x54, 0x77, 0xf3, 0x0c, + 0x2b, 0x3d, 0x63, 0xfc, 0x62, 0x68, 0x63, 0x83, + 0x63, 0xe4, 0x63, 0xf1, 0x2b, 0x22, 0x64, 0xc5, + 0x63, 0xa9, 0x63, 0x2e, 0x3a, 0x69, 0x64, 0x7e, + 0x64, 0x9d, 0x64, 0x77, 0x64, 0x6c, 0x3a, 0x4f, + 0x65, 0x6c, 0x65, 0x0a, 0x30, 0xe3, 0x65, 0xf8, + 0x66, 0x49, 0x66, 0x19, 0x3b, 0x91, 0x66, 0x08, + 0x3b, 0xe4, 0x3a, 0x92, 0x51, 0x95, 0x51, 0x00, + 0x67, 0x9c, 0x66, 0xad, 0x80, 0xd9, 0x43, 0x17, + 0x67, 0x1b, 0x67, 0x21, 0x67, 0x5e, 0x67, 0x53, + 0x67, 0xc3, 0x33, 0x49, 0x3b, 0xfa, 0x67, 0x85, + 0x67, 0x52, 0x68, 0x85, 0x68, 0x6d, 0x34, 0x8e, + 0x68, 0x1f, 0x68, 0x14, 0x69, 0x9d, 0x3b, 0x42, + 0x69, 0xa3, 0x69, 0xea, 0x69, 0xa8, 0x6a, 0xa3, + 0x36, 0xdb, 0x6a, 0x18, 0x3c, 0x21, 0x6b, 0xa7, + 0x38, 0x54, 0x6b, 0x4e, 0x3c, 0x72, 0x6b, 0x9f, + 0x6b, 0xba, 0x6b, 0xbb, 0x6b, 0x8d, 0x3a, 0x0b, + 0x1d, 0xfa, 0x3a, 0x4e, 0x6c, 0xbc, 0x3c, 0xbf, + 0x6c, 0xcd, 0x6c, 0x67, 0x6c, 0x16, 0x6d, 0x3e, + 0x6d, 0x77, 0x6d, 0x41, 0x6d, 0x69, 0x6d, 0x78, + 0x6d, 0x85, 0x6d, 0x1e, 0x3d, 0x34, 0x6d, 0x2f, + 0x6e, 0x6e, 0x6e, 0x33, 0x3d, 0xcb, 0x6e, 0xc7, + 0x6e, 0xd1, 0x3e, 0xf9, 0x6d, 0x6e, 0x6f, 0x5e, + 0x3f, 0x8e, 0x3f, 0xc6, 0x6f, 0x39, 0x70, 0x1e, + 0x70, 0x1b, 0x70, 0x96, 0x3d, 0x4a, 0x70, 0x7d, + 0x70, 0x77, 0x70, 0xad, 0x70, 0x25, 0x05, 0x45, + 0x71, 0x63, 0x42, 0x9c, 0x71, 0xab, 0x43, 0x28, + 0x72, 0x35, 0x72, 0x50, 0x72, 0x08, 0x46, 0x80, + 0x72, 0x95, 0x72, 0x35, 0x47, 0x02, 0x20, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80, + 0x00, 0x00, 0x02, 0x02, 0x80, 0x8a, 0x00, 0x00, + 0x20, 0x00, 0x08, 0x0a, 0x00, 0x80, 0x88, 0x80, + 0x20, 0x14, 0x48, 0x7a, 0x73, 0x8b, 0x73, 0xac, + 0x3e, 0xa5, 0x73, 0xb8, 0x3e, 0xb8, 0x3e, 0x47, + 0x74, 0x5c, 0x74, 0x71, 0x74, 0x85, 0x74, 0xca, + 0x74, 0x1b, 0x3f, 0x24, 0x75, 0x36, 0x4c, 0x3e, + 0x75, 0x92, 0x4c, 0x70, 0x75, 0x9f, 0x21, 0x10, + 0x76, 0xa1, 0x4f, 0xb8, 0x4f, 0x44, 0x50, 0xfc, + 0x3f, 0x08, 0x40, 0xf4, 0x76, 0xf3, 0x50, 0xf2, + 0x50, 0x19, 0x51, 0x33, 0x51, 0x1e, 0x77, 0x1f, + 0x77, 0x1f, 0x77, 0x4a, 0x77, 0x39, 0x40, 0x8b, + 0x77, 0x46, 0x40, 0x96, 0x40, 0x1d, 0x54, 0x4e, + 0x78, 0x8c, 0x78, 0xcc, 0x78, 0xe3, 0x40, 0x26, + 0x56, 0x56, 0x79, 0x9a, 0x56, 0xc5, 0x56, 0x8f, + 0x79, 0xeb, 0x79, 0x2f, 0x41, 0x40, 0x7a, 0x4a, + 0x7a, 0x4f, 0x7a, 0x7c, 0x59, 0xa7, 0x5a, 0xa7, + 0x5a, 0xee, 0x7a, 0x02, 0x42, 0xab, 0x5b, 0xc6, + 0x7b, 0xc9, 0x7b, 0x27, 0x42, 0x80, 0x5c, 0xd2, + 0x7c, 0xa0, 0x42, 0xe8, 0x7c, 0xe3, 0x7c, 0x00, + 0x7d, 0x86, 0x5f, 0x63, 0x7d, 0x01, 0x43, 0xc7, + 0x7d, 0x02, 0x7e, 0x45, 0x7e, 0x34, 0x43, 0x28, + 0x62, 0x47, 0x62, 0x59, 0x43, 0xd9, 0x62, 0x7a, + 0x7f, 0x3e, 0x63, 0x95, 0x7f, 0xfa, 0x7f, 0x05, + 0x80, 0xda, 0x64, 0x23, 0x65, 0x60, 0x80, 0xa8, + 0x65, 0x70, 0x80, 0x5f, 0x33, 0xd5, 0x43, 0xb2, + 0x80, 0x03, 0x81, 0x0b, 0x44, 0x3e, 0x81, 0xb5, + 0x5a, 0xa7, 0x67, 0xb5, 0x67, 0x93, 0x33, 0x9c, + 0x33, 0x01, 0x82, 0x04, 0x82, 0x9e, 0x8f, 0x6b, + 0x44, 0x91, 0x82, 0x8b, 0x82, 0x9d, 0x82, 0xb3, + 0x52, 0xb1, 0x82, 0xb3, 0x82, 0xbd, 0x82, 0xe6, + 0x82, 0x3c, 0x6b, 0xe5, 0x82, 0x1d, 0x83, 0x63, + 0x83, 0xad, 0x83, 0x23, 0x83, 0xbd, 0x83, 0xe7, + 0x83, 0x57, 0x84, 0x53, 0x83, 0xca, 0x83, 0xcc, + 0x83, 0xdc, 0x83, 0x36, 0x6c, 0x6b, 0x6d, 0x02, + 0x00, 0x00, 0x20, 0x22, 0x2a, 0xa0, 0x0a, 0x00, + 0x20, 0x80, 0x28, 0x00, 0xa8, 0x20, 0x20, 0x00, + 0x02, 0x80, 0x22, 0x02, 0x8a, 0x08, 0x00, 0xaa, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28, 0xd5, + 0x6c, 0x2b, 0x45, 0xf1, 0x84, 0xf3, 0x84, 0x16, + 0x85, 0xca, 0x73, 0x64, 0x85, 0x2c, 0x6f, 0x5d, + 0x45, 0x61, 0x45, 0xb1, 0x6f, 0xd2, 0x70, 0x6b, + 0x45, 0x50, 0x86, 0x5c, 0x86, 0x67, 0x86, 0x69, + 0x86, 0xa9, 0x86, 0x88, 0x86, 0x0e, 0x87, 0xe2, + 0x86, 0x79, 0x87, 0x28, 0x87, 0x6b, 0x87, 0x86, + 0x87, 0xd7, 0x45, 0xe1, 0x87, 0x01, 0x88, 0xf9, + 0x45, 0x60, 0x88, 0x63, 0x88, 0x67, 0x76, 0xd7, + 0x88, 0xde, 0x88, 0x35, 0x46, 0xfa, 0x88, 0xbb, + 0x34, 0xae, 0x78, 0x66, 0x79, 0xbe, 0x46, 0xc7, + 0x46, 0xa0, 0x8a, 0xed, 0x8a, 0x8a, 0x8b, 0x55, + 0x8c, 0xa8, 0x7c, 0xab, 0x8c, 0xc1, 0x8c, 0x1b, + 0x8d, 0x77, 0x8d, 0x2f, 0x7f, 0x04, 0x08, 0xcb, + 0x8d, 0xbc, 0x8d, 0xf0, 0x8d, 0xde, 0x08, 0xd4, + 0x8e, 0x38, 0x8f, 0xd2, 0x85, 0xed, 0x85, 0x94, + 0x90, 0xf1, 0x90, 0x11, 0x91, 0x2e, 0x87, 0x1b, + 0x91, 0x38, 0x92, 0xd7, 0x92, 0xd8, 0x92, 0x7c, + 0x92, 0xf9, 0x93, 0x15, 0x94, 0xfa, 0x8b, 0x8b, + 0x95, 0x95, 0x49, 0xb7, 0x95, 0x77, 0x8d, 0xe6, + 0x49, 0xc3, 0x96, 0xb2, 0x5d, 0x23, 0x97, 0x45, + 0x91, 0x1a, 0x92, 0x6e, 0x4a, 0x76, 0x4a, 0xe0, + 0x97, 0x0a, 0x94, 0xb2, 0x4a, 0x96, 0x94, 0x0b, + 0x98, 0x0b, 0x98, 0x29, 0x98, 0xb6, 0x95, 0xe2, + 0x98, 0x33, 0x4b, 0x29, 0x99, 0xa7, 0x99, 0xc2, + 0x99, 0xfe, 0x99, 0xce, 0x4b, 0x30, 0x9b, 0x12, + 0x9b, 0x40, 0x9c, 0xfd, 0x9c, 0xce, 0x4c, 0xed, + 0x4c, 0x67, 0x9d, 0xce, 0xa0, 0xf8, 0x4c, 0x05, + 0xa1, 0x0e, 0xa2, 0x91, 0xa2, 0xbb, 0x9e, 0x56, + 0x4d, 0xf9, 0x9e, 0xfe, 0x9e, 0x05, 0x9f, 0x0f, + 0x9f, 0x16, 0x9f, 0x3b, 0x9f, 0x00, 0xa6, 0x02, + 0x88, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x28, 0x00, 0x08, 0xa0, 0x80, 0xa0, 0x80, 0x00, + 0x80, 0x80, 0x00, 0x0a, 0x88, 0x80, 0x00, 0x80, + 0x00, 0x20, 0x2a, 0x00, 0x80, }; -static const uint16_t unicode_comp_table[944] = { +static const uint16_t unicode_comp_table[945] = { 0x4a01, 0x49c0, 0x4a02, 0x0280, 0x0281, 0x0282, 0x0283, 0x02c0, 0x02c2, 0x0a00, 0x0284, 0x2442, 0x0285, 0x07c0, 0x0980, 0x0982, 0x2440, 0x2280, 0x02c4, 0x2282, 0x2284, 0x2286, 0x02c6, 0x02c8, @@ -2173,8 +2191,9 @@ static const uint16_t unicode_comp_table[944] = { 0x5704, 0x5706, 0x5708, 0x570a, 0x570c, 0x570e, 0x5710, 0x5712, 0x5714, 0x5716, 0x5740, 0x5742, 0x5744, 0x5780, 0x5781, 0x57c0, 0x57c1, 0x5800, 0x5801, 0x5840, 0x5841, 0x5880, 0x5881, 0x5900, - 0x5901, 0x5902, 0x5903, 0x5940, 0x8e40, 0x8e42, 0x8e80, 0x8ec0, - 0x8ec1, 0x8f00, 0x8f01, 0x8f41, 0x8f40, 0x8f43, 0x8f80, 0x8f81, + 0x5901, 0x5902, 0x5903, 0x5940, 0x8e80, 0x8e82, 0x8ec0, 0x8f00, + 0x8f01, 0x8f40, 0x8f41, 0x8f81, 0x8f80, 0x8f83, 0x8fc0, 0x8fc1, + 0x9000, }; typedef enum { @@ -2260,7 +2279,7 @@ static const char unicode_gc_name_table[] = "C,Other" "\0" ; -static const uint8_t unicode_gc_table[3719] = { +static const uint8_t unicode_gc_table[3790] = { 0xfa, 0x18, 0x17, 0x56, 0x0d, 0x56, 0x12, 0x13, 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36, 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e, @@ -2304,8 +2323,8 @@ static const uint8_t unicode_gc_table[3719] = { 0x06, 0x2d, 0xe5, 0x0e, 0x66, 0x04, 0xe6, 0x01, 0x04, 0x46, 0x04, 0x86, 0x20, 0xf6, 0x07, 0x00, 0xe5, 0x11, 0x46, 0x20, 0x16, 0x00, 0xe5, 0x03, - 0xe0, 0x2d, 0xe5, 0x0d, 0x00, 0xe5, 0x00, 0xe0, - 0x0d, 0xe6, 0x07, 0x1b, 0xe6, 0x18, 0x07, 0xe5, + 0xe0, 0x2d, 0xe5, 0x0d, 0x00, 0xe5, 0x0a, 0xe0, + 0x03, 0xe6, 0x07, 0x1b, 0xe6, 0x18, 0x07, 0xe5, 0x2e, 0x06, 0x07, 0x06, 0x05, 0x47, 0xe6, 0x00, 0x67, 0x06, 0x27, 0x05, 0xc6, 0xe5, 0x02, 0x26, 0x36, 0xe9, 0x02, 0x16, 0x04, 0xe5, 0x07, 0x06, @@ -2328,80 +2347,80 @@ static const uint8_t unicode_gc_table[3719] = { 0x00, 0x06, 0x27, 0x00, 0xe5, 0x00, 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00, 0x25, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07, 0x06, 0x07, 0x66, - 0x20, 0x27, 0x20, 0x27, 0x06, 0xe0, 0x00, 0x06, - 0x07, 0x60, 0x25, 0x00, 0x45, 0x26, 0x20, 0xe9, - 0x02, 0x0f, 0x05, 0xab, 0xe0, 0x02, 0x06, 0x05, - 0x00, 0xa5, 0x40, 0x45, 0x00, 0x65, 0x40, 0x25, - 0x00, 0x05, 0x00, 0x25, 0x40, 0x25, 0x40, 0x45, - 0x40, 0xe5, 0x04, 0x60, 0x27, 0x06, 0x27, 0x40, - 0x47, 0x00, 0x47, 0x06, 0x20, 0x05, 0xa0, 0x07, - 0xe0, 0x06, 0xe9, 0x02, 0x4b, 0xaf, 0x0d, 0x0f, - 0x80, 0x06, 0x47, 0x06, 0xe5, 0x00, 0x00, 0x45, - 0x00, 0xe5, 0x0f, 0x00, 0xe5, 0x08, 0x40, 0x05, - 0x46, 0x67, 0x00, 0x46, 0x00, 0x66, 0xc0, 0x26, - 0x00, 0x45, 0x80, 0x25, 0x26, 0x20, 0xe9, 0x02, - 0xc0, 0x16, 0xcb, 0x0f, 0x05, 0x06, 0x27, 0x16, - 0xe5, 0x00, 0x00, 0x45, 0x00, 0xe5, 0x0f, 0x00, - 0xe5, 0x02, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07, - 0x06, 0x87, 0x00, 0x06, 0x27, 0x00, 0x27, 0x26, - 0xc0, 0x27, 0xc0, 0x05, 0x00, 0x25, 0x26, 0x20, - 0xe9, 0x02, 0x00, 0x25, 0xe0, 0x05, 0x26, 0x27, - 0x00, 0xe5, 0x00, 0x00, 0x45, 0x00, 0xe5, 0x21, - 0x26, 0x05, 0x47, 0x66, 0x00, 0x47, 0x00, 0x47, - 0x06, 0x05, 0x0f, 0x60, 0x45, 0x07, 0xcb, 0x45, - 0x26, 0x20, 0xe9, 0x02, 0xeb, 0x01, 0x0f, 0xa5, - 0x20, 0x27, 0x00, 0xe5, 0x0a, 0x40, 0xe5, 0x10, - 0x00, 0xe5, 0x01, 0x00, 0x05, 0x20, 0xc5, 0x40, - 0x06, 0x60, 0x47, 0x46, 0x00, 0x06, 0x00, 0xe7, - 0x00, 0xa0, 0xe9, 0x02, 0x20, 0x27, 0x16, 0xe0, - 0x04, 0xe5, 0x28, 0x06, 0x25, 0xc6, 0x60, 0x0d, - 0xa5, 0x04, 0xe6, 0x00, 0x16, 0xe9, 0x02, 0x36, - 0xe0, 0x1d, 0x25, 0x00, 0x05, 0x00, 0x85, 0x00, - 0xe5, 0x10, 0x00, 0x05, 0x00, 0xe5, 0x02, 0x06, - 0x25, 0xe6, 0x01, 0x05, 0x20, 0x85, 0x00, 0x04, - 0x00, 0xa6, 0x20, 0xe9, 0x02, 0x20, 0x65, 0xe0, - 0x18, 0x05, 0x4f, 0xf6, 0x07, 0x0f, 0x16, 0x4f, - 0x26, 0xaf, 0xe9, 0x02, 0xeb, 0x02, 0x0f, 0x06, - 0x0f, 0x06, 0x0f, 0x06, 0x12, 0x13, 0x12, 0x13, - 0x27, 0xe5, 0x00, 0x00, 0xe5, 0x1c, 0x60, 0xe6, - 0x06, 0x07, 0x86, 0x16, 0x26, 0x85, 0xe6, 0x03, - 0x00, 0xe6, 0x1c, 0x00, 0xef, 0x00, 0x06, 0xaf, - 0x00, 0x2f, 0x96, 0x6f, 0x36, 0xe0, 0x1d, 0xe5, - 0x23, 0x27, 0x66, 0x07, 0xa6, 0x07, 0x26, 0x27, - 0x26, 0x05, 0xe9, 0x02, 0xb6, 0xa5, 0x27, 0x26, - 0x65, 0x46, 0x05, 0x47, 0x25, 0xc7, 0x45, 0x66, - 0xe5, 0x05, 0x06, 0x27, 0x26, 0xa7, 0x06, 0x05, - 0x07, 0xe9, 0x02, 0x47, 0x06, 0x2f, 0xe1, 0x1e, - 0x00, 0x01, 0x80, 0x01, 0x20, 0xe2, 0x23, 0x16, - 0x04, 0x42, 0xe5, 0x80, 0xc1, 0x00, 0x65, 0x20, - 0xc5, 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x21, - 0x00, 0x65, 0x20, 0xe5, 0x19, 0x00, 0x65, 0x20, - 0xc5, 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x07, - 0x00, 0xe5, 0x31, 0x00, 0x65, 0x20, 0xe5, 0x3b, - 0x20, 0x46, 0xf6, 0x01, 0xeb, 0x0c, 0x40, 0xe5, - 0x08, 0xef, 0x02, 0xa0, 0xe1, 0x4e, 0x20, 0xa2, - 0x20, 0x11, 0xe5, 0x81, 0xe4, 0x0f, 0x16, 0xe5, - 0x09, 0x17, 0xe5, 0x12, 0x12, 0x13, 0x40, 0xe5, - 0x43, 0x56, 0x4a, 0xe5, 0x00, 0xc0, 0xe5, 0x05, - 0x00, 0x65, 0x46, 0xe0, 0x03, 0xe5, 0x0a, 0x46, - 0x36, 0xe0, 0x01, 0xe5, 0x0a, 0x26, 0xe0, 0x04, - 0xe5, 0x05, 0x00, 0x45, 0x00, 0x26, 0xe0, 0x04, - 0xe5, 0x2c, 0x26, 0x07, 0xc6, 0xe7, 0x00, 0x06, - 0x27, 0xe6, 0x03, 0x56, 0x04, 0x56, 0x0d, 0x05, - 0x06, 0x20, 0xe9, 0x02, 0xa0, 0xeb, 0x02, 0xa0, - 0xb6, 0x11, 0x76, 0x46, 0x1b, 0x00, 0xe9, 0x02, - 0xa0, 0xe5, 0x1b, 0x04, 0xe5, 0x2d, 0xc0, 0x85, - 0x26, 0xe5, 0x1a, 0x06, 0x05, 0x80, 0xe5, 0x3e, - 0xe0, 0x02, 0xe5, 0x17, 0x00, 0x46, 0x67, 0x26, - 0x47, 0x60, 0x27, 0x06, 0xa7, 0x46, 0x60, 0x0f, - 0x40, 0x36, 0xe9, 0x02, 0xe5, 0x16, 0x20, 0x85, - 0xe0, 0x03, 0xe5, 0x24, 0x60, 0xe5, 0x12, 0xa0, - 0xe9, 0x02, 0x0b, 0x40, 0xef, 0x1a, 0xe5, 0x0f, - 0x26, 0x27, 0x06, 0x20, 0x36, 0xe5, 0x2d, 0x07, - 0x06, 0x07, 0xc6, 0x00, 0x06, 0x07, 0x06, 0x27, - 0xe6, 0x00, 0xa7, 0xe6, 0x02, 0x20, 0x06, 0xe9, - 0x02, 0xa0, 0xe9, 0x02, 0xa0, 0xd6, 0x04, 0xb6, - 0x20, 0xe6, 0x06, 0x08, 0xe0, 0x39, 0x66, 0x07, + 0x20, 0x27, 0x20, 0x27, 0x06, 0xc0, 0x26, 0x07, + 0x60, 0x25, 0x00, 0x45, 0x26, 0x20, 0xe9, 0x02, + 0x0f, 0x05, 0xab, 0xe0, 0x02, 0x06, 0x05, 0x00, + 0xa5, 0x40, 0x45, 0x00, 0x65, 0x40, 0x25, 0x00, + 0x05, 0x00, 0x25, 0x40, 0x25, 0x40, 0x45, 0x40, + 0xe5, 0x04, 0x60, 0x27, 0x06, 0x27, 0x40, 0x47, + 0x00, 0x47, 0x06, 0x20, 0x05, 0xa0, 0x07, 0xe0, + 0x06, 0xe9, 0x02, 0x4b, 0xaf, 0x0d, 0x0f, 0x80, + 0x06, 0x47, 0x06, 0xe5, 0x00, 0x00, 0x45, 0x00, + 0xe5, 0x0f, 0x00, 0xe5, 0x08, 0x40, 0x05, 0x46, + 0x67, 0x00, 0x46, 0x00, 0x66, 0xc0, 0x26, 0x00, + 0x45, 0x80, 0x25, 0x26, 0x20, 0xe9, 0x02, 0xc0, + 0x16, 0xcb, 0x0f, 0x05, 0x06, 0x27, 0x16, 0xe5, + 0x00, 0x00, 0x45, 0x00, 0xe5, 0x0f, 0x00, 0xe5, + 0x02, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07, 0x06, + 0x87, 0x00, 0x06, 0x27, 0x00, 0x27, 0x26, 0xc0, + 0x27, 0xc0, 0x05, 0x00, 0x25, 0x26, 0x20, 0xe9, + 0x02, 0x00, 0x25, 0xe0, 0x05, 0x26, 0x27, 0xe5, + 0x01, 0x00, 0x45, 0x00, 0xe5, 0x21, 0x26, 0x05, + 0x47, 0x66, 0x00, 0x47, 0x00, 0x47, 0x06, 0x05, + 0x0f, 0x60, 0x45, 0x07, 0xcb, 0x45, 0x26, 0x20, + 0xe9, 0x02, 0xeb, 0x01, 0x0f, 0xa5, 0x00, 0x06, + 0x27, 0x00, 0xe5, 0x0a, 0x40, 0xe5, 0x10, 0x00, + 0xe5, 0x01, 0x00, 0x05, 0x20, 0xc5, 0x40, 0x06, + 0x60, 0x47, 0x46, 0x00, 0x06, 0x00, 0xe7, 0x00, + 0xa0, 0xe9, 0x02, 0x20, 0x27, 0x16, 0xe0, 0x04, + 0xe5, 0x28, 0x06, 0x25, 0xc6, 0x60, 0x0d, 0xa5, + 0x04, 0xe6, 0x00, 0x16, 0xe9, 0x02, 0x36, 0xe0, + 0x1d, 0x25, 0x00, 0x05, 0x00, 0x85, 0x00, 0xe5, + 0x10, 0x00, 0x05, 0x00, 0xe5, 0x02, 0x06, 0x25, + 0xe6, 0x01, 0x05, 0x20, 0x85, 0x00, 0x04, 0x00, + 0xa6, 0x20, 0xe9, 0x02, 0x20, 0x65, 0xe0, 0x18, + 0x05, 0x4f, 0xf6, 0x07, 0x0f, 0x16, 0x4f, 0x26, + 0xaf, 0xe9, 0x02, 0xeb, 0x02, 0x0f, 0x06, 0x0f, + 0x06, 0x0f, 0x06, 0x12, 0x13, 0x12, 0x13, 0x27, + 0xe5, 0x00, 0x00, 0xe5, 0x1c, 0x60, 0xe6, 0x06, + 0x07, 0x86, 0x16, 0x26, 0x85, 0xe6, 0x03, 0x00, + 0xe6, 0x1c, 0x00, 0xef, 0x00, 0x06, 0xaf, 0x00, + 0x2f, 0x96, 0x6f, 0x36, 0xe0, 0x1d, 0xe5, 0x23, + 0x27, 0x66, 0x07, 0xa6, 0x07, 0x26, 0x27, 0x26, + 0x05, 0xe9, 0x02, 0xb6, 0xa5, 0x27, 0x26, 0x65, + 0x46, 0x05, 0x47, 0x25, 0xc7, 0x45, 0x66, 0xe5, + 0x05, 0x06, 0x27, 0x26, 0xa7, 0x06, 0x05, 0x07, + 0xe9, 0x02, 0x47, 0x06, 0x2f, 0xe1, 0x1e, 0x00, + 0x01, 0x80, 0x01, 0x20, 0xe2, 0x23, 0x16, 0x04, + 0x42, 0xe5, 0x80, 0xc1, 0x00, 0x65, 0x20, 0xc5, + 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x21, 0x00, + 0x65, 0x20, 0xe5, 0x19, 0x00, 0x65, 0x20, 0xc5, + 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x07, 0x00, + 0xe5, 0x31, 0x00, 0x65, 0x20, 0xe5, 0x3b, 0x20, + 0x46, 0xf6, 0x01, 0xeb, 0x0c, 0x40, 0xe5, 0x08, + 0xef, 0x02, 0xa0, 0xe1, 0x4e, 0x20, 0xa2, 0x20, + 0x11, 0xe5, 0x81, 0xe4, 0x0f, 0x16, 0xe5, 0x09, + 0x17, 0xe5, 0x12, 0x12, 0x13, 0x40, 0xe5, 0x43, + 0x56, 0x4a, 0xe5, 0x00, 0xc0, 0xe5, 0x05, 0x00, + 0x65, 0x46, 0xe0, 0x03, 0xe5, 0x0a, 0x46, 0x36, + 0xe0, 0x01, 0xe5, 0x0a, 0x26, 0xe0, 0x04, 0xe5, + 0x05, 0x00, 0x45, 0x00, 0x26, 0xe0, 0x04, 0xe5, + 0x2c, 0x26, 0x07, 0xc6, 0xe7, 0x00, 0x06, 0x27, + 0xe6, 0x03, 0x56, 0x04, 0x56, 0x0d, 0x05, 0x06, + 0x20, 0xe9, 0x02, 0xa0, 0xeb, 0x02, 0xa0, 0xb6, + 0x11, 0x76, 0x46, 0x1b, 0x00, 0xe9, 0x02, 0xa0, + 0xe5, 0x1b, 0x04, 0xe5, 0x2d, 0xc0, 0x85, 0x26, + 0xe5, 0x1a, 0x06, 0x05, 0x80, 0xe5, 0x3e, 0xe0, + 0x02, 0xe5, 0x17, 0x00, 0x46, 0x67, 0x26, 0x47, + 0x60, 0x27, 0x06, 0xa7, 0x46, 0x60, 0x0f, 0x40, + 0x36, 0xe9, 0x02, 0xe5, 0x16, 0x20, 0x85, 0xe0, + 0x03, 0xe5, 0x24, 0x60, 0xe5, 0x12, 0xa0, 0xe9, + 0x02, 0x0b, 0x40, 0xef, 0x1a, 0xe5, 0x0f, 0x26, + 0x27, 0x06, 0x20, 0x36, 0xe5, 0x2d, 0x07, 0x06, + 0x07, 0xc6, 0x00, 0x06, 0x07, 0x06, 0x27, 0xe6, + 0x00, 0xa7, 0xe6, 0x02, 0x20, 0x06, 0xe9, 0x02, + 0xa0, 0xe9, 0x02, 0xa0, 0xd6, 0x04, 0xb6, 0x20, + 0xe6, 0x06, 0x08, 0x26, 0xe0, 0x37, 0x66, 0x07, 0xe5, 0x27, 0x06, 0x07, 0x86, 0x07, 0x06, 0x87, 0x06, 0x27, 0xc5, 0x60, 0xe9, 0x02, 0xd6, 0xef, 0x02, 0xe6, 0x01, 0xef, 0x01, 0x40, 0x26, 0x07, @@ -2461,7 +2480,7 @@ static const uint8_t unicode_gc_table[3719] = { 0x13, 0x12, 0x13, 0x12, 0x13, 0xec, 0x37, 0x12, 0x13, 0x12, 0x13, 0xec, 0x18, 0x12, 0x13, 0xec, 0x80, 0x7a, 0xef, 0x28, 0xec, 0x0d, 0x2f, 0xac, - 0xef, 0x1f, 0x20, 0xef, 0x18, 0x20, 0xef, 0x60, + 0xef, 0x1f, 0x20, 0xef, 0x18, 0x00, 0xef, 0x61, 0xe1, 0x27, 0x00, 0xe2, 0x27, 0x00, 0x5f, 0x21, 0x22, 0xdf, 0x41, 0x02, 0x3f, 0x02, 0x3f, 0x82, 0x24, 0x41, 0x02, 0xff, 0x5a, 0x02, 0xaf, 0x7f, @@ -2475,257 +2494,266 @@ static const uint8_t unicode_gc_table[3719] = { 0x11, 0x36, 0x11, 0x16, 0x14, 0x15, 0x36, 0x14, 0x15, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x96, 0x04, 0xf6, 0x02, 0x31, 0x76, 0x11, - 0x16, 0x12, 0xf6, 0x05, 0xe0, 0x28, 0xef, 0x12, - 0x00, 0xef, 0x51, 0xe0, 0x04, 0xef, 0x80, 0x4e, - 0xe0, 0x12, 0xef, 0x04, 0x60, 0x17, 0x56, 0x0f, - 0x04, 0x05, 0x0a, 0x12, 0x13, 0x12, 0x13, 0x12, - 0x13, 0x12, 0x13, 0x12, 0x13, 0x2f, 0x12, 0x13, - 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x11, 0x12, - 0x33, 0x0f, 0xea, 0x01, 0x66, 0x27, 0x11, 0x84, - 0x2f, 0x4a, 0x04, 0x05, 0x16, 0x2f, 0x00, 0xe5, - 0x4e, 0x20, 0x26, 0x2e, 0x24, 0x05, 0x11, 0xe5, - 0x52, 0x16, 0x44, 0x05, 0x80, 0xe5, 0x23, 0x00, - 0xe5, 0x56, 0x00, 0x2f, 0x6b, 0xef, 0x02, 0xe5, - 0x13, 0x80, 0xef, 0x1c, 0xe0, 0x04, 0xe5, 0x08, - 0xef, 0x17, 0x00, 0xeb, 0x02, 0xef, 0x16, 0xeb, - 0x00, 0x0f, 0xeb, 0x07, 0xef, 0x18, 0xeb, 0x02, - 0xef, 0x1f, 0xeb, 0x07, 0xef, 0x80, 0xb8, 0xe5, - 0x99, 0x2e, 0xe0, 0x02, 0xef, 0x38, 0xe5, 0xc0, - 0x11, 0x68, 0xe0, 0x08, 0xe5, 0x0d, 0x04, 0xe5, - 0x83, 0xef, 0x40, 0xef, 0x2f, 0xe0, 0x01, 0xe5, - 0x20, 0xa4, 0x36, 0xe5, 0x80, 0x84, 0x04, 0x56, - 0xe5, 0x08, 0xe9, 0x02, 0x25, 0xe0, 0x0c, 0xff, - 0x26, 0x05, 0x06, 0x48, 0x16, 0xe6, 0x02, 0x16, - 0x04, 0xff, 0x14, 0x24, 0x26, 0xe5, 0x3e, 0xea, - 0x02, 0x26, 0xb6, 0xe0, 0x00, 0xee, 0x0f, 0xe4, - 0x01, 0x2e, 0xff, 0x06, 0x22, 0xff, 0x36, 0x04, - 0xe2, 0x00, 0x9f, 0xff, 0x02, 0x04, 0x2e, 0x7f, - 0x05, 0x7f, 0x22, 0xff, 0x0d, 0x61, 0x02, 0x81, - 0x02, 0xff, 0x02, 0x20, 0x5f, 0x21, 0xe0, 0x28, - 0x05, 0x24, 0x02, 0xc5, 0x06, 0x45, 0x06, 0x65, - 0x06, 0xe5, 0x0f, 0x27, 0x26, 0x07, 0x6f, 0x60, - 0xab, 0x2f, 0x0d, 0x0f, 0xa0, 0xe5, 0x2c, 0x76, - 0xe0, 0x00, 0x27, 0xe5, 0x2a, 0xe7, 0x08, 0x26, - 0xe0, 0x00, 0x36, 0xe9, 0x02, 0xa0, 0xe6, 0x0a, - 0xa5, 0x56, 0x05, 0x16, 0x25, 0x06, 0xe9, 0x02, - 0xe5, 0x14, 0xe6, 0x00, 0x36, 0xe5, 0x0f, 0xe6, - 0x03, 0x27, 0xe0, 0x03, 0x16, 0xe5, 0x15, 0x40, - 0x46, 0x07, 0xe5, 0x27, 0x06, 0x27, 0x66, 0x27, - 0x26, 0x47, 0xf6, 0x05, 0x00, 0x04, 0xe9, 0x02, - 0x60, 0x36, 0x85, 0x06, 0x04, 0xe5, 0x01, 0xe9, - 0x02, 0x85, 0x00, 0xe5, 0x21, 0xa6, 0x27, 0x26, - 0x27, 0x26, 0xe0, 0x01, 0x45, 0x06, 0xe5, 0x00, - 0x06, 0x07, 0x20, 0xe9, 0x02, 0x20, 0x76, 0xe5, - 0x08, 0x04, 0xa5, 0x4f, 0x05, 0x07, 0x06, 0x07, - 0xe5, 0x2a, 0x06, 0x05, 0x46, 0x25, 0x26, 0x85, - 0x26, 0x05, 0x06, 0x05, 0xe0, 0x10, 0x25, 0x04, - 0x36, 0xe5, 0x03, 0x07, 0x26, 0x27, 0x36, 0x05, - 0x24, 0x07, 0x06, 0xe0, 0x02, 0xa5, 0x20, 0xa5, - 0x20, 0xa5, 0xe0, 0x01, 0xc5, 0x00, 0xc5, 0x00, - 0xe2, 0x23, 0x0e, 0x64, 0xe2, 0x00, 0xe0, 0x00, - 0xe2, 0x48, 0xe5, 0x1b, 0x27, 0x06, 0x27, 0x06, - 0x27, 0x16, 0x07, 0x06, 0x20, 0xe9, 0x02, 0xa0, - 0xe5, 0xab, 0x1c, 0xe0, 0x04, 0xe5, 0x0f, 0x60, - 0xe5, 0x29, 0x60, 0xfc, 0x87, 0x78, 0xfd, 0x98, - 0x78, 0xe5, 0x80, 0xe6, 0x20, 0xe5, 0x62, 0xe0, - 0x1e, 0xc2, 0xe0, 0x04, 0x82, 0x80, 0x05, 0x06, - 0xe5, 0x02, 0x0c, 0xe5, 0x05, 0x00, 0x85, 0x00, - 0x05, 0x00, 0x25, 0x00, 0x25, 0x00, 0xe5, 0x64, - 0xee, 0x08, 0xe0, 0x09, 0xe5, 0x80, 0xe3, 0x13, - 0x12, 0xe0, 0x08, 0xe5, 0x38, 0x20, 0xe5, 0x2e, - 0xe0, 0x20, 0xe5, 0x04, 0x0d, 0x0f, 0x20, 0xe6, - 0x08, 0xd6, 0x12, 0x13, 0x16, 0xa0, 0xe6, 0x08, - 0x16, 0x31, 0x30, 0x12, 0x13, 0x12, 0x13, 0x12, - 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, - 0x13, 0x12, 0x13, 0x36, 0x12, 0x13, 0x76, 0x50, - 0x56, 0x00, 0x76, 0x11, 0x12, 0x13, 0x12, 0x13, - 0x12, 0x13, 0x56, 0x0c, 0x11, 0x4c, 0x00, 0x16, - 0x0d, 0x36, 0x60, 0x85, 0x00, 0xe5, 0x7f, 0x20, - 0x1b, 0x00, 0x56, 0x0d, 0x56, 0x12, 0x13, 0x16, - 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36, 0x4c, - 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e, 0x10, - 0x0e, 0xe2, 0x12, 0x12, 0x0c, 0x13, 0x0c, 0x12, - 0x13, 0x16, 0x12, 0x13, 0x36, 0xe5, 0x02, 0x04, - 0xe5, 0x25, 0x24, 0xe5, 0x17, 0x40, 0xa5, 0x20, - 0xa5, 0x20, 0xa5, 0x20, 0x45, 0x40, 0x2d, 0x0c, - 0x0e, 0x0f, 0x2d, 0x00, 0x0f, 0x6c, 0x2f, 0xe0, - 0x02, 0x5b, 0x2f, 0x20, 0xe5, 0x04, 0x00, 0xe5, - 0x12, 0x00, 0xe5, 0x0b, 0x00, 0x25, 0x00, 0xe5, - 0x07, 0x20, 0xe5, 0x06, 0xe0, 0x1a, 0xe5, 0x73, - 0x80, 0x56, 0x60, 0xeb, 0x25, 0x40, 0xef, 0x01, - 0xea, 0x2d, 0x6b, 0xef, 0x09, 0x2b, 0x4f, 0x00, - 0xef, 0x04, 0x60, 0x0f, 0xe0, 0x27, 0xef, 0x25, - 0x06, 0xe0, 0x7a, 0xe5, 0x15, 0x40, 0xe5, 0x29, - 0xe0, 0x07, 0x06, 0xeb, 0x13, 0x60, 0xe5, 0x18, - 0x6b, 0xe0, 0x01, 0xe5, 0x0c, 0x0a, 0xe5, 0x00, - 0x0a, 0x80, 0xe5, 0x1e, 0x86, 0x80, 0xe5, 0x16, - 0x00, 0x16, 0xe5, 0x1c, 0x60, 0xe5, 0x00, 0x16, - 0x8a, 0xe0, 0x22, 0xe1, 0x20, 0xe2, 0x20, 0xe5, - 0x46, 0x20, 0xe9, 0x02, 0xa0, 0xe1, 0x1c, 0x60, - 0xe2, 0x1c, 0x60, 0xe5, 0x20, 0xe0, 0x00, 0xe5, - 0x2c, 0xe0, 0x03, 0x16, 0xe0, 0x80, 0x08, 0xe5, - 0x80, 0xaf, 0xe0, 0x01, 0xe5, 0x0e, 0xe0, 0x02, - 0xe5, 0x00, 0xe0, 0x80, 0x10, 0xa5, 0x20, 0x05, - 0x00, 0xe5, 0x24, 0x00, 0x25, 0x40, 0x05, 0x20, - 0xe5, 0x0f, 0x00, 0x16, 0xeb, 0x00, 0xe5, 0x0f, - 0x2f, 0xcb, 0xe5, 0x17, 0xe0, 0x00, 0xeb, 0x01, - 0xe0, 0x28, 0xe5, 0x0b, 0x00, 0x25, 0x80, 0x8b, - 0xe5, 0x0e, 0xab, 0x40, 0x16, 0xe5, 0x12, 0x80, - 0x16, 0xe0, 0x38, 0xe5, 0x30, 0x60, 0x2b, 0x25, - 0xeb, 0x08, 0x20, 0xeb, 0x26, 0x05, 0x46, 0x00, - 0x26, 0x80, 0x66, 0x65, 0x00, 0x45, 0x00, 0xe5, - 0x15, 0x20, 0x46, 0x60, 0x06, 0xeb, 0x01, 0xc0, - 0xf6, 0x01, 0xc0, 0xe5, 0x15, 0x2b, 0x16, 0xe5, - 0x15, 0x4b, 0xe0, 0x18, 0xe5, 0x00, 0x0f, 0xe5, - 0x14, 0x26, 0x60, 0x8b, 0xd6, 0xe0, 0x01, 0xe5, - 0x2e, 0x40, 0xd6, 0xe5, 0x0e, 0x20, 0xeb, 0x00, - 0xe5, 0x0b, 0x80, 0xeb, 0x00, 0xe5, 0x0a, 0xc0, - 0x76, 0xe0, 0x04, 0xcb, 0xe0, 0x48, 0xe5, 0x41, - 0xe0, 0x2f, 0xe1, 0x2b, 0xe0, 0x05, 0xe2, 0x2b, - 0xc0, 0xab, 0xe5, 0x1c, 0x66, 0xe0, 0x00, 0xe9, - 0x02, 0xe0, 0x80, 0x9e, 0xeb, 0x17, 0xe0, 0x79, - 0xe5, 0x15, 0xeb, 0x02, 0x05, 0xe0, 0x00, 0xe5, - 0x0e, 0xe6, 0x03, 0x6b, 0x96, 0xe0, 0x7e, 0xe5, + 0x16, 0x12, 0xf6, 0x05, 0x2f, 0x16, 0xe0, 0x25, + 0xef, 0x12, 0x00, 0xef, 0x51, 0xe0, 0x04, 0xef, + 0x80, 0x4e, 0xe0, 0x12, 0xef, 0x04, 0x60, 0x17, + 0x56, 0x0f, 0x04, 0x05, 0x0a, 0x12, 0x13, 0x12, + 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x2f, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, + 0x11, 0x12, 0x33, 0x0f, 0xea, 0x01, 0x66, 0x27, + 0x11, 0x84, 0x2f, 0x4a, 0x04, 0x05, 0x16, 0x2f, + 0x00, 0xe5, 0x4e, 0x20, 0x26, 0x2e, 0x24, 0x05, + 0x11, 0xe5, 0x52, 0x16, 0x44, 0x05, 0x80, 0xe5, + 0x23, 0x00, 0xe5, 0x56, 0x00, 0x2f, 0x6b, 0xef, + 0x02, 0xe5, 0x18, 0xef, 0x1c, 0xe0, 0x04, 0xe5, + 0x08, 0xef, 0x17, 0x00, 0xeb, 0x02, 0xef, 0x16, + 0xeb, 0x00, 0x0f, 0xeb, 0x07, 0xef, 0x18, 0xeb, + 0x02, 0xef, 0x1f, 0xeb, 0x07, 0xef, 0x80, 0xb8, + 0xe5, 0x99, 0x38, 0xef, 0x38, 0xe5, 0xc0, 0x11, + 0x75, 0x40, 0xe5, 0x0d, 0x04, 0xe5, 0x83, 0xef, + 0x40, 0xef, 0x2f, 0xe0, 0x01, 0xe5, 0x20, 0xa4, + 0x36, 0xe5, 0x80, 0x84, 0x04, 0x56, 0xe5, 0x08, + 0xe9, 0x02, 0x25, 0xe0, 0x0c, 0xff, 0x26, 0x05, + 0x06, 0x48, 0x16, 0xe6, 0x02, 0x16, 0x04, 0xff, + 0x14, 0x24, 0x26, 0xe5, 0x3e, 0xea, 0x02, 0x26, + 0xb6, 0xe0, 0x00, 0xee, 0x0f, 0xe4, 0x01, 0x2e, + 0xff, 0x06, 0x22, 0xff, 0x36, 0x04, 0xe2, 0x00, + 0x9f, 0xff, 0x02, 0x04, 0x2e, 0x7f, 0x05, 0x7f, + 0x22, 0xff, 0x0d, 0x61, 0x02, 0x81, 0x02, 0xff, + 0x02, 0x20, 0x5f, 0x41, 0x02, 0x3f, 0xe0, 0x22, + 0x3f, 0x05, 0x24, 0x02, 0xc5, 0x06, 0x45, 0x06, + 0x65, 0x06, 0xe5, 0x0f, 0x27, 0x26, 0x07, 0x6f, + 0x06, 0x40, 0xab, 0x2f, 0x0d, 0x0f, 0xa0, 0xe5, + 0x2c, 0x76, 0xe0, 0x00, 0x27, 0xe5, 0x2a, 0xe7, + 0x08, 0x26, 0xe0, 0x00, 0x36, 0xe9, 0x02, 0xa0, + 0xe6, 0x0a, 0xa5, 0x56, 0x05, 0x16, 0x25, 0x06, + 0xe9, 0x02, 0xe5, 0x14, 0xe6, 0x00, 0x36, 0xe5, + 0x0f, 0xe6, 0x03, 0x27, 0xe0, 0x03, 0x16, 0xe5, + 0x15, 0x40, 0x46, 0x07, 0xe5, 0x27, 0x06, 0x27, + 0x66, 0x27, 0x26, 0x47, 0xf6, 0x05, 0x00, 0x04, + 0xe9, 0x02, 0x60, 0x36, 0x85, 0x06, 0x04, 0xe5, + 0x01, 0xe9, 0x02, 0x85, 0x00, 0xe5, 0x21, 0xa6, + 0x27, 0x26, 0x27, 0x26, 0xe0, 0x01, 0x45, 0x06, + 0xe5, 0x00, 0x06, 0x07, 0x20, 0xe9, 0x02, 0x20, + 0x76, 0xe5, 0x08, 0x04, 0xa5, 0x4f, 0x05, 0x07, + 0x06, 0x07, 0xe5, 0x2a, 0x06, 0x05, 0x46, 0x25, + 0x26, 0x85, 0x26, 0x05, 0x06, 0x05, 0xe0, 0x10, + 0x25, 0x04, 0x36, 0xe5, 0x03, 0x07, 0x26, 0x27, + 0x36, 0x05, 0x24, 0x07, 0x06, 0xe0, 0x02, 0xa5, + 0x20, 0xa5, 0x20, 0xa5, 0xe0, 0x01, 0xc5, 0x00, + 0xc5, 0x00, 0xe2, 0x23, 0x0e, 0x64, 0xe2, 0x01, + 0x04, 0x2e, 0x60, 0xe2, 0x48, 0xe5, 0x1b, 0x27, + 0x06, 0x27, 0x06, 0x27, 0x16, 0x07, 0x06, 0x20, + 0xe9, 0x02, 0xa0, 0xe5, 0xab, 0x1c, 0xe0, 0x04, + 0xe5, 0x0f, 0x60, 0xe5, 0x29, 0x60, 0xfc, 0x87, + 0x78, 0xfd, 0x98, 0x78, 0xe5, 0x80, 0xe6, 0x20, + 0xe5, 0x62, 0xe0, 0x1e, 0xc2, 0xe0, 0x04, 0x82, + 0x80, 0x05, 0x06, 0xe5, 0x02, 0x0c, 0xe5, 0x05, + 0x00, 0x85, 0x00, 0x05, 0x00, 0x25, 0x00, 0x25, + 0x00, 0xe5, 0x64, 0xee, 0x08, 0xe0, 0x09, 0xe5, + 0x80, 0xe3, 0x13, 0x12, 0xe0, 0x08, 0xe5, 0x38, + 0x20, 0xe5, 0x2e, 0xe0, 0x20, 0xe5, 0x04, 0x0d, + 0x0f, 0x20, 0xe6, 0x08, 0xd6, 0x12, 0x13, 0x16, + 0xa0, 0xe6, 0x08, 0x16, 0x31, 0x30, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, + 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x36, 0x12, + 0x13, 0x76, 0x50, 0x56, 0x00, 0x76, 0x11, 0x12, + 0x13, 0x12, 0x13, 0x12, 0x13, 0x56, 0x0c, 0x11, + 0x4c, 0x00, 0x16, 0x0d, 0x36, 0x60, 0x85, 0x00, + 0xe5, 0x7f, 0x20, 0x1b, 0x00, 0x56, 0x0d, 0x56, + 0x12, 0x13, 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9, + 0x02, 0x36, 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16, + 0x13, 0x0e, 0x10, 0x0e, 0xe2, 0x12, 0x12, 0x0c, + 0x13, 0x0c, 0x12, 0x13, 0x16, 0x12, 0x13, 0x36, + 0xe5, 0x02, 0x04, 0xe5, 0x25, 0x24, 0xe5, 0x17, + 0x40, 0xa5, 0x20, 0xa5, 0x20, 0xa5, 0x20, 0x45, + 0x40, 0x2d, 0x0c, 0x0e, 0x0f, 0x2d, 0x00, 0x0f, + 0x6c, 0x2f, 0xe0, 0x02, 0x5b, 0x2f, 0x20, 0xe5, + 0x04, 0x00, 0xe5, 0x12, 0x00, 0xe5, 0x0b, 0x00, + 0x25, 0x00, 0xe5, 0x07, 0x20, 0xe5, 0x06, 0xe0, + 0x1a, 0xe5, 0x73, 0x80, 0x56, 0x60, 0xeb, 0x25, + 0x40, 0xef, 0x01, 0xea, 0x2d, 0x6b, 0xef, 0x09, + 0x2b, 0x4f, 0x00, 0xef, 0x05, 0x40, 0x0f, 0xe0, + 0x27, 0xef, 0x25, 0x06, 0xe0, 0x7a, 0xe5, 0x15, + 0x40, 0xe5, 0x29, 0xe0, 0x07, 0x06, 0xeb, 0x13, + 0x60, 0xe5, 0x18, 0x6b, 0xe0, 0x01, 0xe5, 0x0c, + 0x0a, 0xe5, 0x00, 0x0a, 0x80, 0xe5, 0x1e, 0x86, + 0x80, 0xe5, 0x16, 0x00, 0x16, 0xe5, 0x1c, 0x60, + 0xe5, 0x00, 0x16, 0x8a, 0xe0, 0x22, 0xe1, 0x20, + 0xe2, 0x20, 0xe5, 0x46, 0x20, 0xe9, 0x02, 0xa0, + 0xe1, 0x1c, 0x60, 0xe2, 0x1c, 0x60, 0xe5, 0x20, + 0xe0, 0x00, 0xe5, 0x2c, 0xe0, 0x03, 0x16, 0xe0, + 0x80, 0x08, 0xe5, 0x80, 0xaf, 0xe0, 0x01, 0xe5, + 0x0e, 0xe0, 0x02, 0xe5, 0x00, 0xe0, 0x80, 0x10, + 0xa5, 0x20, 0x05, 0x00, 0xe5, 0x24, 0x00, 0x25, + 0x40, 0x05, 0x20, 0xe5, 0x0f, 0x00, 0x16, 0xeb, + 0x00, 0xe5, 0x0f, 0x2f, 0xcb, 0xe5, 0x17, 0xe0, + 0x00, 0xeb, 0x01, 0xe0, 0x28, 0xe5, 0x0b, 0x00, + 0x25, 0x80, 0x8b, 0xe5, 0x0e, 0xab, 0x40, 0x16, + 0xe5, 0x12, 0x80, 0x16, 0xe0, 0x38, 0xe5, 0x30, + 0x60, 0x2b, 0x25, 0xeb, 0x08, 0x20, 0xeb, 0x26, + 0x05, 0x46, 0x00, 0x26, 0x80, 0x66, 0x65, 0x00, + 0x45, 0x00, 0xe5, 0x15, 0x20, 0x46, 0x60, 0x06, + 0xeb, 0x01, 0xc0, 0xf6, 0x01, 0xc0, 0xe5, 0x15, + 0x2b, 0x16, 0xe5, 0x15, 0x4b, 0xe0, 0x18, 0xe5, + 0x00, 0x0f, 0xe5, 0x14, 0x26, 0x60, 0x8b, 0xd6, + 0xe0, 0x01, 0xe5, 0x2e, 0x40, 0xd6, 0xe5, 0x0e, + 0x20, 0xeb, 0x00, 0xe5, 0x0b, 0x80, 0xeb, 0x00, + 0xe5, 0x0a, 0xc0, 0x76, 0xe0, 0x04, 0xcb, 0xe0, + 0x48, 0xe5, 0x41, 0xe0, 0x2f, 0xe1, 0x2b, 0xe0, + 0x05, 0xe2, 0x2b, 0xc0, 0xab, 0xe5, 0x1c, 0x66, + 0xe0, 0x00, 0xe9, 0x02, 0xe0, 0x80, 0x9e, 0xeb, + 0x17, 0x00, 0xe5, 0x22, 0x00, 0x26, 0x11, 0x20, + 0x25, 0xe0, 0x46, 0xe5, 0x15, 0xeb, 0x02, 0x05, + 0xe0, 0x00, 0xe5, 0x0e, 0xe6, 0x03, 0x6b, 0x96, + 0xe0, 0x4e, 0xe5, 0x0d, 0xcb, 0xe0, 0x0c, 0xe5, 0x0f, 0xe0, 0x01, 0x07, 0x06, 0x07, 0xe5, 0x2d, 0xe6, 0x07, 0xd6, 0x60, 0xeb, 0x0c, 0xe9, 0x02, 0xe0, 0x07, 0x46, 0x07, 0xe5, 0x25, 0x47, 0x66, 0x27, 0x26, 0x36, 0x1b, 0x76, 0xe0, 0x03, 0x1b, 0x20, 0xe5, 0x11, 0xc0, 0xe9, 0x02, 0xa0, 0x46, 0xe5, 0x1c, 0x86, 0x07, 0xe6, 0x00, 0x00, 0xe9, - 0x02, 0x76, 0x05, 0x27, 0xe0, 0x01, 0xe5, 0x1b, - 0x06, 0x36, 0x05, 0xe0, 0x01, 0x26, 0x07, 0xe5, - 0x28, 0x47, 0xe6, 0x01, 0x27, 0x65, 0x76, 0x66, - 0x16, 0x20, 0xe9, 0x02, 0x05, 0x16, 0x05, 0x56, - 0x00, 0xeb, 0x0c, 0xe0, 0x03, 0xe5, 0x0a, 0x00, - 0xe5, 0x11, 0x47, 0x46, 0x27, 0x06, 0x07, 0x26, - 0xb6, 0x06, 0xe0, 0x39, 0xc5, 0x00, 0x05, 0x00, - 0x65, 0x00, 0xe5, 0x07, 0x00, 0xe5, 0x02, 0x16, - 0xa0, 0xe5, 0x27, 0x06, 0x47, 0xe6, 0x00, 0x80, - 0xe9, 0x02, 0xa0, 0x26, 0x27, 0x00, 0xe5, 0x00, - 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00, - 0x25, 0x00, 0x85, 0x00, 0x26, 0x05, 0x27, 0x06, - 0x67, 0x20, 0x27, 0x20, 0x47, 0x20, 0x05, 0xa0, - 0x07, 0x80, 0x85, 0x27, 0x20, 0xc6, 0x40, 0x86, - 0xe0, 0x80, 0x03, 0xe5, 0x2d, 0x47, 0xe6, 0x00, - 0x27, 0x46, 0x07, 0x06, 0x65, 0x96, 0xe9, 0x02, - 0x00, 0x16, 0x00, 0x16, 0x06, 0x05, 0xe0, 0x18, - 0xe5, 0x28, 0x47, 0xa6, 0x07, 0x06, 0x67, 0x26, - 0x07, 0x26, 0x25, 0x16, 0x05, 0xe0, 0x00, 0xe9, - 0x02, 0xe0, 0x80, 0x1e, 0xe5, 0x27, 0x47, 0x66, - 0x20, 0x67, 0x26, 0x07, 0x26, 0xf6, 0x0f, 0x65, - 0x26, 0xe0, 0x1a, 0xe5, 0x28, 0x47, 0xe6, 0x00, - 0x27, 0x06, 0x07, 0x26, 0x56, 0x05, 0xe0, 0x03, - 0xe9, 0x02, 0xa0, 0xf6, 0x05, 0xe0, 0x0b, 0xe5, - 0x23, 0x06, 0x07, 0x06, 0x27, 0xa6, 0x07, 0x06, - 0x05, 0xc0, 0xe9, 0x02, 0xe0, 0x2e, 0xe5, 0x13, - 0x20, 0x46, 0x27, 0x66, 0x07, 0x86, 0x60, 0xe9, - 0x02, 0x2b, 0x56, 0x0f, 0xe0, 0x80, 0x38, 0xe5, - 0x24, 0x47, 0xe6, 0x01, 0x07, 0x26, 0x16, 0xe0, - 0x5c, 0xe1, 0x18, 0xe2, 0x18, 0xe9, 0x02, 0xeb, - 0x01, 0xe0, 0x04, 0x05, 0xe0, 0x80, 0x18, 0xe5, - 0x00, 0x20, 0xe5, 0x1f, 0x47, 0x66, 0x20, 0x26, - 0x67, 0x06, 0x05, 0x16, 0x05, 0x07, 0xe0, 0x13, - 0x05, 0xe6, 0x02, 0xe5, 0x20, 0xa6, 0x07, 0x05, - 0x66, 0xf6, 0x00, 0x06, 0xe0, 0x00, 0x05, 0xa6, - 0x27, 0x46, 0xe5, 0x26, 0xe6, 0x05, 0x07, 0x26, - 0x56, 0x05, 0x96, 0xe0, 0x15, 0xe5, 0x31, 0xe0, - 0x80, 0x7f, 0xe5, 0x01, 0x00, 0xe5, 0x1d, 0x07, - 0xc6, 0x00, 0xa6, 0x07, 0x06, 0x05, 0x96, 0xe0, - 0x02, 0xe9, 0x02, 0xeb, 0x0b, 0x40, 0x36, 0xe5, - 0x16, 0x20, 0xe6, 0x0e, 0x00, 0x07, 0xc6, 0x07, - 0x26, 0x07, 0x26, 0xe0, 0x41, 0xc5, 0x00, 0x25, - 0x00, 0xe5, 0x1e, 0xa6, 0x40, 0x06, 0x00, 0x26, - 0x00, 0xc6, 0x05, 0x06, 0xe0, 0x00, 0xe9, 0x02, - 0xa0, 0xa5, 0x00, 0x25, 0x00, 0xe5, 0x18, 0x87, - 0x00, 0x26, 0x00, 0x27, 0x06, 0x07, 0x06, 0x05, - 0xc0, 0xe9, 0x02, 0xe0, 0x80, 0xae, 0xe5, 0x0b, - 0x26, 0x27, 0x36, 0xe0, 0x80, 0x3f, 0xeb, 0x0d, - 0xef, 0x00, 0x6d, 0xef, 0x09, 0xe0, 0x05, 0x16, - 0xe5, 0x83, 0x12, 0xe0, 0x5e, 0xea, 0x67, 0x00, - 0x96, 0xe0, 0x03, 0xe5, 0x80, 0x3c, 0xe0, 0x8a, - 0x34, 0xe5, 0x83, 0xa7, 0x00, 0xfb, 0x01, 0xe0, - 0x8f, 0x3f, 0xe5, 0x81, 0xbf, 0xe0, 0xa1, 0x31, - 0xe5, 0x81, 0xb1, 0xc0, 0xe5, 0x17, 0x00, 0xe9, - 0x02, 0x60, 0x36, 0xe0, 0x58, 0xe5, 0x16, 0x20, - 0x86, 0x16, 0xe0, 0x02, 0xe5, 0x28, 0xc6, 0x96, - 0x6f, 0x64, 0x16, 0x0f, 0xe0, 0x02, 0xe9, 0x02, - 0x00, 0xcb, 0x00, 0xe5, 0x0d, 0x80, 0xe5, 0x0b, - 0xe0, 0x82, 0x28, 0xe1, 0x18, 0xe2, 0x18, 0xeb, - 0x0f, 0x76, 0xe0, 0x5d, 0xe5, 0x43, 0x60, 0x06, - 0x05, 0xe7, 0x2f, 0xc0, 0x66, 0xe4, 0x05, 0xe0, - 0x38, 0x24, 0x16, 0x04, 0xe0, 0x14, 0xe5, 0x97, - 0x70, 0xe0, 0x00, 0xe5, 0x82, 0x6b, 0xe0, 0xa4, - 0x85, 0xe5, 0x80, 0x97, 0xe0, 0x29, 0x45, 0xe0, - 0x09, 0x65, 0xe0, 0x00, 0xe5, 0x81, 0x04, 0xe0, - 0x88, 0x7c, 0xe5, 0x63, 0x80, 0xe5, 0x05, 0x40, - 0xe5, 0x01, 0xc0, 0xe5, 0x02, 0x20, 0x0f, 0x26, - 0x16, 0x7b, 0xe0, 0x92, 0xd4, 0xef, 0x80, 0x6e, - 0xe0, 0x02, 0xef, 0x1f, 0x20, 0xef, 0x34, 0x27, - 0x46, 0x4f, 0xa7, 0xfb, 0x00, 0xe6, 0x00, 0x2f, - 0xc6, 0xef, 0x16, 0x66, 0xef, 0x33, 0xe0, 0x0f, - 0xef, 0x3a, 0x46, 0x0f, 0xe0, 0x80, 0x12, 0xeb, - 0x0c, 0xe0, 0x04, 0xef, 0x4f, 0xe0, 0x01, 0xeb, - 0x11, 0xe0, 0x7f, 0xe1, 0x12, 0xe2, 0x12, 0xe1, - 0x12, 0xc2, 0x00, 0xe2, 0x0a, 0xe1, 0x12, 0xe2, - 0x12, 0x01, 0x00, 0x21, 0x20, 0x01, 0x20, 0x21, - 0x20, 0x61, 0x00, 0xe1, 0x00, 0x62, 0x00, 0x02, - 0x00, 0xc2, 0x00, 0xe2, 0x03, 0xe1, 0x12, 0xe2, - 0x12, 0x21, 0x00, 0x61, 0x20, 0xe1, 0x00, 0x00, - 0xc1, 0x00, 0xe2, 0x12, 0x21, 0x00, 0x61, 0x00, - 0x81, 0x00, 0x01, 0x40, 0xc1, 0x00, 0xe2, 0x12, - 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, - 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, - 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x14, - 0x20, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, + 0x02, 0x76, 0x05, 0x27, 0x05, 0xe0, 0x00, 0xe5, + 0x1b, 0x06, 0x36, 0x05, 0xe0, 0x01, 0x26, 0x07, + 0xe5, 0x28, 0x47, 0xe6, 0x01, 0x27, 0x65, 0x76, + 0x66, 0x16, 0x07, 0x06, 0xe9, 0x02, 0x05, 0x16, + 0x05, 0x56, 0x00, 0xeb, 0x0c, 0xe0, 0x03, 0xe5, + 0x0a, 0x00, 0xe5, 0x11, 0x47, 0x46, 0x27, 0x06, + 0x07, 0x26, 0xb6, 0x06, 0xe0, 0x39, 0xc5, 0x00, + 0x05, 0x00, 0x65, 0x00, 0xe5, 0x07, 0x00, 0xe5, + 0x02, 0x16, 0xa0, 0xe5, 0x27, 0x06, 0x47, 0xe6, + 0x00, 0x80, 0xe9, 0x02, 0xa0, 0x26, 0x27, 0x00, + 0xe5, 0x00, 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00, + 0xc5, 0x00, 0x25, 0x00, 0x85, 0x00, 0x26, 0x05, + 0x27, 0x06, 0x67, 0x20, 0x27, 0x20, 0x47, 0x20, + 0x05, 0xa0, 0x07, 0x80, 0x85, 0x27, 0x20, 0xc6, + 0x40, 0x86, 0xe0, 0x80, 0x03, 0xe5, 0x2d, 0x47, + 0xe6, 0x00, 0x27, 0x46, 0x07, 0x06, 0x65, 0x96, + 0xe9, 0x02, 0x36, 0x00, 0x16, 0x06, 0x45, 0xe0, + 0x16, 0xe5, 0x28, 0x47, 0xa6, 0x07, 0x06, 0x67, + 0x26, 0x07, 0x26, 0x25, 0x16, 0x05, 0xe0, 0x00, + 0xe9, 0x02, 0xe0, 0x80, 0x1e, 0xe5, 0x27, 0x47, + 0x66, 0x20, 0x67, 0x26, 0x07, 0x26, 0xf6, 0x0f, + 0x65, 0x26, 0xe0, 0x1a, 0xe5, 0x28, 0x47, 0xe6, + 0x00, 0x27, 0x06, 0x07, 0x26, 0x56, 0x05, 0xe0, + 0x03, 0xe9, 0x02, 0xa0, 0xf6, 0x05, 0xe0, 0x0b, + 0xe5, 0x23, 0x06, 0x07, 0x06, 0x27, 0xa6, 0x07, + 0x06, 0x05, 0xc0, 0xe9, 0x02, 0xe0, 0x2e, 0xe5, + 0x13, 0x20, 0x46, 0x27, 0x66, 0x07, 0x86, 0x60, + 0xe9, 0x02, 0x2b, 0x56, 0x0f, 0xe0, 0x80, 0x38, + 0xe5, 0x24, 0x47, 0xe6, 0x01, 0x07, 0x26, 0x16, + 0xe0, 0x5c, 0xe1, 0x18, 0xe2, 0x18, 0xe9, 0x02, + 0xeb, 0x01, 0xe0, 0x04, 0xe5, 0x00, 0x20, 0x05, + 0x20, 0xe5, 0x00, 0x00, 0x25, 0x00, 0xe5, 0x10, + 0xa7, 0x00, 0x27, 0x20, 0x26, 0x07, 0x06, 0x05, + 0x07, 0x05, 0x07, 0x06, 0x56, 0xe0, 0x01, 0xe9, + 0x02, 0xe0, 0x3e, 0xe5, 0x00, 0x20, 0xe5, 0x1f, + 0x47, 0x66, 0x20, 0x26, 0x67, 0x06, 0x05, 0x16, + 0x05, 0x07, 0xe0, 0x13, 0x05, 0xe6, 0x02, 0xe5, + 0x20, 0xa6, 0x07, 0x05, 0x66, 0xf6, 0x00, 0x06, + 0xe0, 0x00, 0x05, 0xa6, 0x27, 0x46, 0xe5, 0x26, + 0xe6, 0x05, 0x07, 0x26, 0x56, 0x05, 0x96, 0xe0, + 0x15, 0xe5, 0x31, 0xe0, 0x80, 0x7f, 0xe5, 0x01, + 0x00, 0xe5, 0x1d, 0x07, 0xc6, 0x00, 0xa6, 0x07, + 0x06, 0x05, 0x96, 0xe0, 0x02, 0xe9, 0x02, 0xeb, + 0x0b, 0x40, 0x36, 0xe5, 0x16, 0x20, 0xe6, 0x0e, + 0x00, 0x07, 0xc6, 0x07, 0x26, 0x07, 0x26, 0xe0, + 0x41, 0xc5, 0x00, 0x25, 0x00, 0xe5, 0x1e, 0xa6, + 0x40, 0x06, 0x00, 0x26, 0x00, 0xc6, 0x05, 0x06, + 0xe0, 0x00, 0xe9, 0x02, 0xa0, 0xa5, 0x00, 0x25, + 0x00, 0xe5, 0x18, 0x87, 0x00, 0x26, 0x00, 0x27, + 0x06, 0x07, 0x06, 0x05, 0xc0, 0xe9, 0x02, 0xe0, + 0x80, 0xae, 0xe5, 0x0b, 0x26, 0x27, 0x36, 0xe0, + 0x80, 0x2f, 0x05, 0xe0, 0x07, 0xeb, 0x0d, 0xef, + 0x00, 0x6d, 0xef, 0x09, 0xe0, 0x05, 0x16, 0xe5, + 0x83, 0x12, 0xe0, 0x5e, 0xea, 0x67, 0x00, 0x96, + 0xe0, 0x03, 0xe5, 0x80, 0x3c, 0xe0, 0x8a, 0x34, + 0xe5, 0x83, 0xa7, 0x00, 0xfb, 0x01, 0xe0, 0x8f, + 0x3f, 0xe5, 0x81, 0xbf, 0xe0, 0xa1, 0x31, 0xe5, + 0x81, 0xb1, 0xc0, 0xe5, 0x17, 0x00, 0xe9, 0x02, + 0x60, 0x36, 0xe0, 0x58, 0xe5, 0x16, 0x20, 0x86, + 0x16, 0xe0, 0x02, 0xe5, 0x28, 0xc6, 0x96, 0x6f, + 0x64, 0x16, 0x0f, 0xe0, 0x02, 0xe9, 0x02, 0x00, + 0xcb, 0x00, 0xe5, 0x0d, 0x80, 0xe5, 0x0b, 0xe0, + 0x82, 0x28, 0xe1, 0x18, 0xe2, 0x18, 0xeb, 0x0f, + 0x76, 0xe0, 0x5d, 0xe5, 0x43, 0x60, 0x06, 0x05, + 0xe7, 0x2f, 0xc0, 0x66, 0xe4, 0x05, 0xe0, 0x38, + 0x24, 0x16, 0x04, 0x06, 0xe0, 0x03, 0x27, 0xe0, + 0x06, 0xe5, 0x97, 0x70, 0xe0, 0x00, 0xe5, 0x84, + 0x4e, 0xe0, 0x22, 0xe5, 0x01, 0xe0, 0xa2, 0x6f, + 0xe5, 0x80, 0x97, 0xe0, 0x29, 0x45, 0xe0, 0x09, + 0x65, 0xe0, 0x00, 0xe5, 0x81, 0x04, 0xe0, 0x88, + 0x7c, 0xe5, 0x63, 0x80, 0xe5, 0x05, 0x40, 0xe5, + 0x01, 0xc0, 0xe5, 0x02, 0x20, 0x0f, 0x26, 0x16, + 0x7b, 0xe0, 0x92, 0xd4, 0xef, 0x80, 0x6e, 0xe0, + 0x02, 0xef, 0x1f, 0x20, 0xef, 0x34, 0x27, 0x46, + 0x4f, 0xa7, 0xfb, 0x00, 0xe6, 0x00, 0x2f, 0xc6, + 0xef, 0x16, 0x66, 0xef, 0x33, 0xe0, 0x0f, 0xef, + 0x3a, 0x46, 0x0f, 0xe0, 0x80, 0x12, 0xeb, 0x0c, + 0xe0, 0x04, 0xef, 0x4f, 0xe0, 0x01, 0xeb, 0x11, + 0xe0, 0x7f, 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, + 0xc2, 0x00, 0xe2, 0x0a, 0xe1, 0x12, 0xe2, 0x12, + 0x01, 0x00, 0x21, 0x20, 0x01, 0x20, 0x21, 0x20, + 0x61, 0x00, 0xe1, 0x00, 0x62, 0x00, 0x02, 0x00, + 0xc2, 0x00, 0xe2, 0x03, 0xe1, 0x12, 0xe2, 0x12, + 0x21, 0x00, 0x61, 0x20, 0xe1, 0x00, 0x00, 0xc1, + 0x00, 0xe2, 0x12, 0x21, 0x00, 0x61, 0x00, 0x81, + 0x00, 0x01, 0x40, 0xc1, 0x00, 0xe2, 0x12, 0xe1, + 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1, + 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1, + 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x14, 0x20, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c, - 0xe2, 0x11, 0x0c, 0xa2, 0x3f, 0x20, 0xe9, 0x2a, - 0xef, 0x81, 0x78, 0xe6, 0x2f, 0x6f, 0xe6, 0x2a, - 0xef, 0x00, 0x06, 0xef, 0x06, 0x06, 0x2f, 0x96, - 0xe0, 0x07, 0x86, 0x00, 0xe6, 0x07, 0xe0, 0x84, - 0xc8, 0xc6, 0x00, 0xe6, 0x09, 0x20, 0xc6, 0x00, - 0x26, 0x00, 0x86, 0xe0, 0x80, 0x4d, 0xe5, 0x25, - 0x40, 0xc6, 0xc4, 0x20, 0xe9, 0x02, 0x60, 0x05, - 0x0f, 0xe0, 0x80, 0xe8, 0xe5, 0x24, 0x66, 0xe9, - 0x02, 0x80, 0x0d, 0xe0, 0x84, 0x78, 0xe5, 0x80, - 0x3d, 0x20, 0xeb, 0x01, 0xc6, 0xe0, 0x21, 0xe1, - 0x1a, 0xe2, 0x1a, 0xc6, 0x04, 0x60, 0xe9, 0x02, - 0x60, 0x36, 0xe0, 0x82, 0x89, 0xeb, 0x33, 0x0f, - 0x4b, 0x0d, 0x6b, 0xe0, 0x44, 0xeb, 0x25, 0x0f, - 0xeb, 0x07, 0xe0, 0x80, 0x3a, 0x65, 0x00, 0xe5, - 0x13, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00, - 0xe5, 0x02, 0x00, 0x65, 0x00, 0x05, 0x00, 0x05, - 0xa0, 0x05, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05, - 0x00, 0x45, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, - 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, - 0x00, 0x25, 0x00, 0x05, 0x20, 0x65, 0x00, 0xc5, - 0x00, 0x65, 0x00, 0x65, 0x00, 0x05, 0x00, 0xe5, - 0x02, 0x00, 0xe5, 0x09, 0x80, 0x45, 0x00, 0x85, - 0x00, 0xe5, 0x09, 0xe0, 0x2c, 0x2c, 0xe0, 0x80, - 0x86, 0xef, 0x24, 0x60, 0xef, 0x5c, 0xe0, 0x04, - 0xef, 0x07, 0x20, 0xef, 0x07, 0x00, 0xef, 0x07, - 0x00, 0xef, 0x1d, 0xe0, 0x02, 0xeb, 0x05, 0x40, - 0xef, 0x55, 0x40, 0xef, 0x35, 0xe0, 0x31, 0xef, - 0x15, 0xe0, 0x05, 0xef, 0x24, 0x60, 0xef, 0x01, - 0xc0, 0x2f, 0xe0, 0x06, 0xaf, 0xe0, 0x80, 0x12, - 0xef, 0x80, 0x73, 0x8e, 0xef, 0x82, 0x4e, 0xe0, - 0x02, 0xef, 0x05, 0x40, 0xef, 0x03, 0x80, 0xef, - 0x6c, 0xe0, 0x04, 0xef, 0x51, 0xc0, 0xef, 0x04, - 0xe0, 0x0c, 0xef, 0x04, 0x60, 0xef, 0x30, 0xe0, - 0x00, 0xef, 0x02, 0xa0, 0xef, 0x20, 0xe0, 0x00, - 0xef, 0x16, 0xe0, 0x4a, 0xef, 0x04, 0x00, 0xef, - 0x5d, 0x00, 0x6f, 0x40, 0xef, 0x21, 0x20, 0xaf, - 0x40, 0xef, 0x15, 0x20, 0xef, 0x7f, 0xe0, 0x04, - 0xef, 0x06, 0x20, 0x6f, 0x60, 0x4f, 0x80, 0x4f, - 0xe0, 0x05, 0xaf, 0xe0, 0x84, 0xe2, 0xe5, 0xc0, - 0x66, 0x4f, 0xe0, 0x21, 0xe5, 0x8f, 0xad, 0xe0, - 0x03, 0xe5, 0x80, 0x56, 0x20, 0xe5, 0x95, 0xfa, - 0xe0, 0x06, 0xe5, 0x9c, 0xa9, 0xe0, 0x8b, 0x97, - 0xe5, 0x81, 0x96, 0xe0, 0xca, 0xc5, 0x5b, 0x1b, - 0xe0, 0x16, 0xfb, 0x58, 0xe0, 0x78, 0xe6, 0x80, - 0x68, 0xe0, 0xc0, 0xbd, 0x88, 0xfd, 0xc0, 0xbf, - 0x76, 0x20, 0xfd, 0xc0, 0xbf, 0x76, 0x20, + 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c, 0xe2, + 0x11, 0x0c, 0xa2, 0x3f, 0x20, 0xe9, 0x2a, 0xef, + 0x81, 0x78, 0xe6, 0x2f, 0x6f, 0xe6, 0x2a, 0xef, + 0x00, 0x06, 0xef, 0x06, 0x06, 0x2f, 0x96, 0xe0, + 0x07, 0x86, 0x00, 0xe6, 0x07, 0xe0, 0x84, 0xc8, + 0xc6, 0x00, 0xe6, 0x09, 0x20, 0xc6, 0x00, 0x26, + 0x00, 0x86, 0xe0, 0x80, 0x4d, 0xe5, 0x25, 0x40, + 0xc6, 0xc4, 0x20, 0xe9, 0x02, 0x60, 0x05, 0x0f, + 0xe0, 0x80, 0xe8, 0xe5, 0x24, 0x66, 0xe9, 0x02, + 0x80, 0x0d, 0xe0, 0x84, 0x78, 0xe5, 0x80, 0x3d, + 0x20, 0xeb, 0x01, 0xc6, 0xe0, 0x21, 0xe1, 0x1a, + 0xe2, 0x1a, 0xc6, 0x04, 0x60, 0xe9, 0x02, 0x60, + 0x36, 0xe0, 0x82, 0x89, 0xeb, 0x33, 0x0f, 0x4b, + 0x0d, 0x6b, 0xe0, 0x44, 0xeb, 0x25, 0x0f, 0xeb, + 0x07, 0xe0, 0x80, 0x3a, 0x65, 0x00, 0xe5, 0x13, + 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00, 0xe5, + 0x02, 0x00, 0x65, 0x00, 0x05, 0x00, 0x05, 0xa0, + 0x05, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x45, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x25, 0x00, 0x05, 0x20, 0x65, 0x00, 0xc5, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x05, 0x00, 0xe5, 0x02, + 0x00, 0xe5, 0x09, 0x80, 0x45, 0x00, 0x85, 0x00, + 0xe5, 0x09, 0xe0, 0x2c, 0x2c, 0xe0, 0x80, 0x86, + 0xef, 0x24, 0x60, 0xef, 0x5c, 0xe0, 0x04, 0xef, + 0x07, 0x20, 0xef, 0x07, 0x00, 0xef, 0x07, 0x00, + 0xef, 0x1d, 0xe0, 0x02, 0xeb, 0x05, 0xef, 0x80, + 0x19, 0xe0, 0x30, 0xef, 0x15, 0xe0, 0x05, 0xef, + 0x24, 0x60, 0xef, 0x01, 0xc0, 0x2f, 0xe0, 0x06, + 0xaf, 0xe0, 0x80, 0x12, 0xef, 0x80, 0x73, 0x8e, + 0xef, 0x82, 0x50, 0xe0, 0x00, 0xef, 0x05, 0x40, + 0xef, 0x05, 0x40, 0xef, 0x6c, 0xe0, 0x04, 0xef, + 0x51, 0xc0, 0xef, 0x04, 0xe0, 0x0c, 0xef, 0x04, + 0x60, 0xef, 0x30, 0xe0, 0x00, 0xef, 0x02, 0xa0, + 0xef, 0x20, 0xe0, 0x00, 0xef, 0x16, 0x20, 0x2f, + 0xe0, 0x46, 0xef, 0x71, 0x00, 0xef, 0x4a, 0x00, + 0xef, 0x7f, 0xe0, 0x04, 0xef, 0x06, 0x20, 0x8f, + 0x40, 0x4f, 0x80, 0xcf, 0xe0, 0x01, 0xef, 0x11, + 0xc0, 0xcf, 0xe0, 0x01, 0x4f, 0xe0, 0x05, 0xcf, + 0xe0, 0x21, 0xef, 0x80, 0x0b, 0x00, 0xef, 0x2f, + 0xe0, 0x1d, 0xe9, 0x02, 0xe0, 0x83, 0x7e, 0xe5, + 0xc0, 0x66, 0x56, 0xe0, 0x1a, 0xe5, 0x8f, 0xad, + 0xe0, 0x03, 0xe5, 0x80, 0x56, 0x20, 0xe5, 0x95, + 0xfa, 0xe0, 0x06, 0xe5, 0x9c, 0xa9, 0xe0, 0x8b, + 0x97, 0xe5, 0x81, 0x96, 0xe0, 0x85, 0x5a, 0xe5, + 0x92, 0xc3, 0xe0, 0xca, 0xac, 0x2e, 0x1b, 0xe0, + 0x16, 0xfb, 0x58, 0xe0, 0x78, 0xe6, 0x80, 0x68, + 0xe0, 0xc0, 0xbd, 0x88, 0xfd, 0xc0, 0xbf, 0x76, + 0x20, 0xfd, 0xc0, 0xbf, 0x76, 0x20, }; typedef enum { @@ -2753,6 +2781,7 @@ typedef enum { UNICODE_SCRIPT_Chakma, UNICODE_SCRIPT_Cham, UNICODE_SCRIPT_Cherokee, + UNICODE_SCRIPT_Chorasmian, UNICODE_SCRIPT_Common, UNICODE_SCRIPT_Coptic, UNICODE_SCRIPT_Cuneiform, @@ -2760,6 +2789,7 @@ typedef enum { UNICODE_SCRIPT_Cyrillic, UNICODE_SCRIPT_Deseret, UNICODE_SCRIPT_Devanagari, + UNICODE_SCRIPT_Dives_Akuru, UNICODE_SCRIPT_Dogra, UNICODE_SCRIPT_Duployan, UNICODE_SCRIPT_Egyptian_Hieroglyphs, @@ -2793,6 +2823,7 @@ typedef enum { UNICODE_SCRIPT_Kharoshthi, UNICODE_SCRIPT_Khmer, UNICODE_SCRIPT_Khojki, + UNICODE_SCRIPT_Khitan_Small_Script, UNICODE_SCRIPT_Khudawadi, UNICODE_SCRIPT_Lao, UNICODE_SCRIPT_Latin, @@ -2880,6 +2911,7 @@ typedef enum { UNICODE_SCRIPT_Vai, UNICODE_SCRIPT_Wancho, UNICODE_SCRIPT_Warang_Citi, + UNICODE_SCRIPT_Yezidi, UNICODE_SCRIPT_Yi, UNICODE_SCRIPT_Zanabazar_Square, UNICODE_SCRIPT_COUNT, @@ -2909,6 +2941,7 @@ static const char unicode_script_name_table[] = "Chakma,Cakm" "\0" "Cham,Cham" "\0" "Cherokee,Cher" "\0" + "Chorasmian,Chrs" "\0" "Common,Zyyy" "\0" "Coptic,Copt,Qaac" "\0" "Cuneiform,Xsux" "\0" @@ -2916,6 +2949,7 @@ static const char unicode_script_name_table[] = "Cyrillic,Cyrl" "\0" "Deseret,Dsrt" "\0" "Devanagari,Deva" "\0" + "Dives_Akuru,Diak" "\0" "Dogra,Dogr" "\0" "Duployan,Dupl" "\0" "Egyptian_Hieroglyphs,Egyp" "\0" @@ -2949,6 +2983,7 @@ static const char unicode_script_name_table[] = "Kharoshthi,Khar" "\0" "Khmer,Khmr" "\0" "Khojki,Khoj" "\0" + "Khitan_Small_Script,Kits" "\0" "Khudawadi,Sind" "\0" "Lao,Laoo" "\0" "Latin,Latn" "\0" @@ -3036,434 +3071,442 @@ static const char unicode_script_name_table[] = "Vai,Vaii" "\0" "Wancho,Wcho" "\0" "Warang_Citi,Wara" "\0" + "Yezidi,Yezi" "\0" "Yi,Yiii" "\0" "Zanabazar_Square,Zanb" "\0" ; -static const uint8_t unicode_script_table[2565] = { - 0xc0, 0x18, 0x99, 0x42, 0x85, 0x18, 0x99, 0x42, - 0xae, 0x18, 0x80, 0x42, 0x8e, 0x18, 0x80, 0x42, - 0x84, 0x18, 0x96, 0x42, 0x80, 0x18, 0x9e, 0x42, - 0x80, 0x18, 0xe1, 0x60, 0x42, 0xa6, 0x18, 0x84, - 0x42, 0x84, 0x18, 0x81, 0x0d, 0x93, 0x18, 0xe0, - 0x0f, 0x35, 0x83, 0x29, 0x80, 0x18, 0x82, 0x29, - 0x01, 0x83, 0x29, 0x80, 0x18, 0x80, 0x29, 0x03, - 0x80, 0x29, 0x80, 0x18, 0x80, 0x29, 0x80, 0x18, - 0x82, 0x29, 0x00, 0x80, 0x29, 0x00, 0x93, 0x29, - 0x00, 0xbe, 0x29, 0x8d, 0x19, 0x8f, 0x29, 0xe0, - 0x24, 0x1c, 0x81, 0x35, 0xe0, 0x48, 0x1c, 0x00, - 0xa5, 0x05, 0x01, 0xaf, 0x05, 0x80, 0x18, 0x80, - 0x05, 0x01, 0x82, 0x05, 0x00, 0xb6, 0x32, 0x07, - 0x9a, 0x32, 0x03, 0x85, 0x32, 0x0a, 0x84, 0x04, - 0x80, 0x18, 0x85, 0x04, 0x80, 0x18, 0x8d, 0x04, - 0x80, 0x18, 0x80, 0x04, 0x00, 0x80, 0x04, 0x80, - 0x18, 0x9f, 0x04, 0x80, 0x18, 0x89, 0x04, 0x8a, - 0x35, 0x99, 0x04, 0x80, 0x35, 0xe0, 0x0b, 0x04, - 0x80, 0x18, 0xa1, 0x04, 0x8d, 0x84, 0x00, 0xbb, - 0x84, 0x01, 0x82, 0x84, 0xaf, 0x04, 0xb1, 0x8e, - 0x0d, 0xba, 0x60, 0x01, 0x82, 0x60, 0xad, 0x78, - 0x01, 0x8e, 0x78, 0x00, 0x9b, 0x4d, 0x01, 0x80, - 0x4d, 0x00, 0x8a, 0x84, 0x34, 0x94, 0x04, 0x00, - 0x87, 0x04, 0x14, 0x8e, 0x04, 0x80, 0x18, 0x9c, - 0x04, 0xd0, 0x1e, 0x83, 0x35, 0x8e, 0x1e, 0x81, - 0x18, 0x99, 0x1e, 0x83, 0x0b, 0x00, 0x87, 0x0b, - 0x01, 0x81, 0x0b, 0x01, 0x95, 0x0b, 0x00, 0x86, - 0x0b, 0x00, 0x80, 0x0b, 0x02, 0x83, 0x0b, 0x01, - 0x88, 0x0b, 0x01, 0x81, 0x0b, 0x01, 0x83, 0x0b, - 0x07, 0x80, 0x0b, 0x03, 0x81, 0x0b, 0x00, 0x84, - 0x0b, 0x01, 0x98, 0x0b, 0x01, 0x82, 0x2c, 0x00, - 0x85, 0x2c, 0x03, 0x81, 0x2c, 0x01, 0x95, 0x2c, - 0x00, 0x86, 0x2c, 0x00, 0x81, 0x2c, 0x00, 0x81, - 0x2c, 0x00, 0x81, 0x2c, 0x01, 0x80, 0x2c, 0x00, - 0x84, 0x2c, 0x03, 0x81, 0x2c, 0x01, 0x82, 0x2c, - 0x02, 0x80, 0x2c, 0x06, 0x83, 0x2c, 0x00, 0x80, - 0x2c, 0x06, 0x90, 0x2c, 0x09, 0x82, 0x2a, 0x00, - 0x88, 0x2a, 0x00, 0x82, 0x2a, 0x00, 0x95, 0x2a, - 0x00, 0x86, 0x2a, 0x00, 0x81, 0x2a, 0x00, 0x84, - 0x2a, 0x01, 0x89, 0x2a, 0x00, 0x82, 0x2a, 0x00, - 0x82, 0x2a, 0x01, 0x80, 0x2a, 0x0e, 0x83, 0x2a, - 0x01, 0x8b, 0x2a, 0x06, 0x86, 0x2a, 0x00, 0x82, - 0x6d, 0x00, 0x87, 0x6d, 0x01, 0x81, 0x6d, 0x01, - 0x95, 0x6d, 0x00, 0x86, 0x6d, 0x00, 0x81, 0x6d, - 0x00, 0x84, 0x6d, 0x01, 0x88, 0x6d, 0x01, 0x81, - 0x6d, 0x01, 0x82, 0x6d, 0x07, 0x81, 0x6d, 0x03, - 0x81, 0x6d, 0x00, 0x84, 0x6d, 0x01, 0x91, 0x6d, - 0x09, 0x81, 0x8b, 0x00, 0x85, 0x8b, 0x02, 0x82, - 0x8b, 0x00, 0x83, 0x8b, 0x02, 0x81, 0x8b, 0x00, - 0x80, 0x8b, 0x00, 0x81, 0x8b, 0x02, 0x81, 0x8b, - 0x02, 0x82, 0x8b, 0x02, 0x8b, 0x8b, 0x03, 0x84, - 0x8b, 0x02, 0x82, 0x8b, 0x00, 0x83, 0x8b, 0x01, - 0x80, 0x8b, 0x05, 0x80, 0x8b, 0x0d, 0x94, 0x8b, - 0x04, 0x8c, 0x8d, 0x00, 0x82, 0x8d, 0x00, 0x96, - 0x8d, 0x00, 0x8f, 0x8d, 0x02, 0x87, 0x8d, 0x00, - 0x82, 0x8d, 0x00, 0x83, 0x8d, 0x06, 0x81, 0x8d, - 0x00, 0x82, 0x8d, 0x04, 0x83, 0x8d, 0x01, 0x89, - 0x8d, 0x06, 0x88, 0x8d, 0x8c, 0x3a, 0x00, 0x82, - 0x3a, 0x00, 0x96, 0x3a, 0x00, 0x89, 0x3a, 0x00, - 0x84, 0x3a, 0x01, 0x88, 0x3a, 0x00, 0x82, 0x3a, - 0x00, 0x83, 0x3a, 0x06, 0x81, 0x3a, 0x06, 0x80, - 0x3a, 0x00, 0x83, 0x3a, 0x01, 0x89, 0x3a, 0x00, - 0x81, 0x3a, 0x0c, 0x83, 0x4c, 0x00, 0x87, 0x4c, - 0x00, 0x82, 0x4c, 0x00, 0xb2, 0x4c, 0x00, 0x82, - 0x4c, 0x00, 0x85, 0x4c, 0x03, 0x8f, 0x4c, 0x01, - 0x99, 0x4c, 0x01, 0x81, 0x7e, 0x00, 0x91, 0x7e, - 0x02, 0x97, 0x7e, 0x00, 0x88, 0x7e, 0x00, 0x80, - 0x7e, 0x01, 0x86, 0x7e, 0x02, 0x80, 0x7e, 0x03, - 0x85, 0x7e, 0x00, 0x80, 0x7e, 0x00, 0x87, 0x7e, - 0x05, 0x89, 0x7e, 0x01, 0x82, 0x7e, 0x0b, 0xb9, - 0x8f, 0x03, 0x80, 0x18, 0x9b, 0x8f, 0x24, 0x81, - 0x41, 0x00, 0x80, 0x41, 0x00, 0x84, 0x41, 0x00, - 0x97, 0x41, 0x00, 0x80, 0x41, 0x00, 0x96, 0x41, - 0x01, 0x84, 0x41, 0x00, 0x80, 0x41, 0x00, 0x85, - 0x41, 0x01, 0x89, 0x41, 0x01, 0x83, 0x41, 0x1f, - 0xc7, 0x90, 0x00, 0xa3, 0x90, 0x03, 0xa6, 0x90, - 0x00, 0xa3, 0x90, 0x00, 0x8e, 0x90, 0x00, 0x86, - 0x90, 0x83, 0x18, 0x81, 0x90, 0x24, 0xe0, 0x3f, - 0x5b, 0xa5, 0x25, 0x00, 0x80, 0x25, 0x04, 0x80, - 0x25, 0x01, 0xaa, 0x25, 0x80, 0x18, 0x83, 0x25, - 0xe0, 0x9f, 0x2e, 0xc8, 0x24, 0x00, 0x83, 0x24, - 0x01, 0x86, 0x24, 0x00, 0x80, 0x24, 0x00, 0x83, - 0x24, 0x01, 0xa8, 0x24, 0x00, 0x83, 0x24, 0x01, - 0xa0, 0x24, 0x00, 0x83, 0x24, 0x01, 0x86, 0x24, - 0x00, 0x80, 0x24, 0x00, 0x83, 0x24, 0x01, 0x8e, - 0x24, 0x00, 0xb8, 0x24, 0x00, 0x83, 0x24, 0x01, - 0xc2, 0x24, 0x01, 0x9f, 0x24, 0x02, 0x99, 0x24, - 0x05, 0xd5, 0x17, 0x01, 0x85, 0x17, 0x01, 0xe2, - 0x1f, 0x12, 0x9c, 0x63, 0x02, 0xca, 0x77, 0x82, - 0x18, 0x8a, 0x77, 0x06, 0x8c, 0x85, 0x00, 0x86, - 0x85, 0x0a, 0x94, 0x30, 0x81, 0x18, 0x08, 0x93, - 0x11, 0x0b, 0x8c, 0x86, 0x00, 0x82, 0x86, 0x00, - 0x81, 0x86, 0x0b, 0xdd, 0x3e, 0x01, 0x89, 0x3e, - 0x05, 0x89, 0x3e, 0x05, 0x81, 0x58, 0x81, 0x18, - 0x80, 0x58, 0x80, 0x18, 0x88, 0x58, 0x00, 0x89, - 0x58, 0x05, 0xd8, 0x58, 0x06, 0xaa, 0x58, 0x04, - 0xc5, 0x12, 0x09, 0x9e, 0x44, 0x00, 0x8b, 0x44, - 0x03, 0x8b, 0x44, 0x03, 0x80, 0x44, 0x02, 0x8b, - 0x44, 0x9d, 0x87, 0x01, 0x84, 0x87, 0x0a, 0xab, - 0x5e, 0x03, 0x99, 0x5e, 0x05, 0x8a, 0x5e, 0x02, - 0x81, 0x5e, 0x9f, 0x3e, 0x9b, 0x10, 0x01, 0x81, - 0x10, 0xbe, 0x88, 0x00, 0x9c, 0x88, 0x01, 0x8a, - 0x88, 0x05, 0x89, 0x88, 0x05, 0x8d, 0x88, 0x01, - 0x8e, 0x35, 0x40, 0xcb, 0x07, 0x03, 0xac, 0x07, - 0x02, 0xbf, 0x82, 0xb3, 0x0a, 0x07, 0x83, 0x0a, - 0xb7, 0x43, 0x02, 0x8e, 0x43, 0x02, 0x82, 0x43, - 0xaf, 0x64, 0x88, 0x1c, 0x06, 0xaa, 0x25, 0x01, - 0x82, 0x25, 0x87, 0x82, 0x07, 0x82, 0x35, 0x80, - 0x18, 0x8c, 0x35, 0x80, 0x18, 0x86, 0x35, 0x83, - 0x18, 0x80, 0x35, 0x85, 0x18, 0x80, 0x35, 0x82, - 0x18, 0x81, 0x35, 0x80, 0x18, 0x04, 0xa5, 0x42, - 0x84, 0x29, 0x80, 0x1c, 0xb0, 0x42, 0x84, 0x29, - 0x83, 0x42, 0x84, 0x29, 0x8c, 0x42, 0x80, 0x1c, - 0xc5, 0x42, 0x80, 0x29, 0xb9, 0x35, 0x00, 0x84, - 0x35, 0xe0, 0x9f, 0x42, 0x95, 0x29, 0x01, 0x85, - 0x29, 0x01, 0xa5, 0x29, 0x01, 0x85, 0x29, 0x01, - 0x87, 0x29, 0x00, 0x80, 0x29, 0x00, 0x80, 0x29, - 0x00, 0x80, 0x29, 0x00, 0x9e, 0x29, 0x01, 0xb4, - 0x29, 0x00, 0x8e, 0x29, 0x00, 0x8d, 0x29, 0x01, - 0x85, 0x29, 0x00, 0x92, 0x29, 0x01, 0x82, 0x29, - 0x00, 0x88, 0x29, 0x00, 0x8b, 0x18, 0x81, 0x35, - 0xd6, 0x18, 0x00, 0x8a, 0x18, 0x80, 0x42, 0x01, - 0x8a, 0x18, 0x80, 0x42, 0x8e, 0x18, 0x00, 0x8c, - 0x42, 0x02, 0x9f, 0x18, 0x0f, 0xa0, 0x35, 0x0e, - 0xa5, 0x18, 0x80, 0x29, 0x82, 0x18, 0x81, 0x42, - 0x85, 0x18, 0x80, 0x42, 0x9a, 0x18, 0x80, 0x42, - 0x90, 0x18, 0xa8, 0x42, 0x82, 0x18, 0x03, 0xe2, - 0x36, 0x18, 0x18, 0x8a, 0x18, 0x14, 0xe3, 0x3f, - 0x18, 0xe0, 0x9f, 0x0f, 0xe2, 0x13, 0x18, 0x01, - 0x9f, 0x18, 0x01, 0xe0, 0x07, 0x18, 0xae, 0x26, - 0x00, 0xae, 0x26, 0x00, 0x9f, 0x42, 0xe0, 0x13, - 0x19, 0x04, 0x86, 0x19, 0xa5, 0x25, 0x00, 0x80, - 0x25, 0x04, 0x80, 0x25, 0x01, 0xb7, 0x91, 0x06, - 0x81, 0x91, 0x0d, 0x80, 0x91, 0x96, 0x24, 0x08, - 0x86, 0x24, 0x00, 0x86, 0x24, 0x00, 0x86, 0x24, - 0x00, 0x86, 0x24, 0x00, 0x86, 0x24, 0x00, 0x86, - 0x24, 0x00, 0x86, 0x24, 0x00, 0x86, 0x24, 0x00, - 0x9f, 0x1c, 0xcf, 0x18, 0x2f, 0x99, 0x2d, 0x00, - 0xd8, 0x2d, 0x0b, 0xe0, 0x75, 0x2d, 0x19, 0x8b, - 0x18, 0x03, 0x84, 0x18, 0x80, 0x2d, 0x80, 0x18, - 0x80, 0x2d, 0x98, 0x18, 0x88, 0x2d, 0x83, 0x35, - 0x81, 0x2e, 0x87, 0x18, 0x83, 0x2d, 0x83, 0x18, - 0x00, 0xd5, 0x33, 0x01, 0x81, 0x35, 0x81, 0x18, - 0x82, 0x33, 0x80, 0x18, 0xd9, 0x3b, 0x81, 0x18, - 0x82, 0x3b, 0x04, 0xaa, 0x0d, 0x00, 0xdd, 0x2e, - 0x00, 0x8f, 0x18, 0x9a, 0x0d, 0x04, 0xa3, 0x18, - 0x0b, 0x8f, 0x3b, 0x9e, 0x2e, 0x00, 0xbf, 0x18, - 0x9e, 0x2e, 0xd0, 0x18, 0xae, 0x3b, 0x80, 0x18, - 0xd7, 0x3b, 0xe0, 0x47, 0x18, 0xf0, 0x09, 0x55, - 0x2d, 0x09, 0xbf, 0x18, 0xf0, 0x41, 0x8f, 0x2d, - 0x0f, 0xe4, 0x2c, 0x97, 0x02, 0xb6, 0x97, 0x08, - 0xaf, 0x47, 0xe0, 0xcb, 0x94, 0x13, 0xdf, 0x1c, - 0xd7, 0x08, 0x07, 0xa1, 0x18, 0xe0, 0x05, 0x42, - 0x82, 0x18, 0xb4, 0x42, 0x01, 0x84, 0x42, 0x2f, - 0x88, 0x42, 0xab, 0x83, 0x03, 0x89, 0x18, 0x05, - 0xb7, 0x73, 0x07, 0xc5, 0x79, 0x07, 0x8b, 0x79, - 0x05, 0x9f, 0x1e, 0xad, 0x3c, 0x80, 0x18, 0x80, - 0x3c, 0xa3, 0x76, 0x0a, 0x80, 0x76, 0x9c, 0x2e, - 0x02, 0xcd, 0x38, 0x00, 0x80, 0x18, 0x89, 0x38, - 0x03, 0x81, 0x38, 0x9e, 0x5b, 0x00, 0xb6, 0x16, - 0x08, 0x8d, 0x16, 0x01, 0x89, 0x16, 0x01, 0x83, - 0x16, 0x9f, 0x5b, 0xc2, 0x89, 0x17, 0x84, 0x89, - 0x96, 0x52, 0x09, 0x85, 0x24, 0x01, 0x85, 0x24, - 0x01, 0x85, 0x24, 0x08, 0x86, 0x24, 0x00, 0x86, - 0x24, 0x00, 0xaa, 0x42, 0x80, 0x18, 0x88, 0x42, - 0x80, 0x29, 0x81, 0x42, 0x07, 0xcf, 0x17, 0xad, - 0x52, 0x01, 0x89, 0x52, 0x05, 0xf0, 0x1b, 0x43, - 0x2e, 0x0b, 0x96, 0x2e, 0x03, 0xb0, 0x2e, 0x70, - 0x10, 0xa3, 0xe1, 0x0d, 0x2d, 0x01, 0xe0, 0x09, - 0x2d, 0x25, 0x86, 0x42, 0x0b, 0x84, 0x05, 0x04, - 0x99, 0x32, 0x00, 0x84, 0x32, 0x00, 0x80, 0x32, - 0x00, 0x81, 0x32, 0x00, 0x81, 0x32, 0x00, 0x89, - 0x32, 0xe0, 0x11, 0x04, 0x10, 0xe1, 0x0a, 0x04, - 0x81, 0x18, 0x0f, 0xbf, 0x04, 0x01, 0xb5, 0x04, - 0x27, 0x8d, 0x04, 0x01, 0x8f, 0x35, 0x89, 0x18, - 0x05, 0x8d, 0x35, 0x81, 0x1c, 0xa2, 0x18, 0x00, - 0x92, 0x18, 0x00, 0x83, 0x18, 0x03, 0x84, 0x04, - 0x00, 0xe0, 0x26, 0x04, 0x01, 0x80, 0x18, 0x00, - 0x9f, 0x18, 0x99, 0x42, 0x85, 0x18, 0x99, 0x42, - 0x8a, 0x18, 0x89, 0x3b, 0x80, 0x18, 0xac, 0x3b, - 0x81, 0x18, 0x9e, 0x2e, 0x02, 0x85, 0x2e, 0x01, - 0x85, 0x2e, 0x01, 0x85, 0x2e, 0x01, 0x82, 0x2e, - 0x02, 0x86, 0x18, 0x00, 0x86, 0x18, 0x09, 0x84, - 0x18, 0x01, 0x8b, 0x46, 0x00, 0x99, 0x46, 0x00, - 0x92, 0x46, 0x00, 0x81, 0x46, 0x00, 0x8e, 0x46, - 0x01, 0x8d, 0x46, 0x21, 0xe0, 0x1a, 0x46, 0x04, - 0x82, 0x18, 0x03, 0xac, 0x18, 0x02, 0x88, 0x18, - 0xce, 0x29, 0x00, 0x8b, 0x18, 0x03, 0x80, 0x29, - 0x2e, 0xac, 0x18, 0x80, 0x35, 0x60, 0x21, 0x9c, - 0x48, 0x02, 0xb0, 0x13, 0x0e, 0x80, 0x35, 0x9a, - 0x18, 0x03, 0xa3, 0x66, 0x08, 0x82, 0x66, 0x9a, - 0x27, 0x04, 0xaa, 0x68, 0x04, 0x9d, 0x93, 0x00, - 0x80, 0x93, 0xa3, 0x69, 0x03, 0x8d, 0x69, 0x29, - 0xcf, 0x1d, 0xaf, 0x7b, 0x9d, 0x6f, 0x01, 0x89, - 0x6f, 0x05, 0xa3, 0x6e, 0x03, 0xa3, 0x6e, 0x03, - 0xa7, 0x22, 0x07, 0xb3, 0x14, 0x0a, 0x80, 0x14, - 0x60, 0x2f, 0xe0, 0xd6, 0x45, 0x08, 0x95, 0x45, - 0x09, 0x87, 0x45, 0x60, 0x37, 0x85, 0x1b, 0x01, - 0x80, 0x1b, 0x00, 0xab, 0x1b, 0x00, 0x81, 0x1b, - 0x02, 0x80, 0x1b, 0x01, 0x80, 0x1b, 0x95, 0x34, - 0x00, 0x88, 0x34, 0x9f, 0x71, 0x9e, 0x5c, 0x07, - 0x88, 0x5c, 0x2f, 0x92, 0x31, 0x00, 0x81, 0x31, - 0x04, 0x84, 0x31, 0x9b, 0x74, 0x02, 0x80, 0x74, - 0x99, 0x49, 0x04, 0x80, 0x49, 0x3f, 0x9f, 0x55, - 0x97, 0x54, 0x03, 0x93, 0x54, 0x01, 0xad, 0x54, - 0x83, 0x3d, 0x00, 0x81, 0x3d, 0x04, 0x87, 0x3d, - 0x00, 0x82, 0x3d, 0x00, 0x9c, 0x3d, 0x01, 0x82, - 0x3d, 0x03, 0x89, 0x3d, 0x06, 0x88, 0x3d, 0x06, - 0x9f, 0x6b, 0x9f, 0x67, 0x1f, 0xa6, 0x4e, 0x03, - 0x8b, 0x4e, 0x08, 0xb5, 0x06, 0x02, 0x86, 0x06, - 0x95, 0x37, 0x01, 0x87, 0x37, 0x92, 0x36, 0x04, - 0x87, 0x36, 0x91, 0x75, 0x06, 0x83, 0x75, 0x0b, - 0x86, 0x75, 0x4f, 0xc8, 0x6c, 0x36, 0xb2, 0x65, - 0x0c, 0xb2, 0x65, 0x06, 0x85, 0x65, 0xa7, 0x2f, - 0x07, 0x89, 0x2f, 0x60, 0xc5, 0x9e, 0x04, 0x60, - 0x20, 0xa7, 0x6a, 0x07, 0xa9, 0x7f, 0x60, 0x25, - 0x96, 0x23, 0x08, 0xcd, 0x0e, 0x03, 0x9d, 0x0e, - 0x0e, 0x80, 0x0e, 0xc1, 0x39, 0x0a, 0x80, 0x39, - 0x01, 0x98, 0x80, 0x06, 0x89, 0x80, 0x05, 0xb4, - 0x15, 0x00, 0x90, 0x15, 0x08, 0xa6, 0x4b, 0x08, - 0xcd, 0x7a, 0x01, 0x8f, 0x7a, 0x00, 0x93, 0x7e, - 0x0a, 0x91, 0x3f, 0x00, 0xab, 0x3f, 0x40, 0x86, - 0x5a, 0x00, 0x80, 0x5a, 0x00, 0x83, 0x5a, 0x00, - 0x8e, 0x5a, 0x00, 0x8a, 0x5a, 0x05, 0xba, 0x40, - 0x04, 0x89, 0x40, 0x05, 0x83, 0x28, 0x00, 0x87, - 0x28, 0x01, 0x81, 0x28, 0x01, 0x95, 0x28, 0x00, - 0x86, 0x28, 0x00, 0x81, 0x28, 0x00, 0x84, 0x28, - 0x00, 0x80, 0x35, 0x88, 0x28, 0x01, 0x81, 0x28, - 0x01, 0x82, 0x28, 0x01, 0x80, 0x28, 0x05, 0x80, - 0x28, 0x04, 0x86, 0x28, 0x01, 0x86, 0x28, 0x02, - 0x84, 0x28, 0x60, 0x2a, 0xd9, 0x5f, 0x00, 0x80, - 0x5f, 0x00, 0x82, 0x5f, 0x1f, 0xc7, 0x92, 0x07, - 0x89, 0x92, 0x60, 0x45, 0xb5, 0x7c, 0x01, 0xa5, - 0x7c, 0x21, 0xc4, 0x57, 0x0a, 0x89, 0x57, 0x05, - 0x8c, 0x58, 0x12, 0xb8, 0x8a, 0x06, 0x89, 0x8a, - 0x35, 0x9a, 0x02, 0x01, 0x8e, 0x02, 0x03, 0x8f, - 0x02, 0x60, 0x5f, 0xbb, 0x1f, 0x60, 0x03, 0xd2, - 0x96, 0x0b, 0x80, 0x96, 0x60, 0x3f, 0x87, 0x5d, - 0x01, 0xad, 0x5d, 0x01, 0x8a, 0x5d, 0x1a, 0xc7, - 0x98, 0x07, 0xd2, 0x81, 0x1c, 0xb8, 0x72, 0x60, - 0xa6, 0x88, 0x0c, 0x00, 0xac, 0x0c, 0x00, 0x8d, - 0x0c, 0x09, 0x9c, 0x0c, 0x02, 0x9f, 0x4f, 0x01, - 0x95, 0x4f, 0x00, 0x8d, 0x4f, 0x48, 0x86, 0x50, - 0x00, 0x81, 0x50, 0x00, 0xab, 0x50, 0x02, 0x80, - 0x50, 0x00, 0x81, 0x50, 0x00, 0x88, 0x50, 0x07, - 0x89, 0x50, 0x05, 0x85, 0x2b, 0x00, 0x81, 0x2b, - 0x00, 0xa4, 0x2b, 0x00, 0x81, 0x2b, 0x00, 0x85, - 0x2b, 0x06, 0x89, 0x2b, 0x60, 0xd5, 0x98, 0x4a, - 0x60, 0x66, 0xb1, 0x8b, 0x0c, 0x80, 0x8b, 0xe3, - 0x39, 0x1a, 0x60, 0x05, 0xe0, 0x0e, 0x1a, 0x00, - 0x84, 0x1a, 0x0a, 0xe0, 0x63, 0x1a, 0x6a, 0x5b, - 0xe3, 0xce, 0x21, 0x00, 0x88, 0x21, 0x6f, 0x66, - 0xe1, 0xe6, 0x03, 0x70, 0x11, 0x58, 0xe1, 0xd8, - 0x08, 0x06, 0x9e, 0x59, 0x00, 0x89, 0x59, 0x03, - 0x81, 0x59, 0x5f, 0x9d, 0x09, 0x01, 0x85, 0x09, - 0x09, 0xc5, 0x70, 0x09, 0x89, 0x70, 0x00, 0x86, - 0x70, 0x00, 0x94, 0x70, 0x04, 0x92, 0x70, 0x62, - 0x4f, 0xda, 0x51, 0x60, 0x04, 0xca, 0x56, 0x03, - 0xb8, 0x56, 0x06, 0x90, 0x56, 0x3f, 0x80, 0x8c, - 0x80, 0x61, 0x81, 0x18, 0x1b, 0xf0, 0x07, 0x97, - 0x8c, 0x07, 0xe2, 0x92, 0x8c, 0x70, 0x14, 0xac, - 0x80, 0x3b, 0xe0, 0xbd, 0x33, 0x30, 0x82, 0x33, - 0x10, 0x83, 0x3b, 0x07, 0xe1, 0x2b, 0x61, 0x68, - 0xa3, 0xe0, 0x0a, 0x20, 0x04, 0x8c, 0x20, 0x02, - 0x88, 0x20, 0x06, 0x89, 0x20, 0x01, 0x83, 0x20, - 0x83, 0x18, 0x70, 0x02, 0xfb, 0xe0, 0x95, 0x18, - 0x09, 0xa6, 0x18, 0x01, 0xbd, 0x18, 0x82, 0x35, - 0x90, 0x18, 0x87, 0x35, 0x81, 0x18, 0x86, 0x35, - 0x9d, 0x18, 0x83, 0x35, 0xba, 0x18, 0x16, 0xc5, - 0x29, 0x60, 0x39, 0x93, 0x18, 0x0b, 0xd6, 0x18, - 0x08, 0x98, 0x18, 0x60, 0x26, 0xd4, 0x18, 0x00, - 0xc6, 0x18, 0x00, 0x81, 0x18, 0x01, 0x80, 0x18, - 0x01, 0x81, 0x18, 0x01, 0x83, 0x18, 0x00, 0x8b, - 0x18, 0x00, 0x80, 0x18, 0x00, 0x86, 0x18, 0x00, - 0xc0, 0x18, 0x00, 0x83, 0x18, 0x01, 0x87, 0x18, - 0x00, 0x86, 0x18, 0x00, 0x9b, 0x18, 0x00, 0x83, - 0x18, 0x00, 0x84, 0x18, 0x00, 0x80, 0x18, 0x02, - 0x86, 0x18, 0x00, 0xe0, 0xf3, 0x18, 0x01, 0xe0, - 0xc3, 0x18, 0x01, 0xb1, 0x18, 0xe2, 0x2b, 0x7d, - 0x0e, 0x84, 0x7d, 0x00, 0x8e, 0x7d, 0x64, 0xef, - 0x86, 0x26, 0x00, 0x90, 0x26, 0x01, 0x86, 0x26, - 0x00, 0x81, 0x26, 0x00, 0x84, 0x26, 0x60, 0x74, - 0xac, 0x62, 0x02, 0x8d, 0x62, 0x01, 0x89, 0x62, - 0x03, 0x81, 0x62, 0x61, 0x0f, 0xb9, 0x95, 0x04, - 0x80, 0x95, 0x64, 0x9f, 0xe0, 0x64, 0x53, 0x01, - 0x8f, 0x53, 0x28, 0xcb, 0x01, 0x03, 0x89, 0x01, - 0x03, 0x81, 0x01, 0x62, 0xb0, 0xc3, 0x18, 0x4b, - 0xbc, 0x18, 0x60, 0x61, 0x83, 0x04, 0x00, 0x9a, - 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04, 0x01, - 0x80, 0x04, 0x00, 0x89, 0x04, 0x00, 0x83, 0x04, - 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x05, 0x80, - 0x04, 0x03, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, - 0x80, 0x04, 0x00, 0x82, 0x04, 0x00, 0x81, 0x04, - 0x00, 0x80, 0x04, 0x01, 0x80, 0x04, 0x00, 0x80, - 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, - 0x80, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04, - 0x01, 0x83, 0x04, 0x00, 0x86, 0x04, 0x00, 0x83, - 0x04, 0x00, 0x83, 0x04, 0x00, 0x80, 0x04, 0x00, - 0x89, 0x04, 0x00, 0x90, 0x04, 0x04, 0x82, 0x04, - 0x00, 0x84, 0x04, 0x00, 0x90, 0x04, 0x33, 0x81, - 0x04, 0x60, 0xad, 0xab, 0x18, 0x03, 0xe0, 0x03, - 0x18, 0x0b, 0x8e, 0x18, 0x01, 0x8e, 0x18, 0x00, - 0x8e, 0x18, 0x00, 0xa4, 0x18, 0x09, 0x8c, 0x18, - 0x02, 0xdc, 0x18, 0x02, 0xbc, 0x18, 0x38, 0x99, - 0x18, 0x80, 0x33, 0x81, 0x18, 0x0c, 0xab, 0x18, - 0x03, 0x88, 0x18, 0x06, 0x81, 0x18, 0x0d, 0x85, - 0x18, 0x60, 0x39, 0xe3, 0x75, 0x18, 0x09, 0x8c, - 0x18, 0x02, 0x8a, 0x18, 0x04, 0xe0, 0x13, 0x18, - 0x0b, 0xd8, 0x18, 0x06, 0x8b, 0x18, 0x13, 0x8b, - 0x18, 0x03, 0xb7, 0x18, 0x07, 0x89, 0x18, 0x05, - 0xa7, 0x18, 0x07, 0x9d, 0x18, 0x51, 0x8b, 0x18, - 0x00, 0xe0, 0x04, 0x18, 0x00, 0x83, 0x18, 0x02, - 0xa8, 0x18, 0x01, 0x85, 0x18, 0x02, 0x9c, 0x18, - 0x01, 0xe0, 0x26, 0x18, 0x0b, 0x8d, 0x18, 0x01, - 0x83, 0x18, 0x03, 0x82, 0x18, 0x04, 0x82, 0x18, - 0x0c, 0x85, 0x18, 0x65, 0x09, 0xf0, 0x96, 0x76, - 0x2d, 0x28, 0xef, 0xd4, 0x2d, 0x0a, 0xe0, 0x7d, - 0x2d, 0x01, 0xf0, 0x06, 0x21, 0x2d, 0x0d, 0xf0, - 0x0c, 0xd0, 0x2d, 0x6b, 0xbe, 0xe1, 0xbd, 0x2d, - 0x7a, 0xf5, 0x82, 0x80, 0x18, 0x1d, 0xdf, 0x18, - 0x60, 0x1f, 0xe0, 0x8f, 0x35, +static const uint8_t unicode_script_table[2609] = { + 0xc0, 0x19, 0x99, 0x45, 0x85, 0x19, 0x99, 0x45, + 0xae, 0x19, 0x80, 0x45, 0x8e, 0x19, 0x80, 0x45, + 0x84, 0x19, 0x96, 0x45, 0x80, 0x19, 0x9e, 0x45, + 0x80, 0x19, 0xe1, 0x60, 0x45, 0xa6, 0x19, 0x84, + 0x45, 0x84, 0x19, 0x81, 0x0d, 0x93, 0x19, 0xe0, + 0x0f, 0x37, 0x83, 0x2b, 0x80, 0x19, 0x82, 0x2b, + 0x01, 0x83, 0x2b, 0x80, 0x19, 0x80, 0x2b, 0x03, + 0x80, 0x2b, 0x80, 0x19, 0x80, 0x2b, 0x80, 0x19, + 0x82, 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x93, 0x2b, + 0x00, 0xbe, 0x2b, 0x8d, 0x1a, 0x8f, 0x2b, 0xe0, + 0x24, 0x1d, 0x81, 0x37, 0xe0, 0x48, 0x1d, 0x00, + 0xa5, 0x05, 0x01, 0xb1, 0x05, 0x01, 0x82, 0x05, + 0x00, 0xb6, 0x34, 0x07, 0x9a, 0x34, 0x03, 0x85, + 0x34, 0x0a, 0x84, 0x04, 0x80, 0x19, 0x85, 0x04, + 0x80, 0x19, 0x8d, 0x04, 0x80, 0x19, 0x80, 0x04, + 0x00, 0x80, 0x04, 0x80, 0x19, 0x9f, 0x04, 0x80, + 0x19, 0x89, 0x04, 0x8a, 0x37, 0x99, 0x04, 0x80, + 0x37, 0xe0, 0x0b, 0x04, 0x80, 0x19, 0xa1, 0x04, + 0x8d, 0x87, 0x00, 0xbb, 0x87, 0x01, 0x82, 0x87, + 0xaf, 0x04, 0xb1, 0x91, 0x0d, 0xba, 0x63, 0x01, + 0x82, 0x63, 0xad, 0x7b, 0x01, 0x8e, 0x7b, 0x00, + 0x9b, 0x50, 0x01, 0x80, 0x50, 0x00, 0x8a, 0x87, + 0x34, 0x94, 0x04, 0x00, 0x91, 0x04, 0x0a, 0x8e, + 0x04, 0x80, 0x19, 0x9c, 0x04, 0xd0, 0x1f, 0x83, + 0x37, 0x8e, 0x1f, 0x81, 0x19, 0x99, 0x1f, 0x83, + 0x0b, 0x00, 0x87, 0x0b, 0x01, 0x81, 0x0b, 0x01, + 0x95, 0x0b, 0x00, 0x86, 0x0b, 0x00, 0x80, 0x0b, + 0x02, 0x83, 0x0b, 0x01, 0x88, 0x0b, 0x01, 0x81, + 0x0b, 0x01, 0x83, 0x0b, 0x07, 0x80, 0x0b, 0x03, + 0x81, 0x0b, 0x00, 0x84, 0x0b, 0x01, 0x98, 0x0b, + 0x01, 0x82, 0x2e, 0x00, 0x85, 0x2e, 0x03, 0x81, + 0x2e, 0x01, 0x95, 0x2e, 0x00, 0x86, 0x2e, 0x00, + 0x81, 0x2e, 0x00, 0x81, 0x2e, 0x00, 0x81, 0x2e, + 0x01, 0x80, 0x2e, 0x00, 0x84, 0x2e, 0x03, 0x81, + 0x2e, 0x01, 0x82, 0x2e, 0x02, 0x80, 0x2e, 0x06, + 0x83, 0x2e, 0x00, 0x80, 0x2e, 0x06, 0x90, 0x2e, + 0x09, 0x82, 0x2c, 0x00, 0x88, 0x2c, 0x00, 0x82, + 0x2c, 0x00, 0x95, 0x2c, 0x00, 0x86, 0x2c, 0x00, + 0x81, 0x2c, 0x00, 0x84, 0x2c, 0x01, 0x89, 0x2c, + 0x00, 0x82, 0x2c, 0x00, 0x82, 0x2c, 0x01, 0x80, + 0x2c, 0x0e, 0x83, 0x2c, 0x01, 0x8b, 0x2c, 0x06, + 0x86, 0x2c, 0x00, 0x82, 0x70, 0x00, 0x87, 0x70, + 0x01, 0x81, 0x70, 0x01, 0x95, 0x70, 0x00, 0x86, + 0x70, 0x00, 0x81, 0x70, 0x00, 0x84, 0x70, 0x01, + 0x88, 0x70, 0x01, 0x81, 0x70, 0x01, 0x82, 0x70, + 0x06, 0x82, 0x70, 0x03, 0x81, 0x70, 0x00, 0x84, + 0x70, 0x01, 0x91, 0x70, 0x09, 0x81, 0x8e, 0x00, + 0x85, 0x8e, 0x02, 0x82, 0x8e, 0x00, 0x83, 0x8e, + 0x02, 0x81, 0x8e, 0x00, 0x80, 0x8e, 0x00, 0x81, + 0x8e, 0x02, 0x81, 0x8e, 0x02, 0x82, 0x8e, 0x02, + 0x8b, 0x8e, 0x03, 0x84, 0x8e, 0x02, 0x82, 0x8e, + 0x00, 0x83, 0x8e, 0x01, 0x80, 0x8e, 0x05, 0x80, + 0x8e, 0x0d, 0x94, 0x8e, 0x04, 0x8c, 0x90, 0x00, + 0x82, 0x90, 0x00, 0x96, 0x90, 0x00, 0x8f, 0x90, + 0x02, 0x87, 0x90, 0x00, 0x82, 0x90, 0x00, 0x83, + 0x90, 0x06, 0x81, 0x90, 0x00, 0x82, 0x90, 0x04, + 0x83, 0x90, 0x01, 0x89, 0x90, 0x06, 0x88, 0x90, + 0x8c, 0x3c, 0x00, 0x82, 0x3c, 0x00, 0x96, 0x3c, + 0x00, 0x89, 0x3c, 0x00, 0x84, 0x3c, 0x01, 0x88, + 0x3c, 0x00, 0x82, 0x3c, 0x00, 0x83, 0x3c, 0x06, + 0x81, 0x3c, 0x06, 0x80, 0x3c, 0x00, 0x83, 0x3c, + 0x01, 0x89, 0x3c, 0x00, 0x81, 0x3c, 0x0c, 0x8c, + 0x4f, 0x00, 0x82, 0x4f, 0x00, 0xb2, 0x4f, 0x00, + 0x82, 0x4f, 0x00, 0x85, 0x4f, 0x03, 0x8f, 0x4f, + 0x01, 0x99, 0x4f, 0x00, 0x82, 0x81, 0x00, 0x91, + 0x81, 0x02, 0x97, 0x81, 0x00, 0x88, 0x81, 0x00, + 0x80, 0x81, 0x01, 0x86, 0x81, 0x02, 0x80, 0x81, + 0x03, 0x85, 0x81, 0x00, 0x80, 0x81, 0x00, 0x87, + 0x81, 0x05, 0x89, 0x81, 0x01, 0x82, 0x81, 0x0b, + 0xb9, 0x92, 0x03, 0x80, 0x19, 0x9b, 0x92, 0x24, + 0x81, 0x44, 0x00, 0x80, 0x44, 0x00, 0x84, 0x44, + 0x00, 0x97, 0x44, 0x00, 0x80, 0x44, 0x00, 0x96, + 0x44, 0x01, 0x84, 0x44, 0x00, 0x80, 0x44, 0x00, + 0x85, 0x44, 0x01, 0x89, 0x44, 0x01, 0x83, 0x44, + 0x1f, 0xc7, 0x93, 0x00, 0xa3, 0x93, 0x03, 0xa6, + 0x93, 0x00, 0xa3, 0x93, 0x00, 0x8e, 0x93, 0x00, + 0x86, 0x93, 0x83, 0x19, 0x81, 0x93, 0x24, 0xe0, + 0x3f, 0x5e, 0xa5, 0x27, 0x00, 0x80, 0x27, 0x04, + 0x80, 0x27, 0x01, 0xaa, 0x27, 0x80, 0x19, 0x83, + 0x27, 0xe0, 0x9f, 0x30, 0xc8, 0x26, 0x00, 0x83, + 0x26, 0x01, 0x86, 0x26, 0x00, 0x80, 0x26, 0x00, + 0x83, 0x26, 0x01, 0xa8, 0x26, 0x00, 0x83, 0x26, + 0x01, 0xa0, 0x26, 0x00, 0x83, 0x26, 0x01, 0x86, + 0x26, 0x00, 0x80, 0x26, 0x00, 0x83, 0x26, 0x01, + 0x8e, 0x26, 0x00, 0xb8, 0x26, 0x00, 0x83, 0x26, + 0x01, 0xc2, 0x26, 0x01, 0x9f, 0x26, 0x02, 0x99, + 0x26, 0x05, 0xd5, 0x17, 0x01, 0x85, 0x17, 0x01, + 0xe2, 0x1f, 0x12, 0x9c, 0x66, 0x02, 0xca, 0x7a, + 0x82, 0x19, 0x8a, 0x7a, 0x06, 0x8c, 0x88, 0x00, + 0x86, 0x88, 0x0a, 0x94, 0x32, 0x81, 0x19, 0x08, + 0x93, 0x11, 0x0b, 0x8c, 0x89, 0x00, 0x82, 0x89, + 0x00, 0x81, 0x89, 0x0b, 0xdd, 0x40, 0x01, 0x89, + 0x40, 0x05, 0x89, 0x40, 0x05, 0x81, 0x5b, 0x81, + 0x19, 0x80, 0x5b, 0x80, 0x19, 0x88, 0x5b, 0x00, + 0x89, 0x5b, 0x05, 0xd8, 0x5b, 0x06, 0xaa, 0x5b, + 0x04, 0xc5, 0x12, 0x09, 0x9e, 0x47, 0x00, 0x8b, + 0x47, 0x03, 0x8b, 0x47, 0x03, 0x80, 0x47, 0x02, + 0x8b, 0x47, 0x9d, 0x8a, 0x01, 0x84, 0x8a, 0x0a, + 0xab, 0x61, 0x03, 0x99, 0x61, 0x05, 0x8a, 0x61, + 0x02, 0x81, 0x61, 0x9f, 0x40, 0x9b, 0x10, 0x01, + 0x81, 0x10, 0xbe, 0x8b, 0x00, 0x9c, 0x8b, 0x01, + 0x8a, 0x8b, 0x05, 0x89, 0x8b, 0x05, 0x8d, 0x8b, + 0x01, 0x90, 0x37, 0x3e, 0xcb, 0x07, 0x03, 0xac, + 0x07, 0x02, 0xbf, 0x85, 0xb3, 0x0a, 0x07, 0x83, + 0x0a, 0xb7, 0x46, 0x02, 0x8e, 0x46, 0x02, 0x82, + 0x46, 0xaf, 0x67, 0x88, 0x1d, 0x06, 0xaa, 0x27, + 0x01, 0x82, 0x27, 0x87, 0x85, 0x07, 0x82, 0x37, + 0x80, 0x19, 0x8c, 0x37, 0x80, 0x19, 0x86, 0x37, + 0x83, 0x19, 0x80, 0x37, 0x85, 0x19, 0x80, 0x37, + 0x82, 0x19, 0x81, 0x37, 0x80, 0x19, 0x04, 0xa5, + 0x45, 0x84, 0x2b, 0x80, 0x1d, 0xb0, 0x45, 0x84, + 0x2b, 0x83, 0x45, 0x84, 0x2b, 0x8c, 0x45, 0x80, + 0x1d, 0xc5, 0x45, 0x80, 0x2b, 0xb9, 0x37, 0x00, + 0x84, 0x37, 0xe0, 0x9f, 0x45, 0x95, 0x2b, 0x01, + 0x85, 0x2b, 0x01, 0xa5, 0x2b, 0x01, 0x85, 0x2b, + 0x01, 0x87, 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x80, + 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x9e, 0x2b, 0x01, + 0xb4, 0x2b, 0x00, 0x8e, 0x2b, 0x00, 0x8d, 0x2b, + 0x01, 0x85, 0x2b, 0x00, 0x92, 0x2b, 0x01, 0x82, + 0x2b, 0x00, 0x88, 0x2b, 0x00, 0x8b, 0x19, 0x81, + 0x37, 0xd6, 0x19, 0x00, 0x8a, 0x19, 0x80, 0x45, + 0x01, 0x8a, 0x19, 0x80, 0x45, 0x8e, 0x19, 0x00, + 0x8c, 0x45, 0x02, 0x9f, 0x19, 0x0f, 0xa0, 0x37, + 0x0e, 0xa5, 0x19, 0x80, 0x2b, 0x82, 0x19, 0x81, + 0x45, 0x85, 0x19, 0x80, 0x45, 0x9a, 0x19, 0x80, + 0x45, 0x90, 0x19, 0xa8, 0x45, 0x82, 0x19, 0x03, + 0xe2, 0x36, 0x19, 0x18, 0x8a, 0x19, 0x14, 0xe3, + 0x3f, 0x19, 0xe0, 0x9f, 0x0f, 0xe2, 0x13, 0x19, + 0x01, 0x9f, 0x19, 0x00, 0xe0, 0x08, 0x19, 0xae, + 0x28, 0x00, 0xae, 0x28, 0x00, 0x9f, 0x45, 0xe0, + 0x13, 0x1a, 0x04, 0x86, 0x1a, 0xa5, 0x27, 0x00, + 0x80, 0x27, 0x04, 0x80, 0x27, 0x01, 0xb7, 0x94, + 0x06, 0x81, 0x94, 0x0d, 0x80, 0x94, 0x96, 0x26, + 0x08, 0x86, 0x26, 0x00, 0x86, 0x26, 0x00, 0x86, + 0x26, 0x00, 0x86, 0x26, 0x00, 0x86, 0x26, 0x00, + 0x86, 0x26, 0x00, 0x86, 0x26, 0x00, 0x86, 0x26, + 0x00, 0x9f, 0x1d, 0xd2, 0x19, 0x2c, 0x99, 0x2f, + 0x00, 0xd8, 0x2f, 0x0b, 0xe0, 0x75, 0x2f, 0x19, + 0x8b, 0x19, 0x03, 0x84, 0x19, 0x80, 0x2f, 0x80, + 0x19, 0x80, 0x2f, 0x98, 0x19, 0x88, 0x2f, 0x83, + 0x37, 0x81, 0x30, 0x87, 0x19, 0x83, 0x2f, 0x83, + 0x19, 0x00, 0xd5, 0x35, 0x01, 0x81, 0x37, 0x81, + 0x19, 0x82, 0x35, 0x80, 0x19, 0xd9, 0x3d, 0x81, + 0x19, 0x82, 0x3d, 0x04, 0xaa, 0x0d, 0x00, 0xdd, + 0x30, 0x00, 0x8f, 0x19, 0x9f, 0x0d, 0xa3, 0x19, + 0x0b, 0x8f, 0x3d, 0x9e, 0x30, 0x00, 0xbf, 0x19, + 0x9e, 0x30, 0xd0, 0x19, 0xae, 0x3d, 0x80, 0x19, + 0xd7, 0x3d, 0xe0, 0x47, 0x19, 0xf0, 0x09, 0x5f, + 0x2f, 0xbf, 0x19, 0xf0, 0x41, 0x9c, 0x2f, 0x02, + 0xe4, 0x2c, 0x9b, 0x02, 0xb6, 0x9b, 0x08, 0xaf, + 0x4a, 0xe0, 0xcb, 0x97, 0x13, 0xdf, 0x1d, 0xd7, + 0x08, 0x07, 0xa1, 0x19, 0xe0, 0x05, 0x45, 0x82, + 0x19, 0xb4, 0x45, 0x01, 0x88, 0x45, 0x29, 0x8a, + 0x45, 0xac, 0x86, 0x02, 0x89, 0x19, 0x05, 0xb7, + 0x76, 0x07, 0xc5, 0x7c, 0x07, 0x8b, 0x7c, 0x05, + 0x9f, 0x1f, 0xad, 0x3e, 0x80, 0x19, 0x80, 0x3e, + 0xa3, 0x79, 0x0a, 0x80, 0x79, 0x9c, 0x30, 0x02, + 0xcd, 0x3a, 0x00, 0x80, 0x19, 0x89, 0x3a, 0x03, + 0x81, 0x3a, 0x9e, 0x5e, 0x00, 0xb6, 0x16, 0x08, + 0x8d, 0x16, 0x01, 0x89, 0x16, 0x01, 0x83, 0x16, + 0x9f, 0x5e, 0xc2, 0x8c, 0x17, 0x84, 0x8c, 0x96, + 0x55, 0x09, 0x85, 0x26, 0x01, 0x85, 0x26, 0x01, + 0x85, 0x26, 0x08, 0x86, 0x26, 0x00, 0x86, 0x26, + 0x00, 0xaa, 0x45, 0x80, 0x19, 0x88, 0x45, 0x80, + 0x2b, 0x83, 0x45, 0x81, 0x19, 0x03, 0xcf, 0x17, + 0xad, 0x55, 0x01, 0x89, 0x55, 0x05, 0xf0, 0x1b, + 0x43, 0x30, 0x0b, 0x96, 0x30, 0x03, 0xb0, 0x30, + 0x70, 0x10, 0xa3, 0xe1, 0x0d, 0x2f, 0x01, 0xe0, + 0x09, 0x2f, 0x25, 0x86, 0x45, 0x0b, 0x84, 0x05, + 0x04, 0x99, 0x34, 0x00, 0x84, 0x34, 0x00, 0x80, + 0x34, 0x00, 0x81, 0x34, 0x00, 0x81, 0x34, 0x00, + 0x89, 0x34, 0xe0, 0x11, 0x04, 0x10, 0xe1, 0x0a, + 0x04, 0x81, 0x19, 0x0f, 0xbf, 0x04, 0x01, 0xb5, + 0x04, 0x27, 0x8d, 0x04, 0x01, 0x8f, 0x37, 0x89, + 0x19, 0x05, 0x8d, 0x37, 0x81, 0x1d, 0xa2, 0x19, + 0x00, 0x92, 0x19, 0x00, 0x83, 0x19, 0x03, 0x84, + 0x04, 0x00, 0xe0, 0x26, 0x04, 0x01, 0x80, 0x19, + 0x00, 0x9f, 0x19, 0x99, 0x45, 0x85, 0x19, 0x99, + 0x45, 0x8a, 0x19, 0x89, 0x3d, 0x80, 0x19, 0xac, + 0x3d, 0x81, 0x19, 0x9e, 0x30, 0x02, 0x85, 0x30, + 0x01, 0x85, 0x30, 0x01, 0x85, 0x30, 0x01, 0x82, + 0x30, 0x02, 0x86, 0x19, 0x00, 0x86, 0x19, 0x09, + 0x84, 0x19, 0x01, 0x8b, 0x49, 0x00, 0x99, 0x49, + 0x00, 0x92, 0x49, 0x00, 0x81, 0x49, 0x00, 0x8e, + 0x49, 0x01, 0x8d, 0x49, 0x21, 0xe0, 0x1a, 0x49, + 0x04, 0x82, 0x19, 0x03, 0xac, 0x19, 0x02, 0x88, + 0x19, 0xce, 0x2b, 0x00, 0x8c, 0x19, 0x02, 0x80, + 0x2b, 0x2e, 0xac, 0x19, 0x80, 0x37, 0x60, 0x21, + 0x9c, 0x4b, 0x02, 0xb0, 0x13, 0x0e, 0x80, 0x37, + 0x9a, 0x19, 0x03, 0xa3, 0x69, 0x08, 0x82, 0x69, + 0x9a, 0x29, 0x04, 0xaa, 0x6b, 0x04, 0x9d, 0x96, + 0x00, 0x80, 0x96, 0xa3, 0x6c, 0x03, 0x8d, 0x6c, + 0x29, 0xcf, 0x1e, 0xaf, 0x7e, 0x9d, 0x72, 0x01, + 0x89, 0x72, 0x05, 0xa3, 0x71, 0x03, 0xa3, 0x71, + 0x03, 0xa7, 0x24, 0x07, 0xb3, 0x14, 0x0a, 0x80, + 0x14, 0x60, 0x2f, 0xe0, 0xd6, 0x48, 0x08, 0x95, + 0x48, 0x09, 0x87, 0x48, 0x60, 0x37, 0x85, 0x1c, + 0x01, 0x80, 0x1c, 0x00, 0xab, 0x1c, 0x00, 0x81, + 0x1c, 0x02, 0x80, 0x1c, 0x01, 0x80, 0x1c, 0x95, + 0x36, 0x00, 0x88, 0x36, 0x9f, 0x74, 0x9e, 0x5f, + 0x07, 0x88, 0x5f, 0x2f, 0x92, 0x33, 0x00, 0x81, + 0x33, 0x04, 0x84, 0x33, 0x9b, 0x77, 0x02, 0x80, + 0x77, 0x99, 0x4c, 0x04, 0x80, 0x4c, 0x3f, 0x9f, + 0x58, 0x97, 0x57, 0x03, 0x93, 0x57, 0x01, 0xad, + 0x57, 0x83, 0x3f, 0x00, 0x81, 0x3f, 0x04, 0x87, + 0x3f, 0x00, 0x82, 0x3f, 0x00, 0x9c, 0x3f, 0x01, + 0x82, 0x3f, 0x03, 0x89, 0x3f, 0x06, 0x88, 0x3f, + 0x06, 0x9f, 0x6e, 0x9f, 0x6a, 0x1f, 0xa6, 0x51, + 0x03, 0x8b, 0x51, 0x08, 0xb5, 0x06, 0x02, 0x86, + 0x06, 0x95, 0x39, 0x01, 0x87, 0x39, 0x92, 0x38, + 0x04, 0x87, 0x38, 0x91, 0x78, 0x06, 0x83, 0x78, + 0x0b, 0x86, 0x78, 0x4f, 0xc8, 0x6f, 0x36, 0xb2, + 0x68, 0x0c, 0xb2, 0x68, 0x06, 0x85, 0x68, 0xa7, + 0x31, 0x07, 0x89, 0x31, 0x60, 0xc5, 0x9e, 0x04, + 0x00, 0xa9, 0x9a, 0x00, 0x82, 0x9a, 0x01, 0x81, + 0x9a, 0x4d, 0xa7, 0x6d, 0x07, 0xa9, 0x82, 0x55, + 0x9b, 0x18, 0x13, 0x96, 0x25, 0x08, 0xcd, 0x0e, + 0x03, 0x9d, 0x0e, 0x0e, 0x80, 0x0e, 0xc1, 0x3b, + 0x0a, 0x80, 0x3b, 0x01, 0x98, 0x83, 0x06, 0x89, + 0x83, 0x05, 0xb4, 0x15, 0x00, 0x91, 0x15, 0x07, + 0xa6, 0x4e, 0x08, 0xdf, 0x7d, 0x00, 0x93, 0x81, + 0x0a, 0x91, 0x41, 0x00, 0xab, 0x41, 0x40, 0x86, + 0x5d, 0x00, 0x80, 0x5d, 0x00, 0x83, 0x5d, 0x00, + 0x8e, 0x5d, 0x00, 0x8a, 0x5d, 0x05, 0xba, 0x43, + 0x04, 0x89, 0x43, 0x05, 0x83, 0x2a, 0x00, 0x87, + 0x2a, 0x01, 0x81, 0x2a, 0x01, 0x95, 0x2a, 0x00, + 0x86, 0x2a, 0x00, 0x81, 0x2a, 0x00, 0x84, 0x2a, + 0x00, 0x80, 0x37, 0x88, 0x2a, 0x01, 0x81, 0x2a, + 0x01, 0x82, 0x2a, 0x01, 0x80, 0x2a, 0x05, 0x80, + 0x2a, 0x04, 0x86, 0x2a, 0x01, 0x86, 0x2a, 0x02, + 0x84, 0x2a, 0x60, 0x2a, 0xdb, 0x62, 0x00, 0x84, + 0x62, 0x1d, 0xc7, 0x95, 0x07, 0x89, 0x95, 0x60, + 0x45, 0xb5, 0x7f, 0x01, 0xa5, 0x7f, 0x21, 0xc4, + 0x5a, 0x0a, 0x89, 0x5a, 0x05, 0x8c, 0x5b, 0x12, + 0xb8, 0x8d, 0x06, 0x89, 0x8d, 0x35, 0x9a, 0x02, + 0x01, 0x8e, 0x02, 0x03, 0x8f, 0x02, 0x60, 0x5f, + 0xbb, 0x21, 0x60, 0x03, 0xd2, 0x99, 0x0b, 0x80, + 0x99, 0x86, 0x20, 0x01, 0x80, 0x20, 0x01, 0x87, + 0x20, 0x00, 0x81, 0x20, 0x00, 0x9d, 0x20, 0x00, + 0x81, 0x20, 0x01, 0x8b, 0x20, 0x08, 0x89, 0x20, + 0x45, 0x87, 0x60, 0x01, 0xad, 0x60, 0x01, 0x8a, + 0x60, 0x1a, 0xc7, 0x9c, 0x07, 0xd2, 0x84, 0x1c, + 0xb8, 0x75, 0x60, 0xa6, 0x88, 0x0c, 0x00, 0xac, + 0x0c, 0x00, 0x8d, 0x0c, 0x09, 0x9c, 0x0c, 0x02, + 0x9f, 0x52, 0x01, 0x95, 0x52, 0x00, 0x8d, 0x52, + 0x48, 0x86, 0x53, 0x00, 0x81, 0x53, 0x00, 0xab, + 0x53, 0x02, 0x80, 0x53, 0x00, 0x81, 0x53, 0x00, + 0x88, 0x53, 0x07, 0x89, 0x53, 0x05, 0x85, 0x2d, + 0x00, 0x81, 0x2d, 0x00, 0xa4, 0x2d, 0x00, 0x81, + 0x2d, 0x00, 0x85, 0x2d, 0x06, 0x89, 0x2d, 0x60, + 0xd5, 0x98, 0x4d, 0x60, 0x56, 0x80, 0x4a, 0x0e, + 0xb1, 0x8e, 0x0c, 0x80, 0x8e, 0xe3, 0x39, 0x1b, + 0x60, 0x05, 0xe0, 0x0e, 0x1b, 0x00, 0x84, 0x1b, + 0x0a, 0xe0, 0x63, 0x1b, 0x6a, 0x5b, 0xe3, 0xce, + 0x23, 0x00, 0x88, 0x23, 0x6f, 0x66, 0xe1, 0xe6, + 0x03, 0x70, 0x11, 0x58, 0xe1, 0xd8, 0x08, 0x06, + 0x9e, 0x5c, 0x00, 0x89, 0x5c, 0x03, 0x81, 0x5c, + 0x5f, 0x9d, 0x09, 0x01, 0x85, 0x09, 0x09, 0xc5, + 0x73, 0x09, 0x89, 0x73, 0x00, 0x86, 0x73, 0x00, + 0x94, 0x73, 0x04, 0x92, 0x73, 0x62, 0x4f, 0xda, + 0x54, 0x60, 0x04, 0xca, 0x59, 0x03, 0xb8, 0x59, + 0x06, 0x90, 0x59, 0x3f, 0x80, 0x8f, 0x80, 0x64, + 0x81, 0x19, 0x80, 0x42, 0x0a, 0x81, 0x2f, 0x0d, + 0xf0, 0x07, 0x97, 0x8f, 0x07, 0xe2, 0x9f, 0x8f, + 0xe1, 0x75, 0x42, 0x29, 0x88, 0x8f, 0x70, 0x12, + 0x96, 0x80, 0x3d, 0xe0, 0xbd, 0x35, 0x30, 0x82, + 0x35, 0x10, 0x83, 0x3d, 0x07, 0xe1, 0x2b, 0x64, + 0x68, 0xa3, 0xe0, 0x0a, 0x22, 0x04, 0x8c, 0x22, + 0x02, 0x88, 0x22, 0x06, 0x89, 0x22, 0x01, 0x83, + 0x22, 0x83, 0x19, 0x70, 0x02, 0xfb, 0xe0, 0x95, + 0x19, 0x09, 0xa6, 0x19, 0x01, 0xbd, 0x19, 0x82, + 0x37, 0x90, 0x19, 0x87, 0x37, 0x81, 0x19, 0x86, + 0x37, 0x9d, 0x19, 0x83, 0x37, 0xba, 0x19, 0x16, + 0xc5, 0x2b, 0x60, 0x39, 0x93, 0x19, 0x0b, 0xd6, + 0x19, 0x08, 0x98, 0x19, 0x60, 0x26, 0xd4, 0x19, + 0x00, 0xc6, 0x19, 0x00, 0x81, 0x19, 0x01, 0x80, + 0x19, 0x01, 0x81, 0x19, 0x01, 0x83, 0x19, 0x00, + 0x8b, 0x19, 0x00, 0x80, 0x19, 0x00, 0x86, 0x19, + 0x00, 0xc0, 0x19, 0x00, 0x83, 0x19, 0x01, 0x87, + 0x19, 0x00, 0x86, 0x19, 0x00, 0x9b, 0x19, 0x00, + 0x83, 0x19, 0x00, 0x84, 0x19, 0x00, 0x80, 0x19, + 0x02, 0x86, 0x19, 0x00, 0xe0, 0xf3, 0x19, 0x01, + 0xe0, 0xc3, 0x19, 0x01, 0xb1, 0x19, 0xe2, 0x2b, + 0x80, 0x0e, 0x84, 0x80, 0x00, 0x8e, 0x80, 0x64, + 0xef, 0x86, 0x28, 0x00, 0x90, 0x28, 0x01, 0x86, + 0x28, 0x00, 0x81, 0x28, 0x00, 0x84, 0x28, 0x60, + 0x74, 0xac, 0x65, 0x02, 0x8d, 0x65, 0x01, 0x89, + 0x65, 0x03, 0x81, 0x65, 0x61, 0x0f, 0xb9, 0x98, + 0x04, 0x80, 0x98, 0x64, 0x9f, 0xe0, 0x64, 0x56, + 0x01, 0x8f, 0x56, 0x28, 0xcb, 0x01, 0x03, 0x89, + 0x01, 0x03, 0x81, 0x01, 0x62, 0xb0, 0xc3, 0x19, + 0x4b, 0xbc, 0x19, 0x60, 0x61, 0x83, 0x04, 0x00, + 0x9a, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04, + 0x01, 0x80, 0x04, 0x00, 0x89, 0x04, 0x00, 0x83, + 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x05, + 0x80, 0x04, 0x03, 0x80, 0x04, 0x00, 0x80, 0x04, + 0x00, 0x80, 0x04, 0x00, 0x82, 0x04, 0x00, 0x81, + 0x04, 0x00, 0x80, 0x04, 0x01, 0x80, 0x04, 0x00, + 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, + 0x00, 0x80, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, + 0x04, 0x01, 0x83, 0x04, 0x00, 0x86, 0x04, 0x00, + 0x83, 0x04, 0x00, 0x83, 0x04, 0x00, 0x80, 0x04, + 0x00, 0x89, 0x04, 0x00, 0x90, 0x04, 0x04, 0x82, + 0x04, 0x00, 0x84, 0x04, 0x00, 0x90, 0x04, 0x33, + 0x81, 0x04, 0x60, 0xad, 0xab, 0x19, 0x03, 0xe0, + 0x03, 0x19, 0x0b, 0x8e, 0x19, 0x01, 0x8e, 0x19, + 0x00, 0x8e, 0x19, 0x00, 0xa4, 0x19, 0x09, 0xe0, + 0x4d, 0x19, 0x37, 0x99, 0x19, 0x80, 0x35, 0x81, + 0x19, 0x0c, 0xab, 0x19, 0x03, 0x88, 0x19, 0x06, + 0x81, 0x19, 0x0d, 0x85, 0x19, 0x60, 0x39, 0xe3, + 0x77, 0x19, 0x07, 0x8c, 0x19, 0x02, 0x8c, 0x19, + 0x02, 0xe0, 0x13, 0x19, 0x0b, 0xd8, 0x19, 0x06, + 0x8b, 0x19, 0x13, 0x8b, 0x19, 0x03, 0xb7, 0x19, + 0x07, 0x89, 0x19, 0x05, 0xa7, 0x19, 0x07, 0x9d, + 0x19, 0x01, 0x81, 0x19, 0x4d, 0xe0, 0x18, 0x19, + 0x00, 0xd1, 0x19, 0x00, 0xe0, 0x26, 0x19, 0x0b, + 0x8d, 0x19, 0x01, 0x84, 0x19, 0x02, 0x82, 0x19, + 0x04, 0x86, 0x19, 0x08, 0x98, 0x19, 0x06, 0x86, + 0x19, 0x08, 0x82, 0x19, 0x0c, 0x86, 0x19, 0x28, + 0xe0, 0x32, 0x19, 0x00, 0xb6, 0x19, 0x24, 0x89, + 0x19, 0x63, 0xa5, 0xf0, 0x96, 0x7d, 0x2f, 0x21, + 0xef, 0xd4, 0x2f, 0x0a, 0xe0, 0x7d, 0x2f, 0x01, + 0xf0, 0x06, 0x21, 0x2f, 0x0d, 0xf0, 0x0c, 0xd0, + 0x2f, 0x6b, 0xbe, 0xe1, 0xbd, 0x2f, 0x65, 0x81, + 0xf0, 0x02, 0xea, 0x2f, 0x7a, 0xdc, 0x55, 0x80, + 0x19, 0x1d, 0xdf, 0x19, 0x60, 0x1f, 0xe0, 0x8f, + 0x37, }; -static const uint8_t unicode_script_ext_table[789] = { - 0x82, 0xc1, 0x00, 0x00, 0x01, 0x29, 0x01, 0x00, - 0x00, 0x01, 0x29, 0x1c, 0x00, 0x0c, 0x01, 0x42, - 0x80, 0x92, 0x00, 0x00, 0x02, 0x1c, 0x68, 0x00, - 0x02, 0x1c, 0x26, 0x01, 0x02, 0x1c, 0x42, 0x00, - 0x02, 0x1c, 0x26, 0x80, 0x80, 0x00, 0x00, 0x02, - 0x05, 0x25, 0x80, 0x01, 0x00, 0x00, 0x04, 0x04, - 0x2f, 0x84, 0x8e, 0x0d, 0x00, 0x00, 0x04, 0x04, - 0x2f, 0x84, 0x8e, 0x00, 0x03, 0x04, 0x84, 0x8e, - 0x01, 0x00, 0x00, 0x04, 0x04, 0x2f, 0x84, 0x8e, - 0x1f, 0x00, 0x00, 0x08, 0x01, 0x04, 0x4d, 0x4e, - 0x75, 0x2f, 0x7f, 0x84, 0x09, 0x00, 0x0a, 0x02, - 0x04, 0x84, 0x09, 0x00, 0x09, 0x02, 0x04, 0x8e, - 0x05, 0x00, 0x00, 0x02, 0x04, 0x84, 0x62, 0x00, - 0x00, 0x02, 0x04, 0x2f, 0x81, 0xfb, 0x00, 0x00, - 0x0d, 0x0b, 0x1e, 0x28, 0x2a, 0x2c, 0x3a, 0x42, - 0x4c, 0x6d, 0x7a, 0x8b, 0x8d, 0x92, 0x00, 0x0c, - 0x0b, 0x1e, 0x28, 0x2a, 0x2c, 0x3a, 0x42, 0x4c, - 0x6d, 0x8b, 0x8d, 0x92, 0x10, 0x00, 0x00, 0x14, - 0x0b, 0x1e, 0x1f, 0x2b, 0x50, 0x28, 0x2a, 0x2c, - 0x3a, 0x4b, 0x4c, 0x5d, 0x6d, 0x40, 0x7e, 0x83, - 0x8a, 0x8b, 0x8d, 0x92, 0x00, 0x15, 0x0b, 0x1e, - 0x1f, 0x2b, 0x50, 0x28, 0x2a, 0x2c, 0x3a, 0x44, - 0x4b, 0x4c, 0x5d, 0x6d, 0x40, 0x7e, 0x83, 0x8a, - 0x8b, 0x8d, 0x92, 0x09, 0x04, 0x1e, 0x1f, 0x39, - 0x4b, 0x75, 0x00, 0x09, 0x03, 0x0b, 0x15, 0x83, - 0x75, 0x00, 0x09, 0x02, 0x2c, 0x5a, 0x75, 0x00, - 0x09, 0x02, 0x2a, 0x3f, 0x80, 0x75, 0x00, 0x0d, - 0x02, 0x28, 0x8b, 0x80, 0x71, 0x00, 0x09, 0x02, - 0x3a, 0x5d, 0x82, 0xcf, 0x00, 0x09, 0x03, 0x15, - 0x5b, 0x87, 0x80, 0x30, 0x00, 0x00, 0x02, 0x25, - 0x42, 0x85, 0xb8, 0x00, 0x01, 0x04, 0x11, 0x30, - 0x86, 0x85, 0x80, 0x4a, 0x00, 0x01, 0x02, 0x58, - 0x73, 0x00, 0x00, 0x00, 0x02, 0x58, 0x73, 0x84, - 0x49, 0x00, 0x00, 0x04, 0x0b, 0x1e, 0x28, 0x3a, - 0x00, 0x01, 0x1e, 0x00, 0x04, 0x0b, 0x1e, 0x28, - 0x3a, 0x00, 0x02, 0x1e, 0x28, 0x00, 0x01, 0x1e, - 0x01, 0x02, 0x0b, 0x1e, 0x00, 0x02, 0x1e, 0x7a, - 0x00, 0x02, 0x0b, 0x1e, 0x00, 0x02, 0x1e, 0x7a, - 0x00, 0x06, 0x1e, 0x3a, 0x4c, 0x6d, 0x8b, 0x8d, - 0x00, 0x01, 0x1e, 0x01, 0x02, 0x1e, 0x7a, 0x01, - 0x01, 0x1e, 0x00, 0x02, 0x1e, 0x7a, 0x00, 0x02, - 0x0b, 0x1e, 0x06, 0x01, 0x1e, 0x00, 0x02, 0x1e, - 0x5d, 0x00, 0x02, 0x0b, 0x1e, 0x01, 0x01, 0x1e, - 0x00, 0x02, 0x0b, 0x1e, 0x03, 0x01, 0x1e, 0x00, - 0x08, 0x0b, 0x1e, 0x28, 0x3a, 0x5d, 0x6d, 0x8d, - 0x92, 0x00, 0x02, 0x1e, 0x28, 0x00, 0x03, 0x1e, - 0x28, 0x3a, 0x01, 0x02, 0x0b, 0x1e, 0x00, 0x01, - 0x0b, 0x01, 0x02, 0x1e, 0x28, 0x00, 0x01, 0x5d, - 0x80, 0x44, 0x00, 0x01, 0x01, 0x29, 0x81, 0xec, - 0x00, 0x00, 0x02, 0x42, 0x58, 0x80, 0x3f, 0x00, - 0x00, 0x03, 0x1e, 0x28, 0x42, 0x8c, 0xd1, 0x00, - 0x00, 0x02, 0x1c, 0x26, 0x81, 0x3c, 0x00, 0x01, - 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x00, - 0x05, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x01, 0x00, - 0x00, 0x01, 0x2d, 0x00, 0x00, 0x09, 0x06, 0x0d, - 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x00, 0x00, 0x00, - 0x05, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x07, 0x06, - 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x03, 0x05, - 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x09, 0x00, 0x03, - 0x02, 0x0d, 0x2d, 0x01, 0x00, 0x00, 0x05, 0x0d, - 0x2e, 0x2d, 0x33, 0x3b, 0x04, 0x02, 0x33, 0x3b, - 0x00, 0x00, 0x00, 0x05, 0x0d, 0x2e, 0x2d, 0x33, - 0x3b, 0x03, 0x00, 0x01, 0x03, 0x2d, 0x33, 0x3b, - 0x01, 0x01, 0x2d, 0x58, 0x00, 0x03, 0x02, 0x33, - 0x3b, 0x02, 0x00, 0x00, 0x02, 0x33, 0x3b, 0x59, - 0x00, 0x00, 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, - 0x97, 0x00, 0x02, 0x33, 0x3b, 0x80, 0x12, 0x00, - 0x0f, 0x01, 0x2d, 0x1f, 0x00, 0x23, 0x01, 0x2d, - 0x3b, 0x00, 0x27, 0x01, 0x2d, 0x37, 0x00, 0x30, - 0x01, 0x2d, 0x0e, 0x00, 0x0b, 0x01, 0x2d, 0x32, - 0x00, 0x00, 0x01, 0x2d, 0x57, 0x00, 0x18, 0x01, - 0x2d, 0x09, 0x00, 0x04, 0x01, 0x2d, 0x5f, 0x00, - 0x1e, 0x01, 0x2d, 0xc0, 0x31, 0xef, 0x00, 0x00, - 0x02, 0x1c, 0x26, 0x81, 0x3f, 0x00, 0x02, 0x0e, - 0x1e, 0x1f, 0x2a, 0x2c, 0x3f, 0x3a, 0x39, 0x4b, - 0x4c, 0x57, 0x5d, 0x40, 0x8a, 0x92, 0x02, 0x0d, - 0x1e, 0x1f, 0x2a, 0x2c, 0x3f, 0x3a, 0x39, 0x4b, - 0x57, 0x5d, 0x40, 0x8a, 0x92, 0x03, 0x0b, 0x1e, - 0x1f, 0x2a, 0x2c, 0x3f, 0x39, 0x4b, 0x57, 0x40, - 0x8a, 0x92, 0x80, 0x36, 0x00, 0x00, 0x02, 0x0b, - 0x1e, 0x00, 0x00, 0x00, 0x02, 0x1e, 0x8b, 0x39, - 0x00, 0x00, 0x03, 0x3c, 0x42, 0x5b, 0x80, 0x1f, - 0x00, 0x00, 0x02, 0x10, 0x38, 0xc0, 0x13, 0xa1, - 0x00, 0x00, 0x02, 0x04, 0x8e, 0x09, 0x00, 0x00, - 0x02, 0x04, 0x8e, 0x46, 0x00, 0x01, 0x05, 0x0d, - 0x2e, 0x2d, 0x33, 0x3b, 0x80, 0x99, 0x00, 0x04, - 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x09, - 0x00, 0x00, 0x02, 0x33, 0x3b, 0x2c, 0x00, 0x01, - 0x02, 0x33, 0x3b, 0x80, 0xdf, 0x00, 0x02, 0x02, - 0x1b, 0x46, 0x03, 0x00, 0x2c, 0x03, 0x1b, 0x45, - 0x46, 0x02, 0x00, 0x08, 0x02, 0x1b, 0x46, 0x81, - 0x1f, 0x00, 0x1b, 0x02, 0x04, 0x19, 0x8f, 0x84, - 0x00, 0x00, 0x02, 0x28, 0x8b, 0x00, 0x00, 0x00, - 0x02, 0x28, 0x8b, 0x36, 0x00, 0x01, 0x02, 0x28, - 0x8b, 0x8c, 0x12, 0x00, 0x01, 0x02, 0x28, 0x8b, - 0x00, 0x00, 0x00, 0x02, 0x28, 0x8b, 0xc0, 0x5c, - 0x4b, 0x00, 0x03, 0x01, 0x20, 0x96, 0x3b, 0x00, - 0x11, 0x01, 0x2d, 0x9e, 0x5d, 0x00, 0x01, 0x01, - 0x2d, 0xce, 0xcd, 0x2d, 0x00, +static const uint8_t unicode_script_ext_table[799] = { + 0x82, 0xc1, 0x00, 0x00, 0x01, 0x2b, 0x01, 0x00, + 0x00, 0x01, 0x2b, 0x1c, 0x00, 0x0c, 0x01, 0x45, + 0x80, 0x92, 0x00, 0x00, 0x02, 0x1d, 0x6b, 0x00, + 0x02, 0x1d, 0x28, 0x01, 0x02, 0x1d, 0x45, 0x00, + 0x02, 0x1d, 0x28, 0x81, 0x03, 0x00, 0x00, 0x05, + 0x04, 0x31, 0x87, 0x91, 0x9a, 0x0d, 0x00, 0x00, + 0x05, 0x04, 0x31, 0x87, 0x91, 0x9a, 0x00, 0x03, + 0x04, 0x87, 0x91, 0x01, 0x00, 0x00, 0x05, 0x04, + 0x31, 0x87, 0x91, 0x9a, 0x1f, 0x00, 0x00, 0x08, + 0x01, 0x04, 0x50, 0x51, 0x78, 0x31, 0x82, 0x87, + 0x09, 0x00, 0x0a, 0x02, 0x04, 0x87, 0x09, 0x00, + 0x09, 0x03, 0x04, 0x91, 0x9a, 0x05, 0x00, 0x00, + 0x02, 0x04, 0x87, 0x62, 0x00, 0x00, 0x02, 0x04, + 0x31, 0x81, 0xfb, 0x00, 0x00, 0x0d, 0x0b, 0x1f, + 0x2a, 0x2c, 0x2e, 0x3c, 0x45, 0x4f, 0x70, 0x7d, + 0x8e, 0x90, 0x95, 0x00, 0x0c, 0x0b, 0x1f, 0x2a, + 0x2c, 0x2e, 0x3c, 0x45, 0x4f, 0x70, 0x8e, 0x90, + 0x95, 0x10, 0x00, 0x00, 0x14, 0x0b, 0x1f, 0x21, + 0x2d, 0x53, 0x2a, 0x2c, 0x2e, 0x3c, 0x4e, 0x4f, + 0x60, 0x70, 0x43, 0x81, 0x86, 0x8d, 0x8e, 0x90, + 0x95, 0x00, 0x15, 0x0b, 0x1f, 0x21, 0x2d, 0x53, + 0x2a, 0x2c, 0x2e, 0x3c, 0x47, 0x4e, 0x4f, 0x60, + 0x70, 0x43, 0x81, 0x86, 0x8d, 0x8e, 0x90, 0x95, + 0x09, 0x04, 0x1f, 0x21, 0x3b, 0x4e, 0x75, 0x00, + 0x09, 0x03, 0x0b, 0x15, 0x86, 0x75, 0x00, 0x09, + 0x02, 0x2e, 0x5d, 0x75, 0x00, 0x09, 0x02, 0x2c, + 0x41, 0x80, 0x75, 0x00, 0x0d, 0x02, 0x2a, 0x8e, + 0x80, 0x71, 0x00, 0x09, 0x02, 0x3c, 0x60, 0x82, + 0xcf, 0x00, 0x09, 0x03, 0x15, 0x5e, 0x8a, 0x80, + 0x30, 0x00, 0x00, 0x02, 0x27, 0x45, 0x85, 0xb8, + 0x00, 0x01, 0x04, 0x11, 0x32, 0x89, 0x88, 0x80, + 0x4a, 0x00, 0x01, 0x02, 0x5b, 0x76, 0x00, 0x00, + 0x00, 0x02, 0x5b, 0x76, 0x84, 0x49, 0x00, 0x00, + 0x04, 0x0b, 0x1f, 0x2a, 0x3c, 0x00, 0x01, 0x1f, + 0x00, 0x04, 0x0b, 0x1f, 0x2a, 0x3c, 0x00, 0x02, + 0x1f, 0x2a, 0x00, 0x01, 0x1f, 0x01, 0x02, 0x0b, + 0x1f, 0x00, 0x02, 0x1f, 0x7d, 0x00, 0x02, 0x0b, + 0x1f, 0x00, 0x02, 0x1f, 0x7d, 0x00, 0x06, 0x1f, + 0x3c, 0x4f, 0x70, 0x8e, 0x90, 0x00, 0x01, 0x1f, + 0x01, 0x02, 0x1f, 0x7d, 0x01, 0x01, 0x1f, 0x00, + 0x02, 0x1f, 0x7d, 0x00, 0x02, 0x0b, 0x1f, 0x06, + 0x01, 0x1f, 0x00, 0x02, 0x1f, 0x60, 0x00, 0x02, + 0x0b, 0x1f, 0x01, 0x01, 0x1f, 0x00, 0x02, 0x0b, + 0x1f, 0x03, 0x01, 0x1f, 0x00, 0x08, 0x0b, 0x1f, + 0x2a, 0x3c, 0x60, 0x70, 0x90, 0x95, 0x00, 0x02, + 0x1f, 0x2a, 0x00, 0x03, 0x1f, 0x2a, 0x3c, 0x01, + 0x02, 0x0b, 0x1f, 0x00, 0x01, 0x0b, 0x01, 0x02, + 0x1f, 0x2a, 0x00, 0x01, 0x60, 0x80, 0x44, 0x00, + 0x01, 0x01, 0x2b, 0x35, 0x00, 0x00, 0x02, 0x1d, + 0x87, 0x81, 0xb5, 0x00, 0x00, 0x02, 0x45, 0x5b, + 0x80, 0x3f, 0x00, 0x00, 0x03, 0x1f, 0x2a, 0x45, + 0x8c, 0xd1, 0x00, 0x00, 0x02, 0x1d, 0x28, 0x81, + 0x3c, 0x00, 0x01, 0x06, 0x0d, 0x30, 0x2f, 0x35, + 0x3d, 0x9b, 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35, + 0x3d, 0x01, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00, + 0x09, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x9b, + 0x00, 0x00, 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35, + 0x3d, 0x07, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d, + 0x9b, 0x03, 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d, + 0x09, 0x00, 0x03, 0x02, 0x0d, 0x2f, 0x01, 0x00, + 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x04, + 0x02, 0x35, 0x3d, 0x00, 0x00, 0x00, 0x05, 0x0d, + 0x30, 0x2f, 0x35, 0x3d, 0x03, 0x00, 0x01, 0x03, + 0x2f, 0x35, 0x3d, 0x01, 0x01, 0x2f, 0x58, 0x00, + 0x03, 0x02, 0x35, 0x3d, 0x02, 0x00, 0x00, 0x02, + 0x35, 0x3d, 0x59, 0x00, 0x00, 0x06, 0x0d, 0x30, + 0x2f, 0x35, 0x3d, 0x9b, 0x00, 0x02, 0x35, 0x3d, + 0x80, 0x12, 0x00, 0x0f, 0x01, 0x2f, 0x1f, 0x00, + 0x23, 0x01, 0x2f, 0x3b, 0x00, 0x27, 0x01, 0x2f, + 0x37, 0x00, 0x30, 0x01, 0x2f, 0x0e, 0x00, 0x0b, + 0x01, 0x2f, 0x32, 0x00, 0x00, 0x01, 0x2f, 0x57, + 0x00, 0x18, 0x01, 0x2f, 0x09, 0x00, 0x04, 0x01, + 0x2f, 0x5f, 0x00, 0x1e, 0x01, 0x2f, 0xc0, 0x31, + 0xef, 0x00, 0x00, 0x02, 0x1d, 0x28, 0x80, 0x0f, + 0x00, 0x07, 0x02, 0x2f, 0x45, 0x80, 0xa7, 0x00, + 0x02, 0x0e, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3c, + 0x3b, 0x4e, 0x4f, 0x5a, 0x60, 0x43, 0x8d, 0x95, + 0x02, 0x0d, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3c, + 0x3b, 0x4e, 0x5a, 0x60, 0x43, 0x8d, 0x95, 0x03, + 0x0b, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3b, 0x4e, + 0x5a, 0x43, 0x8d, 0x95, 0x80, 0x36, 0x00, 0x00, + 0x02, 0x0b, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x1f, + 0x8e, 0x39, 0x00, 0x00, 0x03, 0x3e, 0x45, 0x5e, + 0x80, 0x1f, 0x00, 0x00, 0x02, 0x10, 0x3a, 0xc0, + 0x13, 0xa1, 0x00, 0x00, 0x02, 0x04, 0x91, 0x09, + 0x00, 0x00, 0x02, 0x04, 0x91, 0x46, 0x00, 0x01, + 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x80, 0x99, + 0x00, 0x04, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d, + 0x9b, 0x09, 0x00, 0x00, 0x02, 0x35, 0x3d, 0x2c, + 0x00, 0x01, 0x02, 0x35, 0x3d, 0x80, 0xdf, 0x00, + 0x02, 0x02, 0x1c, 0x49, 0x03, 0x00, 0x2c, 0x03, + 0x1c, 0x48, 0x49, 0x02, 0x00, 0x08, 0x02, 0x1c, + 0x49, 0x81, 0x1f, 0x00, 0x1b, 0x02, 0x04, 0x1a, + 0x8f, 0x84, 0x00, 0x00, 0x02, 0x2a, 0x8e, 0x00, + 0x00, 0x00, 0x02, 0x2a, 0x8e, 0x36, 0x00, 0x01, + 0x02, 0x2a, 0x8e, 0x8c, 0x12, 0x00, 0x01, 0x02, + 0x2a, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x8e, + 0xc0, 0x5c, 0x4b, 0x00, 0x03, 0x01, 0x22, 0x96, + 0x3b, 0x00, 0x11, 0x01, 0x2f, 0x9e, 0x5d, 0x00, + 0x01, 0x01, 0x2f, 0xce, 0xcd, 0x2d, 0x00, }; static const uint8_t unicode_prop_Hyphen_table[28] = { @@ -3501,7 +3544,7 @@ static const uint8_t unicode_prop_Other_Math_table[200] = { 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90, }; -static const uint8_t unicode_prop_Other_Alphabetic_table[396] = { +static const uint8_t unicode_prop_Other_Alphabetic_table[411] = { 0x43, 0x44, 0x80, 0x42, 0x69, 0x8d, 0x00, 0x01, 0x01, 0x00, 0xc7, 0x8a, 0xaf, 0x8c, 0x06, 0x8f, 0x80, 0xe4, 0x33, 0x19, 0x0b, 0x80, 0xa2, 0x80, @@ -3517,7 +3560,7 @@ static const uint8_t unicode_prop_Other_Alphabetic_table[396] = { 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9c, 0x82, 0xb9, 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9b, 0x83, 0xb9, 0x30, 0x10, 0x82, 0x89, 0x80, 0x89, - 0x81, 0x9d, 0x81, 0xca, 0x28, 0x00, 0x87, 0x91, + 0x81, 0x9c, 0x82, 0xca, 0x28, 0x00, 0x87, 0x91, 0x81, 0xbc, 0x01, 0x86, 0x91, 0x80, 0xe2, 0x01, 0x28, 0x81, 0x8f, 0x80, 0x40, 0xa2, 0x90, 0x8a, 0x8a, 0x80, 0xa3, 0xed, 0x8b, 0x00, 0x0b, 0x96, @@ -3525,33 +3568,35 @@ static const uint8_t unicode_prop_Other_Alphabetic_table[396] = { 0x89, 0x83, 0x46, 0x73, 0x81, 0x9d, 0x81, 0x9d, 0x81, 0x9d, 0x81, 0xc1, 0x92, 0x40, 0xbb, 0x81, 0xa1, 0x80, 0xf5, 0x8b, 0x83, 0x88, 0x40, 0xdd, - 0x84, 0xb8, 0x89, 0x81, 0x93, 0x40, 0x8a, 0x84, - 0xaf, 0x8e, 0xbb, 0x82, 0x9d, 0x88, 0x09, 0xb8, - 0x8a, 0xb1, 0x92, 0x41, 0xaf, 0x8d, 0x46, 0xc0, - 0xb3, 0x48, 0xf5, 0x9f, 0x60, 0x78, 0x73, 0x87, - 0xa1, 0x81, 0x41, 0x61, 0x07, 0x80, 0x96, 0x84, - 0xd7, 0x81, 0xb1, 0x8f, 0x00, 0xb8, 0x80, 0xa5, - 0x84, 0x9b, 0x8b, 0xac, 0x83, 0xaf, 0x8b, 0xa4, - 0x80, 0xc2, 0x8d, 0x8b, 0x07, 0x81, 0xac, 0x82, - 0xb1, 0x00, 0x11, 0x0c, 0x80, 0xab, 0x24, 0x80, - 0x40, 0xec, 0x87, 0x60, 0x4f, 0x32, 0x80, 0x48, - 0x56, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83, 0x43, - 0x13, 0x83, 0x42, 0xd7, 0x82, 0xb4, 0x8d, 0xbb, - 0x80, 0xac, 0x88, 0xc6, 0x82, 0xa3, 0x8b, 0x91, - 0x81, 0xb8, 0x82, 0xaf, 0x8c, 0xeb, 0x88, 0x08, - 0x28, 0x40, 0x9f, 0x89, 0x96, 0x83, 0xb9, 0x31, - 0x09, 0x81, 0x89, 0x80, 0x89, 0x81, 0x40, 0xd0, - 0x8c, 0x02, 0xe9, 0x91, 0x40, 0xec, 0x31, 0x86, - 0x9c, 0x81, 0xd1, 0x8e, 0x00, 0xe9, 0x8a, 0xe6, - 0x8d, 0x41, 0x00, 0x8c, 0x41, 0x97, 0x31, 0x2b, - 0x80, 0x9b, 0x89, 0xa9, 0x20, 0x83, 0x91, 0x8a, - 0xad, 0x8d, 0x41, 0x96, 0x38, 0x86, 0xd2, 0x95, - 0x80, 0x8d, 0xf9, 0x2a, 0x00, 0x08, 0x10, 0x02, - 0x80, 0xc1, 0x20, 0x08, 0x83, 0x41, 0x5b, 0x83, - 0x60, 0x50, 0x57, 0x00, 0xb6, 0x33, 0x60, 0x4d, - 0x0a, 0x80, 0x60, 0x23, 0x60, 0x30, 0x90, 0x0e, - 0x01, 0x04, 0x49, 0x1b, 0x80, 0x47, 0xe7, 0x99, - 0x85, 0x99, 0x85, 0x99, + 0x84, 0xb8, 0x89, 0x81, 0x93, 0xc9, 0x81, 0xbe, + 0x84, 0xaf, 0x8e, 0xbb, 0x82, 0x9d, 0x88, 0x09, + 0xb8, 0x8a, 0xb1, 0x92, 0x41, 0xaf, 0x8d, 0x46, + 0xc0, 0xb3, 0x48, 0xf5, 0x9f, 0x60, 0x78, 0x73, + 0x87, 0xa1, 0x81, 0x41, 0x61, 0x07, 0x80, 0x96, + 0x84, 0xd7, 0x81, 0xb1, 0x8f, 0x00, 0xb8, 0x80, + 0xa5, 0x84, 0x9b, 0x8b, 0xac, 0x83, 0xaf, 0x8b, + 0xa4, 0x80, 0xc2, 0x8d, 0x8b, 0x07, 0x81, 0xac, + 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x80, 0xab, 0x24, + 0x80, 0x40, 0xec, 0x87, 0x60, 0x4f, 0x32, 0x80, + 0x48, 0x56, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83, + 0x43, 0x13, 0x83, 0x41, 0x82, 0x81, 0x41, 0x52, + 0x82, 0xb4, 0x8d, 0xbb, 0x80, 0xac, 0x88, 0xc6, + 0x82, 0xa3, 0x8b, 0x91, 0x81, 0xb8, 0x82, 0xaf, + 0x8c, 0x8d, 0x81, 0xdb, 0x88, 0x08, 0x28, 0x40, + 0x9f, 0x89, 0x96, 0x83, 0xb9, 0x31, 0x09, 0x81, + 0x89, 0x80, 0x89, 0x81, 0x40, 0xd0, 0x8c, 0x02, + 0xe9, 0x91, 0x40, 0xec, 0x31, 0x86, 0x9c, 0x81, + 0xd1, 0x8e, 0x00, 0xe9, 0x8a, 0xe6, 0x8d, 0x41, + 0x00, 0x8c, 0x40, 0xf6, 0x28, 0x09, 0x0a, 0x00, + 0x80, 0x40, 0x8d, 0x31, 0x2b, 0x80, 0x9b, 0x89, + 0xa9, 0x20, 0x83, 0x91, 0x8a, 0xad, 0x8d, 0x41, + 0x96, 0x38, 0x86, 0xd2, 0x95, 0x80, 0x8d, 0xf9, + 0x2a, 0x00, 0x08, 0x10, 0x02, 0x80, 0xc1, 0x20, + 0x08, 0x83, 0x41, 0x5b, 0x83, 0x60, 0x50, 0x57, + 0x00, 0xb6, 0x33, 0xdc, 0x81, 0x60, 0x4c, 0xab, + 0x80, 0x60, 0x23, 0x60, 0x30, 0x90, 0x0e, 0x01, + 0x04, 0x49, 0x1b, 0x80, 0x47, 0xe7, 0x99, 0x85, + 0x99, 0x85, 0x99, }; static const uint8_t unicode_prop_Other_Lowercase_table[51] = { @@ -3569,15 +3614,16 @@ static const uint8_t unicode_prop_Other_Uppercase_table[15] = { 0xcc, 0x5f, 0x99, 0x85, 0x99, 0x85, 0x99, }; -static const uint8_t unicode_prop_Other_Grapheme_Extend_table[62] = { +static const uint8_t unicode_prop_Other_Grapheme_Extend_table[65] = { 0x49, 0xbd, 0x80, 0x97, 0x80, 0x41, 0x65, 0x80, 0x97, 0x80, 0xe5, 0x80, 0x97, 0x80, 0x40, 0xe9, 0x80, 0x91, 0x81, 0xe6, 0x80, 0x97, 0x80, 0xf6, 0x80, 0x8e, 0x80, 0x4d, 0x54, 0x80, 0x44, 0xd5, 0x80, 0x50, 0x20, 0x81, 0x60, 0xcf, 0x6d, 0x81, 0x53, 0x9d, 0x80, 0x97, 0x80, 0x41, 0x57, 0x80, - 0x8b, 0x80, 0x40, 0xf0, 0x80, 0x60, 0xbb, 0xb4, - 0x07, 0x84, 0x6c, 0x2e, 0xac, 0xdf, + 0x8b, 0x80, 0x40, 0xf0, 0x80, 0x43, 0x7f, 0x80, + 0x60, 0xb8, 0x33, 0x07, 0x84, 0x6c, 0x2e, 0xac, + 0xdf, }; static const uint8_t unicode_prop_Other_Default_Ignorable_Code_Point_table[32] = { @@ -3630,7 +3676,7 @@ static const uint8_t unicode_prop_Changes_When_Casefolded1_table[33] = { 0x84, }; -static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[436] = { +static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[441] = { 0x40, 0x9f, 0x06, 0x00, 0x01, 0x00, 0x01, 0x12, 0x10, 0x82, 0x9f, 0x80, 0xcf, 0x01, 0x80, 0x8b, 0x07, 0x80, 0xfb, 0x01, 0x01, 0x80, 0xa5, 0x80, @@ -3663,29 +3709,30 @@ static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[436] = { 0x80, 0xde, 0x80, 0xb0, 0xdd, 0x82, 0x8d, 0xdf, 0x9e, 0x80, 0xa7, 0x87, 0xae, 0x80, 0x41, 0x7f, 0x60, 0x72, 0x9b, 0x81, 0x40, 0xd1, 0x80, 0x40, - 0x86, 0x81, 0x43, 0x61, 0x83, 0x60, 0x4d, 0x9f, - 0x41, 0x0d, 0x08, 0x00, 0x81, 0x89, 0x00, 0x00, - 0x09, 0x82, 0xc3, 0x81, 0xe9, 0xa5, 0x86, 0x8b, - 0x24, 0x00, 0x97, 0x04, 0x00, 0x01, 0x01, 0x80, - 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf, 0x81, 0xb5, - 0xa7, 0x8c, 0x82, 0x99, 0x95, 0x94, 0x81, 0x8b, - 0x80, 0x92, 0x03, 0x1a, 0x00, 0x80, 0x40, 0x86, - 0x08, 0x80, 0x9f, 0x99, 0x40, 0x83, 0x15, 0x0d, - 0x0d, 0x0a, 0x16, 0x06, 0x80, 0x88, 0x60, 0xbc, - 0xa6, 0x83, 0x54, 0xb9, 0x86, 0x8d, 0x87, 0xbf, - 0x85, 0x42, 0x3e, 0xd4, 0x80, 0xc6, 0x01, 0x08, - 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06, 0x80, 0xc0, - 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03, 0x04, 0x00, - 0x16, 0x80, 0x41, 0x53, 0x81, 0x41, 0x23, 0x81, - 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01, 0x00, 0x08, - 0x80, 0x89, 0x03, 0x00, 0x00, 0x28, 0x18, 0x00, - 0x00, 0x02, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03, 0x03, 0x00, - 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90, - 0x42, 0x43, 0x8a, 0x84, 0x9e, 0x80, 0x9f, 0x99, - 0x82, 0xa2, 0x80, 0xee, 0x82, 0x8c, 0xab, 0x83, - 0x88, 0x31, 0x61, 0x05, 0xad, 0x42, 0x1d, 0x6b, - 0x05, 0xe1, 0x4f, 0xff, + 0x86, 0x81, 0x43, 0x61, 0x83, 0x88, 0x80, 0x60, + 0x4d, 0x95, 0x41, 0x0d, 0x08, 0x00, 0x81, 0x89, + 0x00, 0x00, 0x09, 0x82, 0xc3, 0x81, 0xe9, 0xa5, + 0x86, 0x8b, 0x24, 0x00, 0x97, 0x04, 0x00, 0x01, + 0x01, 0x80, 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf, + 0x81, 0xb5, 0xa7, 0x8c, 0x82, 0x99, 0x95, 0x94, + 0x81, 0x8b, 0x80, 0x92, 0x03, 0x1a, 0x00, 0x80, + 0x40, 0x86, 0x08, 0x80, 0x9f, 0x99, 0x40, 0x83, + 0x15, 0x0d, 0x0d, 0x0a, 0x16, 0x06, 0x80, 0x88, + 0x60, 0xbc, 0xa6, 0x83, 0x54, 0xb9, 0x86, 0x8d, + 0x87, 0xbf, 0x85, 0x42, 0x3e, 0xd4, 0x80, 0xc6, + 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06, + 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03, + 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, 0x41, + 0x23, 0x81, 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01, + 0x00, 0x08, 0x80, 0x89, 0x03, 0x00, 0x00, 0x28, + 0x18, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03, + 0x03, 0x00, 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, + 0x80, 0x90, 0x42, 0x43, 0x8a, 0x84, 0x9e, 0x80, + 0x9f, 0x99, 0x82, 0xa2, 0x80, 0xee, 0x82, 0x8c, + 0xab, 0x83, 0x88, 0x31, 0x49, 0x9d, 0x89, 0x60, + 0xfc, 0x05, 0x42, 0x1d, 0x6b, 0x05, 0xe1, 0x4f, + 0xff, }; static const uint8_t unicode_prop_ASCII_Hex_Digit_table[5] = { @@ -3697,14 +3744,14 @@ static const uint8_t unicode_prop_Bidi_Control_table[10] = { 0xb6, 0x83, }; -static const uint8_t unicode_prop_Dash_table[50] = { +static const uint8_t unicode_prop_Dash_table[53] = { 0xac, 0x80, 0x45, 0x5b, 0x80, 0xb2, 0x80, 0x4e, 0x40, 0x80, 0x44, 0x04, 0x80, 0x48, 0x08, 0x85, 0xbc, 0x80, 0xa6, 0x80, 0x8e, 0x80, 0x41, 0x85, 0x80, 0x4c, 0x03, 0x01, 0x80, 0x9e, 0x0b, 0x80, 0x41, 0xda, 0x80, 0x92, 0x80, 0xee, 0x80, 0x60, 0xcd, 0x8f, 0x81, 0xa4, 0x80, 0x89, 0x80, 0x40, - 0xa8, 0x80, + 0xa8, 0x80, 0x4f, 0x9e, 0x80, }; static const uint8_t unicode_prop_Deprecated_table[23] = { @@ -3713,7 +3760,7 @@ static const uint8_t unicode_prop_Deprecated_table[23] = { 0x42, 0xb8, 0x81, 0x6d, 0xdc, 0xd5, 0x80, }; -static const uint8_t unicode_prop_Diacritic_table[350] = { +static const uint8_t unicode_prop_Diacritic_table[358] = { 0xdd, 0x00, 0x80, 0xc6, 0x05, 0x03, 0x01, 0x81, 0x41, 0xf6, 0x40, 0x9e, 0x07, 0x25, 0x90, 0x0b, 0x80, 0x88, 0x81, 0x40, 0xfc, 0x84, 0x40, 0xd0, @@ -3723,55 +3770,57 @@ static const uint8_t unicode_prop_Diacritic_table[350] = { 0x81, 0x40, 0xc8, 0x9b, 0xbc, 0x80, 0x8f, 0x02, 0x83, 0x9b, 0x80, 0xc9, 0x80, 0x8f, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xae, - 0x82, 0xbb, 0x80, 0x8f, 0x80, 0xfe, 0x80, 0xfe, - 0x80, 0xed, 0x80, 0x8f, 0x80, 0xec, 0x81, 0x8f, - 0x80, 0xfb, 0x80, 0xfb, 0x28, 0x80, 0xea, 0x80, - 0x8c, 0x84, 0xca, 0x81, 0x9a, 0x00, 0x00, 0x03, - 0x81, 0xc1, 0x10, 0x81, 0xbd, 0x80, 0xef, 0x00, - 0x81, 0xa7, 0x0b, 0x84, 0x98, 0x30, 0x80, 0x89, - 0x81, 0x42, 0xc0, 0x82, 0x44, 0x68, 0x8a, 0x88, - 0x80, 0x41, 0x5a, 0x82, 0x41, 0x38, 0x39, 0x80, - 0xaf, 0x8d, 0xf5, 0x80, 0x8e, 0x80, 0xa5, 0x88, - 0xb5, 0x81, 0x40, 0x89, 0x81, 0xbf, 0x85, 0xd1, - 0x98, 0x18, 0x28, 0x0a, 0xb1, 0xbe, 0xd8, 0x8b, - 0xa4, 0x22, 0x82, 0x41, 0xbc, 0x00, 0x82, 0x8a, - 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81, 0x4c, - 0xef, 0x82, 0x41, 0x3c, 0x80, 0x41, 0xf9, 0x85, - 0xe8, 0x83, 0xde, 0x80, 0x60, 0x75, 0x71, 0x80, - 0x8b, 0x08, 0x80, 0x9b, 0x81, 0xd1, 0x81, 0x8d, - 0xa1, 0xe5, 0x82, 0xec, 0x81, 0x40, 0xc9, 0x80, - 0x9a, 0x91, 0xb8, 0x83, 0xa3, 0x80, 0xde, 0x80, - 0x8b, 0x80, 0xa3, 0x80, 0x40, 0x94, 0x82, 0xc0, - 0x83, 0xb2, 0x80, 0xe3, 0x84, 0x40, 0x8b, 0x81, - 0x60, 0x4f, 0x2f, 0x80, 0x43, 0x00, 0x8f, 0x41, - 0x0d, 0x00, 0x80, 0xae, 0x80, 0xac, 0x81, 0xc2, - 0x80, 0x42, 0xfb, 0x80, 0x48, 0x03, 0x81, 0x42, - 0x3a, 0x85, 0x42, 0x1d, 0x8a, 0x41, 0x67, 0x81, - 0xf7, 0x81, 0xbd, 0x80, 0xcb, 0x80, 0x88, 0x82, - 0xe7, 0x81, 0x40, 0xb1, 0x81, 0xd0, 0x80, 0x8f, - 0x80, 0x97, 0x32, 0x84, 0x40, 0xcc, 0x02, 0x80, - 0xfa, 0x81, 0x40, 0xfa, 0x81, 0xfd, 0x80, 0xf5, - 0x81, 0xf2, 0x80, 0x41, 0x0c, 0x81, 0x41, 0xa4, - 0x80, 0xd2, 0x80, 0x91, 0x80, 0xd0, 0x80, 0x41, - 0xa4, 0x80, 0x41, 0x01, 0x00, 0x81, 0xd0, 0x80, - 0x60, 0x4d, 0x57, 0x84, 0xba, 0x86, 0x44, 0x57, - 0x90, 0x60, 0x61, 0xc6, 0x12, 0x2f, 0x39, 0x86, + 0x82, 0xbb, 0x80, 0x8f, 0x06, 0x80, 0xf6, 0x80, + 0xfe, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xec, 0x81, + 0x8f, 0x80, 0xfb, 0x80, 0xfb, 0x28, 0x80, 0xea, + 0x80, 0x8c, 0x84, 0xca, 0x81, 0x9a, 0x00, 0x00, + 0x03, 0x81, 0xc1, 0x10, 0x81, 0xbd, 0x80, 0xef, + 0x00, 0x81, 0xa7, 0x0b, 0x84, 0x98, 0x30, 0x80, + 0x89, 0x81, 0x42, 0xc0, 0x82, 0x44, 0x68, 0x8a, + 0x88, 0x80, 0x41, 0x5a, 0x82, 0x41, 0x38, 0x39, + 0x80, 0xaf, 0x8d, 0xf5, 0x80, 0x8e, 0x80, 0xa5, + 0x88, 0xb5, 0x81, 0x40, 0x89, 0x81, 0xbf, 0x85, + 0xd1, 0x98, 0x18, 0x28, 0x0a, 0xb1, 0xbe, 0xd8, + 0x8b, 0xa4, 0x22, 0x82, 0x41, 0xbc, 0x00, 0x82, + 0x8a, 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81, + 0x4c, 0xef, 0x82, 0x41, 0x3c, 0x80, 0x41, 0xf9, + 0x85, 0xe8, 0x83, 0xde, 0x80, 0x60, 0x75, 0x71, + 0x80, 0x8b, 0x08, 0x80, 0x9b, 0x81, 0xd1, 0x81, + 0x8d, 0xa1, 0xe5, 0x82, 0xec, 0x81, 0x40, 0xc9, + 0x80, 0x9a, 0x91, 0xb8, 0x83, 0xa3, 0x80, 0xde, + 0x80, 0x8b, 0x80, 0xa3, 0x80, 0x40, 0x94, 0x82, + 0xc0, 0x83, 0xb2, 0x80, 0xe3, 0x84, 0x88, 0x82, + 0xff, 0x81, 0x60, 0x4f, 0x2f, 0x80, 0x43, 0x00, + 0x8f, 0x41, 0x0d, 0x00, 0x80, 0xae, 0x80, 0xac, + 0x81, 0xc2, 0x80, 0x42, 0xfb, 0x80, 0x48, 0x03, + 0x81, 0x42, 0x3a, 0x85, 0x42, 0x1d, 0x8a, 0x41, + 0x67, 0x81, 0xf7, 0x81, 0xbd, 0x80, 0xcb, 0x80, + 0x88, 0x82, 0xe7, 0x81, 0x40, 0xb1, 0x81, 0xd0, + 0x80, 0x8f, 0x80, 0x97, 0x32, 0x84, 0x40, 0xcc, + 0x02, 0x80, 0xfa, 0x81, 0x40, 0xfa, 0x81, 0xfd, + 0x80, 0xf5, 0x81, 0xf2, 0x80, 0x41, 0x0c, 0x81, + 0x41, 0x01, 0x0b, 0x80, 0x40, 0x9b, 0x80, 0xd2, + 0x80, 0x91, 0x80, 0xd0, 0x80, 0x41, 0xa4, 0x80, + 0x41, 0x01, 0x00, 0x81, 0xd0, 0x80, 0x60, 0x4d, + 0x57, 0x84, 0xba, 0x86, 0x44, 0x57, 0x90, 0xcf, + 0x81, 0x60, 0x61, 0x74, 0x12, 0x2f, 0x39, 0x86, 0x9d, 0x83, 0x4f, 0x81, 0x86, 0x41, 0xb4, 0x83, 0x45, 0xdf, 0x86, 0xec, 0x10, 0x82, }; -static const uint8_t unicode_prop_Extender_table[86] = { +static const uint8_t unicode_prop_Extender_table[89] = { 0x40, 0xb6, 0x80, 0x42, 0x17, 0x81, 0x43, 0x6d, - 0x80, 0x41, 0xb8, 0x80, 0x46, 0x4a, 0x80, 0xfe, - 0x80, 0x49, 0x42, 0x80, 0xb7, 0x80, 0x42, 0x62, - 0x80, 0x41, 0x8d, 0x80, 0xc3, 0x80, 0x53, 0x88, - 0x80, 0xaa, 0x84, 0xe6, 0x81, 0xdc, 0x82, 0x60, - 0x6f, 0x15, 0x80, 0x45, 0xf5, 0x80, 0x43, 0xc1, - 0x80, 0x95, 0x80, 0x40, 0x88, 0x80, 0xeb, 0x80, - 0x94, 0x81, 0x60, 0x54, 0x7a, 0x80, 0x53, 0xeb, - 0x80, 0x42, 0x67, 0x82, 0x44, 0xce, 0x80, 0x60, - 0x50, 0xa8, 0x81, 0x44, 0x9b, 0x08, 0x80, 0x60, - 0x71, 0x57, 0x81, 0x48, 0x05, 0x82, + 0x80, 0x41, 0xb8, 0x80, 0x43, 0x59, 0x80, 0x42, + 0xef, 0x80, 0xfe, 0x80, 0x49, 0x42, 0x80, 0xb7, + 0x80, 0x42, 0x62, 0x80, 0x41, 0x8d, 0x80, 0xc3, + 0x80, 0x53, 0x88, 0x80, 0xaa, 0x84, 0xe6, 0x81, + 0xdc, 0x82, 0x60, 0x6f, 0x15, 0x80, 0x45, 0xf5, + 0x80, 0x43, 0xc1, 0x80, 0x95, 0x80, 0x40, 0x88, + 0x80, 0xeb, 0x80, 0x94, 0x81, 0x60, 0x54, 0x7a, + 0x80, 0x53, 0xeb, 0x80, 0x42, 0x67, 0x82, 0x44, + 0xce, 0x80, 0x60, 0x50, 0xa8, 0x81, 0x44, 0x9b, + 0x08, 0x80, 0x60, 0x71, 0x57, 0x81, 0x48, 0x05, + 0x82, }; static const uint8_t unicode_prop_Hex_Digit_table[12] = { @@ -3787,15 +3836,16 @@ static const uint8_t unicode_prop_IDS_Trinary_Operator_table[4] = { 0x60, 0x2f, 0xf1, 0x81, }; -static const uint8_t unicode_prop_Ideographic_table[58] = { +static const uint8_t unicode_prop_Ideographic_table[66] = { 0x60, 0x30, 0x05, 0x81, 0x98, 0x88, 0x8d, 0x82, - 0x43, 0xc4, 0x59, 0xb5, 0xc9, 0x60, 0x51, 0xef, - 0x60, 0x59, 0x0f, 0x41, 0x6d, 0x81, 0xe9, 0x60, - 0x75, 0x25, 0x57, 0xf7, 0x87, 0x42, 0xf2, 0x60, - 0x26, 0x7c, 0x41, 0x8b, 0x60, 0x4d, 0x03, 0x60, - 0xa6, 0xd6, 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd, - 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e, - 0x42, 0x1d, + 0x43, 0xc4, 0x59, 0xbf, 0xbf, 0x60, 0x51, 0xfc, + 0x60, 0x59, 0x02, 0x41, 0x6d, 0x81, 0xe9, 0x60, + 0x75, 0x09, 0x80, 0x9a, 0x57, 0xf7, 0x87, 0x44, + 0xd5, 0xa9, 0x88, 0x60, 0x24, 0x66, 0x41, 0x8b, + 0x60, 0x4d, 0x03, 0x60, 0xa6, 0xdd, 0xa1, 0x50, + 0x34, 0x8a, 0x40, 0xdd, 0x81, 0x56, 0x81, 0x8d, + 0x5d, 0x30, 0x4c, 0x1e, 0x42, 0x1d, 0x45, 0xe1, + 0x53, 0x4a, }; static const uint8_t unicode_prop_Join_Control_table[4] = { @@ -3851,7 +3901,7 @@ static const uint8_t unicode_prop_Regional_Indicator_table[4] = { 0x61, 0xf1, 0xe5, 0x99, }; -static const uint8_t unicode_prop_Sentence_Terminal_table[184] = { +static const uint8_t unicode_prop_Sentence_Terminal_table[188] = { 0xa0, 0x80, 0x8b, 0x80, 0x8f, 0x80, 0x45, 0x48, 0x80, 0x40, 0x93, 0x81, 0x40, 0xb3, 0x80, 0xaa, 0x82, 0x40, 0xf5, 0x80, 0xbc, 0x00, 0x02, 0x81, @@ -3871,10 +3921,11 @@ static const uint8_t unicode_prop_Sentence_Terminal_table[184] = { 0x82, 0x40, 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7, 0x08, 0x81, 0xeb, 0x80, 0x41, 0xa0, 0x81, 0x41, 0x74, 0x0c, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, - 0x43, 0x02, 0x81, 0xd6, 0x81, 0x41, 0xa3, 0x81, - 0x42, 0xb3, 0x81, 0x60, 0x4b, 0x74, 0x81, 0x40, - 0x84, 0x80, 0xc0, 0x81, 0x8a, 0x80, 0x43, 0x52, - 0x80, 0x60, 0x4e, 0x05, 0x80, 0x5d, 0xe7, 0x80, + 0x42, 0x04, 0x00, 0x80, 0x40, 0xfa, 0x81, 0xd6, + 0x81, 0x41, 0xa3, 0x81, 0x42, 0xb3, 0x81, 0x60, + 0x4b, 0x74, 0x81, 0x40, 0x84, 0x80, 0xc0, 0x81, + 0x8a, 0x80, 0x43, 0x52, 0x80, 0x60, 0x4e, 0x05, + 0x80, 0x5d, 0xe7, 0x80, }; static const uint8_t unicode_prop_Soft_Dotted_table[71] = { @@ -3889,7 +3940,7 @@ static const uint8_t unicode_prop_Soft_Dotted_table[71] = { 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, 0x81, }; -static const uint8_t unicode_prop_Terminal_Punctuation_table[237] = { +static const uint8_t unicode_prop_Terminal_Punctuation_table[241] = { 0xa0, 0x80, 0x89, 0x00, 0x80, 0x8a, 0x0a, 0x80, 0x43, 0x3d, 0x07, 0x80, 0x42, 0x00, 0x80, 0xb8, 0x80, 0xc7, 0x80, 0x8d, 0x01, 0x81, 0x40, 0xb3, @@ -3913,21 +3964,23 @@ static const uint8_t unicode_prop_Terminal_Punctuation_table[237] = { 0x85, 0xc3, 0x85, 0xd8, 0x83, 0x43, 0xb7, 0x84, 0x40, 0xec, 0x86, 0xef, 0x83, 0xfe, 0x82, 0x40, 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7, 0x84, 0xeb, - 0x80, 0x41, 0xa0, 0x82, 0x8c, 0x80, 0x41, 0x65, - 0x1a, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, 0x43, - 0x02, 0x81, 0xd6, 0x0b, 0x81, 0x41, 0x9d, 0x82, - 0xac, 0x80, 0x42, 0x84, 0x81, 0x45, 0x76, 0x84, - 0x60, 0x45, 0xf8, 0x81, 0x40, 0x84, 0x80, 0xc0, - 0x82, 0x89, 0x80, 0x43, 0x51, 0x81, 0x60, 0x4e, - 0x05, 0x80, 0x5d, 0xe6, 0x83, + 0x80, 0x41, 0xa0, 0x82, 0x8b, 0x81, 0x41, 0x65, + 0x1a, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, 0x42, + 0x04, 0x00, 0x80, 0x40, 0xfa, 0x81, 0xd6, 0x0b, + 0x81, 0x41, 0x9d, 0x82, 0xac, 0x80, 0x42, 0x84, + 0x81, 0x45, 0x76, 0x84, 0x60, 0x45, 0xf8, 0x81, + 0x40, 0x84, 0x80, 0xc0, 0x82, 0x89, 0x80, 0x43, + 0x51, 0x81, 0x60, 0x4e, 0x05, 0x80, 0x5d, 0xe6, + 0x83, }; -static const uint8_t unicode_prop_Unified_Ideograph_table[38] = { - 0x60, 0x33, 0xff, 0x59, 0xb5, 0xc9, 0x60, 0x51, - 0xef, 0x60, 0x5a, 0x1d, 0x08, 0x00, 0x81, 0x89, +static const uint8_t unicode_prop_Unified_Ideograph_table[42] = { + 0x60, 0x33, 0xff, 0x59, 0xbf, 0xbf, 0x60, 0x51, + 0xfc, 0x60, 0x5a, 0x10, 0x08, 0x00, 0x81, 0x89, 0x00, 0x00, 0x09, 0x82, 0x61, 0x05, 0xd5, 0x60, - 0xa6, 0xd6, 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd, - 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, + 0xa6, 0xdd, 0xa1, 0x50, 0x34, 0x8a, 0x40, 0xdd, + 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x54, 0x1e, + 0x53, 0x4a, }; static const uint8_t unicode_prop_Variation_Selector_table[12] = { @@ -3966,7 +4019,7 @@ static const uint8_t unicode_prop_Bidi_Mirrored_table[171] = { 0x80, 0xb8, 0x80, }; -static const uint8_t unicode_prop_Emoji_table[236] = { +static const uint8_t unicode_prop_Emoji_table[238] = { 0xa2, 0x05, 0x04, 0x89, 0xee, 0x03, 0x80, 0x5f, 0x8c, 0x80, 0x8b, 0x80, 0x40, 0xd7, 0x80, 0x95, 0x80, 0xd9, 0x85, 0x8e, 0x81, 0x41, 0x6e, 0x81, @@ -3976,27 +4029,27 @@ static const uint8_t unicode_prop_Emoji_table[236] = { 0x09, 0x03, 0x01, 0x00, 0x09, 0x02, 0x02, 0x0f, 0x14, 0x00, 0x04, 0x8b, 0x8a, 0x09, 0x00, 0x08, 0x80, 0x91, 0x01, 0x81, 0x91, 0x28, 0x00, 0x0a, - 0x0f, 0x0b, 0x81, 0x8a, 0x0c, 0x09, 0x04, 0x08, - 0x00, 0x81, 0x93, 0x0c, 0x28, 0x19, 0x03, 0x01, - 0x01, 0x28, 0x01, 0x00, 0x00, 0x05, 0x02, 0x05, - 0x80, 0x89, 0x81, 0x8e, 0x01, 0x03, 0x00, 0x03, - 0x10, 0x80, 0x8a, 0x81, 0xaf, 0x82, 0x88, 0x80, - 0x8d, 0x80, 0x8d, 0x80, 0x41, 0x73, 0x81, 0x41, - 0xce, 0x82, 0x92, 0x81, 0xb2, 0x03, 0x80, 0x44, - 0xd9, 0x80, 0x8b, 0x80, 0x42, 0x58, 0x00, 0x80, - 0x61, 0xbd, 0x69, 0x80, 0x40, 0xc9, 0x80, 0x40, - 0x9f, 0x81, 0x8b, 0x81, 0x8d, 0x01, 0x89, 0xca, - 0x99, 0x01, 0x96, 0x80, 0x93, 0x01, 0x88, 0x94, - 0x81, 0x40, 0xad, 0xa1, 0x81, 0xef, 0x09, 0x02, - 0x81, 0xd2, 0x0a, 0x80, 0x41, 0x06, 0x80, 0xbe, - 0x8a, 0x28, 0x97, 0x31, 0x0f, 0x8b, 0x01, 0x19, - 0x03, 0x81, 0x8c, 0x09, 0x07, 0x81, 0x88, 0x04, - 0x82, 0x8b, 0x17, 0x11, 0x00, 0x03, 0x05, 0x02, - 0x05, 0xd5, 0xaf, 0xc5, 0x27, 0x08, 0x89, 0x2a, - 0x00, 0x0a, 0x01, 0x87, 0x40, 0xe4, 0x8b, 0x41, - 0x20, 0xad, 0x80, 0x89, 0x80, 0xaa, 0x03, 0x82, - 0xa8, 0x0d, 0x82, 0x9c, 0x81, 0xb2, 0xef, 0x1b, - 0x14, 0x82, 0x8c, 0x85, + 0x0c, 0x01, 0x0b, 0x81, 0x8a, 0x0c, 0x09, 0x04, + 0x08, 0x00, 0x81, 0x93, 0x0c, 0x28, 0x19, 0x03, + 0x01, 0x01, 0x28, 0x01, 0x00, 0x00, 0x05, 0x02, + 0x05, 0x80, 0x89, 0x81, 0x8e, 0x01, 0x03, 0x00, + 0x03, 0x10, 0x80, 0x8a, 0x81, 0xaf, 0x82, 0x88, + 0x80, 0x8d, 0x80, 0x8d, 0x80, 0x41, 0x73, 0x81, + 0x41, 0xce, 0x82, 0x92, 0x81, 0xb2, 0x03, 0x80, + 0x44, 0xd9, 0x80, 0x8b, 0x80, 0x42, 0x58, 0x00, + 0x80, 0x61, 0xbd, 0x69, 0x80, 0x40, 0xc9, 0x80, + 0x40, 0x9f, 0x81, 0x8b, 0x81, 0x8d, 0x01, 0x89, + 0xca, 0x99, 0x01, 0x96, 0x80, 0x93, 0x01, 0x88, + 0x94, 0x81, 0x40, 0xad, 0xa1, 0x81, 0xef, 0x09, + 0x02, 0x81, 0xd2, 0x0a, 0x80, 0x41, 0x06, 0x80, + 0xbe, 0x8a, 0x28, 0x97, 0x31, 0x0f, 0x8b, 0x01, + 0x19, 0x03, 0x81, 0x8c, 0x09, 0x07, 0x81, 0x88, + 0x04, 0x82, 0x8b, 0x17, 0x11, 0x00, 0x03, 0x05, + 0x02, 0x05, 0xd5, 0xaf, 0xc5, 0x27, 0x0a, 0x3d, + 0x10, 0x01, 0x10, 0x81, 0x89, 0x40, 0xe2, 0x8b, + 0x41, 0x1f, 0xae, 0x80, 0x89, 0x80, 0xb1, 0x80, + 0xd1, 0x80, 0xb2, 0xef, 0x22, 0x14, 0x86, 0x88, + 0x98, 0x36, 0x88, 0x82, 0x8c, 0x86, }; static const uint8_t unicode_prop_Emoji_Component_table[28] = { @@ -4010,18 +4063,19 @@ static const uint8_t unicode_prop_Emoji_Modifier_table[4] = { 0x61, 0xf3, 0xfa, 0x84, }; -static const uint8_t unicode_prop_Emoji_Modifier_Base_table[63] = { +static const uint8_t unicode_prop_Emoji_Modifier_Base_table[66] = { 0x60, 0x26, 0x1c, 0x80, 0x40, 0xda, 0x80, 0x8f, 0x83, 0x61, 0xcc, 0x76, 0x80, 0xbb, 0x11, 0x01, 0x82, 0xf4, 0x09, 0x8a, 0x94, 0x92, 0x10, 0x1a, 0x02, 0x30, 0x00, 0x97, 0x80, 0x40, 0xc8, 0x0b, 0x80, 0x94, 0x03, 0x81, 0x40, 0xad, 0x12, 0x84, 0xd2, 0x80, 0x8f, 0x82, 0x88, 0x80, 0x8a, 0x80, - 0x42, 0x41, 0x07, 0x3d, 0x80, 0x88, 0x89, 0x0a, - 0xf5, 0x08, 0x08, 0x80, 0x90, 0x10, 0x8c, + 0x42, 0x3e, 0x01, 0x07, 0x3d, 0x80, 0x88, 0x89, + 0x0a, 0xb7, 0x80, 0xbc, 0x08, 0x08, 0x80, 0x90, + 0x10, 0x8c, }; -static const uint8_t unicode_prop_Emoji_Presentation_table[143] = { +static const uint8_t unicode_prop_Emoji_Presentation_table[144] = { 0x60, 0x23, 0x19, 0x81, 0x40, 0xcc, 0x1a, 0x01, 0x80, 0x42, 0x08, 0x81, 0x94, 0x81, 0xb1, 0x8b, 0xaa, 0x80, 0x92, 0x80, 0x8c, 0x07, 0x81, 0x90, @@ -4036,13 +4090,13 @@ static const uint8_t unicode_prop_Emoji_Presentation_table[143] = { 0x1c, 0x8b, 0x90, 0x10, 0x82, 0xc6, 0x00, 0x80, 0x40, 0xba, 0x81, 0xbe, 0x8c, 0x18, 0x97, 0x91, 0x80, 0x99, 0x81, 0x8c, 0x80, 0xd5, 0xd4, 0xaf, - 0xc5, 0x28, 0x12, 0x08, 0x94, 0x0e, 0x86, 0x40, - 0xe4, 0x8b, 0x41, 0x20, 0xad, 0x80, 0x89, 0x80, - 0xaa, 0x03, 0x82, 0xa8, 0x0d, 0x82, 0x9c, 0x81, - 0xb2, 0xef, 0x1b, 0x14, 0x82, 0x8c, 0x85, + 0xc5, 0x28, 0x12, 0x0a, 0x92, 0x0e, 0x88, 0x40, + 0xe2, 0x8b, 0x41, 0x1f, 0xae, 0x80, 0x89, 0x80, + 0xb1, 0x80, 0xd1, 0x80, 0xb2, 0xef, 0x22, 0x14, + 0x86, 0x88, 0x98, 0x36, 0x88, 0x82, 0x8c, 0x86, }; -static const uint8_t unicode_prop_Extended_Pictographic_table[152] = { +static const uint8_t unicode_prop_Extended_Pictographic_table[156] = { 0x40, 0xa8, 0x03, 0x80, 0x5f, 0x8c, 0x80, 0x8b, 0x80, 0x40, 0xd7, 0x80, 0x95, 0x80, 0xd9, 0x85, 0x8e, 0x81, 0x41, 0x6e, 0x81, 0x8b, 0x80, 0xde, @@ -4061,7 +4115,8 @@ static const uint8_t unicode_prop_Extended_Pictographic_table[152] = { 0x88, 0x41, 0xb1, 0x84, 0x41, 0x3d, 0x87, 0x41, 0x09, 0xaf, 0xff, 0xf3, 0x8b, 0xd4, 0xaa, 0x8b, 0x83, 0xb7, 0x87, 0x89, 0x85, 0xa7, 0x87, 0x9d, - 0xd1, 0x8b, 0xae, 0x80, 0x89, 0x80, 0x46, 0xb6, + 0xd1, 0x8b, 0xae, 0x80, 0x89, 0x80, 0x41, 0xb8, + 0x40, 0xff, 0x43, 0xfd, }; static const uint8_t unicode_prop_Default_Ignorable_Code_Point_table[51] = { @@ -4175,11 +4230,11 @@ static const char unicode_prop_name_table[] = "White_Space,space" "\0" "Bidi_Mirrored,Bidi_M" "\0" "Emoji" "\0" - "Emoji_Component" "\0" - "Emoji_Modifier" "\0" - "Emoji_Modifier_Base" "\0" - "Emoji_Presentation" "\0" - "Extended_Pictographic" "\0" + "Emoji_Component,EComp" "\0" + "Emoji_Modifier,EMod" "\0" + "Emoji_Modifier_Base,EBase" "\0" + "Emoji_Presentation,EPres" "\0" + "Extended_Pictographic,ExtPict" "\0" "Default_Ignorable_Code_Point,DI" "\0" "ID_Start,IDS" "\0" "Case_Ignorable,CI" "\0" diff --git a/quickjs-libc.c b/quickjs-libc.c @@ -224,17 +224,15 @@ static JSValue js_printf_internal(JSContext *ctx, case 'X': if (i >= argc) goto missing; + if (JS_ToInt64Ext(ctx, &int64_arg, argv[i++])) + goto fail; if (modsize > 0) { - if (JS_ToInt64(ctx, &int64_arg, argv[i++])) - goto fail; q[1] = q[-1]; q[-1] = q[0] = 'l'; q[2] = '\0'; dbuf_printf_fun(&dbuf, fmtbuf, (long long)int64_arg); } else { - if (JS_ToInt32(ctx, &int32_arg, argv[i++])) - goto fail; - dbuf_printf_fun(&dbuf, fmtbuf, int32_arg); + dbuf_printf_fun(&dbuf, fmtbuf, (int)int64_arg); } break; @@ -369,6 +367,27 @@ static JSValue js_loadScript(JSContext *ctx, JSValueConst this_val, return ret; } +/* load a file as a UTF-8 encoded string */ +static JSValue js_std_loadFile(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + uint8_t *buf; + const char *filename; + JSValue ret; + size_t buf_len; + + filename = JS_ToCString(ctx, argv[0]); + if (!filename) + return JS_EXCEPTION; + buf = js_load_file(ctx, &buf_len, filename); + JS_FreeCString(ctx, filename); + if (!buf) + return JS_NULL; + ret = JS_NewStringLen(ctx, (char *)buf, buf_len); + js_free(ctx, buf); + return ret; +} + typedef JSModuleDef *(JSInitModuleFunc)(JSContext *ctx, const char *module_name); @@ -633,30 +652,14 @@ static void js_std_file_finalizer(JSRuntime *rt, JSValue val) } } -static JSValue js_new_std_error(JSContext *ctx, int err) +static ssize_t js_get_errno(ssize_t ret) { - JSValue obj; - /* XXX: could add a specific Error prototype */ - obj = JS_NewError(ctx); - JS_DefinePropertyValueStr(ctx, obj, "message", - JS_NewString(ctx, strerror(err)), - JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); - JS_DefinePropertyValueStr(ctx, obj, "errno", - JS_NewInt32(ctx, err), - JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE); - return obj; -} - -static JSValue js_std_error_constructor(JSContext *ctx, JSValueConst new_target, - int argc, JSValueConst *argv) -{ - int err; - if (JS_ToInt32(ctx, &err, argv[0])) - return JS_EXCEPTION; - return js_new_std_error(ctx, err); + if (ret == -1) + ret = -errno; + return ret; } -static JSValue js_std_error_strerror(JSContext *ctx, JSValueConst this_val, +static JSValue js_std_strerror(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { int err; @@ -665,15 +668,6 @@ static JSValue js_std_error_strerror(JSContext *ctx, JSValueConst this_val, return JS_NewString(ctx, strerror(err)); } -static JSValue js_std_throw_errno(JSContext *ctx, int err) -{ - JSValue obj; - obj = js_new_std_error(ctx, err); - if (JS_IsException(obj)) - obj = JS_NULL; - return JS_Throw(ctx, obj); -} - static JSValue js_new_std_file(JSContext *ctx, FILE *f, BOOL close_in_finalizer, BOOL is_popen) @@ -695,12 +689,20 @@ static JSValue js_new_std_file(JSContext *ctx, FILE *f, return obj; } +static void js_set_error_object(JSContext *ctx, JSValue obj, int err) +{ + if (!JS_IsUndefined(obj)) { + JS_SetPropertyStr(ctx, obj, "errno", JS_NewInt32(ctx, err)); + } +} + static JSValue js_std_open(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { const char *filename, *mode = NULL; FILE *f; - + int err; + filename = JS_ToCString(ctx, argv[0]); if (!filename) goto fail; @@ -708,15 +710,21 @@ static JSValue js_std_open(JSContext *ctx, JSValueConst this_val, if (!mode) goto fail; if (mode[strspn(mode, "rwa+b")] != '\0') { - js_std_throw_errno(ctx, EINVAL); + JS_ThrowTypeError(ctx, "invalid file mode"); goto fail; } f = fopen(filename, mode); + if (!f) + err = errno; + else + err = 0; + if (argc >= 3) + js_set_error_object(ctx, argv[2], err); JS_FreeCString(ctx, filename); JS_FreeCString(ctx, mode); if (!f) - return js_std_throw_errno(ctx, errno); + return JS_NULL; return js_new_std_file(ctx, f, TRUE, FALSE); fail: JS_FreeCString(ctx, filename); @@ -729,7 +737,8 @@ static JSValue js_std_popen(JSContext *ctx, JSValueConst this_val, { const char *filename, *mode = NULL; FILE *f; - + int err; + filename = JS_ToCString(ctx, argv[0]); if (!filename) goto fail; @@ -737,15 +746,21 @@ static JSValue js_std_popen(JSContext *ctx, JSValueConst this_val, if (!mode) goto fail; if (mode[strspn(mode, "rw")] != '\0') { - js_std_throw_errno(ctx, EINVAL); + JS_ThrowTypeError(ctx, "invalid file mode"); goto fail; } f = popen(filename, mode); + if (!f) + err = errno; + else + err = 0; + if (argc >= 3) + js_set_error_object(ctx, argv[2], err); JS_FreeCString(ctx, filename); JS_FreeCString(ctx, mode); if (!f) - return js_std_throw_errno(ctx, errno); + return JS_NULL; return js_new_std_file(ctx, f, TRUE, TRUE); fail: JS_FreeCString(ctx, filename); @@ -758,7 +773,7 @@ static JSValue js_std_fdopen(JSContext *ctx, JSValueConst this_val, { const char *mode; FILE *f; - int fd; + int fd, err; if (JS_ToInt32(ctx, &fd, argv[0])) return JS_EXCEPTION; @@ -766,14 +781,20 @@ static JSValue js_std_fdopen(JSContext *ctx, JSValueConst this_val, if (!mode) goto fail; if (mode[strspn(mode, "rwa+")] != '\0') { - js_std_throw_errno(ctx, EINVAL); + JS_ThrowTypeError(ctx, "invalid file mode"); goto fail; } f = fdopen(fd, mode); + if (!f) + err = errno; + else + err = 0; + if (argc >= 3) + js_set_error_object(ctx, argv[2], err); JS_FreeCString(ctx, mode); if (!f) - return js_std_throw_errno(ctx, errno); + return JS_NULL; return js_new_std_file(ctx, f, TRUE, FALSE); fail: JS_FreeCString(ctx, mode); @@ -785,8 +806,10 @@ static JSValue js_std_tmpfile(JSContext *ctx, JSValueConst this_val, { FILE *f; f = tmpfile(); + if (argc >= 1) + js_set_error_object(ctx, argv[0], f ? 0 : errno); if (!f) - return js_std_throw_errno(ctx, errno); + return JS_NULL; return js_new_std_file(ctx, f, TRUE, FALSE); } @@ -808,7 +831,7 @@ static FILE *js_std_file_get(JSContext *ctx, JSValueConst obj) if (!s) return NULL; if (!s->f) { - js_std_throw_errno(ctx, EBADF); + JS_ThrowTypeError(ctx, "invalid file handle"); return NULL; } return s->f; @@ -843,17 +866,17 @@ static JSValue js_std_file_close(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { JSSTDFile *s = JS_GetOpaque2(ctx, this_val, js_std_file_class_id); + int err; if (!s) return JS_EXCEPTION; if (!s->f) - return js_std_throw_errno(ctx, EBADF); - /* XXX: could return exit code */ + return JS_ThrowTypeError(ctx, "invalid file handle"); if (s->is_popen) - pclose(s->f); + err = js_get_errno(pclose(s->f)); else - fclose(s->f); + err = js_get_errno(fclose(s->f)); s->f = NULL; - return JS_UNDEFINED; + return JS_NewInt32(ctx, err); } static JSValue js_std_file_printf(JSContext *ctx, JSValueConst this_val, @@ -876,7 +899,7 @@ static JSValue js_std_file_flush(JSContext *ctx, JSValueConst this_val, } static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val, - int argc, JSValueConst *argv) + int argc, JSValueConst *argv, int is_bigint) { FILE *f = js_std_file_get(ctx, this_val); int64_t pos; @@ -887,7 +910,10 @@ static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val, #else pos = ftell(f); #endif - return JS_NewInt64(ctx, pos); + if (is_bigint) + return JS_NewBigInt64(ctx, pos); + else + return JS_NewInt64(ctx, pos); } static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val, @@ -898,7 +924,7 @@ static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val, int whence, ret; if (!f) return JS_EXCEPTION; - if (JS_ToInt64(ctx, &pos, argv[0])) + if (JS_ToInt64Ext(ctx, &pos, argv[0])) return JS_EXCEPTION; if (JS_ToInt32(ctx, &whence, argv[1])) return JS_EXCEPTION; @@ -908,8 +934,8 @@ static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val, ret = fseek(f, pos, whence); #endif if (ret < 0) - return js_std_throw_errno(ctx, EBADF); - return JS_UNDEFINED; + ret = -errno; + return JS_NewInt32(ctx, ret); } static JSValue js_std_file_eof(JSContext *ctx, JSValueConst this_val, @@ -921,6 +947,25 @@ static JSValue js_std_file_eof(JSContext *ctx, JSValueConst this_val, return JS_NewBool(ctx, feof(f)); } +static JSValue js_std_file_error(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + return JS_NewBool(ctx, ferror(f)); +} + +static JSValue js_std_file_clearerr(JSContext *ctx, JSValueConst this_val, + int argc, JSValueConst *argv) +{ + FILE *f = js_std_file_get(ctx, this_val); + if (!f) + return JS_EXCEPTION; + clearerr(f); + return JS_UNDEFINED; +} + static JSValue js_std_file_fileno(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { @@ -1151,7 +1196,7 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, f = popen((char *)cmd_buf.buf, "r"); dbuf_free(&cmd_buf); if (!f) { - return js_std_throw_errno(ctx, errno); + return JS_ThrowTypeError(ctx, "could not start curl"); } js_std_dbuf_init(ctx, data_buf); @@ -1162,20 +1207,21 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, goto fail; /* get the HTTP status */ - if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, NULL) < 0) + if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, NULL) < 0) { + status = 0; goto bad_header; + } status = http_get_status(buf); if (!full_flag && !(status >= 200 && status <= 299)) { - js_std_throw_errno(ctx, ENOENT); - goto fail; + goto bad_header; } /* wait until there is an empty line */ for(;;) { if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, header_buf) < 0) { bad_header: - js_std_throw_errno(ctx, EINVAL); - goto fail; + response = JS_NULL; + goto done; } if (!strcmp(buf, "\r\n")) break; @@ -1191,11 +1237,6 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, break; dbuf_put(data_buf, (uint8_t *)buf, len); } - js_free(ctx, buf); - buf = NULL; - pclose(f); - f = NULL; - if (dbuf_error(data_buf)) goto fail; if (binary_flag) { @@ -1204,10 +1245,15 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, } else { response = JS_NewStringLen(ctx, (char *)data_buf->buf, data_buf->size); } - dbuf_free(data_buf); - data_buf = NULL; if (JS_IsException(response)) goto fail; + done: + js_free(ctx, buf); + buf = NULL; + pclose(f); + f = NULL; + dbuf_free(data_buf); + data_buf = NULL; if (full_flag) { ret_obj = JS_NewObject(ctx); @@ -1216,13 +1262,15 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, JS_DefinePropertyValueStr(ctx, ret_obj, "response", response, JS_PROP_C_W_E); - JS_DefinePropertyValueStr(ctx, ret_obj, "responseHeaders", - JS_NewStringLen(ctx, (char *)header_buf->buf, - header_buf->size), - JS_PROP_C_W_E); - JS_DefinePropertyValueStr(ctx, ret_obj, "status", - JS_NewInt32(ctx, status), - JS_PROP_C_W_E); + if (!JS_IsNull(response)) { + JS_DefinePropertyValueStr(ctx, ret_obj, "responseHeaders", + JS_NewStringLen(ctx, (char *)header_buf->buf, + header_buf->size), + JS_PROP_C_W_E); + JS_DefinePropertyValueStr(ctx, ret_obj, "status", + JS_NewInt32(ctx, status), + JS_PROP_C_W_E); + } } else { ret_obj = response; } @@ -1245,6 +1293,23 @@ static JSClassDef js_std_file_class = { .finalizer = js_std_file_finalizer, }; +static const JSCFunctionListEntry js_std_error_props[] = { + /* various errno values */ +#define DEF(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE ) + DEF(EINVAL), + DEF(EIO), + DEF(EACCES), + DEF(EEXIST), + DEF(ENOSPC), + DEF(ENOSYS), + DEF(EBUSY), + DEF(ENOENT), + DEF(EPERM), + DEF(EPIPE), + DEF(EBADF), +#undef DEF +}; + static const JSCFunctionListEntry js_std_funcs[] = { JS_CFUNC_DEF("exit", 1, js_std_exit ), JS_CFUNC_DEF("gc", 0, js_std_gc ), @@ -1252,7 +1317,9 @@ static const JSCFunctionListEntry js_std_funcs[] = { JS_CFUNC_DEF("loadScript", 1, js_loadScript ), JS_CFUNC_DEF("getenv", 1, js_std_getenv ), JS_CFUNC_DEF("urlGet", 1, js_std_urlGet ), - + JS_CFUNC_DEF("loadFile", 1, js_std_loadFile ), + JS_CFUNC_DEF("strerror", 1, js_std_strerror ), + /* FILE I/O */ JS_CFUNC_DEF("open", 2, js_std_open ), JS_CFUNC_DEF("popen", 2, js_std_popen ), @@ -1264,49 +1331,34 @@ static const JSCFunctionListEntry js_std_funcs[] = { JS_PROP_INT32_DEF("SEEK_SET", SEEK_SET, JS_PROP_CONFIGURABLE ), JS_PROP_INT32_DEF("SEEK_CUR", SEEK_CUR, JS_PROP_CONFIGURABLE ), JS_PROP_INT32_DEF("SEEK_END", SEEK_END, JS_PROP_CONFIGURABLE ), - + JS_OBJECT_DEF("Error", js_std_error_props, countof(js_std_error_props), JS_PROP_CONFIGURABLE), /* setenv, ... */ }; - -static const JSCFunctionListEntry js_std_error_funcs[] = { - JS_CFUNC_DEF("strerror", 1, js_std_error_strerror ), - /* various errno values */ -#define DEF(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE ) - DEF(EINVAL), - DEF(EIO), - DEF(EACCES), - DEF(EEXIST), - DEF(ENOSPC), - DEF(ENOSYS), - DEF(EBUSY), - DEF(ENOENT), - DEF(EPERM), - DEF(EPIPE), - DEF(EBADF), -#undef DEF -}; - + static const JSCFunctionListEntry js_std_file_proto_funcs[] = { JS_CFUNC_DEF("close", 0, js_std_file_close ), JS_CFUNC_MAGIC_DEF("puts", 1, js_std_file_puts, 1 ), JS_CFUNC_DEF("printf", 1, js_std_file_printf ), JS_CFUNC_DEF("flush", 0, js_std_file_flush ), - JS_CFUNC_DEF("tell", 0, js_std_file_tell ), + JS_CFUNC_MAGIC_DEF("tell", 0, js_std_file_tell, 0 ), + JS_CFUNC_MAGIC_DEF("tello", 0, js_std_file_tell, 1 ), JS_CFUNC_DEF("seek", 2, js_std_file_seek ), JS_CFUNC_DEF("eof", 0, js_std_file_eof ), JS_CFUNC_DEF("fileno", 0, js_std_file_fileno ), + JS_CFUNC_DEF("error", 0, js_std_file_error ), + JS_CFUNC_DEF("clearerr", 0, js_std_file_clearerr ), JS_CFUNC_MAGIC_DEF("read", 3, js_std_file_read_write, 0 ), JS_CFUNC_MAGIC_DEF("write", 3, js_std_file_read_write, 1 ), JS_CFUNC_DEF("getline", 0, js_std_file_getline ), JS_CFUNC_DEF("readAsString", 0, js_std_file_readAsString ), JS_CFUNC_DEF("getByte", 0, js_std_file_getByte ), JS_CFUNC_DEF("putByte", 1, js_std_file_putByte ), - /* setvbuf, ferror, clearerr, ... */ + /* setvbuf, ... */ }; static int js_std_init(JSContext *ctx, JSModuleDef *m) { - JSValue proto, obj; + JSValue proto; /* FILE class */ /* the class ID is created once */ @@ -1323,13 +1375,6 @@ static int js_std_init(JSContext *ctx, JSModuleDef *m) JS_SetModuleExport(ctx, m, "in", js_new_std_file(ctx, stdin, FALSE, FALSE)); JS_SetModuleExport(ctx, m, "out", js_new_std_file(ctx, stdout, FALSE, FALSE)); JS_SetModuleExport(ctx, m, "err", js_new_std_file(ctx, stderr, FALSE, FALSE)); - - obj = JS_NewCFunction2(ctx, js_std_error_constructor, - "Error", 1, JS_CFUNC_constructor, 0); - JS_SetPropertyFunctionList(ctx, obj, js_std_error_funcs, - countof(js_std_error_funcs)); - JS_SetModuleExport(ctx, m, "Error", obj); - return 0; } @@ -1343,20 +1388,12 @@ JSModuleDef *js_init_module_std(JSContext *ctx, const char *module_name) JS_AddModuleExport(ctx, m, "in"); JS_AddModuleExport(ctx, m, "out"); JS_AddModuleExport(ctx, m, "err"); - JS_AddModuleExport(ctx, m, "Error"); return m; } /**********************************************************/ /* 'os' object */ -static JSValue js_os_return(JSContext *ctx, ssize_t ret) -{ - if (ret < 0) - ret = -errno; - return JS_NewInt64(ctx, ret); -} - static JSValue js_os_open(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { @@ -1382,9 +1419,9 @@ static JSValue js_os_open(JSContext *ctx, JSValueConst this_val, if (!(flags & O_TEXT)) flags |= O_BINARY; #endif - ret = open(filename, flags, mode); + ret = js_get_errno(open(filename, flags, mode)); JS_FreeCString(ctx, filename); - return js_os_return(ctx, ret); + return JS_NewInt32(ctx, ret); } static JSValue js_os_close(JSContext *ctx, JSValueConst this_val, @@ -1393,24 +1430,31 @@ static JSValue js_os_close(JSContext *ctx, JSValueConst this_val, int fd, ret; if (JS_ToInt32(ctx, &fd, argv[0])) return JS_EXCEPTION; - ret = close(fd); - return js_os_return(ctx, ret); + ret = js_get_errno(close(fd)); + return JS_NewInt32(ctx, ret); } static JSValue js_os_seek(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv) { - int fd, whence, ret; - int64_t pos; + int fd, whence; + int64_t pos, ret; + BOOL is_bigint; if (JS_ToInt32(ctx, &fd, argv[0])) return JS_EXCEPTION; - if (JS_ToInt64(ctx, &pos, argv[1])) + is_bigint = JS_IsBigInt(ctx, argv[1]); + if (JS_ToInt64Ext(ctx, &pos, argv[1])) return JS_EXCEPTION; if (JS_ToInt32(ctx, &whence, argv[2])) return JS_EXCEPTION; ret = lseek(fd, pos, whence); - return js_os_return(ctx, ret); + if (ret == -1) + ret = -errno; + if (is_bigint) + return JS_NewBigInt64(ctx, ret); + else + return JS_NewInt64(ctx, ret); } static JSValue js_os_read_write(JSContext *ctx, JSValueConst this_val, @@ -1434,10 +1478,10 @@ static JSValue js_os_read_write(JSContext *ctx, JSValueConst this_val, if (pos + len > size) return JS_ThrowRangeError(ctx, "read/write array buffer overflow"); if (magic) - ret = write(fd, buf + pos, len); + ret = js_get_errno(write(fd, buf + pos, len)); else - ret = read(fd, buf + pos, len); - return js_os_return(ctx, ret); + ret = js_get_errno(read(fd, buf + pos, len)); + return JS_NewInt64(ctx, ret); } static JSValue js_os_isatty(JSContext *ctx, JSValueConst this_val, @@ -1555,9 +1599,9 @@ static JSValue js_os_remove(JSContext *ctx, JSValueConst this_val, filename = JS_ToCString(ctx, argv[0]); if (!filename) return JS_EXCEPTION; - ret = remove(filename); + ret = js_get_errno(remove(filename)); JS_FreeCString(ctx, filename); - return js_os_return(ctx, ret); + return JS_NewInt32(ctx, ret); } static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val, @@ -1574,10 +1618,10 @@ static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val, JS_FreeCString(ctx, oldpath); return JS_EXCEPTION; } - ret = rename(oldpath, newpath); + ret = js_get_errno(rename(oldpath, newpath)); JS_FreeCString(ctx, oldpath); JS_FreeCString(ctx, newpath); - return js_os_return(ctx, ret); + return JS_NewInt32(ctx, ret); } static JSOSRWHandler *find_rh(int fd) @@ -2018,7 +2062,7 @@ static JSValue js_os_getcwd(JSContext *ctx, JSValueConst this_val, if (!getcwd(buf, sizeof(buf))) { buf[0] = '\0'; - err = -errno; + err = errno; } else { err = 0; } @@ -2036,9 +2080,9 @@ static JSValue js_os_chdir(JSContext *ctx, JSValueConst this_val, target = JS_ToCString(ctx, argv[0]); if (!target) return JS_EXCEPTION; - err = chdir(target); + err = js_get_errno(chdir(target)); JS_FreeCString(ctx, target); - return js_os_return(ctx, err); + return JS_NewInt32(ctx, err); } /* return [path, errorcode] */ @@ -2056,7 +2100,7 @@ static JSValue js_os_realpath(JSContext *ctx, JSValueConst this_val, JS_FreeCString(ctx, path); if (!res) { buf[0] = '\0'; - err = -errno; + err = errno; } else { err = 0; } @@ -2078,9 +2122,9 @@ static JSValue js_os_mkdir(JSContext *ctx, JSValueConst this_val, path = JS_ToCString(ctx, argv[0]); if (!path) return JS_EXCEPTION; - ret = mkdir(path, mode); + ret = js_get_errno(mkdir(path, mode)); JS_FreeCString(ctx, path); - return js_os_return(ctx, ret); + return JS_NewInt32(ctx, ret); } static int64_t timespec_to_ms(const struct timespec *tv) @@ -2106,7 +2150,7 @@ static JSValue js_os_stat(JSContext *ctx, JSValueConst this_val, res = stat(path, &st); JS_FreeCString(ctx, path); if (res < 0) { - err = -errno; + err = errno; obj = JS_NULL; } else { err = 0; @@ -2179,10 +2223,10 @@ static JSValue js_os_symlink(JSContext *ctx, JSValueConst this_val, JS_FreeCString(ctx, target); return JS_EXCEPTION; } - err = symlink(target, linkpath); + err = js_get_errno(symlink(target, linkpath)); JS_FreeCString(ctx, target); JS_FreeCString(ctx, linkpath); - return js_os_return(ctx, err); + return JS_NewInt32(ctx, err); } /* return [path, errorcode] */ @@ -2198,14 +2242,14 @@ static JSValue js_os_readlink(JSContext *ctx, JSValueConst this_val, if (!path) return JS_EXCEPTION; res = readlink(path, buf, sizeof(buf) - 1); - JS_FreeCString(ctx, path); if (res < 0) { buf[0] = '\0'; - err = -errno; + err = errno; } else { buf[res] = '\0'; err = 0; } + JS_FreeCString(ctx, path); return make_string_error(ctx, buf, err); } @@ -2229,18 +2273,19 @@ static JSValue js_os_readdir(JSContext *ctx, JSValueConst this_val, return JS_EXCEPTION; } f = opendir(path); + if (!f) + err = errno; + else + err = 0; JS_FreeCString(ctx, path); - err = 0; - if (!f) { - err = -errno; + if (!f) goto done; - } len = 0; for(;;) { errno = 0; d = readdir(f); if (!d) { - err = -errno; + err = errno; break; } JS_DefinePropertyValueUint32(ctx, obj, len++, @@ -2275,9 +2320,9 @@ static JSValue js_os_utimes(JSContext *ctx, JSValueConst this_val, return JS_EXCEPTION; ms_to_timeval(&times[0], atime); ms_to_timeval(&times[1], mtime); - ret = utimes(path, times); + ret = js_get_errno(utimes(path, times)); JS_FreeCString(ctx, path); - return js_os_return(ctx, ret); + return JS_NewInt32(ctx, ret); } /* exec(args[, options]) -> exitcode */ @@ -2486,8 +2531,8 @@ static JSValue js_os_kill(JSContext *ctx, JSValueConst this_val, return JS_EXCEPTION; if (JS_ToInt32(ctx, &sig, argv[1])) return JS_EXCEPTION; - ret = kill(pid, sig); - return js_os_return(ctx, ret); + ret = js_get_errno(kill(pid, sig)); + return JS_NewInt32(ctx, ret); } /* sleep(delay_ms) */ @@ -2502,8 +2547,8 @@ static JSValue js_os_sleep(JSContext *ctx, JSValueConst this_val, return JS_EXCEPTION; ts.tv_sec = delay / 1000; ts.tv_nsec = (delay % 1000) * 1000000; - ret = nanosleep(&ts, NULL); - return js_os_return(ctx, ret); + ret = js_get_errno(nanosleep(&ts, NULL)); + return JS_NewInt32(ctx, ret); } /* dup(fd) */ @@ -2514,8 +2559,8 @@ static JSValue js_os_dup(JSContext *ctx, JSValueConst this_val, if (JS_ToInt32(ctx, &fd, argv[0])) return JS_EXCEPTION; - ret = dup(fd); - return js_os_return(ctx, ret); + ret = js_get_errno(dup(fd)); + return JS_NewInt32(ctx, ret); } /* dup2(fd) */ @@ -2528,8 +2573,8 @@ static JSValue js_os_dup2(JSContext *ctx, JSValueConst this_val, return JS_EXCEPTION; if (JS_ToInt32(ctx, &fd2, argv[1])) return JS_EXCEPTION; - ret = dup2(fd, fd2); - return js_os_return(ctx, ret); + ret = js_get_errno(dup2(fd, fd2)); + return JS_NewInt32(ctx, ret); } #endif /* !_WIN32 */ @@ -2725,23 +2770,30 @@ void js_std_free_handlers(JSRuntime *rt) } } -static void js_std_dump_error1(JSContext *ctx, JSValueConst exception_val, - BOOL is_throw) +static void js_dump_obj(JSContext *ctx, FILE *f, JSValueConst val) +{ + const char *str; + + str = JS_ToCString(ctx, val); + if (str) { + fprintf(f, "%s\n", str); + JS_FreeCString(ctx, str); + } else { + fprintf(f, "[exception]\n"); + } +} + +static void js_std_dump_error1(JSContext *ctx, JSValueConst exception_val) { JSValue val; - const char *stack; BOOL is_error; is_error = JS_IsError(ctx, exception_val); - if (is_throw && !is_error) - printf("Throw: "); - js_print(ctx, JS_NULL, 1, (JSValueConst *)&exception_val); + js_dump_obj(ctx, stderr, exception_val); if (is_error) { val = JS_GetPropertyStr(ctx, exception_val, "stack"); if (!JS_IsUndefined(val)) { - stack = JS_ToCString(ctx, val); - printf("%s\n", stack); - JS_FreeCString(ctx, stack); + js_dump_obj(ctx, stderr, val); } JS_FreeValue(ctx, val); } @@ -2752,7 +2804,7 @@ void js_std_dump_error(JSContext *ctx) JSValue exception_val; exception_val = JS_GetException(ctx); - js_std_dump_error1(ctx, exception_val, TRUE); + js_std_dump_error1(ctx, exception_val); JS_FreeValue(ctx, exception_val); } @@ -2761,8 +2813,8 @@ void js_std_promise_rejection_tracker(JSContext *ctx, JSValueConst promise, BOOL is_handled, void *opaque) { if (!is_handled) { - printf("Possibly unhandled promise rejection: "); - js_std_dump_error1(ctx, reason, FALSE); + fprintf(stderr, "Possibly unhandled promise rejection: "); + js_std_dump_error1(ctx, reason); } } diff --git a/quickjs-opcode.h b/quickjs-opcode.h @@ -119,7 +119,6 @@ DEF( eval, 5, 1, 1, npop_u16) /* func args... -> ret_val */ DEF( apply_eval, 3, 2, 1, u16) /* func array -> ret_eval */ DEF( regexp, 1, 2, 1, none) /* create a RegExp object from the pattern and a bytecode string */ -DEF( get_super_ctor, 1, 1, 1, none) DEF( get_super, 1, 1, 1, none) DEF( import, 1, 1, 1, none) /* dynamic module import */ diff --git a/quickjs.c b/quickjs.c @@ -284,6 +284,7 @@ struct JSRuntime { JSNumericOperations bigdecimal_ops; uint32_t operator_count; #endif + void *user_opaque; }; struct JSClass { @@ -1537,6 +1538,16 @@ JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque) return NULL; } +void *JS_GetRuntimeOpaque(JSRuntime *rt) +{ + return rt->user_opaque; +} + +void JS_SetRuntimeOpaque(JSRuntime *rt, void *opaque) +{ + rt->user_opaque = opaque; +} + /* default memory allocation functions with memory limitation */ static inline size_t js_def_malloc_usable_size(void *ptr) { @@ -2198,26 +2209,6 @@ static inline BOOL is_math_mode(JSContext *ctx) } #endif -JSValue JS_NewInt64(JSContext *ctx, int64_t v) -{ - if (v == (int32_t)v) { - return JS_NewInt32(ctx, v); - } else { - return __JS_NewFloat64(ctx, (double)v); - } -} - -static force_inline JSValue JS_NewUint32(JSContext *ctx, uint32_t val) -{ - JSValue v; - if (val <= 0x7fffffff) { - v = JS_MKVAL(JS_TAG_INT, val); - } else { - v = __JS_NewFloat64(ctx, val); - } - return v; -} - /* JSAtom support */ #define JS_ATOM_TAG_INT (1U << 31) @@ -9794,6 +9785,8 @@ static JSValue js_atof(JSContext *ctx, const char *str, const char **pp, if (*p == '.' && (p > p_start || to_digit((uint8_t)p[1]) < radix)) { is_float = TRUE; p++; + if (*p == sep) + goto fail; while (to_digit((uint8_t)*p) < radix || (*p == sep && to_digit((uint8_t)p[1]) < radix)) p++; @@ -10129,7 +10122,6 @@ static __maybe_unused JSValue JS_ToIntegerFree(JSContext *ctx, JSValue val) ret = JS_NewInt32(ctx, 0); } else { /* convert -0 to +0 */ - /* XXX: should not be done here ? */ d = trunc(d) + 0.0; ret = JS_NewFloat64(ctx, d); } @@ -10385,6 +10377,14 @@ int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val) return JS_ToInt64Free(ctx, pres, JS_DupValue(ctx, val)); } +int JS_ToInt64Ext(JSContext *ctx, int64_t *pres, JSValueConst val) +{ + if (JS_IsBigInt(ctx, val)) + return JS_ToBigInt64(ctx, pres, val); + else + return JS_ToInt64(ctx, pres, val); +} + /* return (<0, 0) in case of exception */ static int JS_ToInt32Free(JSContext *ctx, int32_t *pres, JSValue val) { @@ -11840,7 +11840,8 @@ static JSValue JS_CompactBigInt(JSContext *ctx, JSValue val) } /* must be kept in sync with JSOverloadableOperatorEnum */ -static const char *js_overloadable_operator_names[JS_OVOP_COUNT] = { +/* XXX: use atoms ? */ +static const char js_overloadable_operator_names[JS_OVOP_COUNT][4] = { "+", "-", "*", @@ -12894,7 +12895,7 @@ static no_inline __exception int js_binary_arith_slow(JSContext *ctx, JSValue *s handle_bigint: if (ctx->rt->bigint_ops.binary_arith(ctx, op, sp - 2, op1, op2)) goto exception; - } else if (tag1 == JS_TAG_FLOAT64 || tag2 == JS_TAG_FLOAT64) { + } else { double dr; /* float64 result */ if (JS_ToFloat64Free(ctx, &d1, op1)) { @@ -13031,7 +13032,11 @@ static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) { if (ctx->rt->bigfloat_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2)) goto exception; - } else if (tag1 == JS_TAG_FLOAT64 || tag2 == JS_TAG_FLOAT64) { + } else if (tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) { + handle_bigint: + if (ctx->rt->bigint_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2)) + goto exception; + } else { double d1, d2; /* float64 result */ if (JS_ToFloat64Free(ctx, &d1, op1)) { @@ -13040,10 +13045,9 @@ static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) } if (JS_ToFloat64Free(ctx, &d2, op2)) goto exception; + if (is_math_mode(ctx) && is_safe_integer(d1) && is_safe_integer(d2)) + goto handle_bigint; sp[-2] = __JS_NewFloat64(ctx, d1 + d2); - } else { - if (ctx->rt->bigint_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2)) - goto exception; } return 0; exception: @@ -13642,6 +13646,28 @@ static no_inline int js_mul_pow10(JSContext *ctx, JSValue *sp) #else /* !CONFIG_BIGNUM */ +static JSValue JS_ThrowUnsupportedBigint(JSContext *ctx) +{ + return JS_ThrowTypeError(ctx, "bigint is not supported"); +} + +JSValue JS_NewBigInt64(JSContext *ctx, int64_t v) +{ + return JS_ThrowUnsupportedBigint(ctx); +} + +JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v) +{ + return JS_ThrowUnsupportedBigint(ctx); +} + +int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val) +{ + JS_ThrowUnsupportedBigint(ctx); + *pres = 0; + return -1; +} + static no_inline __exception int js_unary_arith_slow(JSContext *ctx, JSValue *sp, OPCodeEnum op) @@ -16280,22 +16306,6 @@ static JSValue JS_CallInternal(JSContext *ctx, JSValueConst func_obj, } BREAK; - CASE(OP_get_super_ctor): - { - JSValue proto; - proto = JS_DupValue(ctx, JS_GetPrototype(ctx, sp[-1])); - if (JS_IsException(proto)) - goto exception; - if (!JS_IsConstructor(ctx, proto)) { - JS_FreeValue(ctx, proto); - JS_ThrowTypeError(ctx, "not a constructor"); - goto exception; - } - JS_FreeValue(ctx, sp[-1]); - sp[-1] = proto; - } - BREAK; - CASE(OP_get_super): { JSValue proto; @@ -23821,7 +23831,7 @@ static __exception int js_parse_postfix_expr(JSParseState *s, BOOL accept_lparen emit_atom(s, JS_ATOM_this_active_func); emit_u16(s, 0); - emit_op(s, OP_get_super_ctor); + emit_op(s, OP_get_super); emit_op(s, OP_scope_get_var); emit_atom(s, JS_ATOM_new_target); @@ -31993,10 +32003,10 @@ static __exception int js_parse_function_decl2(JSParseState *s, js_parse_expect(s, ')'); goto fail; } - if (s->token.val == ',') { - if (next_token(s)) - goto fail; - } + if (s->token.val == ')') + break; + if (js_parse_expect(s, ',')) + goto fail; } if ((func_type == JS_PARSE_FUNC_GETTER && fd->arg_count != 0) || (func_type == JS_PARSE_FUNC_SETTER && fd->arg_count != 1)) { @@ -34381,6 +34391,10 @@ int JS_SetModuleExportList(JSContext *ctx, JSModuleDef *m, case JS_DEF_PROP_DOUBLE: val = __JS_NewFloat64(ctx, e->u.f64); break; + case JS_DEF_OBJECT: + val = JS_NewObject(ctx); + JS_SetPropertyFunctionList(ctx, val, e->u.prop_list.tab, e->u.prop_list.len); + break; default: abort(); } @@ -37357,7 +37371,8 @@ static int64_t JS_FlattenIntoArray(JSContext *ctx, JSValueConst target, JS_ThrowTypeError(ctx, "Array too long"); goto fail; } - if (JS_SetPropertyInt64(ctx, target, targetIndex, element) < 0) + if (JS_DefinePropertyValueInt64(ctx, target, targetIndex, element, + JS_PROP_C_W_E | JS_PROP_THROW) < 0) return -1; targetIndex++; } @@ -37754,7 +37769,6 @@ static const JSCFunctionListEntry js_array_proto_funcs[] = { JS_CFUNC_DEF("copyWithin", 2, js_array_copyWithin ), JS_CFUNC_MAGIC_DEF("flatMap", 1, js_array_flatten, 1 ), JS_CFUNC_MAGIC_DEF("flat", 0, js_array_flatten, 0 ), - JS_CFUNC_MAGIC_DEF("flatten", 0, js_array_flatten, 0 ), JS_CFUNC_MAGIC_DEF("values", 0, js_create_array_iterator, JS_ITERATOR_KIND_VALUE ), JS_ALIAS_DEF("[Symbol.iterator]", "values" ), JS_CFUNC_MAGIC_DEF("keys", 0, js_create_array_iterator, JS_ITERATOR_KIND_KEY ), @@ -39918,14 +39932,36 @@ static JSValue js_math_hypot(JSContext *ctx, JSValueConst this_val, if (JS_ToFloat64(ctx, &b, argv[1])) return JS_EXCEPTION; r = hypot(a, b); - } else { + } else if (argc == 0) { r = 0; + } else { + double *tab, a_max; + tab = js_malloc(ctx, sizeof(tab[0]) * argc); + if (!tab) + return JS_EXCEPTION; + /* avoid overflow by taking the maximum */ + a_max = 0; for(i = 0; i < argc; i++) { - if (JS_ToFloat64(ctx, &a, argv[i])) + if (JS_ToFloat64(ctx, &a, argv[i])) { + js_free(ctx, tab); return JS_EXCEPTION; - r += a; + } + a = fabs(a); + tab[i] = a; + if (a > a_max) + a_max = a; + } + if (a_max == 0 || !isfinite(a_max)) { + r = a_max; + } else { + r = 0; + for(i = 0; i < argc; i++) { + a = tab[i] / a_max; + r += a * a; + } + r = a_max * sqrt(r); } - r = sqrt(r); + js_free(ctx, tab); } return JS_NewFloat64(ctx, r); } @@ -45234,10 +45270,10 @@ static JSValue js_promise_then_finally_func(JSContext *ctx, JSValueConst this_va } JS_FreeValue(ctx, ret); if (magic == 0) { - then_func = JS_NewCFunctionData(ctx, js_promise_finally_value_thunk, 1, + then_func = JS_NewCFunctionData(ctx, js_promise_finally_value_thunk, 0, 0, 1, argv); } else { - then_func = JS_NewCFunctionData(ctx, js_promise_finally_thrower, 1, + then_func = JS_NewCFunctionData(ctx, js_promise_finally_thrower, 0, 0, 1, argv); } if (JS_IsException(then_func)) { @@ -50037,7 +50073,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv, int special) { JSObject *p; - int len, tag, is_int, is_big, k, stop, inc, res = -1; + int len, tag, is_int, is_bigint, k, stop, inc, res = -1; int64_t v64; double d; float f; @@ -50080,7 +50116,11 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, inc = 1; } - is_big = 0; + if (validate_typed_array(ctx, this_val)) + goto exception; + p = JS_VALUE_GET_OBJ(this_val); + + is_bigint = 0; is_int = 0; /* avoid warning */ v64 = 0; /* avoid warning */ tag = JS_VALUE_GET_NORM_TAG(argv[0]); @@ -50095,10 +50135,20 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, is_int = (v64 == d); } else #ifdef CONFIG_BIGNUM - if (tag == JS_TAG_BIG_INT || tag == JS_TAG_BIG_FLOAT) { - /* will a generic loop for bigint and bigfloat */ - /* XXX: should use the generic loop in math_mode? */ - is_big = 1; + if (tag == JS_TAG_BIG_INT) { + JSBigFloat *p1 = JS_VALUE_GET_PTR(argv[0]); + + if (p->class_id == JS_CLASS_BIG_INT64_ARRAY) { + if (bf_get_int64(&v64, &p1->num, 0) != 0) + goto done; + } else if (p->class_id == JS_CLASS_BIG_UINT64_ARRAY) { + if (bf_get_uint64((uint64_t *)&v64, &p1->num) != 0) + goto done; + } else { + goto done; + } + d = 0; + is_bigint = 1; } else #endif { @@ -50172,7 +50222,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, } break; case JS_CLASS_FLOAT32_ARRAY: - if (is_big) + if (is_bigint) break; if (isnan(d)) { const float *pv = p->u.array.u.float_ptr; @@ -50196,7 +50246,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, } break; case JS_CLASS_FLOAT64_ARRAY: - if (is_big) + if (is_bigint) break; if (isnan(d)) { const double *pv = p->u.array.u.double_ptr; @@ -50221,20 +50271,22 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, break; #ifdef CONFIG_BIGNUM case JS_CLASS_BIG_INT64_ARRAY: + if (is_bigint || (is_math_mode(ctx) && is_int && + v64 >= -MAX_SAFE_INTEGER && + v64 <= MAX_SAFE_INTEGER)) { + goto scan64; + } + break; case JS_CLASS_BIG_UINT64_ARRAY: - if (is_big || is_strict_mode(ctx)) { - /* generic loop for bignums, argv[0] is a bignum != NaN */ - /* XXX: optimize with explicit values */ + if (is_bigint || (is_math_mode(ctx) && is_int && + v64 >= 0 && v64 <= MAX_SAFE_INTEGER)) { + const uint64_t *pv; + uint64_t v; + scan64: + pv = p->u.array.u.uint64_ptr; + v = v64; for (; k != stop; k += inc) { - JSValue v = JS_GetPropertyUint32(ctx, this_val, k); - int ret; - if (JS_IsException(v)) - goto exception; - ret = js_same_value_zero(ctx, v, argv[0]); - JS_FreeValue(ctx, v); - if (ret) { - if (ret < 0) - goto exception; + if (pv[k] == v) { res = k; break; } diff --git a/quickjs.h b/quickjs.h @@ -335,6 +335,8 @@ void JS_SetMemoryLimit(JSRuntime *rt, size_t limit); void JS_SetGCThreshold(JSRuntime *rt, size_t gc_threshold); JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque); void JS_FreeRuntime(JSRuntime *rt); +void *JS_GetRuntimeOpaque(JSRuntime *rt); +void JS_SetRuntimeOpaque(JSRuntime *rt, void *opaque); typedef void JS_MarkFunc(JSRuntime *rt, JSGCObjectHeader *gp); void JS_MarkValue(JSRuntime *rt, JSValueConst val, JS_MarkFunc *mark_func); void JS_RunGC(JSRuntime *rt); @@ -508,7 +510,28 @@ static js_force_inline JSValue JS_NewCatchOffset(JSContext *ctx, int32_t val) return JS_MKVAL(JS_TAG_CATCH_OFFSET, val); } -JSValue JS_NewInt64(JSContext *ctx, int64_t v); +static js_force_inline JSValue JS_NewInt64(JSContext *ctx, int64_t val) +{ + JSValue v; + if (val == (int32_t)val) { + v = JS_NewInt32(ctx, val); + } else { + v = __JS_NewFloat64(ctx, val); + } + return v; +} + +static js_force_inline JSValue JS_NewUint32(JSContext *ctx, uint32_t val) +{ + JSValue v; + if (val <= 0x7fffffff) { + v = JS_NewInt32(ctx, val); + } else { + v = __JS_NewFloat64(ctx, val); + } + return v; +} + JSValue JS_NewBigInt64(JSContext *ctx, int64_t v); JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v); @@ -657,7 +680,10 @@ static int inline JS_ToUint32(JSContext *ctx, uint32_t *pres, JSValueConst val) int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val); int JS_ToIndex(JSContext *ctx, uint64_t *plen, JSValueConst val); int JS_ToFloat64(JSContext *ctx, double *pres, JSValueConst val); +/* return an exception if 'val' is a Number */ int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val); +/* same as JS_ToInt64() but allow BigInt */ +int JS_ToInt64Ext(JSContext *ctx, int64_t *pres, JSValueConst val); JSValue JS_NewStringLen(JSContext *ctx, const char *str1, size_t len1); JSValue JS_NewString(JSContext *ctx, const char *str); diff --git a/release.sh b/release.sh @@ -50,21 +50,30 @@ fi if [ "$binary" = "yes" ] ; then +make -j4 qjs run-test262 +make -j4 CONFIG_M32=y qjs32 run-test262-32 +strip qjs run-test262 qjs32 run-test262-32 + d="quickjs-linux-x86_64-${version}" -name="quickjs-linux-x86_64-${version}" outdir="/tmp/${d}" rm -rf $outdir mkdir -p $outdir -files="qjs run-test262" +cp qjs run-test262 $outdir + +( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . ) + +d="quickjs-linux-i686-${version}" +outdir="/tmp/${d}" -make -j4 $files +rm -rf $outdir +mkdir -p $outdir -strip $files -cp $files $outdir +cp qjs32 $outdir/qjs +cp run-test262-32 $outdir/run-test262 -( cd /tmp/$d && rm -f ../${name}.zip && zip -r ../${name}.zip . ) +( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . ) fi diff --git a/run-test262.c b/run-test262.c @@ -385,8 +385,11 @@ static JSValue js_print(JSContext *ctx, JSValueConst this_val, str = JS_ToCString(ctx, argv[i]); if (!str) return JS_EXCEPTION; - if (!strcmp(str, "Test262:AsyncTestComplete")) + if (!strcmp(str, "Test262:AsyncTestComplete")) { async_done++; + } else if (strstart(str, "Test262:AsyncTestFailure", NULL)) { + async_done = 2; /* force an error */ + } fputs(str, outfile); JS_FreeCString(ctx, str); } diff --git a/test262.conf b/test262.conf @@ -87,6 +87,7 @@ destructuring-binding dynamic-import export-star-as-namespace-from-module FinalizationGroup=skip +FinalizationRegistry=skip Float32Array Float64Array for-in-order diff --git a/test262_errors.txt b/test262_errors.txt @@ -1,17 +1,22 @@ test262/test/language/expressions/arrow-function/eval-var-scope-syntax-err.js:47: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all +test262/test/language/expressions/async-arrow-function/eval-var-scope-syntax-err.js:49: TypeError: $DONE() not called +test262/test/language/expressions/async-function/named-eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called +test262/test/language/expressions/async-function/nameless-eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called test262/test/language/expressions/async-generator/eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all test262/test/language/expressions/async-generator/named-eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all -test262/test/language/expressions/class/super-evaluation-order.js:26: Test262Error: via ArgumentListEvaluation Expected SameValue(«0», «123») to be true -test262/test/language/expressions/class/super-evaluation-order.js:26: strict mode: Test262Error: via ArgumentListEvaluation Expected SameValue(«0», «123») to be true test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: TypeError: $DONE() not called test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: strict mode: TypeError: $DONE() not called test262/test/language/expressions/function/eval-var-scope-syntax-err.js:48: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all test262/test/language/expressions/generators/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all test262/test/language/expressions/object/method-definition/async-gen-meth-eval-var-scope-syntax-err.js:32: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all +test262/test/language/expressions/object/method-definition/async-meth-eval-var-scope-syntax-err.js:36: TypeError: $DONE() not called test262/test/language/expressions/object/method-definition/gen-meth-eval-var-scope-syntax-err.js:54: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all test262/test/language/expressions/object/method-definition/meth-eval-var-scope-syntax-err.js:50: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:21: TypeError: value has no property test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:15: strict mode: TypeError: value has no property +test262/test/language/statements/async-function/eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called test262/test/language/statements/async-generator/eval-var-scope-syntax-err.js:28: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all +test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js:81: TypeError: $DONE() not called +test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js:81: strict mode: TypeError: $DONE() not called test262/test/language/statements/function/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all test262/test/language/statements/generators/eval-var-scope-syntax-err.js:49: Test262Error: Expected a SyntaxError to be thrown but no exception was thrown at all diff --git a/tests/microbench.js b/tests/microbench.js @@ -917,11 +917,9 @@ function load_result(filename) var f, str, res; if (typeof std === "undefined") return null; - try { - f = std.open(filename, "r"); - } catch(e) { + f = std.open(filename, "r"); + if (!f) return null; - } str = f.readAsString(); res = JSON.parse(str); f.close(); diff --git a/tests/test_builtin.js b/tests/test_builtin.js @@ -501,6 +501,10 @@ function test_regexp() a = eval("/\0a/"); assert(a.toString(), "/\0a/"); assert(a.exec("\0a")[0], "\0a"); + + assert(/{1a}/.toString(), "/{1a}/"); + a = /a{1+/.exec("a{11"); + assert(a, ["a{11"] ); } function test_symbol() diff --git a/tests/test_std.js b/tests/test_std.js @@ -106,6 +106,9 @@ function test_popen() f.puts(content); f.close(); + /* test loadFile */ + assert(std.loadFile(fname), content); + /* execute the 'cat' shell command */ f = std.popen("cat " + fname, "r"); str = f.readAsString(); @@ -142,13 +145,19 @@ function test_os() buf[i] = i; assert(os.write(fd, buf.buffer, 0, buf.length) === buf.length); - assert(os.seek(fd, 0, os.SEEK_SET) === 0); + assert(os.seek(fd, 0, std.SEEK_SET) === 0); buf2 = new Uint8Array(buf.length); assert(os.read(fd, buf2.buffer, 0, buf2.length) === buf2.length); for(i = 0; i < buf.length; i++) assert(buf[i] == buf2[i]); + if (typeof BigInt !== "undefined") { + assert(os.seek(fd, BigInt(6), std.SEEK_SET), BigInt(6)); + assert(os.read(fd, buf2.buffer, 0, 1) === 1); + assert(buf[6] == buf2[0]); + } + assert(os.close(fd) === 0); [files, err] = os.readdir(fdir); diff --git a/unicode_download.sh b/unicode_download.sh @@ -1,8 +1,8 @@ #!/bin/sh set -e -url="ftp://ftp.unicode.org/Public/12.1.0/ucd" -emoji_url="ftp://ftp.unicode.org/Public/emoji/12.0/emoji-data.txt" +url="ftp://ftp.unicode.org/Public/13.0.0/ucd" +emoji_url="${url}/emoji/emoji-data.txt" files="CaseFolding.txt DerivedNormalizationProps.txt PropList.txt \ SpecialCasing.txt CompositionExclusions.txt ScriptExtensions.txt \ @@ -11,9 +11,9 @@ PropertyValueAliases.txt" mkdir -p unicode -for f in $files; do - g="${url}/${f}" - wget $g -O unicode/$f -done +#for f in $files; do +# g="${url}/${f}" +# wget $g -O unicode/$f +#done wget $emoji_url -O unicode/emoji-data.txt diff --git a/unicode_gen_def.h b/unicode_gen_def.h @@ -66,6 +66,7 @@ DEF(Caucasian_Albanian, "Aghb") DEF(Chakma, "Cakm") DEF(Cham, "Cham") DEF(Cherokee, "Cher") +DEF(Chorasmian, "Chrs") DEF(Common, "Zyyy") DEF(Coptic, "Copt,Qaac") DEF(Cuneiform, "Xsux") @@ -73,6 +74,7 @@ DEF(Cypriot, "Cprt") DEF(Cyrillic, "Cyrl") DEF(Deseret, "Dsrt") DEF(Devanagari, "Deva") +DEF(Dives_Akuru, "Diak") DEF(Dogra, "Dogr") DEF(Duployan, "Dupl") DEF(Egyptian_Hieroglyphs, "Egyp") @@ -106,6 +108,7 @@ DEF(Kayah_Li, "Kali") DEF(Kharoshthi, "Khar") DEF(Khmer, "Khmr") DEF(Khojki, "Khoj") +DEF(Khitan_Small_Script, "Kits") DEF(Khudawadi, "Sind") DEF(Lao, "Laoo") DEF(Latin, "Latn") @@ -193,6 +196,7 @@ DEF(Ugaritic, "Ugar") DEF(Vai, "Vaii") DEF(Wancho, "Wcho") DEF(Warang_Citi, "Wara") +DEF(Yezidi, "Yezi") DEF(Yi, "Yiii") DEF(Zanabazar_Square, "Zanb") #endif @@ -244,11 +248,11 @@ DEF(Variation_Selector, "VS") DEF(White_Space, "space") DEF(Bidi_Mirrored, "Bidi_M") DEF(Emoji, "") -DEF(Emoji_Component, "") -DEF(Emoji_Modifier, "") -DEF(Emoji_Modifier_Base, "") -DEF(Emoji_Presentation, "") -DEF(Extended_Pictographic, "") +DEF(Emoji_Component, "EComp") +DEF(Emoji_Modifier, "EMod") +DEF(Emoji_Modifier_Base, "EBase") +DEF(Emoji_Presentation, "EPres") +DEF(Extended_Pictographic, "ExtPict") DEF(Default_Ignorable_Code_Point, "DI") DEF(ID_Start, "IDS") DEF(Case_Ignorable, "CI")