History

2020-03-16 release

bellard committed 6 years ago

Commit 383e2b01 parent 0e8fffd26 files · +2345 −2013Browse files

Unified · Split

26 files
  1. Changelog +11 −0
  2. TODO +3 −2
  3. VERSION +1 −1
  4. doc/jsbignum.html +15 −18
  5. doc/jsbignum.pdf +0 −0
  6. doc/jsbignum.texi +13 −16
  7. doc/quickjs.html +79 −52
  8. doc/quickjs.pdf +0 −0
  9. doc/quickjs.texi +74 −50
  10. libbf.c +40 −7
  11. libbf.h +1 −0
  12. libregexp.c +58 −34
  13. libunicode-table.h +1619 −1564
  14. quickjs-libc.c +220 −168
  15. quickjs-opcode.h +0 −1
  16. quickjs.c +128 −76
  17. quickjs.h +27 −1
  18. release.sh +15 −6
  19. run-test262.c +4 −1
  20. test262.conf +1 −0
  21. test262_errors.txt +7 −2
  22. tests/microbench.js +2 −4
  23. tests/test_builtin.js +4 −0
  24. tests/test_std.js +10 −1
  25. unicode_download.sh +6 −6
  26. unicode_gen_def.h +9 −5
Changelog+11−0
@@ -1,3 +1,14 @@
1+2020-03-16:
2+
3+- reworked error handling in std and os libraries: suppressed I/O
4+ exceptions in std FILE functions and return a positive errno value
5+ when it is explicit
6+- output exception messages to stderr
7+- added std.loadFile(), std.strerror(), std.FILE.prototype.tello()
8+- added JS_GetRuntimeOpaque(), JS_SetRuntimeOpaque(), JS_NewUint32()
9+- updated to Unicode 13.0.0
10+- misc bug fixes
11+
112 2020-01-19:
213
314 - keep CONFIG_BIGNUM in the makefile
TODO+3−2
@@ -73,5 +73,6 @@ REPL: · 72 unmodified lines
7373 Test262o: 0/11262 errors, 463 excluded
7474 Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
7575
76−Test262: 17/69942 errors, 855 excluded, 581 skipped
77−test262 commit: 28b4fcca4b1b1d278dfe0cc0e69c7d9d59b31aab
76+Test262: 22/70040 errors, 860 excluded, 581 skipped
77+test262 commit: 25c9e334d301944537215caba1d7f44319f3e0da
78+
VERSION+1−1
@@ -1 +1 @@
1−2020-01-19
1+2020-03-16
doc/jsbignum.html+15−18
@@ -1,8 +1,7 @@
11 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
22 <html>
3−<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
3+<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
44 <head>
5−<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
65 <title>Javascript Bignum Extensions</title>
76
87 <meta name="description" content="Javascript Bignum Extensions">
@@ -10,6 +9,7 @@ · 1 unmodified line
109 <meta name="resource-type" content="document">
1110 <meta name="distribution" content="global">
1211 <meta name="Generator" content="makeinfo">
12+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
1313 <link href="#SEC_Contents" rel="contents" title="Table of Contents">
1414 <style type="text/css">
1515 <!--
@@ -121,7 +121,7 @@ changes were done in order to simplify the implementation. · 105 unmodified lines
121121 <ul>
122122 <li> <code>with operators from</code> is not supported. Operator overloading is always enabled.
123123
124−</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.
124+</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.
125125
126126 </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.
127127
@@ -194,7 +194,7 @@ raised if <em>a &lt; 0</em>. · 66 unmodified lines
194194 <h3 class="section">4.1 Introduction</h3>
195195
196196 <p>This extension adds the <code>BigFloat</code> primitive type. The
197−<code>BigFloat</code> type represents floating point numbers are in base 2
197+<code>BigFloat</code> type represents floating point numbers in base 2
198198 with the IEEE 754 semantics. A floating
199199 point number is represented as a sign, mantissa and exponent. The
200200 special values <code>NaN</code>, <code>+/-Infinity</code>, <code>+0</code> and <code>-0</code>
@@ -216,15 +216,13 @@ point environment is used. · 15 unmodified lines
216216 <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
217217 read<a name="DOCF2" href="#FOOT2"><sup>2</sup></a>. The precision of the global environment is
218218 <code>BigFloatEnv.prec</code>. The number of exponent bits of the global
219−environment is <code>BigFloatEnv.expBits</code>. If <code>BigFloatEnv.expBits</code> is
220−strictly smaller than the maximum allowed number of exponent bits
221−(<code>BigFloatEnv.expBitsMax</code>), then the global environment subnormal
222−flag is set to <code>true</code>. Otherwise it is set to <code>false</code>;
219+environment is <code>BigFloatEnv.expBits</code>. The global environment
220+subnormal flag is set to <code>true</code>.
223221 </p>
224−<p>For example, <code>prec = 53</code> and <code> expBits = 11</code> give exactly
225−the same precision as the IEEE 754 64 bit floating point. The
222+<p>For example, <code>prec = 53</code> and <code> expBits = 11</code> exactly give
223+the same precision as the IEEE 754 64 bit floating point format. The
226224 default precision is <code>prec = 113</code> and <code> expBits = 15</code> (IEEE
227−754 128 bit floating point).
225+754 128 bit floating point format).
228226 </p>
229227 <p>The global floating point environment can only be modified temporarily
230228 when calling a function (see <code>BigFloatEnv.setPrec</code>). Hence a
@@ -433,9 +431,8 @@ environment. The initial value is <code>113</code>. · 202 unmodified lines
433431 </dd>
434432 <dt><code>expBits</code></dt>
435433 <dd><p>Getter. Return the exponent size in bits of the global floating point
436−environment assuming an IEEE 754 representation. If <code>expBits &lt;
437−expBitsMax</code>, then subnormal numbers are supported. The initial value
438−is <code>15</code>.
434+environment assuming an IEEE 754 representation. The initial value is
435+<code>15</code>.
439436 </p>
440437 </dd>
441438 <dt><code>setPrec(f, p[, e])</code></dt>
@@ -608,7 +605,7 @@ Number value. · 166 unmodified lines
608605
609606 <p>It returns <code>0m</code> if no parameter is provided. Otherwise the first
610607 parameter is converted to a bigdecimal by using ToString(). Hence
611−Number value are not converted to their exact numerical value as
608+Number values are not converted to their exact numerical value as
612609 BigDecimal.
613610 </p>
614611 <a name="Properties-of-the-BigDecimal-object"></a>
@@ -702,11 +699,11 @@ always represented as BigFloat. · 87 unmodified lines
702699
703700 </li><li> The logical xor operator is still available with the <code>^^</code> operator.
704701
705−</li><li> The integer division operator can be overloaded by modifying the corresponding operator in <code>BigInt.prototype.[[OperatorSet]]</code>.
702+</li><li> The modulo operator (<code>%</code>) returns the Euclidian remainder (always positive) instead of the truncated remainder.
706703
707−</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>.
704+</li><li> The integer division operator can be overloaded with <code>Operators.updateBigIntOperators(dictionary)</code>.
708705
709−</li><li> The modulo operator (<code>%</code>) returns the Euclidian remainder (always positive) instead of the truncated remainder.
706+</li><li> The integer power operator with a non zero negative exponent can be overloaded with <code>Operators.updateBigIntOperators(dictionary)</code>.
710707
711708 </li></ul>
712709
doc/jsbignum.pdf+0−0

Binary file not shown.

doc/jsbignum.texi+13−16
@@ -57,7 +57,7 @@ More precisely, the following modifications were made: · 56 unmodified lines
5757
5858 @item @code{with operators from} is not supported. Operator overloading is always enabled.
5959
60−@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.
60+@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.
6161
6262 @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.
6363
@@ -119,7 +119,7 @@ Return the number of trailing zeros in the two's complement binary representatio · 55 unmodified lines
119119 @section Introduction
120120
121121 This extension adds the @code{BigFloat} primitive type. The
122−@code{BigFloat} type represents floating point numbers are in base 2
122+@code{BigFloat} type represents floating point numbers in base 2
123123 with the IEEE 754 semantics. A floating
124124 point number is represented as a sign, mantissa and exponent. The
125125 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 · 17 unmodified lines
143143 read@footnote{The rationale is to avoid side effects for the built-in
144144 operators.}. The precision of the global environment is
145145 @code{BigFloatEnv.prec}. The number of exponent bits of the global
146−environment is @code{BigFloatEnv.expBits}. If @code{BigFloatEnv.expBits} is
147−strictly smaller than the maximum allowed number of exponent bits
148−(@code{BigFloatEnv.expBitsMax}), then the global environment subnormal
149−flag is set to @code{true}. Otherwise it is set to @code{false};
146+environment is @code{BigFloatEnv.expBits}. The global environment
147+subnormal flag is set to @code{true}.
150148
151−For example, @code{prec = 53} and @code{ expBits = 11} give exactly
152−the same precision as the IEEE 754 64 bit floating point. The
149+For example, @code{prec = 53} and @code{ expBits = 11} exactly give
150+the same precision as the IEEE 754 64 bit floating point format. The
153151 default precision is @code{prec = 113} and @code{ expBits = 15} (IEEE
154−754 128 bit floating point).
152+754 128 bit floating point format).
155153
156154 The global floating point environment can only be modified temporarily
157155 when calling a function (see @code{BigFloatEnv.setPrec}). Hence a
@@ -345,9 +343,8 @@ environment. The initial value is @code{113}. · 187 unmodified lines
345343
346344 @item expBits
347345 Getter. Return the exponent size in bits of the global floating point
348−environment assuming an IEEE 754 representation. If @code{expBits <
349−expBitsMax}, then subnormal numbers are supported. The initial value
350−is @code{15}.
346+environment assuming an IEEE 754 representation. The initial value is
347+@code{15}.
351348
352349 @item setPrec(f, p[, e])
353350 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 · 138 unmodified lines
492489
493490 It returns @code{0m} if no parameter is provided. Otherwise the first
494491 parameter is converted to a bigdecimal by using ToString(). Hence
495−Number value are not converted to their exact numerical value as
492+Number values are not converted to their exact numerical value as
496493 BigDecimal.
497494
498495 @subsection Properties of the @code{BigDecimal} object
@@ -581,11 +578,11 @@ The following changes are made to the Javascript semantics: · 82 unmodified lines
581578
582579 @item The logical xor operator is still available with the @code{^^} operator.
583580
584−@item The integer division operator can be overloaded by modifying the corresponding operator in @code{BigInt.prototype.[[OperatorSet]]}.
581+@item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder.
585582
586−@item The integer power operator with a non zero negative exponent can be overloaded by modifying the corresponding operator in @code{BigInt.prototype.[[OperatorSet]]}.
583+@item The integer division operator can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}.
587584
588−@item The modulo operator (@code{%}) returns the Euclidian remainder (always positive) instead of the truncated remainder.
585+@item The integer power operator with a non zero negative exponent can be overloaded with @code{Operators.updateBigIntOperators(dictionary)}.
589586
590587 @end itemize
591588
doc/quickjs.html+79−52
@@ -1,8 +1,7 @@
11 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
22 <html>
3−<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
3+<!-- Created by GNU Texinfo 6.1, http://www.gnu.org/software/texinfo/ -->
44 <head>
5−<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
65 <title>QuickJS Javascript Engine</title>
76
87 <meta name="description" content="QuickJS Javascript Engine">
@@ -10,6 +9,7 @@ · 1 unmodified line
109 <meta name="resource-type" content="document">
1110 <meta name="distribution" content="global">
1211 <meta name="Generator" content="makeinfo">
12+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
1313 <link href="#SEC_Contents" rel="contents" title="Table of Contents">
1414 <style type="text/css">
1515 <!--
@@ -519,50 +519,39 @@ optional properties: · 503 unmodified lines
519519 <dd><p>Evaluate the file <code>filename</code> as a script (global eval).
520520 </p>
521521 </dd>
522−<dt><code>Error(errno)</code></dt>
523−<dd>
524−<p><code>std.Error</code> constructor. Error instances contain the field
525−<code>errno</code> (error code) and <code>message</code> (result of
526−<code>std.Error.strerror(errno)</code>).
522+<dt><code>loadFile(filename)</code></dt>
523+<dd><p>Load the file <code>filename</code> and return it as a string assuming UTF-8
524+encoding. Return <code>null</code> in case of I/O error.
527525 </p>
528−<p>The constructor contains the following fields:
529−</p>
530−<dl compact="compact">
531−<dt><code>EINVAL</code></dt>
532−<dt><code>EIO</code></dt>
533−<dt><code>EACCES</code></dt>
534−<dt><code>EEXIST</code></dt>
535−<dt><code>ENOSPC</code></dt>
536−<dt><code>ENOSYS</code></dt>
537−<dt><code>EBUSY</code></dt>
538−<dt><code>ENOENT</code></dt>
539−<dt><code>EPERM</code></dt>
540−<dt><code>EPIPE</code></dt>
541−<dd><p>Integer value of common errors (additional error codes may be defined).
542− </p></dd>
543−<dt><code>strerror(errno)</code></dt>
544−<dd><p>Return a string that describes the error <code>errno</code>.
545− </p></dd>
546−</dl>
547−
548526 </dd>
549−<dt><code>open(filename, flags)</code></dt>
550−<dd><p>Open a file (wrapper to the libc <code>fopen()</code>). Throws
551−<code>std.Error</code> in case of I/O error.
527+<dt><code>open(filename, flags, errorObj = undefined)</code></dt>
528+<dd><p>Open a file (wrapper to the libc <code>fopen()</code>). Return the FILE
529+object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
530+undefined, set its <code>errno</code> property to the error code or to 0 if
531+no error occured.
552532 </p>
553533 </dd>
554−<dt><code>popen(command, flags)</code></dt>
555−<dd><p>Open a process by creating a pipe (wrapper to the libc <code>popen()</code>). Throws
556−<code>std.Error</code> in case of I/O error.
534+<dt><code>popen(command, flags, errorObj = undefined)</code></dt>
535+<dd><p>Open a process by creating a pipe (wrapper to the libc
536+<code>popen()</code>). Return the FILE
537+object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
538+undefined, set its <code>errno</code> property to the error code or to 0 if
539+no error occured.
557540 </p>
558541 </dd>
559−<dt><code>fdopen(fd, flags)</code></dt>
542+<dt><code>fdopen(fd, flags, errorObj = undefined)</code></dt>
560543 <dd><p>Open a file from a file handle (wrapper to the libc
561−<code>fdopen()</code>). Throws <code>std.Error</code> in case of I/O error.
544+<code>fdopen()</code>). Return the FILE
545+object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
546+undefined, set its <code>errno</code> property to the error code or to 0 if
547+no error occured.
562548 </p>
563549 </dd>
564−<dt><code>tmpfile()</code></dt>
565−<dd><p>Open a temporary file. Throws <code>std.Error</code> in case of I/O error.
550+<dt><code>tmpfile(errorObj = undefined)</code></dt>
551+<dd><p>Open a temporary file. Return the FILE
552+object or <code>null</code> in case of I/O error. If <code>errorObj</code> is not
553+undefined, set its <code>errno</code> property to the error code or to 0 if
554+no error occured.
566555 </p>
567556 </dd>
568557 <dt><code>puts(str)</code></dt>
@@ -589,6 +578,29 @@ optional properties: · 20 unmodified lines
589578 <dd><p>Constants for seek().
590579 </p>
591580 </dd>
581+<dt><code>Error</code></dt>
582+<dd>
583+<p>Enumeration object containing the integer value of common errors
584+(additional error codes may be defined):
585+</p>
586+<dl compact="compact">
587+<dt><code>EINVAL</code></dt>
588+<dt><code>EIO</code></dt>
589+<dt><code>EACCES</code></dt>
590+<dt><code>EEXIST</code></dt>
591+<dt><code>ENOSPC</code></dt>
592+<dt><code>ENOSYS</code></dt>
593+<dt><code>EBUSY</code></dt>
594+<dt><code>ENOENT</code></dt>
595+<dt><code>EPERM</code></dt>
596+<dt><code>EPIPE</code></dt>
597+</dl>
598+
599+</dd>
600+<dt><code>strerror(errno)</code></dt>
601+<dd><p>Return a string that describes the error <code>errno</code>.
602+</p>
603+</dd>
592604 <dt><code>gc()</code></dt>
593605 <dd><p>Manually invoke the cycle removal algorithm. The cycle removal
594606 algorithm is automatically started when needed, so this function is
@@ -614,12 +626,14 @@ optional properties: · 19 unmodified lines
614626 </p>
615627 </dd>
616628 <dt><code>full</code></dt>
617−<dd><p>Boolean (default = false). If true, return the an object contains
629+<dd>
630+<p>Boolean (default = false). If true, return the an object contains
618631 the properties <code>response</code> (response content),
619632 <code>responseHeaders</code> (headers separated by CRLF), <code>status</code>
620− (status code). If <code>full</code> is false, only the response is
621− returned if the status is between 200 and 299. Otherwise an
622− <code>std.Error</code> exception is raised.
633+ (status code). <code>response</code> is <code>null</code> is case of protocol or
634+ network error. If <code>full</code> is false, only the response is
635+ returned if the status is between 200 and 299. Otherwise <code>null</code>
636+ is returned.
623637 </p>
624638 </dd>
625639 </dl>
@@ -631,7 +645,7 @@ optional properties: · 5 unmodified lines
631645 </p>
632646 <dl compact="compact">
633647 <dt><code>close()</code></dt>
634−<dd><p>Close the file.
648+<dd><p>Close the file. Return 0 if OK or <code>-errno</code> in case of I/O error.
635649 </p></dd>
636650 <dt><code>puts(str)</code></dt>
637651 <dd><p>Outputs the string with the UTF-8 encoding.
@@ -643,17 +657,27 @@ optional properties: · 5 unmodified lines
643657 <dd><p>Flush the buffered file.
644658 </p></dd>
645659 <dt><code>seek(offset, whence)</code></dt>
646−<dd><p>Seek to a give file position (whence is <code>std.SEEK_*</code>). Throws a
647−<code>std.Error</code> in case of I/O error.
660+<dd><p>Seek to a give file position (whence is
661+<code>std.SEEK_*</code>). <code>offset</code> can be a number or a bigint. Return
662+0 if OK or <code>-errno</code> in case of I/O error.
648663 </p></dd>
649664 <dt><code>tell()</code></dt>
650665 <dd><p>Return the current file position.
651666 </p></dd>
667+<dt><code>tello()</code></dt>
668+<dd><p>Return the current file position as a bigint.
669+</p></dd>
652670 <dt><code>eof()</code></dt>
653671 <dd><p>Return true if end of file.
654672 </p></dd>
655673 <dt><code>fileno()</code></dt>
656674 <dd><p>Return the associated OS handle.
675+</p></dd>
676+<dt><code>error()</code></dt>
677+<dd><p>Return true if there was an error.
678+</p></dd>
679+<dt><code>clearerr()</code></dt>
680+<dd><p>Clear the error indication.
657681 </p>
658682 </dd>
659683 <dt><code>read(buffer, position, length)</code></dt>
@@ -727,7 +751,9 @@ error code. · 67 unmodified lines
727751 </p>
728752 </dd>
729753 <dt><code>seek(fd, offset, whence)</code></dt>
730−<dd><p>Seek in the file. Use <code>std.SEEK_*</code> for <code>whence</code>.
754+<dd><p>Seek in the file. Use <code>std.SEEK_*</code> for
755+<code>whence</code>. <code>offset</code> is either a number or a bigint. If
756+<code>offset</code> is a bigint, a bigint is returned too.
731757 </p>
732758 </dd>
733759 <dt><code>read(fd, buffer, offset, length)</code></dt>
@@ -755,11 +781,11 @@ Return the number of written bytes or &lt; 0 if error. · 21 unmodified lines
755781 </p>
756782 </dd>
757783 <dt><code>remove(filename)</code></dt>
758−<dd><p>Remove a file. Return 0 if OK or &lt; 0 if error.
784+<dd><p>Remove a file. Return 0 if OK or <code>-errno</code>.
759785 </p>
760786 </dd>
761787 <dt><code>rename(oldname, newname)</code></dt>
762−<dd><p>Rename a file. Return 0 if OK or &lt; 0 if error.
788+<dd><p>Rename a file. Return 0 if OK or <code>-errno</code>.
763789 </p>
764790 </dd>
765791 <dt><code>realpath(path)</code></dt>
@@ -773,11 +799,11 @@ and <code>err</code> the error code. · 7 unmodified lines
773799 </p>
774800 </dd>
775801 <dt><code>chdir(path)</code></dt>
776−<dd><p>Change the current directory. Return the error code.
802+<dd><p>Change the current directory. Return 0 if OK or <code>-errno</code>.
777803 </p>
778804 </dd>
779805 <dt><code>mkdir(path, mode = 0o777)</code></dt>
780−<dd><p>Create a directory at <code>path</code>. Return the error code.
806+<dd><p>Create a directory at <code>path</code>. Return 0 if OK or <code>-errno</code>.
781807 </p>
782808 </dd>
783809 <dt><code>stat(path)</code></dt>
@@ -809,11 +835,11 @@ itself. · 25 unmodified lines
809835 </dd>
810836 <dt><code>utimes(path, atime, mtime)</code></dt>
811837 <dd><p>Change the access and modification times of the file <code>path</code>. The
812−times are specified in milliseconds since 1970.
838+times are specified in milliseconds since 1970. Return 0 if OK or <code>-errno</code>.
813839 </p>
814840 </dd>
815841 <dt><code>symlink(target, linkpath)</code></dt>
816−<dd><p>Create a link at <code>linkpath</code> containing the string <code>target</code>.
842+<dd><p>Create a link at <code>linkpath</code> containing the string <code>target</code>. Return 0 if OK or <code>-errno</code>.
817843 </p>
818844 </dd>
819845 <dt><code>readlink(path)</code></dt>
@@ -896,7 +922,8 @@ object containing optional parameters: · 76 unmodified lines
896922
897923 </dd>
898924 <dt><code>waitpid(pid, options)</code></dt>
899−<dd><p><code>waitpid</code> Unix system call. Return the array <code>[ret, status]</code>.
925+<dd><p><code>waitpid</code> Unix system call. Return the array <code>[ret,
926+status]</code>. <code>ret</code> contains <code>-errno</code> in case of error.
900927 </p>
901928 </dd>
902929 <dt><code>WNOHANG</code></dt>
doc/quickjs.pdf+0−0

Binary file not shown.

doc/quickjs.texi+74−50
@@ -373,44 +373,35 @@ optional properties: · 372 unmodified lines
373373 @item loadScript(filename)
374374 Evaluate the file @code{filename} as a script (global eval).
375375
376−@item Error(errno)
377−
378−@code{std.Error} constructor. Error instances contain the field
379−@code{errno} (error code) and @code{message} (result of
380−@code{std.Error.strerror(errno)}).
381−
382−The constructor contains the following fields:
383−
384− @table @code
385− @item EINVAL
386− @item EIO
387− @item EACCES
388− @item EEXIST
389− @item ENOSPC
390− @item ENOSYS
391− @item EBUSY
392− @item ENOENT
393− @item EPERM
394− @item EPIPE
395− Integer value of common errors (additional error codes may be defined).
396− @item strerror(errno)
397− Return a string that describes the error @code{errno}.
398− @end table
399−
400−@item open(filename, flags)
401−Open a file (wrapper to the libc @code{fopen()}). Throws
402−@code{std.Error} in case of I/O error.
403−
404−@item popen(command, flags)
405−Open a process by creating a pipe (wrapper to the libc @code{popen()}). Throws
406−@code{std.Error} in case of I/O error.
407−
408−@item fdopen(fd, flags)
376+@item loadFile(filename)
377+Load the file @code{filename} and return it as a string assuming UTF-8
378+encoding. Return @code{null} in case of I/O error.
379+
380+@item open(filename, flags, errorObj = undefined)
381+Open a file (wrapper to the libc @code{fopen()}). Return the FILE
382+object or @code{null} in case of I/O error. If @code{errorObj} is not
383+undefined, set its @code{errno} property to the error code or to 0 if
384+no error occured.
385+
386+@item popen(command, flags, errorObj = undefined)
387+Open a process by creating a pipe (wrapper to the libc
388+@code{popen()}). Return the FILE
389+object or @code{null} in case of I/O error. If @code{errorObj} is not
390+undefined, set its @code{errno} property to the error code or to 0 if
391+no error occured.
392+
393+@item fdopen(fd, flags, errorObj = undefined)
409394 Open a file from a file handle (wrapper to the libc
410−@code{fdopen()}). Throws @code{std.Error} in case of I/O error.
395+@code{fdopen()}). Return the FILE
396+object or @code{null} in case of I/O error. If @code{errorObj} is not
397+undefined, set its @code{errno} property to the error code or to 0 if
398+no error occured.
411399
412−@item tmpfile()
413−Open a temporary file. Throws @code{std.Error} in case of I/O error.
400+@item tmpfile(errorObj = undefined)
401+Open a temporary file. Return the FILE
402+object or @code{null} in case of I/O error. If @code{errorObj} is not
403+undefined, set its @code{errno} property to the error code or to 0 if
404+no error occured.
414405
415406 @item puts(str)
416407 Equivalent to @code{std.out.puts(str)}.
@@ -431,6 +422,27 @@ Wrappers to the libc file @code{stdin}, @code{stdout}, @code{stderr}. · 14 unmodified lines
431422 @item SEEK_END
432423 Constants for seek().
433424
425+@item Error
426+
427+Enumeration object containing the integer value of common errors
428+(additional error codes may be defined):
429+
430+ @table @code
431+ @item EINVAL
432+ @item EIO
433+ @item EACCES
434+ @item EEXIST
435+ @item ENOSPC
436+ @item ENOSYS
437+ @item EBUSY
438+ @item ENOENT
439+ @item EPERM
440+ @item EPIPE
441+ @end table
442+
443+@item strerror(errno)
444+Return a string that describes the error @code{errno}.
445+
434446 @item gc()
435447 Manually invoke the cycle removal algorithm. The cycle removal
436448 algorithm is automatically started when needed, so this function is
@@ -453,12 +465,14 @@ optional properties: · 16 unmodified lines
453465 to be UTF-8 encoded.
454466
455467 @item full
468+
456469 Boolean (default = false). If true, return the an object contains
457470 the properties @code{response} (response content),
458471 @code{responseHeaders} (headers separated by CRLF), @code{status}
459− (status code). If @code{full} is false, only the response is
460− returned if the status is between 200 and 299. Otherwise an
461− @code{std.Error} exception is raised.
472+ (status code). @code{response} is @code{null} is case of protocol or
473+ network error. If @code{full} is false, only the response is
474+ returned if the status is between 200 and 299. Otherwise @code{null}
475+ is returned.
462476
463477 @end table
464478
@@ -468,7 +482,7 @@ FILE prototype: · 3 unmodified lines
468482
469483 @table @code
470484 @item close()
471−Close the file.
485+Close the file. Return 0 if OK or @code{-errno} in case of I/O error.
472486 @item puts(str)
473487 Outputs the string with the UTF-8 encoding.
474488 @item printf(fmt, ...args)
@@ -476,14 +490,21 @@ Formatted printf, same formats as the libc printf. · 1 unmodified line
476490 @item flush()
477491 Flush the buffered file.
478492 @item seek(offset, whence)
479−Seek to a give file position (whence is @code{std.SEEK_*}). Throws a
480−@code{std.Error} in case of I/O error.
493+Seek to a give file position (whence is
494+@code{std.SEEK_*}). @code{offset} can be a number or a bigint. Return
495+0 if OK or @code{-errno} in case of I/O error.
481496 @item tell()
482497 Return the current file position.
498+@item tello()
499+Return the current file position as a bigint.
483500 @item eof()
484501 Return true if end of file.
485502 @item fileno()
486503 Return the associated OS handle.
504+@item error()
505+Return true if there was an error.
506+@item clearerr()
507+Clear the error indication.
487508
488509 @item read(buffer, position, length)
489510 Read @code{length} bytes from the file to the ArrayBuffer @code{buffer} at byte
@@ -545,7 +566,9 @@ POSIX open flags. · 55 unmodified lines
545566 Close the file handle @code{fd}.
546567
547568 @item seek(fd, offset, whence)
548−Seek in the file. Use @code{std.SEEK_*} for @code{whence}.
569+Seek in the file. Use @code{std.SEEK_*} for
570+@code{whence}. @code{offset} is either a number or a bigint. If
571+@code{offset} is a bigint, a bigint is returned too.
549572
550573 @item read(fd, buffer, offset, length)
551574 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. · 15 unmodified lines
567590 Set the TTY in raw mode.
568591
569592 @item remove(filename)
570−Remove a file. Return 0 if OK or < 0 if error.
593+Remove a file. Return 0 if OK or @code{-errno}.
571594
572595 @item rename(oldname, newname)
573−Rename a file. Return 0 if OK or < 0 if error.
596+Rename a file. Return 0 if OK or @code{-errno}.
574597
575598 @item realpath(path)
576599 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 · 4 unmodified lines
581604 and @code{err} the error code.
582605
583606 @item chdir(path)
584−Change the current directory. Return the error code.
607+Change the current directory. Return 0 if OK or @code{-errno}.
585608
586609 @item mkdir(path, mode = 0o777)
587−Create a directory at @code{path}. Return the error code.
610+Create a directory at @code{path}. Return 0 if OK or @code{-errno}.
588611
589612 @item stat(path)
590613 @item lstat(path)
@@ -613,10 +636,10 @@ Constants to interpret the @code{mode} property returned by · 22 unmodified lines
613636
614637 @item utimes(path, atime, mtime)
615638 Change the access and modification times of the file @code{path}. The
616−times are specified in milliseconds since 1970.
639+times are specified in milliseconds since 1970. Return 0 if OK or @code{-errno}.
617640
618641 @item symlink(target, linkpath)
619−Create a link at @code{linkpath} containing the string @code{target}.
642+Create a link at @code{linkpath} containing the string @code{target}. Return 0 if OK or @code{-errno}.
620643
621644 @item readlink(path)
622645 Return @code{[str, err]} where @code{str} is the link target and @code{err}
@@ -685,7 +708,8 @@ object containing optional parameters: · 62 unmodified lines
685708 @end table
686709
687710 @item waitpid(pid, options)
688−@code{waitpid} Unix system call. Return the array @code{[ret, status]}.
711+@code{waitpid} Unix system call. Return the array @code{[ret,
712+status]}. @code{ret} contains @code{-errno} in case of error.
689713
690714 @item WNOHANG
691715 Constant for the @code{options} argument of @code{waitpid}.
libbf.c+40−7
@@ -2526,19 +2526,18 @@ fail: · 2525 unmodified lines
25262526 return BF_ST_MEM_ERROR;
25272527 }
25282528
2529−/* The rounding mode is always BF_RNDZ. Return BF_ST_OVERFLOW if there
2529+/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there
25302530 is an overflow and 0 otherwise. */
25312531 int bf_get_int32(int *pres, const bf_t *a, int flags)
25322532 {
25332533 uint32_t v;
25342534 int ret;
25352535 if (a->expn >= BF_EXP_INF) {
2536− ret = 0;
2536+ ret = BF_ST_INVALID_OP;
25372537 if (flags & BF_GET_INT_MOD) {
25382538 v = 0;
25392539 } else if (a->expn == BF_EXP_INF) {
25402540 v = (uint32_t)INT32_MAX + a->sign;
2541− /* XXX: return overflow ? */
25422541 } else {
25432542 v = INT32_MAX;
25442543 }
@@ -2551,7 +2550,7 @@ int bf_get_int32(int *pres, const bf_t *a, int flags) · 6 unmodified lines
25512550 v = -v;
25522551 ret = 0;
25532552 } else if (!(flags & BF_GET_INT_MOD)) {
2554− ret = BF_ST_OVERFLOW;
2553+ ret = BF_ST_INVALID_OP;
25552554 if (a->sign) {
25562555 v = (uint32_t)INT32_MAX + 1;
25572556 if (a->expn == 32 &&
@@ -2571,14 +2570,14 @@ int bf_get_int32(int *pres, const bf_t *a, int flags) · 13 unmodified lines
25712570 return ret;
25722571 }
25732572
2574−/* The rounding mode is always BF_RNDZ. Return BF_ST_OVERFLOW if there
2573+/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there
25752574 is an overflow and 0 otherwise. */
25762575 int bf_get_int64(int64_t *pres, const bf_t *a, int flags)
25772576 {
25782577 uint64_t v;
25792578 int ret;
25802579 if (a->expn >= BF_EXP_INF) {
2581− ret = 0;
2580+ ret = BF_ST_INVALID_OP;
25822581 if (flags & BF_GET_INT_MOD) {
25832582 v = 0;
25842583 } else if (a->expn == BF_EXP_INF) {
@@ -2603,7 +2602,7 @@ int bf_get_int64(int64_t *pres, const bf_t *a, int flags) · 18 unmodified lines
26032602 v = -v;
26042603 ret = 0;
26052604 } else if (!(flags & BF_GET_INT_MOD)) {
2606− ret = BF_ST_OVERFLOW;
2605+ ret = BF_ST_INVALID_OP;
26072606 if (a->sign) {
26082607 uint64_t v1;
26092608 v = (uint64_t)INT64_MAX + 1;
@@ -2632,6 +2631,40 @@ int bf_get_int64(int64_t *pres, const bf_t *a, int flags) · 22 unmodified lines
26322631 return ret;
26332632 }
26342633
2634+/* The rounding mode is always BF_RNDZ. Return BF_ST_INVALID_OP if there
2635+ is an overflow and 0 otherwise. */
2636+int bf_get_uint64(uint64_t *pres, const bf_t *a)
2637+{
2638+ uint64_t v;
2639+ int ret;
2640+ if (a->expn == BF_EXP_NAN) {
2641+ goto overflow;
2642+ } else if (a->expn <= 0) {
2643+ v = 0;
2644+ ret = 0;
2645+ } else if (a->sign) {
2646+ v = 0;
2647+ ret = BF_ST_INVALID_OP;
2648+ } else if (a->expn <= 64) {
2649+#if LIMB_BITS == 32
2650+ if (a->expn <= 32)
2651+ v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn);
2652+ else
2653+ v = (((uint64_t)a->tab[a->len - 1] << 32) |
2654+ get_limbz(a, a->len - 2)) >> (64 - a->expn);
2655+#else
2656+ v = a->tab[a->len - 1] >> (LIMB_BITS - a->expn);
2657+#endif
2658+ ret = 0;
2659+ } else {
2660+ overflow:
2661+ v = UINT64_MAX;
2662+ ret = BF_ST_INVALID_OP;
2663+ }
2664+ *pres = v;
2665+ return ret;
2666+}
2667+
26352668 /* base conversion from radix */
26362669
26372670 static const uint8_t digits_per_limb_table[BF_RADIX_MAX - 1] = {
libbf.h+1−0
@@ -376,6 +376,7 @@ char *bf_ftoa(size_t *plen, const bf_t *a, int radix, limb_t prec, · 375 unmodified lines
376376 #define BF_GET_INT_MOD (1 << 0)
377377 int bf_get_int32(int *pres, const bf_t *a, int flags);
378378 int bf_get_int64(int64_t *pres, const bf_t *a, int flags);
379+int bf_get_uint64(uint64_t *pres, const bf_t *a);
379380
380381 /* the following functions are exported for testing only. */
381382 void mp_print_str(const char *str, const limb_t *tab, limb_t n);
libregexp.c+58−34
@@ -434,8 +434,9 @@ static int __attribute__((format(printf, 2, 3))) re_parse_error(REParseState *s, · 433 unmodified lines
434434 return -1;
435435 }
436436
437−/* Return -1 in case of overflow */
438−static int parse_digits(const uint8_t **pp)
437+/* If allow_overflow is false, return -1 in case of
438+ overflow. Otherwise return INT32_MAX. */
439+static int parse_digits(const uint8_t **pp, BOOL allow_overflow)
439440 {
440441 const uint8_t *p;
441442 uint64_t v;
@@ -448,8 +449,12 @@ static int parse_digits(const uint8_t **pp) · 6 unmodified lines
448449 if (c < '0' || c > '9')
449450 break;
450451 v = v * 10 + c - '0';
451− if (v >= INT32_MAX)
452− return -1;
452+ if (v >= INT32_MAX) {
453+ if (allow_overflow)
454+ v = INT32_MAX;
455+ else
456+ return -1;
457+ }
453458 p++;
454459 }
455460 *pp = p;
@@ -1225,14 +1230,27 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) · 769 unmodified lines
12251230 re_emit_op(s, REOP_prev);
12261231 break;
12271232 case '{':
1228− /* As an extension (see ES6 annex B), we accept '{' not
1229− followed by digits as a normal atom */
1230− if (!is_digit(p[1])) {
1231− if (s->is_utf16)
1232− goto invalid_quant_count;
1233+ if (s->is_utf16) {
1234+ return re_parse_error(s, "syntax error");
1235+ } else if (!is_digit(p[1])) {
1236+ /* Annex B: we accept '{' not followed by digits as a
1237+ normal atom */
12331238 goto parse_class_atom;
1239+ } else {
1240+ const uint8_t *p1 = p + 1;
1241+ /* Annex B: error if it is like a repetition count */
1242+ parse_digits(&p1, TRUE);
1243+ if (*p1 == ',') {
1244+ p1++;
1245+ if (is_digit(*p1)) {
1246+ parse_digits(&p1, TRUE);
1247+ }
1248+ }
1249+ if (*p1 != '}') {
1250+ goto parse_class_atom;
1251+ }
12341252 }
1235− /* fall tru */
1253+ /* fall thru */
12361254 case '*':
12371255 case '+':
12381256 case '?':
@@ -1387,7 +1405,7 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) · 148 unmodified lines
13871405 {
13881406 const uint8_t *q = ++p;
13891407
1390− c = parse_digits(&p);
1408+ c = parse_digits(&p, FALSE);
13911409 if (c < 0 || (c >= s->capture_count && c >= re_count_captures(s))) {
13921410 if (!s->is_utf16) {
13931411 /* Annex B.1.4: accept legacy octal */
@@ -1484,32 +1502,38 @@ static int re_parse_term(REParseState *s, BOOL is_backward_dir) · 90 unmodified lines
14841502 quant_max = 1;
14851503 goto quantifier;
14861504 case '{':
1487− /* As an extension (see ES6 annex B), we accept '{' not
1488− followed by digits as a normal atom */
1489− if (!is_digit(p[1])) {
1490− if (s->is_utf16)
1491− goto invalid_quant_count;
1492− break;
1493− }
1494− p++;
1495− quant_min = parse_digits(&p);
1496− if (quant_min < 0) {
1497− invalid_quant_count:
1498− return re_parse_error(s, "invalid repetition count");
1499− }
1500− quant_max = quant_min;
1501− if (*p == ',') {
1502− p++;
1503− if (is_digit(*p)) {
1504− quant_max = parse_digits(&p);
1505− if (quant_max < 0 || quant_max < quant_min)
1505+ {
1506+ const uint8_t *p1 = p;
1507+ /* As an extension (see ES6 annex B), we accept '{' not
1508+ followed by digits as a normal atom */
1509+ if (!is_digit(p[1])) {
1510+ if (s->is_utf16)
15061511 goto invalid_quant_count;
1507− } else {
1508− quant_max = INT32_MAX; /* infinity */
1512+ break;
1513+ }
1514+ p++;
1515+ quant_min = parse_digits(&p, TRUE);
1516+ quant_max = quant_min;
1517+ if (*p == ',') {
1518+ p++;
1519+ if (is_digit(*p)) {
1520+ quant_max = parse_digits(&p, TRUE);
1521+ if (quant_max < quant_min) {
1522+ invalid_quant_count:
1523+ return re_parse_error(s, "invalid repetition count");
1524+ }
1525+ } else {
1526+ quant_max = INT32_MAX; /* infinity */
1527+ }
15091528 }
1529+ if (*p != '}' && !s->is_utf16) {
1530+ /* Annex B: normal atom if invalid '{' syntax */
1531+ p = p1;
1532+ break;
1533+ }
1534+ if (re_parse_expect(s, &p, '}'))
1535+ return -1;
15101536 }
1511− if (re_parse_expect(s, &p, '}'))
1512− return -1;
15131537 quantifier:
15141538 greedy = TRUE;
15151539 if (*p == '?') {
libunicode-table.h+1619−1564
@@ -3,7 +3,7 @@ · 2 unmodified lines
33
44 #include <stdint.h>
55
6−static const uint32_t case_conv_table1[359] = {
6+static const uint32_t case_conv_table1[361] = {
77 0x00209a30, 0x00309a00, 0x005a8173, 0x00601730,
88 0x006c0730, 0x006f81b3, 0x00701700, 0x007c0700,
99 0x007f8100, 0x00803040, 0x009801c3, 0x00988190,
@@ -86,17 +86,18 @@ static const uint32_t case_conv_table1[359] = { · 76 unmodified lines
8686 0x53cb1440, 0x53d50130, 0x53d58130, 0x53d60130,
8787 0x53d68130, 0x53d70130, 0x53d80130, 0x53d88130,
8888 0x53d90130, 0x53d98131, 0x53da0c40, 0x53e10240,
89− 0x53e20131, 0x53e28130, 0x53e30130, 0x55a98101,
90− 0x55b85020, 0x7d8001b2, 0x7d8081b2, 0x7d8101b2,
91− 0x7d8181da, 0x7d8201da, 0x7d8281b3, 0x7d8301b3,
92− 0x7d8981bb, 0x7d8a01bb, 0x7d8a81bb, 0x7d8b01bc,
93− 0x7d8b81bb, 0x7f909a31, 0x7fa09a01, 0x82002831,
94− 0x82142801, 0x82582431, 0x826c2401, 0x86403331,
95− 0x86603301, 0x8c502031, 0x8c602001, 0xb7202031,
96− 0xb7302001, 0xf4802231, 0xf4912201,
89+ 0x53e20131, 0x53e28130, 0x53e30130, 0x53e38440,
90+ 0x53fa8240, 0x55a98101, 0x55b85020, 0x7d8001b2,
91+ 0x7d8081b2, 0x7d8101b2, 0x7d8181da, 0x7d8201da,
92+ 0x7d8281b3, 0x7d8301b3, 0x7d8981bb, 0x7d8a01bb,
93+ 0x7d8a81bb, 0x7d8b01bc, 0x7d8b81bb, 0x7f909a31,
94+ 0x7fa09a01, 0x82002831, 0x82142801, 0x82582431,
95+ 0x826c2401, 0x86403331, 0x86603301, 0x8c502031,
96+ 0x8c602001, 0xb7202031, 0xb7302001, 0xf4802231,
97+ 0xf4912201,
9798 };
9899
99−static const uint8_t case_conv_table2[359] = {
100+static const uint8_t case_conv_table2[361] = {
100101 0x01, 0x00, 0x9c, 0x06, 0x07, 0x4d, 0x03, 0x04,
101102 0x10, 0x00, 0x8f, 0x0b, 0x00, 0x00, 0x11, 0x00,
102103 0x08, 0x00, 0x53, 0x4a, 0x51, 0x00, 0x52, 0x00,
@@ -118,7 +119,7 @@ static const uint8_t case_conv_table2[359] = { · 15 unmodified lines
118119 0x33, 0x95, 0x00, 0x8e, 0x00, 0x74, 0x99, 0x98,
119120 0x97, 0x96, 0x00, 0x00, 0x9e, 0x00, 0x9c, 0x00,
120121 0xa1, 0xa0, 0x15, 0x2e, 0x2f, 0x30, 0xb4, 0xb5,
121− 0x4c, 0xaa, 0xa9, 0x12, 0x14, 0x1e, 0x21, 0x22,
122+ 0x4e, 0xaa, 0xa9, 0x12, 0x14, 0x1e, 0x21, 0x22,
122123 0x22, 0x2a, 0x34, 0x35, 0xa6, 0xa7, 0x36, 0x1f,
123124 0x4a, 0x00, 0x00, 0x97, 0x01, 0x5a, 0xda, 0x1d,
124125 0x36, 0x05, 0x00, 0xc4, 0xc3, 0xc6, 0xc5, 0xc8,
@@ -137,11 +138,12 @@ static const uint8_t case_conv_table2[359] = { · 12 unmodified lines
137138 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0xa3, 0xa4,
138139 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb6, 0x00,
139140 0x00, 0x5a, 0x00, 0x48, 0x00, 0x5b, 0x56, 0x58,
140− 0x60, 0x5e, 0x70, 0x69, 0x6f, 0x4b, 0x00, 0x00,
141− 0x3b, 0x67, 0xb8, 0x45, 0xa8, 0x8a, 0x8b, 0x8c,
142− 0xab, 0xac, 0x58, 0x58, 0xaf, 0x94, 0xb0, 0x6f,
143− 0xb2, 0x5a, 0x59, 0x5c, 0x5b, 0x5e, 0x5d, 0x60,
144− 0x5f, 0x62, 0x61, 0x64, 0x63, 0x66, 0x65,
141+ 0x60, 0x5e, 0x70, 0x69, 0x6f, 0x4d, 0x00, 0x00,
142+ 0x3b, 0x67, 0xb8, 0x00, 0x00, 0x45, 0xa8, 0x8a,
143+ 0x8b, 0x8c, 0xab, 0xac, 0x58, 0x58, 0xaf, 0x94,
144+ 0xb0, 0x6f, 0xb2, 0x5c, 0x5b, 0x5e, 0x5d, 0x60,
145+ 0x5f, 0x62, 0x61, 0x64, 0x63, 0x66, 0x65, 0x68,
146+ 0x67,
145147 };
146148
147149 static const uint16_t case_conv_ext[58] = {
@@ -170,7 +172,7 @@ static const uint8_t unicode_prop_Cased1_table[172] = { · 22 unmodified lines
170172 0x26, 0x01, 0x01, 0x86, 0xe5, 0x80, 0x60, 0x79,
171173 0xb6, 0x81, 0x40, 0x91, 0x81, 0xbd, 0x88, 0x94,
172174 0x05, 0x80, 0x98, 0x80, 0xc7, 0x82, 0x43, 0x34,
173− 0xa2, 0x06, 0x80, 0x8b, 0x61, 0x28, 0x97, 0xd4,
175+ 0xa2, 0x06, 0x80, 0x8c, 0x61, 0x28, 0x96, 0xd4,
174176 0x80, 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b,
175177 0x00, 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80,
176178 0x9b, 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53,
@@ -186,107 +188,109 @@ static const uint8_t unicode_prop_Cased1_index[18] = { · 9 unmodified lines
186188 0xf1, 0x01,
187189 };
188190
189−static const uint8_t unicode_prop_Case_Ignorable_table[678] = {
191+static const uint8_t unicode_prop_Case_Ignorable_table[692] = {
190192 0xa6, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80,
191193 0xc6, 0x03, 0x00, 0x03, 0x01, 0x81, 0x41, 0xf6,
192194 0x40, 0xbf, 0x19, 0x18, 0x88, 0x08, 0x80, 0x40,
193− 0xfa, 0x86, 0x40, 0xce, 0x80, 0xb6, 0xac, 0x00,
194− 0x01, 0x01, 0x00, 0xab, 0x80, 0x8a, 0x85, 0x89,
195− 0x8a, 0x00, 0xa2, 0x80, 0x89, 0x94, 0x8f, 0x80,
196− 0xe4, 0x38, 0x89, 0x03, 0xa0, 0x00, 0x80, 0x9d,
197− 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0x18, 0x08, 0x97,
198− 0x97, 0xaa, 0x82, 0xf6, 0xaf, 0xb6, 0x00, 0x03,
199− 0x3b, 0x02, 0x86, 0x89, 0x81, 0x8c, 0x80, 0x8e,
200− 0x80, 0xb9, 0x03, 0x1f, 0x80, 0x93, 0x81, 0x99,
201− 0x01, 0x81, 0xb8, 0x03, 0x0b, 0x09, 0x12, 0x80,
202− 0x9d, 0x0a, 0x80, 0x8a, 0x81, 0xb8, 0x03, 0x20,
203− 0x0b, 0x80, 0x93, 0x81, 0x95, 0x28, 0x80, 0xb9,
204− 0x01, 0x00, 0x1f, 0x07, 0x80, 0x8a, 0x81, 0x9d,
205− 0x80, 0xbc, 0x80, 0x8b, 0x80, 0xb1, 0x02, 0x80,
206− 0xb8, 0x14, 0x10, 0x1e, 0x81, 0x8a, 0x81, 0x9c,
207− 0x80, 0xb9, 0x01, 0x05, 0x04, 0x81, 0x93, 0x81,
208− 0x9b, 0x81, 0xb8, 0x0b, 0x1f, 0x80, 0x93, 0x81,
209− 0xe5, 0x06, 0x10, 0x80, 0xd9, 0x01, 0x86, 0x8a,
210− 0x88, 0xe1, 0x01, 0x88, 0x88, 0x00, 0x85, 0xc9,
211− 0x81, 0x9a, 0x00, 0x00, 0x80, 0xb6, 0x8d, 0x04,
212− 0x01, 0x84, 0x8a, 0x80, 0xa3, 0x88, 0x80, 0xe5,
213− 0x18, 0x28, 0x09, 0x81, 0x98, 0x0b, 0x82, 0x8f,
214− 0x83, 0x8c, 0x01, 0x0d, 0x80, 0x8e, 0x80, 0xdd,
215− 0x80, 0x42, 0x5f, 0x82, 0x43, 0xb1, 0x82, 0x9c,
216− 0x82, 0x9c, 0x81, 0x9d, 0x81, 0xbf, 0x08, 0x37,
217− 0x01, 0x8a, 0x10, 0x20, 0xac, 0x83, 0xb3, 0x80,
218− 0xc0, 0x81, 0xa1, 0x80, 0xf5, 0x13, 0x81, 0x88,
219− 0x05, 0x82, 0x40, 0xda, 0x09, 0x80, 0xb9, 0x00,
220− 0x30, 0x00, 0x01, 0x3d, 0x89, 0x08, 0xa6, 0x07,
221− 0x8e, 0xc0, 0x83, 0xaf, 0x00, 0x20, 0x04, 0x80,
222− 0xa7, 0x88, 0x8b, 0x81, 0x9f, 0x19, 0x08, 0x82,
223− 0xb7, 0x00, 0x0a, 0x00, 0x82, 0xb9, 0x39, 0x81,
224− 0xbf, 0x85, 0xd1, 0x10, 0x8c, 0x06, 0x18, 0x28,
225− 0x11, 0xb1, 0xbe, 0x8c, 0x80, 0xa1, 0xde, 0x04,
226− 0x41, 0xbc, 0x00, 0x82, 0x8a, 0x82, 0x8c, 0x82,
227− 0x8c, 0x82, 0x8c, 0x81, 0x8b, 0x27, 0x81, 0x89,
228− 0x01, 0x01, 0x84, 0xb0, 0x20, 0x89, 0x00, 0x8c,
229− 0x80, 0x8f, 0x8c, 0xb2, 0xa0, 0x4b, 0x8a, 0x81,
230− 0xf0, 0x82, 0xfc, 0x80, 0x8e, 0x80, 0xdf, 0x9f,
231− 0xae, 0x80, 0x41, 0xd4, 0x80, 0xa3, 0x1a, 0x24,
232− 0x80, 0xdc, 0x85, 0xdc, 0x82, 0x60, 0x6f, 0x15,
233− 0x80, 0x44, 0xe1, 0x85, 0x41, 0x0d, 0x80, 0xe1,
234− 0x18, 0x89, 0x00, 0x9b, 0x83, 0xcf, 0x81, 0x8d,
235− 0xa1, 0xcd, 0x80, 0x96, 0x82, 0xec, 0x0f, 0x02,
236− 0x03, 0x80, 0x98, 0x81, 0x40, 0x9c, 0x81, 0x99,
237− 0x91, 0x8c, 0x80, 0xa5, 0x87, 0x98, 0x8a, 0xad,
238− 0x82, 0xaf, 0x01, 0x19, 0x81, 0x90, 0x80, 0x94,
239− 0x81, 0xc1, 0x29, 0x09, 0x81, 0x8b, 0x07, 0x80,
240− 0xa2, 0x80, 0x8a, 0x80, 0xb2, 0x00, 0x11, 0x0c,
241− 0x08, 0x80, 0x9a, 0x80, 0x8d, 0x0c, 0x08, 0x80,
242− 0xe3, 0x84, 0x40, 0x84, 0x01, 0x03, 0x80, 0x60,
243− 0x4f, 0x2f, 0x80, 0x40, 0x92, 0x8f, 0x42, 0x3d,
244− 0x8f, 0x10, 0x8b, 0x8f, 0xa1, 0x01, 0x80, 0x40,
245− 0xa8, 0x06, 0x05, 0x80, 0x8a, 0x80, 0xa2, 0x00,
246− 0x80, 0xae, 0x80, 0xac, 0x81, 0xc2, 0x80, 0x94,
247− 0x82, 0x42, 0x00, 0x80, 0x40, 0xe1, 0x80, 0x40,
248− 0x94, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83, 0xa7,
249− 0x13, 0x80, 0x40, 0xa4, 0x81, 0x42, 0x3c, 0x83,
250− 0x42, 0x1d, 0x8a, 0x40, 0xaf, 0x80, 0xb5, 0x8e,
195+ 0xfa, 0x86, 0x40, 0xce, 0x04, 0x80, 0xb0, 0xac,
196+ 0x00, 0x01, 0x01, 0x00, 0xab, 0x80, 0x8a, 0x85,
197+ 0x89, 0x8a, 0x00, 0xa2, 0x80, 0x89, 0x94, 0x8f,
198+ 0x80, 0xe4, 0x38, 0x89, 0x03, 0xa0, 0x00, 0x80,
199+ 0x9d, 0x9a, 0xda, 0x8a, 0xb9, 0x8a, 0x18, 0x08,
200+ 0x97, 0x97, 0xaa, 0x82, 0xf6, 0xaf, 0xb6, 0x00,
201+ 0x03, 0x3b, 0x02, 0x86, 0x89, 0x81, 0x8c, 0x80,
202+ 0x8e, 0x80, 0xb9, 0x03, 0x1f, 0x80, 0x93, 0x81,
203+ 0x99, 0x01, 0x81, 0xb8, 0x03, 0x0b, 0x09, 0x12,
204+ 0x80, 0x9d, 0x0a, 0x80, 0x8a, 0x81, 0xb8, 0x03,
205+ 0x20, 0x0b, 0x80, 0x93, 0x81, 0x95, 0x28, 0x80,
206+ 0xb9, 0x01, 0x00, 0x1f, 0x06, 0x81, 0x8a, 0x81,
207+ 0x9d, 0x80, 0xbc, 0x80, 0x8b, 0x80, 0xb1, 0x02,
208+ 0x80, 0xb8, 0x14, 0x10, 0x1e, 0x81, 0x8a, 0x81,
209+ 0x9c, 0x80, 0xb9, 0x01, 0x05, 0x04, 0x81, 0x93,
210+ 0x81, 0x9b, 0x81, 0xb8, 0x0b, 0x1f, 0x80, 0x93,
211+ 0x81, 0x9c, 0x80, 0xc7, 0x06, 0x10, 0x80, 0xd9,
212+ 0x01, 0x86, 0x8a, 0x88, 0xe1, 0x01, 0x88, 0x88,
213+ 0x00, 0x85, 0xc9, 0x81, 0x9a, 0x00, 0x00, 0x80,
214+ 0xb6, 0x8d, 0x04, 0x01, 0x84, 0x8a, 0x80, 0xa3,
215+ 0x88, 0x80, 0xe5, 0x18, 0x28, 0x09, 0x81, 0x98,
216+ 0x0b, 0x82, 0x8f, 0x83, 0x8c, 0x01, 0x0d, 0x80,
217+ 0x8e, 0x80, 0xdd, 0x80, 0x42, 0x5f, 0x82, 0x43,
218+ 0xb1, 0x82, 0x9c, 0x82, 0x9c, 0x81, 0x9d, 0x81,
219+ 0xbf, 0x08, 0x37, 0x01, 0x8a, 0x10, 0x20, 0xac,
220+ 0x83, 0xb3, 0x80, 0xc0, 0x81, 0xa1, 0x80, 0xf5,
221+ 0x13, 0x81, 0x88, 0x05, 0x82, 0x40, 0xda, 0x09,
222+ 0x80, 0xb9, 0x00, 0x30, 0x00, 0x01, 0x3d, 0x89,
223+ 0x08, 0xa6, 0x07, 0x90, 0xbe, 0x83, 0xaf, 0x00,
224+ 0x20, 0x04, 0x80, 0xa7, 0x88, 0x8b, 0x81, 0x9f,
225+ 0x19, 0x08, 0x82, 0xb7, 0x00, 0x0a, 0x00, 0x82,
226+ 0xb9, 0x39, 0x81, 0xbf, 0x85, 0xd1, 0x10, 0x8c,
227+ 0x06, 0x18, 0x28, 0x11, 0xb1, 0xbe, 0x8c, 0x80,
228+ 0xa1, 0xde, 0x04, 0x41, 0xbc, 0x00, 0x82, 0x8a,
229+ 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81, 0x8b,
230+ 0x27, 0x81, 0x89, 0x01, 0x01, 0x84, 0xb0, 0x20,
231+ 0x89, 0x00, 0x8c, 0x80, 0x8f, 0x8c, 0xb2, 0xa0,
232+ 0x4b, 0x8a, 0x81, 0xf0, 0x82, 0xfc, 0x80, 0x8e,
233+ 0x80, 0xdf, 0x9f, 0xae, 0x80, 0x41, 0xd4, 0x80,
234+ 0xa3, 0x1a, 0x24, 0x80, 0xdc, 0x85, 0xdc, 0x82,
235+ 0x60, 0x6f, 0x15, 0x80, 0x44, 0xe1, 0x85, 0x41,
236+ 0x0d, 0x80, 0xe1, 0x18, 0x89, 0x00, 0x9b, 0x83,
237+ 0xcf, 0x81, 0x8d, 0xa1, 0xcd, 0x80, 0x96, 0x82,
238+ 0xec, 0x0f, 0x02, 0x03, 0x80, 0x98, 0x0c, 0x80,
239+ 0x40, 0x96, 0x81, 0x99, 0x91, 0x8c, 0x80, 0xa5,
240+ 0x87, 0x98, 0x8a, 0xad, 0x82, 0xaf, 0x01, 0x19,
241+ 0x81, 0x90, 0x80, 0x94, 0x81, 0xc1, 0x29, 0x09,
242+ 0x81, 0x8b, 0x07, 0x80, 0xa2, 0x80, 0x8a, 0x80,
243+ 0xb2, 0x00, 0x11, 0x0c, 0x08, 0x80, 0x9a, 0x80,
244+ 0x8d, 0x0c, 0x08, 0x80, 0xe3, 0x84, 0x88, 0x82,
245+ 0xf8, 0x01, 0x03, 0x80, 0x60, 0x4f, 0x2f, 0x80,
246+ 0x40, 0x92, 0x8f, 0x42, 0x3d, 0x8f, 0x10, 0x8b,
247+ 0x8f, 0xa1, 0x01, 0x80, 0x40, 0xa8, 0x06, 0x05,
248+ 0x80, 0x8a, 0x80, 0xa2, 0x00, 0x80, 0xae, 0x80,
249+ 0xac, 0x81, 0xc2, 0x80, 0x94, 0x82, 0x42, 0x00,
250+ 0x80, 0x40, 0xe1, 0x80, 0x40, 0x94, 0x84, 0x46,
251+ 0x85, 0x10, 0x0c, 0x83, 0xa7, 0x13, 0x80, 0x40,
252+ 0xa4, 0x81, 0x42, 0x3c, 0x83, 0x41, 0x82, 0x81,
253+ 0x40, 0x98, 0x8a, 0x40, 0xaf, 0x80, 0xb5, 0x8e,
251254 0xb7, 0x82, 0xb0, 0x19, 0x09, 0x80, 0x8e, 0x80,
252255 0xb1, 0x82, 0xa3, 0x20, 0x87, 0xbd, 0x80, 0x8b,
253− 0x81, 0xb3, 0x88, 0x89, 0x83, 0xe1, 0x11, 0x00,
254− 0x0d, 0x80, 0x40, 0x9f, 0x02, 0x87, 0x94, 0x81,
255− 0xb8, 0x0a, 0x80, 0xa4, 0x32, 0x84, 0x40, 0xc2,
256− 0x39, 0x10, 0x80, 0x96, 0x80, 0xd3, 0x28, 0x03,
257− 0x08, 0x81, 0x40, 0xed, 0x1d, 0x08, 0x81, 0x9a,
258− 0x81, 0xd4, 0x39, 0x00, 0x81, 0xe9, 0x00, 0x01,
259− 0x28, 0x80, 0xe4, 0x11, 0x18, 0x84, 0x41, 0x02,
260− 0x88, 0x01, 0x41, 0x98, 0x19, 0x0b, 0x80, 0x9f,
261− 0x89, 0xa7, 0x29, 0x1f, 0x80, 0x88, 0x29, 0x82,
262− 0xad, 0x8c, 0x01, 0x41, 0x95, 0x30, 0x28, 0x80,
263− 0xd1, 0x95, 0x0e, 0x01, 0x01, 0xf9, 0x2a, 0x00,
264− 0x08, 0x30, 0x80, 0xc7, 0x0a, 0x00, 0x80, 0x41,
265− 0x5a, 0x81, 0x55, 0x3a, 0x88, 0x60, 0x36, 0xb6,
266− 0x84, 0xba, 0x86, 0x88, 0x83, 0x44, 0x0a, 0x80,
267− 0xbe, 0x90, 0xbf, 0x08, 0x80, 0x60, 0x4c, 0xb8,
268− 0x08, 0x83, 0x54, 0xc2, 0x82, 0x88, 0x8f, 0x0e,
269− 0x9d, 0x83, 0x40, 0x93, 0x82, 0x47, 0xba, 0xb6,
270− 0x83, 0xb1, 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e,
271− 0x45, 0x4f, 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41,
272− 0x04, 0x8d, 0x41, 0xad, 0x83, 0x45, 0xdf, 0x86,
273− 0xec, 0x87, 0x4a, 0xae, 0x84, 0x6c, 0x0c, 0x00,
274− 0x80, 0x9d, 0xdf, 0xff, 0x40, 0xef,
256+ 0x81, 0xb3, 0x88, 0x89, 0x19, 0x80, 0xde, 0x11,
257+ 0x00, 0x0d, 0x80, 0x40, 0x9f, 0x02, 0x87, 0x94,
258+ 0x81, 0xb8, 0x0a, 0x80, 0xa4, 0x32, 0x84, 0x40,
259+ 0xc2, 0x39, 0x10, 0x80, 0x96, 0x80, 0xd3, 0x28,
260+ 0x03, 0x08, 0x81, 0x40, 0xed, 0x1d, 0x08, 0x81,
261+ 0x9a, 0x81, 0xd4, 0x39, 0x00, 0x81, 0xe9, 0x00,
262+ 0x01, 0x28, 0x80, 0xe4, 0x11, 0x18, 0x84, 0x41,
263+ 0x02, 0x88, 0x01, 0x40, 0xff, 0x08, 0x03, 0x80,
264+ 0x40, 0x8f, 0x19, 0x0b, 0x80, 0x9f, 0x89, 0xa7,
265+ 0x29, 0x1f, 0x80, 0x88, 0x29, 0x82, 0xad, 0x8c,
266+ 0x01, 0x41, 0x95, 0x30, 0x28, 0x80, 0xd1, 0x95,
267+ 0x0e, 0x01, 0x01, 0xf9, 0x2a, 0x00, 0x08, 0x30,
268+ 0x80, 0xc7, 0x0a, 0x00, 0x80, 0x41, 0x5a, 0x81,
269+ 0x55, 0x3a, 0x88, 0x60, 0x36, 0xb6, 0x84, 0xba,
270+ 0x86, 0x88, 0x83, 0x44, 0x0a, 0x80, 0xbe, 0x90,
271+ 0xbf, 0x08, 0x81, 0x60, 0x4c, 0xb7, 0x08, 0x83,
272+ 0x54, 0xc2, 0x82, 0x88, 0x8f, 0x0e, 0x9d, 0x83,
273+ 0x40, 0x93, 0x82, 0x47, 0xba, 0xb6, 0x83, 0xb1,
274+ 0x38, 0x8d, 0x80, 0x95, 0x20, 0x8e, 0x45, 0x4f,
275+ 0x30, 0x90, 0x0e, 0x01, 0x04, 0x41, 0x04, 0x8d,
276+ 0x41, 0xad, 0x83, 0x45, 0xdf, 0x86, 0xec, 0x87,
277+ 0x4a, 0xae, 0x84, 0x6c, 0x0c, 0x00, 0x80, 0x9d,
278+ 0xdf, 0xff, 0x40, 0xef,
275279 };
276280
277281 static const uint8_t unicode_prop_Case_Ignorable_index[66] = {
278− 0xc0, 0x05, 0x00, 0x2e, 0x08, 0x20, 0x52, 0x0a,
279− 0x00, 0x05, 0x0c, 0x00, 0x4f, 0x0e, 0x20, 0x75,
280− 0x10, 0x20, 0x44, 0x18, 0x00, 0x43, 0x1b, 0x00,
281− 0x00, 0x1e, 0x00, 0x7e, 0x2c, 0x00, 0x7e, 0xa6,
282− 0x40, 0x83, 0xa9, 0x20, 0xf7, 0xaa, 0x00, 0x41,
283− 0xff, 0x20, 0x28, 0x0d, 0x01, 0x3f, 0x12, 0x41,
284− 0xde, 0x15, 0x21, 0x5c, 0x1a, 0x01, 0xf5, 0x6a,
285− 0x21, 0x37, 0xda, 0x01, 0x02, 0x00, 0x2e, 0xf0,
282+ 0xbe, 0x05, 0x00, 0xfe, 0x07, 0x00, 0x52, 0x0a,
283+ 0x20, 0x05, 0x0c, 0x20, 0x3b, 0x0e, 0x40, 0x61,
284+ 0x10, 0x40, 0x0f, 0x18, 0x20, 0x43, 0x1b, 0x60,
285+ 0x79, 0x1d, 0x00, 0xf1, 0x20, 0x00, 0x0d, 0xa6,
286+ 0x40, 0x2e, 0xa9, 0x20, 0xde, 0xaa, 0x00, 0x0f,
287+ 0xff, 0x20, 0xe7, 0x0a, 0x41, 0x82, 0x11, 0x21,
288+ 0xc4, 0x14, 0x61, 0x44, 0x19, 0x01, 0x48, 0x1d,
289+ 0x21, 0xa4, 0xbc, 0x01, 0x3e, 0xe1, 0x01, 0xf0,
286290 0x01, 0x0e,
287291 };
288292
289−static const uint8_t unicode_prop_ID_Start_table[1024] = {
293+static const uint8_t unicode_prop_ID_Start_table[1045] = {
290294 0xc0, 0x99, 0x85, 0x99, 0xae, 0x80, 0x89, 0x03,
291295 0x04, 0x96, 0x80, 0x9e, 0x80, 0x41, 0xc9, 0x83,
292296 0x8b, 0x8d, 0x26, 0x00, 0x80, 0x40, 0x80, 0x20,
@@ -297,142 +301,146 @@ static const uint8_t unicode_prop_ID_Start_table[1024] = { · 4 unmodified lines
297301 0x89, 0x11, 0x80, 0x8f, 0x00, 0x9d, 0x9c, 0xd8,
298302 0x8a, 0x80, 0x97, 0xa0, 0x88, 0x0b, 0x04, 0x95,
299303 0x18, 0x88, 0x02, 0x80, 0x96, 0x98, 0x86, 0x8a,
300− 0xb4, 0x94, 0x07, 0xc5, 0xb5, 0x10, 0x91, 0x06,
301− 0x89, 0x8e, 0x8f, 0x1f, 0x09, 0x81, 0x95, 0x06,
302− 0x00, 0x13, 0x10, 0x8f, 0x80, 0x8c, 0x08, 0x82,
303− 0x8d, 0x81, 0x89, 0x07, 0x2b, 0x09, 0x95, 0x06,
304− 0x01, 0x01, 0x01, 0x9e, 0x18, 0x80, 0x92, 0x82,
305− 0x8f, 0x88, 0x02, 0x80, 0x95, 0x06, 0x01, 0x04,
306− 0x10, 0x91, 0x80, 0x8e, 0x81, 0x96, 0x80, 0x8a,
307− 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, 0x10, 0x9d,
308− 0x08, 0x82, 0x8e, 0x80, 0x90, 0x00, 0x2a, 0x10,
309− 0x1a, 0x08, 0x00, 0x0a, 0x0a, 0x12, 0x8b, 0x95,
310− 0x80, 0xb3, 0x38, 0x10, 0x96, 0x80, 0x8f, 0x10,
311− 0x99, 0x14, 0x81, 0x9d, 0x03, 0x38, 0x10, 0x96,
312− 0x80, 0x89, 0x04, 0x10, 0x9f, 0x00, 0x81, 0x8e,
313− 0x81, 0x91, 0x38, 0x10, 0xa8, 0x08, 0x8f, 0x04,
314− 0x17, 0x82, 0x97, 0x2c, 0x91, 0x82, 0x97, 0x80,
315− 0x88, 0x00, 0x0e, 0xb9, 0xaf, 0x01, 0x8b, 0x86,
316− 0xb9, 0x08, 0x00, 0x20, 0x97, 0x00, 0x80, 0x89,
317− 0x01, 0x88, 0x01, 0x20, 0x80, 0x94, 0x83, 0x9f,
318− 0x80, 0xbe, 0x38, 0xa3, 0x9a, 0x84, 0xf2, 0xaa,
319− 0x93, 0x80, 0x8f, 0x2b, 0x1a, 0x02, 0x0e, 0x13,
320− 0x8c, 0x8b, 0x80, 0x90, 0xa5, 0x00, 0x20, 0x81,
321− 0xaa, 0x80, 0x41, 0x4c, 0x03, 0x0e, 0x00, 0x03,
322− 0x81, 0xa8, 0x03, 0x81, 0xa0, 0x03, 0x0e, 0x00,
323− 0x03, 0x81, 0x8e, 0x80, 0xb8, 0x03, 0x81, 0xc2,
324− 0xa4, 0x8f, 0x8f, 0xd5, 0x0d, 0x82, 0x42, 0x6b,
325− 0x81, 0x90, 0x80, 0x99, 0x84, 0xca, 0x82, 0x8a,
326− 0x86, 0x8c, 0x03, 0x8d, 0x91, 0x8d, 0x91, 0x8d,
327− 0x8c, 0x02, 0x8e, 0xb3, 0xa2, 0x03, 0x80, 0xc2,
328− 0xd8, 0x86, 0xa8, 0x00, 0x84, 0xc5, 0x89, 0x9e,
329− 0xb0, 0x9d, 0x0c, 0x8a, 0xab, 0x83, 0x99, 0xb5,
330− 0x96, 0x88, 0xb4, 0xd1, 0x80, 0xdc, 0xae, 0x90,
331− 0x86, 0xb6, 0x9d, 0x8c, 0x81, 0x89, 0xab, 0x99,
332− 0xa3, 0xa8, 0x82, 0x89, 0xa3, 0x81, 0x88, 0x86,
333− 0xaa, 0x0a, 0xa8, 0x18, 0x28, 0x0a, 0x04, 0x40,
334− 0xbf, 0xbf, 0x41, 0x15, 0x0d, 0x81, 0xa5, 0x0d,
335− 0x0f, 0x00, 0x00, 0x00, 0x80, 0x9e, 0x81, 0xb4,
336− 0x06, 0x00, 0x12, 0x06, 0x13, 0x0d, 0x83, 0x8c,
337− 0x22, 0x06, 0xf3, 0x80, 0x8c, 0x80, 0x8f, 0x8c,
338− 0xe4, 0x03, 0x01, 0x89, 0x00, 0x0d, 0x28, 0x00,
339− 0x00, 0x80, 0x8f, 0x0b, 0x24, 0x18, 0x90, 0xa8,
340− 0x4a, 0x76, 0xae, 0x80, 0xae, 0x80, 0x40, 0x84,
341− 0x2b, 0x11, 0x8b, 0xa5, 0x00, 0x20, 0x81, 0xb7,
342− 0x30, 0x8f, 0x96, 0x88, 0x30, 0x30, 0x30, 0x30,
343− 0x30, 0x30, 0x30, 0x86, 0x42, 0x25, 0x82, 0x98,
344− 0x88, 0x34, 0x0c, 0x83, 0xd5, 0x1c, 0x80, 0xd9,
345− 0x03, 0x84, 0xaa, 0x80, 0xdd, 0x90, 0x9a, 0xb4,
346− 0x8f, 0x41, 0xff, 0x59, 0xb5, 0xc9, 0x60, 0x51,
347− 0xef, 0x8f, 0x44, 0x8c, 0xc2, 0xad, 0x81, 0x41,
348− 0x0c, 0x82, 0x8f, 0x89, 0x81, 0x93, 0xae, 0x8f,
349− 0x9e, 0x81, 0xcf, 0xa6, 0x88, 0x81, 0xe6, 0x81,
350− 0xb4, 0x0c, 0xaf, 0x8a, 0x02, 0x03, 0x80, 0x96,
351− 0x9c, 0xb3, 0x8d, 0xb1, 0xbd, 0x2a, 0x00, 0x81,
352− 0x8a, 0x9b, 0x89, 0x96, 0x98, 0x9c, 0x86, 0xae,
353− 0x9b, 0x80, 0x8f, 0x20, 0x89, 0x89, 0x20, 0xa8,
354− 0x96, 0x10, 0x87, 0x93, 0x96, 0x10, 0x82, 0xb1,
355− 0x00, 0x11, 0x0c, 0x08, 0x00, 0x97, 0x11, 0x8a,
356− 0x32, 0x8b, 0x29, 0x29, 0x85, 0x88, 0x30, 0x30,
357− 0xaa, 0x80, 0x8b, 0x87, 0xf2, 0x9c, 0x60, 0x2b,
358− 0xa3, 0x8b, 0x96, 0x83, 0xb0, 0x60, 0x21, 0x03,
359− 0x41, 0x6d, 0x81, 0xe9, 0xa5, 0x86, 0x8b, 0x24,
360− 0x00, 0x89, 0x80, 0x8c, 0x04, 0x00, 0x01, 0x01,
361− 0x80, 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf, 0x81,
362− 0xb5, 0xa7, 0x8b, 0xf3, 0x20, 0x40, 0x86, 0xa3,
363− 0x99, 0x85, 0x99, 0x8a, 0xd8, 0x15, 0x0d, 0x0d,
364− 0x0a, 0xa2, 0x8b, 0x80, 0x99, 0x80, 0x92, 0x01,
365− 0x80, 0x8e, 0x81, 0x8d, 0xa1, 0xfa, 0xc4, 0xb4,
366− 0x41, 0x0a, 0x9c, 0x82, 0xb0, 0xae, 0x9f, 0x8c,
367− 0x9d, 0x84, 0xa5, 0x89, 0x9d, 0x81, 0xa3, 0x1f,
368− 0x04, 0xa9, 0x40, 0x9d, 0x91, 0xa3, 0x83, 0xa3,
369− 0x83, 0xa7, 0x87, 0xb3, 0x40, 0x9b, 0x41, 0x36,
370− 0x88, 0x95, 0x89, 0x87, 0x40, 0x97, 0x29, 0x00,
371− 0xab, 0x01, 0x10, 0x81, 0x96, 0x89, 0x96, 0x88,
372− 0x9e, 0xc0, 0x92, 0x01, 0x89, 0x95, 0x89, 0x99,
373− 0xc5, 0xb7, 0x29, 0xbf, 0x80, 0x8e, 0x18, 0x10,
374− 0x9c, 0xa9, 0x9c, 0x82, 0x9c, 0xa2, 0x38, 0x9b,
375− 0x9a, 0xb5, 0x89, 0x95, 0x89, 0x92, 0x8c, 0x91,
376− 0xed, 0xc8, 0xb6, 0xb2, 0x8c, 0xb2, 0x8c, 0xa3,
377− 0x41, 0xdb, 0x9c, 0x89, 0x07, 0x95, 0x40, 0x99,
378− 0x96, 0x8b, 0xb4, 0xca, 0xac, 0x9f, 0x98, 0x99,
379− 0xa3, 0x9c, 0x80, 0x8a, 0xa2, 0x10, 0x8b, 0xaf,
380− 0x8d, 0x83, 0x94, 0x00, 0x80, 0xa2, 0x91, 0x80,
381− 0x98, 0xd3, 0x30, 0x00, 0x18, 0x8e, 0x80, 0x89,
382− 0x86, 0xae, 0xa5, 0x39, 0x09, 0x95, 0x06, 0x01,
383− 0x04, 0x10, 0x91, 0x80, 0x8b, 0x84, 0x40, 0x9d,
384− 0xb4, 0x91, 0x83, 0x93, 0x80, 0x9f, 0xaf, 0x93,
385− 0x08, 0x80, 0x40, 0xb7, 0xae, 0xa8, 0x83, 0xa3,
386− 0xaf, 0x93, 0x80, 0xba, 0xaa, 0x8c, 0x80, 0xc6,
387− 0x9a, 0x40, 0xe4, 0xab, 0xf3, 0xbf, 0x9e, 0x80,
388− 0x40, 0x9f, 0x39, 0xa6, 0x8f, 0x00, 0x80, 0x9b,
389− 0x80, 0x89, 0xa7, 0x30, 0x94, 0x80, 0x8a, 0xad,
390− 0x92, 0x80, 0xa1, 0xb8, 0x41, 0x06, 0x88, 0x80,
391− 0xa4, 0x90, 0x80, 0xb0, 0x9d, 0xef, 0x30, 0x08,
392− 0xa5, 0x94, 0x80, 0x98, 0x28, 0x08, 0x9f, 0x8d,
393− 0x80, 0x41, 0x46, 0x92, 0x41, 0x0c, 0x43, 0x99,
394− 0xe5, 0xee, 0x90, 0x40, 0xc3, 0x4a, 0xbb, 0x44,
395− 0x2e, 0x4f, 0xd0, 0x42, 0x46, 0x60, 0x21, 0xb8,
396− 0x42, 0x38, 0x86, 0x9e, 0xf0, 0x9d, 0x91, 0xaf,
397− 0x8f, 0x83, 0x9e, 0x94, 0x84, 0x92, 0x42, 0xaf,
398− 0xbf, 0xff, 0xca, 0x20, 0xc1, 0x8c, 0xbf, 0x08,
399− 0x80, 0x9b, 0x57, 0xf7, 0x87, 0x42, 0xf2, 0x60,
400− 0x25, 0x0c, 0x41, 0x1e, 0xb0, 0x82, 0x90, 0x1f,
401− 0x41, 0x8b, 0x49, 0x03, 0xea, 0x84, 0x8c, 0x82,
402− 0x88, 0x86, 0x89, 0x57, 0x65, 0xd4, 0x80, 0xc6,
403− 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06,
404− 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03,
405− 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, 0x98,
406− 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, 0x9e,
407− 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80, 0x9e,
408− 0x80, 0x98, 0x07, 0x49, 0x33, 0xac, 0x89, 0x86,
409− 0x8f, 0x80, 0x41, 0x70, 0xab, 0x45, 0x13, 0x40,
410− 0xc4, 0xba, 0xc3, 0x30, 0x44, 0xb3, 0x18, 0x9a,
411− 0x01, 0x00, 0x08, 0x80, 0x89, 0x03, 0x00, 0x00,
412− 0x28, 0x18, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08,
413− 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x06,
414− 0x03, 0x03, 0x00, 0x80, 0x89, 0x80, 0x90, 0x22,
415− 0x04, 0x80, 0x90, 0x51, 0x43, 0x60, 0xa6, 0xd6,
416− 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd, 0x81, 0x56,
417− 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e, 0x42, 0x1d,
304+ 0xb4, 0x94, 0x80, 0x91, 0xbb, 0xb5, 0x10, 0x91,
305+ 0x06, 0x89, 0x8e, 0x8f, 0x1f, 0x09, 0x81, 0x95,
306+ 0x06, 0x00, 0x13, 0x10, 0x8f, 0x80, 0x8c, 0x08,
307+ 0x82, 0x8d, 0x81, 0x89, 0x07, 0x2b, 0x09, 0x95,
308+ 0x06, 0x01, 0x01, 0x01, 0x9e, 0x18, 0x80, 0x92,
309+ 0x82, 0x8f, 0x88, 0x02, 0x80, 0x95, 0x06, 0x01,
310+ 0x04, 0x10, 0x91, 0x80, 0x8e, 0x81, 0x96, 0x80,
311+ 0x8a, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04, 0x10,
312+ 0x9d, 0x08, 0x82, 0x8e, 0x80, 0x90, 0x00, 0x2a,
313+ 0x10, 0x1a, 0x08, 0x00, 0x0a, 0x0a, 0x12, 0x8b,
314+ 0x95, 0x80, 0xb3, 0x38, 0x10, 0x96, 0x80, 0x8f,
315+ 0x10, 0x99, 0x14, 0x81, 0x9d, 0x03, 0x38, 0x10,
316+ 0x96, 0x80, 0x89, 0x04, 0x10, 0x9f, 0x00, 0x81,
317+ 0x8e, 0x81, 0x90, 0x88, 0x02, 0x80, 0xa8, 0x08,
318+ 0x8f, 0x04, 0x17, 0x82, 0x97, 0x2c, 0x91, 0x82,
319+ 0x97, 0x80, 0x88, 0x00, 0x0e, 0xb9, 0xaf, 0x01,
320+ 0x8b, 0x86, 0xb9, 0x08, 0x00, 0x20, 0x97, 0x00,
321+ 0x80, 0x89, 0x01, 0x88, 0x01, 0x20, 0x80, 0x94,
322+ 0x83, 0x9f, 0x80, 0xbe, 0x38, 0xa3, 0x9a, 0x84,
323+ 0xf2, 0xaa, 0x93, 0x80, 0x8f, 0x2b, 0x1a, 0x02,
324+ 0x0e, 0x13, 0x8c, 0x8b, 0x80, 0x90, 0xa5, 0x00,
325+ 0x20, 0x81, 0xaa, 0x80, 0x41, 0x4c, 0x03, 0x0e,
326+ 0x00, 0x03, 0x81, 0xa8, 0x03, 0x81, 0xa0, 0x03,
327+ 0x0e, 0x00, 0x03, 0x81, 0x8e, 0x80, 0xb8, 0x03,
328+ 0x81, 0xc2, 0xa4, 0x8f, 0x8f, 0xd5, 0x0d, 0x82,
329+ 0x42, 0x6b, 0x81, 0x90, 0x80, 0x99, 0x84, 0xca,
330+ 0x82, 0x8a, 0x86, 0x8c, 0x03, 0x8d, 0x91, 0x8d,
331+ 0x91, 0x8d, 0x8c, 0x02, 0x8e, 0xb3, 0xa2, 0x03,
332+ 0x80, 0xc2, 0xd8, 0x86, 0xa8, 0x00, 0x84, 0xc5,
333+ 0x89, 0x9e, 0xb0, 0x9d, 0x0c, 0x8a, 0xab, 0x83,
334+ 0x99, 0xb5, 0x96, 0x88, 0xb4, 0xd1, 0x80, 0xdc,
335+ 0xae, 0x90, 0x86, 0xb6, 0x9d, 0x8c, 0x81, 0x89,
336+ 0xab, 0x99, 0xa3, 0xa8, 0x82, 0x89, 0xa3, 0x81,
337+ 0x88, 0x86, 0xaa, 0x0a, 0xa8, 0x18, 0x28, 0x0a,
338+ 0x04, 0x40, 0xbf, 0xbf, 0x41, 0x15, 0x0d, 0x81,
339+ 0xa5, 0x0d, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x9e,
340+ 0x81, 0xb4, 0x06, 0x00, 0x12, 0x06, 0x13, 0x0d,
341+ 0x83, 0x8c, 0x22, 0x06, 0xf3, 0x80, 0x8c, 0x80,
342+ 0x8f, 0x8c, 0xe4, 0x03, 0x01, 0x89, 0x00, 0x0d,
343+ 0x28, 0x00, 0x00, 0x80, 0x8f, 0x0b, 0x24, 0x18,
344+ 0x90, 0xa8, 0x4a, 0x76, 0xae, 0x80, 0xae, 0x80,
345+ 0x40, 0x84, 0x2b, 0x11, 0x8b, 0xa5, 0x00, 0x20,
346+ 0x81, 0xb7, 0x30, 0x8f, 0x96, 0x88, 0x30, 0x30,
347+ 0x30, 0x30, 0x30, 0x30, 0x30, 0x86, 0x42, 0x25,
348+ 0x82, 0x98, 0x88, 0x34, 0x0c, 0x83, 0xd5, 0x1c,
349+ 0x80, 0xd9, 0x03, 0x84, 0xaa, 0x80, 0xdd, 0x90,
350+ 0x9f, 0xaf, 0x8f, 0x41, 0xff, 0x59, 0xbf, 0xbf,
351+ 0x60, 0x51, 0xfc, 0x82, 0x44, 0x8c, 0xc2, 0xad,
352+ 0x81, 0x41, 0x0c, 0x82, 0x8f, 0x89, 0x81, 0x93,
353+ 0xae, 0x8f, 0x9e, 0x81, 0xcf, 0xa6, 0x88, 0x81,
354+ 0xe6, 0x81, 0xb4, 0x81, 0x88, 0xa9, 0x8c, 0x02,
355+ 0x03, 0x80, 0x96, 0x9c, 0xb3, 0x8d, 0xb1, 0xbd,
356+ 0x2a, 0x00, 0x81, 0x8a, 0x9b, 0x89, 0x96, 0x98,
357+ 0x9c, 0x86, 0xae, 0x9b, 0x80, 0x8f, 0x20, 0x89,
358+ 0x89, 0x20, 0xa8, 0x96, 0x10, 0x87, 0x93, 0x96,
359+ 0x10, 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08, 0x00,
360+ 0x97, 0x11, 0x8a, 0x32, 0x8b, 0x29, 0x29, 0x85,
361+ 0x88, 0x30, 0x30, 0xaa, 0x80, 0x8d, 0x85, 0xf2,
362+ 0x9c, 0x60, 0x2b, 0xa3, 0x8b, 0x96, 0x83, 0xb0,
363+ 0x60, 0x21, 0x03, 0x41, 0x6d, 0x81, 0xe9, 0xa5,
364+ 0x86, 0x8b, 0x24, 0x00, 0x89, 0x80, 0x8c, 0x04,
365+ 0x00, 0x01, 0x01, 0x80, 0xeb, 0xa0, 0x41, 0x6a,
366+ 0x91, 0xbf, 0x81, 0xb5, 0xa7, 0x8b, 0xf3, 0x20,
367+ 0x40, 0x86, 0xa3, 0x99, 0x85, 0x99, 0x8a, 0xd8,
368+ 0x15, 0x0d, 0x0d, 0x0a, 0xa2, 0x8b, 0x80, 0x99,
369+ 0x80, 0x92, 0x01, 0x80, 0x8e, 0x81, 0x8d, 0xa1,
370+ 0xfa, 0xc4, 0xb4, 0x41, 0x0a, 0x9c, 0x82, 0xb0,
371+ 0xae, 0x9f, 0x8c, 0x9d, 0x84, 0xa5, 0x89, 0x9d,
372+ 0x81, 0xa3, 0x1f, 0x04, 0xa9, 0x40, 0x9d, 0x91,
373+ 0xa3, 0x83, 0xa3, 0x83, 0xa7, 0x87, 0xb3, 0x40,
374+ 0x9b, 0x41, 0x36, 0x88, 0x95, 0x89, 0x87, 0x40,
375+ 0x97, 0x29, 0x00, 0xab, 0x01, 0x10, 0x81, 0x96,
376+ 0x89, 0x96, 0x88, 0x9e, 0xc0, 0x92, 0x01, 0x89,
377+ 0x95, 0x89, 0x99, 0xc5, 0xb7, 0x29, 0xbf, 0x80,
378+ 0x8e, 0x18, 0x10, 0x9c, 0xa9, 0x9c, 0x82, 0x9c,
379+ 0xa2, 0x38, 0x9b, 0x9a, 0xb5, 0x89, 0x95, 0x89,
380+ 0x92, 0x8c, 0x91, 0xed, 0xc8, 0xb6, 0xb2, 0x8c,
381+ 0xb2, 0x8c, 0xa3, 0x41, 0x5b, 0xa9, 0x29, 0xcd,
382+ 0x9c, 0x89, 0x07, 0x95, 0xe9, 0x94, 0x9a, 0x96,
383+ 0x8b, 0xb4, 0xca, 0xac, 0x9f, 0x98, 0x99, 0xa3,
384+ 0x9c, 0x01, 0x07, 0xa2, 0x10, 0x8b, 0xaf, 0x8d,
385+ 0x83, 0x94, 0x00, 0x80, 0xa2, 0x91, 0x80, 0x98,
386+ 0xd3, 0x30, 0x00, 0x18, 0x8e, 0x80, 0x89, 0x86,
387+ 0xae, 0xa5, 0x39, 0x09, 0x95, 0x06, 0x01, 0x04,
388+ 0x10, 0x91, 0x80, 0x8b, 0x84, 0x40, 0x9d, 0xb4,
389+ 0x91, 0x83, 0x93, 0x82, 0x9d, 0xaf, 0x93, 0x08,
390+ 0x80, 0x40, 0xb7, 0xae, 0xa8, 0x83, 0xa3, 0xaf,
391+ 0x93, 0x80, 0xba, 0xaa, 0x8c, 0x80, 0xc6, 0x9a,
392+ 0x40, 0xe4, 0xab, 0xf3, 0xbf, 0x9e, 0x39, 0x01,
393+ 0x38, 0x08, 0x97, 0x8e, 0x00, 0x80, 0xdd, 0x39,
394+ 0xa6, 0x8f, 0x00, 0x80, 0x9b, 0x80, 0x89, 0xa7,
395+ 0x30, 0x94, 0x80, 0x8a, 0xad, 0x92, 0x80, 0xa1,
396+ 0xb8, 0x41, 0x06, 0x88, 0x80, 0xa4, 0x90, 0x80,
397+ 0xb0, 0x9d, 0xef, 0x30, 0x08, 0xa5, 0x94, 0x80,
398+ 0x98, 0x28, 0x08, 0x9f, 0x8d, 0x80, 0x41, 0x46,
399+ 0x92, 0x40, 0xbc, 0x80, 0xce, 0x43, 0x99, 0xe5,
400+ 0xee, 0x90, 0x40, 0xc3, 0x4a, 0xbb, 0x44, 0x2e,
401+ 0x4f, 0xd0, 0x42, 0x46, 0x60, 0x21, 0xb8, 0x42,
402+ 0x38, 0x86, 0x9e, 0xf0, 0x9d, 0x91, 0xaf, 0x8f,
403+ 0x83, 0x9e, 0x94, 0x84, 0x92, 0x42, 0xaf, 0xbf,
404+ 0xff, 0xca, 0x20, 0xc1, 0x8c, 0xbf, 0x08, 0x80,
405+ 0x9b, 0x57, 0xf7, 0x87, 0x44, 0xd5, 0xa9, 0x88,
406+ 0x60, 0x22, 0xf6, 0x41, 0x1e, 0xb0, 0x82, 0x90,
407+ 0x1f, 0x41, 0x8b, 0x49, 0x03, 0xea, 0x84, 0x8c,
408+ 0x82, 0x88, 0x86, 0x89, 0x57, 0x65, 0xd4, 0x80,
409+ 0xc6, 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00,
410+ 0x06, 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b,
411+ 0x03, 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81,
412+ 0x98, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80,
413+ 0x9e, 0x80, 0x98, 0x80, 0x9e, 0x80, 0x98, 0x80,
414+ 0x9e, 0x80, 0x98, 0x07, 0x49, 0x33, 0xac, 0x89,
415+ 0x86, 0x8f, 0x80, 0x41, 0x70, 0xab, 0x45, 0x13,
416+ 0x40, 0xc4, 0xba, 0xc3, 0x30, 0x44, 0xb3, 0x18,
417+ 0x9a, 0x01, 0x00, 0x08, 0x80, 0x89, 0x03, 0x00,
418+ 0x00, 0x28, 0x18, 0x00, 0x00, 0x02, 0x01, 0x00,
419+ 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b,
420+ 0x06, 0x03, 0x03, 0x00, 0x80, 0x89, 0x80, 0x90,
421+ 0x22, 0x04, 0x80, 0x90, 0x51, 0x43, 0x60, 0xa6,
422+ 0xdd, 0xa1, 0x50, 0x34, 0x8a, 0x40, 0xdd, 0x81,
423+ 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e, 0x42,
424+ 0x1d, 0x45, 0xe1, 0x53, 0x4a,
418425 };
419426
420−static const uint8_t unicode_prop_ID_Start_index[96] = {
421− 0xf6, 0x03, 0x20, 0xa6, 0x07, 0x00, 0xb1, 0x09,
422− 0x00, 0xba, 0x0a, 0x00, 0xd1, 0x0b, 0x20, 0x62,
423− 0x0d, 0x40, 0x01, 0x0f, 0x20, 0x5e, 0x12, 0x00,
424− 0xf9, 0x16, 0x00, 0x17, 0x1a, 0x20, 0xc0, 0x1d,
425− 0x20, 0x9d, 0x20, 0x00, 0x68, 0x2d, 0x00, 0x00,
426− 0x32, 0x20, 0xc0, 0xa7, 0x20, 0x29, 0xaa, 0x00,
427− 0xa4, 0xd7, 0x20, 0xc8, 0xfd, 0x20, 0x75, 0x01,
428− 0x01, 0x37, 0x07, 0x01, 0x36, 0x0a, 0x21, 0xf7,
429− 0x0f, 0x21, 0xa9, 0x12, 0x01, 0x30, 0x16, 0x21,
430− 0x8a, 0x1a, 0x01, 0x9a, 0x23, 0x01, 0x80, 0x6e,
431− 0x21, 0x89, 0xbc, 0x21, 0xc1, 0xd6, 0x01, 0xc5,
432− 0xe8, 0x21, 0x73, 0xee, 0x01, 0x1e, 0xfa, 0x02,
427+static const uint8_t unicode_prop_ID_Start_index[99] = {
428+ 0xf6, 0x03, 0x20, 0xa6, 0x07, 0x00, 0xa9, 0x09,
429+ 0x00, 0xb4, 0x0a, 0x00, 0xba, 0x0b, 0x00, 0x3e,
430+ 0x0d, 0x00, 0xe0, 0x0e, 0x20, 0x57, 0x12, 0x00,
431+ 0xeb, 0x16, 0x00, 0xca, 0x19, 0x20, 0xc0, 0x1d,
432+ 0x60, 0x80, 0x20, 0x00, 0x2e, 0x2d, 0x00, 0xc0,
433+ 0x31, 0x20, 0x89, 0xa7, 0x20, 0xf0, 0xa9, 0x00,
434+ 0xe3, 0xab, 0x00, 0x3e, 0xfd, 0x00, 0xfb, 0x00,
435+ 0x21, 0x37, 0x07, 0x61, 0x01, 0x0a, 0x01, 0x1d,
436+ 0x0f, 0x21, 0x2c, 0x12, 0x01, 0xc8, 0x14, 0x21,
437+ 0xd1, 0x19, 0x21, 0x47, 0x1d, 0x01, 0x39, 0x6a,
438+ 0x21, 0x09, 0x8d, 0x01, 0xbc, 0xd4, 0x01, 0xa9,
439+ 0xd7, 0x21, 0x3a, 0xee, 0x01, 0xde, 0xa6, 0x22,
440+ 0x4b, 0x13, 0x03,
433441 };
434442
435−static const uint8_t unicode_prop_ID_Continue1_table[607] = {
443+static const uint8_t unicode_prop_ID_Continue1_table[626] = {
436444 0xaf, 0x89, 0xa4, 0x80, 0xd6, 0x80, 0x42, 0x47,
437445 0xef, 0x96, 0x80, 0x40, 0xfa, 0x84, 0x41, 0x08,
438446 0xac, 0x00, 0x01, 0x01, 0x00, 0xc7, 0x8a, 0xaf,
@@ -445,14 +453,14 @@ static const uint8_t unicode_prop_ID_Continue1_table[607] = { · 6 unmodified lines
445453 0x09, 0x89, 0x8d, 0x01, 0x82, 0xb7, 0x00, 0x23,
446454 0x09, 0x12, 0x80, 0x93, 0x8b, 0x10, 0x8a, 0x82,
447455 0xb7, 0x00, 0x38, 0x10, 0x82, 0x93, 0x09, 0x89,
448− 0x89, 0x28, 0x82, 0xb7, 0x00, 0x31, 0x09, 0x17,
449− 0x81, 0x89, 0x09, 0x89, 0x91, 0x80, 0xba, 0x22,
456+ 0x89, 0x28, 0x82, 0xb7, 0x00, 0x31, 0x09, 0x16,
457+ 0x82, 0x89, 0x09, 0x89, 0x91, 0x80, 0xba, 0x22,
450458 0x10, 0x83, 0x88, 0x80, 0x8d, 0x89, 0x8f, 0x84,
451459 0xb8, 0x30, 0x10, 0x1e, 0x81, 0x8a, 0x09, 0x89,
452460 0x90, 0x82, 0xb7, 0x00, 0x30, 0x10, 0x1e, 0x81,
453461 0x8a, 0x09, 0x89, 0x8f, 0x83, 0xb6, 0x08, 0x30,
454− 0x10, 0x83, 0x88, 0x80, 0x89, 0x09, 0x89, 0x91,
455− 0x81, 0xc5, 0x03, 0x28, 0x00, 0x3d, 0x89, 0x09,
462+ 0x10, 0x83, 0x88, 0x80, 0x89, 0x09, 0x89, 0x90,
463+ 0x82, 0xc5, 0x03, 0x28, 0x00, 0x3d, 0x89, 0x09,
456464 0xbc, 0x01, 0x86, 0x8b, 0x38, 0x89, 0xd6, 0x01,
457465 0x88, 0x8a, 0x29, 0x89, 0xbd, 0x0d, 0x89, 0x8a,
458466 0x00, 0x00, 0x03, 0x81, 0xb0, 0x93, 0x01, 0x84,
@@ -464,67 +472,70 @@ static const uint8_t unicode_prop_ID_Continue1_table[607] = { · 5 unmodified lines
464472 0x89, 0x40, 0x8e, 0x80, 0xf5, 0x8b, 0x83, 0x8b,
465473 0x89, 0x89, 0xff, 0x8a, 0xbb, 0x84, 0xb8, 0x89,
466474 0x80, 0x9c, 0x81, 0x8a, 0x85, 0x89, 0x95, 0x8d,
467− 0xc1, 0x84, 0xae, 0x90, 0x8a, 0x89, 0x90, 0x88,
468− 0x8b, 0x82, 0x9d, 0x8c, 0x81, 0x89, 0xab, 0x8d,
469− 0xaf, 0x93, 0x87, 0x89, 0x85, 0x89, 0xf5, 0x10,
470− 0x94, 0x18, 0x28, 0x0a, 0x40, 0xc5, 0xb9, 0x04,
471− 0x42, 0x3e, 0x81, 0x92, 0x80, 0xfa, 0x8c, 0x18,
472− 0x82, 0x8b, 0x4b, 0xfd, 0x82, 0x40, 0x8c, 0x80,
473− 0xdf, 0x9f, 0x42, 0x29, 0x85, 0xe8, 0x81, 0x60,
474− 0x75, 0x84, 0x89, 0xc4, 0x03, 0x89, 0x9f, 0x81,
475− 0xcf, 0x81, 0x41, 0x0f, 0x02, 0x03, 0x80, 0x96,
476− 0x84, 0xd7, 0x81, 0xb1, 0x91, 0x89, 0x89, 0x85,
477− 0x91, 0x8c, 0x8a, 0x9b, 0x87, 0x98, 0x8c, 0xab,
478− 0x83, 0xae, 0x8d, 0x8e, 0x89, 0x8a, 0x80, 0x89,
479− 0x89, 0xae, 0x8d, 0x8b, 0x07, 0x09, 0x89, 0xa0,
480− 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08, 0x80, 0xa8,
481− 0x24, 0x81, 0x40, 0xeb, 0x38, 0x09, 0x89, 0x60,
482− 0x4f, 0x23, 0x80, 0x42, 0xe0, 0x8f, 0x8f, 0x8f,
483− 0x11, 0x97, 0x82, 0x40, 0xbf, 0x89, 0xa4, 0x80,
484− 0x42, 0xbc, 0x80, 0x40, 0xe1, 0x80, 0x40, 0x94,
485− 0x84, 0x41, 0x24, 0x89, 0x45, 0x56, 0x10, 0x0c,
486− 0x83, 0xa7, 0x13, 0x80, 0x40, 0xa4, 0x81, 0x42,
487− 0x3c, 0x1f, 0x89, 0x42, 0x0b, 0x8a, 0x40, 0xae,
488− 0x82, 0xb4, 0x8e, 0x9e, 0x89, 0x8e, 0x83, 0xac,
489− 0x8a, 0xb4, 0x89, 0x2a, 0xa3, 0x8d, 0x80, 0x89,
490− 0x21, 0xab, 0x80, 0x8b, 0x82, 0xaf, 0x8d, 0x3b,
491− 0x82, 0x89, 0xd1, 0x8b, 0x28, 0x40, 0x9f, 0x8b,
492− 0x84, 0x89, 0x2b, 0xb6, 0x08, 0x31, 0x09, 0x82,
493− 0x88, 0x80, 0x89, 0x09, 0x32, 0x84, 0x40, 0xbf,
494− 0x91, 0x88, 0x89, 0x18, 0xd0, 0x93, 0x8b, 0x89,
495− 0x40, 0xd4, 0x31, 0x88, 0x9a, 0x81, 0xd1, 0x90,
496− 0x8e, 0x89, 0xd0, 0x8c, 0x87, 0x89, 0xd2, 0x8e,
497− 0x83, 0x89, 0x40, 0xf1, 0x8e, 0x40, 0xa4, 0x89,
498− 0x40, 0xe6, 0x31, 0x32, 0x80, 0x9b, 0x89, 0xa7,
499− 0x30, 0x1f, 0x80, 0x88, 0x8a, 0xad, 0x8f, 0x41,
500− 0x94, 0x38, 0x87, 0x8f, 0x89, 0xb7, 0x95, 0x80,
501− 0x8d, 0xf9, 0x2a, 0x00, 0x08, 0x30, 0x07, 0x89,
502− 0xaf, 0x20, 0x08, 0x27, 0x89, 0x41, 0x48, 0x83,
503− 0x60, 0x4b, 0x68, 0x89, 0x40, 0x85, 0x84, 0xba,
504− 0x86, 0x98, 0x89, 0x43, 0xf4, 0x00, 0xb6, 0x33,
505− 0x60, 0x4d, 0x09, 0x81, 0x54, 0xc5, 0x22, 0x2f,
475+ 0x01, 0xbe, 0x84, 0xae, 0x90, 0x8a, 0x89, 0x90,
476+ 0x88, 0x8b, 0x82, 0x9d, 0x8c, 0x81, 0x89, 0xab,
477+ 0x8d, 0xaf, 0x93, 0x87, 0x89, 0x85, 0x89, 0xf5,
478+ 0x10, 0x94, 0x18, 0x28, 0x0a, 0x40, 0xc5, 0xb9,
479+ 0x04, 0x42, 0x3e, 0x81, 0x92, 0x80, 0xfa, 0x8c,
480+ 0x18, 0x82, 0x8b, 0x4b, 0xfd, 0x82, 0x40, 0x8c,
481+ 0x80, 0xdf, 0x9f, 0x42, 0x29, 0x85, 0xe8, 0x81,
482+ 0x60, 0x75, 0x84, 0x89, 0xc4, 0x03, 0x89, 0x9f,
483+ 0x81, 0xcf, 0x81, 0x41, 0x0f, 0x02, 0x03, 0x80,
484+ 0x96, 0x23, 0x80, 0xd2, 0x81, 0xb1, 0x91, 0x89,
485+ 0x89, 0x85, 0x91, 0x8c, 0x8a, 0x9b, 0x87, 0x98,
486+ 0x8c, 0xab, 0x83, 0xae, 0x8d, 0x8e, 0x89, 0x8a,
487+ 0x80, 0x89, 0x89, 0xae, 0x8d, 0x8b, 0x07, 0x09,
488+ 0x89, 0xa0, 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x08,
489+ 0x80, 0xa8, 0x24, 0x81, 0x40, 0xeb, 0x38, 0x09,
490+ 0x89, 0x60, 0x4f, 0x23, 0x80, 0x42, 0xe0, 0x8f,
491+ 0x8f, 0x8f, 0x11, 0x97, 0x82, 0x40, 0xbf, 0x89,
492+ 0xa4, 0x80, 0x42, 0xbc, 0x80, 0x40, 0xe1, 0x80,
493+ 0x40, 0x94, 0x84, 0x41, 0x24, 0x89, 0x45, 0x56,
494+ 0x10, 0x0c, 0x83, 0xa7, 0x13, 0x80, 0x40, 0xa4,
495+ 0x81, 0x42, 0x3c, 0x1f, 0x89, 0x41, 0x70, 0x81,
496+ 0x40, 0x98, 0x8a, 0x40, 0xae, 0x82, 0xb4, 0x8e,
497+ 0x9e, 0x89, 0x8e, 0x83, 0xac, 0x8a, 0xb4, 0x89,
498+ 0x2a, 0xa3, 0x8d, 0x80, 0x89, 0x21, 0xab, 0x80,
499+ 0x8b, 0x82, 0xaf, 0x8d, 0x3b, 0x80, 0x8b, 0xd1,
500+ 0x8b, 0x28, 0x40, 0x9f, 0x8b, 0x84, 0x89, 0x2b,
501+ 0xb6, 0x08, 0x31, 0x09, 0x82, 0x88, 0x80, 0x89,
502+ 0x09, 0x32, 0x84, 0x40, 0xbf, 0x91, 0x88, 0x89,
503+ 0x18, 0xd0, 0x93, 0x8b, 0x89, 0x40, 0xd4, 0x31,
504+ 0x88, 0x9a, 0x81, 0xd1, 0x90, 0x8e, 0x89, 0xd0,
505+ 0x8c, 0x87, 0x89, 0xd2, 0x8e, 0x83, 0x89, 0x40,
506+ 0xf1, 0x8e, 0x40, 0xa4, 0x89, 0xc5, 0x28, 0x09,
507+ 0x18, 0x00, 0x81, 0x8b, 0x89, 0xf6, 0x31, 0x32,
508+ 0x80, 0x9b, 0x89, 0xa7, 0x30, 0x1f, 0x80, 0x88,
509+ 0x8a, 0xad, 0x8f, 0x41, 0x94, 0x38, 0x87, 0x8f,
510+ 0x89, 0xb7, 0x95, 0x80, 0x8d, 0xf9, 0x2a, 0x00,
511+ 0x08, 0x30, 0x07, 0x89, 0xaf, 0x20, 0x08, 0x27,
512+ 0x89, 0x41, 0x48, 0x83, 0x60, 0x4b, 0x68, 0x89,
513+ 0x40, 0x85, 0x84, 0xba, 0x86, 0x98, 0x89, 0x43,
514+ 0xf4, 0x00, 0xb6, 0x33, 0xd0, 0x80, 0x8a, 0x81,
515+ 0x60, 0x4c, 0xaa, 0x81, 0x54, 0xc5, 0x22, 0x2f,
506516 0x39, 0x86, 0x9d, 0x83, 0x40, 0x93, 0x82, 0x45,
507517 0x88, 0xb1, 0x41, 0xff, 0xb6, 0x83, 0xb1, 0x38,
508518 0x8d, 0x80, 0x95, 0x20, 0x8e, 0x45, 0x4f, 0x30,
509519 0x90, 0x0e, 0x01, 0x04, 0x41, 0x04, 0x86, 0x88,
510520 0x89, 0x41, 0xa1, 0x8d, 0x45, 0xd5, 0x86, 0xec,
511− 0x34, 0x89, 0x6c, 0x17, 0xa5, 0x40, 0xef,
521+ 0x34, 0x89, 0x52, 0x95, 0x89, 0x6c, 0x05, 0x05,
522+ 0x40, 0xef,
512523 };
513524
514−static const uint8_t unicode_prop_ID_Continue1_index[57] = {
525+static const uint8_t unicode_prop_ID_Continue1_index[60] = {
515526 0xfa, 0x06, 0x00, 0x84, 0x09, 0x00, 0xf0, 0x0a,
516527 0x00, 0x70, 0x0c, 0x00, 0xf4, 0x0d, 0x00, 0x4a,
517− 0x10, 0x20, 0x1a, 0x18, 0x20, 0x74, 0x1b, 0x00,
518− 0xe2, 0x20, 0x00, 0x28, 0xa8, 0x20, 0x7e, 0xaa,
519− 0x20, 0x40, 0xff, 0x00, 0x03, 0x10, 0x21, 0xeb,
520− 0x12, 0x01, 0x41, 0x16, 0x01, 0x40, 0x1c, 0x61,
521− 0x37, 0x6b, 0x21, 0x76, 0xda, 0x01, 0xf0, 0x01,
522− 0x0e,
528+ 0x10, 0x20, 0x1a, 0x18, 0x20, 0x74, 0x1b, 0x20,
529+ 0xdd, 0x20, 0x00, 0x0c, 0xa8, 0x00, 0x5a, 0xaa,
530+ 0x20, 0x1a, 0xff, 0x00, 0xad, 0x0e, 0x01, 0x38,
531+ 0x12, 0x21, 0xc1, 0x15, 0x21, 0xe5, 0x19, 0x21,
532+ 0xaa, 0x1d, 0x21, 0x8c, 0xd1, 0x41, 0x4a, 0xe1,
533+ 0x21, 0xf0, 0x01, 0x0e,
523534 };
524535
525536 #ifdef CONFIG_ALL_UNICODE
526537
527−static const uint8_t unicode_cc_table[831] = {
538+static const uint8_t unicode_cc_table[851] = {
528539 0xb2, 0xcf, 0xd4, 0x00, 0xe8, 0x03, 0xdc, 0x00,
529540 0xe8, 0x00, 0xd8, 0x04, 0xdc, 0x01, 0xca, 0x03,
530541 0xdc, 0x01, 0xca, 0x0a, 0xdc, 0x04, 0x01, 0x03,
@@ -574,77 +585,81 @@ static const uint8_t unicode_cc_table[831] = { · 43 unmodified lines
574585 0x9a, 0x00, 0xe4, 0xb0, 0x5e, 0x00, 0xde, 0xc0,
575586 0x00, 0xdc, 0xb0, 0xaa, 0xc0, 0x00, 0xdc, 0xb0,
576587 0x16, 0x00, 0x09, 0x93, 0xc7, 0x81, 0x00, 0xdc,
577− 0xaf, 0xc4, 0x05, 0xdc, 0xc1, 0x00, 0xdc, 0xb0,
578− 0x45, 0x00, 0x07, 0x8e, 0x00, 0x09, 0xa5, 0xc0,
579− 0x00, 0xdc, 0xc6, 0xb0, 0x05, 0x01, 0x09, 0xb0,
580− 0x09, 0x00, 0x07, 0x8a, 0x01, 0x09, 0xb0, 0x12,
581− 0x00, 0x07, 0xb0, 0x67, 0xc2, 0x41, 0x00, 0x04,
582− 0xdc, 0xc1, 0x03, 0xdc, 0xc0, 0x41, 0x00, 0x05,
583− 0x01, 0x83, 0x00, 0xdc, 0x85, 0xc0, 0x82, 0xc1,
584− 0xb0, 0x95, 0xc1, 0x00, 0xdc, 0xc6, 0x00, 0xdc,
585− 0xc1, 0x00, 0xea, 0x00, 0xd6, 0x00, 0xdc, 0x00,
586− 0xca, 0xe4, 0x00, 0xe8, 0x01, 0xe4, 0x00, 0xdc,
587− 0x80, 0xc0, 0x00, 0xe9, 0x00, 0xdc, 0xc0, 0x00,
588− 0xdc, 0xb2, 0x9f, 0xc1, 0x01, 0x01, 0xc3, 0x02,
589− 0x01, 0xc1, 0x83, 0xc0, 0x82, 0x01, 0x01, 0xc0,
590− 0x00, 0xdc, 0xc0, 0x01, 0x01, 0x03, 0xdc, 0xc0,
591− 0xb8, 0x03, 0xcd, 0xc2, 0xb0, 0x5c, 0x00, 0x09,
592− 0xb0, 0x2f, 0xdf, 0xb1, 0xf9, 0x00, 0xda, 0x00,
593− 0xe4, 0x00, 0xe8, 0x00, 0xde, 0x01, 0xe0, 0xb0,
594− 0x38, 0x01, 0x08, 0xb8, 0x6d, 0xa3, 0xc0, 0x83,
595− 0xc9, 0x9f, 0xc1, 0xb0, 0x1f, 0xc1, 0xb0, 0xe3,
596− 0x00, 0x09, 0xb0, 0x8c, 0x00, 0x09, 0x9a, 0xd1,
597− 0xb0, 0x08, 0x02, 0xdc, 0xa4, 0x00, 0x09, 0xb0,
598− 0x2e, 0x00, 0x07, 0x8b, 0x00, 0x09, 0xb0, 0xbe,
599− 0xc0, 0x80, 0xc1, 0x00, 0xdc, 0x81, 0xc1, 0x84,
600− 0xc1, 0x80, 0xc0, 0xb0, 0x03, 0x00, 0x09, 0xb0,
601− 0xc5, 0x00, 0x09, 0xb8, 0x46, 0xff, 0x00, 0x1a,
602− 0xb2, 0xd0, 0xc6, 0x06, 0xdc, 0xc1, 0xb3, 0x9c,
603− 0x00, 0xdc, 0xb0, 0xb1, 0x00, 0xdc, 0xb0, 0x64,
604− 0xc4, 0xb6, 0x61, 0x00, 0xdc, 0x80, 0xc0, 0xa7,
605− 0xc0, 0x00, 0x01, 0x00, 0xdc, 0x83, 0x00, 0x09,
606− 0xb0, 0x74, 0xc0, 0x00, 0xdc, 0xb2, 0x0c, 0xc3,
607− 0xb1, 0xed, 0x01, 0xdc, 0xc2, 0x00, 0xdc, 0xc0,
608− 0x03, 0xdc, 0xb0, 0xc4, 0x00, 0x09, 0xb0, 0x07,
609− 0x00, 0x09, 0xb0, 0x08, 0x00, 0x09, 0x00, 0x07,
610− 0xb0, 0x14, 0xc2, 0xaf, 0x01, 0x09, 0xb0, 0x0d,
611− 0x00, 0x07, 0xb0, 0x1b, 0x00, 0x09, 0x88, 0x00,
612− 0x07, 0xb0, 0x39, 0x00, 0x09, 0x00, 0x07, 0xb0,
613− 0x81, 0x00, 0x07, 0x00, 0x09, 0xb0, 0x1f, 0x01,
614− 0x07, 0x8f, 0x00, 0x09, 0x97, 0xc6, 0x82, 0xc4,
615− 0xb0, 0x9c, 0x00, 0x09, 0x82, 0x00, 0x07, 0x96,
616− 0xc0, 0xb0, 0x32, 0x00, 0x09, 0x00, 0x07, 0xb0,
617− 0xca, 0x00, 0x09, 0x00, 0x07, 0xb0, 0x4d, 0x00,
618− 0x09, 0xb0, 0x45, 0x00, 0x09, 0x00, 0x07, 0xb0,
619− 0x42, 0x00, 0x09, 0xb0, 0xdc, 0x00, 0x09, 0x00,
620− 0x07, 0xb1, 0x74, 0x00, 0x09, 0xb0, 0x22, 0x00,
588+ 0xaf, 0xc4, 0x05, 0xdc, 0xc1, 0x00, 0xdc, 0x80,
589+ 0x01, 0xdc, 0xb0, 0x42, 0x00, 0x07, 0x8e, 0x00,
590+ 0x09, 0xa5, 0xc0, 0x00, 0xdc, 0xc6, 0xb0, 0x05,
591+ 0x01, 0x09, 0xb0, 0x09, 0x00, 0x07, 0x8a, 0x01,
592+ 0x09, 0xb0, 0x12, 0x00, 0x07, 0xb0, 0x67, 0xc2,
593+ 0x41, 0x00, 0x04, 0xdc, 0xc1, 0x03, 0xdc, 0xc0,
594+ 0x41, 0x00, 0x05, 0x01, 0x83, 0x00, 0xdc, 0x85,
595+ 0xc0, 0x82, 0xc1, 0xb0, 0x95, 0xc1, 0x00, 0xdc,
596+ 0xc6, 0x00, 0xdc, 0xc1, 0x00, 0xea, 0x00, 0xd6,
597+ 0x00, 0xdc, 0x00, 0xca, 0xe4, 0x00, 0xe8, 0x01,
598+ 0xe4, 0x00, 0xdc, 0x80, 0xc0, 0x00, 0xe9, 0x00,
599+ 0xdc, 0xc0, 0x00, 0xdc, 0xb2, 0x9f, 0xc1, 0x01,
600+ 0x01, 0xc3, 0x02, 0x01, 0xc1, 0x83, 0xc0, 0x82,
601+ 0x01, 0x01, 0xc0, 0x00, 0xdc, 0xc0, 0x01, 0x01,
602+ 0x03, 0xdc, 0xc0, 0xb8, 0x03, 0xcd, 0xc2, 0xb0,
603+ 0x5c, 0x00, 0x09, 0xb0, 0x2f, 0xdf, 0xb1, 0xf9,
604+ 0x00, 0xda, 0x00, 0xe4, 0x00, 0xe8, 0x00, 0xde,
605+ 0x01, 0xe0, 0xb0, 0x38, 0x01, 0x08, 0xb8, 0x6d,
606+ 0xa3, 0xc0, 0x83, 0xc9, 0x9f, 0xc1, 0xb0, 0x1f,
607+ 0xc1, 0xb0, 0xe3, 0x00, 0x09, 0xa4, 0x00, 0x09,
608+ 0xb0, 0x66, 0x00, 0x09, 0x9a, 0xd1, 0xb0, 0x08,
609+ 0x02, 0xdc, 0xa4, 0x00, 0x09, 0xb0, 0x2e, 0x00,
610+ 0x07, 0x8b, 0x00, 0x09, 0xb0, 0xbe, 0xc0, 0x80,
611+ 0xc1, 0x00, 0xdc, 0x81, 0xc1, 0x84, 0xc1, 0x80,
612+ 0xc0, 0xb0, 0x03, 0x00, 0x09, 0xb0, 0xc5, 0x00,
613+ 0x09, 0xb8, 0x46, 0xff, 0x00, 0x1a, 0xb2, 0xd0,
614+ 0xc6, 0x06, 0xdc, 0xc1, 0xb3, 0x9c, 0x00, 0xdc,
615+ 0xb0, 0xb1, 0x00, 0xdc, 0xb0, 0x64, 0xc4, 0xb6,
616+ 0x61, 0x00, 0xdc, 0x80, 0xc0, 0xa7, 0xc0, 0x00,
617+ 0x01, 0x00, 0xdc, 0x83, 0x00, 0x09, 0xb0, 0x74,
618+ 0xc0, 0x00, 0xdc, 0xb2, 0x0c, 0xc3, 0xb1, 0x52,
619+ 0xc1, 0xb0, 0x68, 0x01, 0xdc, 0xc2, 0x00, 0xdc,
620+ 0xc0, 0x03, 0xdc, 0xb0, 0xc4, 0x00, 0x09, 0xb0,
621+ 0x07, 0x00, 0x09, 0xb0, 0x08, 0x00, 0x09, 0x00,
622+ 0x07, 0xb0, 0x14, 0xc2, 0xaf, 0x01, 0x09, 0xb0,
623+ 0x0d, 0x00, 0x07, 0xb0, 0x1b, 0x00, 0x09, 0x88,
624+ 0x00, 0x07, 0xb0, 0x39, 0x00, 0x09, 0x00, 0x07,
625+ 0xb0, 0x81, 0x00, 0x07, 0x00, 0x09, 0xb0, 0x1f,
626+ 0x01, 0x07, 0x8f, 0x00, 0x09, 0x97, 0xc6, 0x82,
627+ 0xc4, 0xb0, 0x9c, 0x00, 0x09, 0x82, 0x00, 0x07,
628+ 0x96, 0xc0, 0xb0, 0x32, 0x00, 0x09, 0x00, 0x07,
629+ 0xb0, 0xca, 0x00, 0x09, 0x00, 0x07, 0xb0, 0x4d,
630+ 0x00, 0x09, 0xb0, 0x45, 0x00, 0x09, 0x00, 0x07,
631+ 0xb0, 0x42, 0x00, 0x09, 0xb0, 0xdc, 0x00, 0x09,
632+ 0x00, 0x07, 0xb0, 0xd1, 0x01, 0x09, 0x83, 0x00,
633+ 0x07, 0xb0, 0x6b, 0x00, 0x09, 0xb0, 0x22, 0x00,
621634 0x09, 0x91, 0x00, 0x09, 0xb0, 0x20, 0x00, 0x09,
622635 0xb1, 0x74, 0x00, 0x09, 0xb0, 0xd1, 0x00, 0x07,
623636 0x80, 0x01, 0x09, 0xb0, 0x20, 0x00, 0x09, 0xb8,
624− 0x45, 0x27, 0x04, 0x01, 0xb0, 0x0a, 0xc6, 0xb8,
625− 0x49, 0x36, 0x00, 0x01, 0xb8, 0x0c, 0x95, 0x01,
626− 0xd8, 0x02, 0x01, 0x82, 0x00, 0xe2, 0x04, 0xd8,
627− 0x87, 0x07, 0xdc, 0x81, 0xc4, 0x01, 0xdc, 0x9d,
628− 0xc3, 0xb0, 0x63, 0xc2, 0xb8, 0x05, 0x8a, 0xc6,
629− 0x80, 0xd0, 0x81, 0xc6, 0x80, 0xc1, 0x80, 0xc4,
630− 0xb0, 0xd4, 0xc6, 0xb1, 0x84, 0xc3, 0xb5, 0xaf,
631− 0x06, 0xdc, 0xb0, 0x3c, 0xc5, 0x00, 0x07,
637+ 0x45, 0x27, 0x04, 0x01, 0xb0, 0x0a, 0xc6, 0xb4,
638+ 0x88, 0x01, 0x06, 0xb8, 0x44, 0x7b, 0x00, 0x01,
639+ 0xb8, 0x0c, 0x95, 0x01, 0xd8, 0x02, 0x01, 0x82,
640+ 0x00, 0xe2, 0x04, 0xd8, 0x87, 0x07, 0xdc, 0x81,
641+ 0xc4, 0x01, 0xdc, 0x9d, 0xc3, 0xb0, 0x63, 0xc2,
642+ 0xb8, 0x05, 0x8a, 0xc6, 0x80, 0xd0, 0x81, 0xc6,
643+ 0x80, 0xc1, 0x80, 0xc4, 0xb0, 0xd4, 0xc6, 0xb1,
644+ 0x84, 0xc3, 0xb5, 0xaf, 0x06, 0xdc, 0xb0, 0x3c,
645+ 0xc5, 0x00, 0x07,
632646 };
633647
634−static const uint8_t unicode_cc_index[78] = {
648+static const uint8_t unicode_cc_index[81] = {
635649 0x4d, 0x03, 0x00, 0x97, 0x05, 0x20, 0xc6, 0x05,
636650 0x00, 0xe7, 0x06, 0x00, 0x45, 0x07, 0x00, 0xe2,
637651 0x08, 0x00, 0x53, 0x09, 0x00, 0xcd, 0x0b, 0x20,
638652 0x38, 0x0e, 0x00, 0x73, 0x0f, 0x20, 0x5d, 0x13,
639− 0x20, 0x60, 0x1a, 0x20, 0xe6, 0x1b, 0x20, 0xfa,
640− 0x1c, 0x00, 0x00, 0x1e, 0x20, 0x80, 0x2d, 0x00,
641− 0x06, 0xa8, 0x00, 0xbe, 0xaa, 0x00, 0x76, 0x03,
642− 0x01, 0x4d, 0x0f, 0x01, 0xcb, 0x11, 0x21, 0x5e,
643− 0x14, 0x01, 0x3b, 0x18, 0x21, 0xf0, 0x6a, 0x41,
644− 0xaa, 0xd1, 0x01, 0x4b, 0xe9, 0x01,
653+ 0x20, 0x60, 0x1a, 0x20, 0xaa, 0x1b, 0x00, 0xf4,
654+ 0x1c, 0x00, 0xfe, 0x1d, 0x20, 0x7f, 0x2d, 0x20,
655+ 0xf0, 0xa6, 0x00, 0xb2, 0xaa, 0x00, 0xfe, 0x01,
656+ 0x01, 0xab, 0x0e, 0x01, 0x73, 0x11, 0x21, 0x70,
657+ 0x13, 0x01, 0xb8, 0x16, 0x01, 0x9a, 0x1a, 0x01,
658+ 0x9f, 0xbc, 0x01, 0x22, 0xe0, 0x01, 0x4b, 0xe9,
659+ 0x01,
645660 };
646661
647−static const uint32_t unicode_decomp_table1[687] = {
662+static const uint32_t unicode_decomp_table1[690] = {
648663 0x00280081, 0x002a0097, 0x002a8081, 0x002bc097,
649664 0x002c8115, 0x002d0097, 0x002d4081, 0x002e0097,
650665 0x002e4115, 0x002f0199, 0x00302016, 0x00400842,
@@ -771,55 +786,56 @@ static const uint32_t unicode_decomp_table1[687] = { · 120 unmodified lines
771786 0x0cf54119, 0x0cf5c097, 0x0cf6009b, 0x0cf64099,
772787 0x0cf68217, 0x0cf78119, 0x0cf804a1, 0x0cfa4525,
773788 0x0cfcc525, 0x0cff4125, 0x0cffc099, 0x29a70103,
774− 0x29dc0081, 0x29fe0103, 0x2ad70203, 0x3e401482,
775− 0x3e4a7f82, 0x3e6a3f82, 0x3e8aa102, 0x3e9b0110,
776− 0x3e9c2f82, 0x3eb3c590, 0x3ec00197, 0x3ec0c119,
777− 0x3ec1413f, 0x3ec4c2af, 0x3ec74184, 0x3ec804ad,
778− 0x3eca4081, 0x3eca8304, 0x3ecc03a0, 0x3ece02a0,
779− 0x3ecf8084, 0x3ed00120, 0x3ed0c120, 0x3ed184ae,
780− 0x3ed3c085, 0x3ed4312d, 0x3ef4cbad, 0x3efa892f,
781− 0x3eff022d, 0x3f002f2f, 0x3f1782a5, 0x3f18c0b1,
782− 0x3f1907af, 0x3f1cffaf, 0x3f3c81a5, 0x3f3d64af,
783− 0x3f542031, 0x3f649b31, 0x3f7c0131, 0x3f7c83b3,
784− 0x3f7e40b1, 0x3f7e80bd, 0x3f7ec0bb, 0x3f7f00b3,
785− 0x3f840503, 0x3f8c01ad, 0x3f8cc315, 0x3f8e462d,
786− 0x3f91cc03, 0x3f97c695, 0x3f9c01af, 0x3f9d0085,
787− 0x3f9d852f, 0x3fa03aad, 0x3fbd442f, 0x3fc06f1f,
788− 0x3fd7c11f, 0x3fd85fad, 0x3fe80081, 0x3fe84f1f,
789− 0x3ff0831f, 0x3ff2831f, 0x3ff4831f, 0x3ff6819f,
790− 0x3ff80783, 0x44268192, 0x442ac092, 0x444b8112,
791− 0x44d2c112, 0x452ec212, 0x456e8112, 0x74578392,
792− 0x746ec312, 0x75000d1f, 0x75068d1f, 0x750d0d1f,
793− 0x7513839f, 0x7515891f, 0x751a0d1f, 0x75208d1f,
794− 0x75271015, 0x752f439f, 0x7531459f, 0x75340d1f,
795− 0x753a8d1f, 0x75410395, 0x7543441f, 0x7545839f,
796− 0x75478d1f, 0x754e0795, 0x7552839f, 0x75548d1f,
797− 0x755b0d1f, 0x75618d1f, 0x75680d1f, 0x756e8d1f,
798− 0x75750d1f, 0x757b8d1f, 0x75820d1f, 0x75888d1f,
799− 0x758f0d1f, 0x75958d1f, 0x759c0d1f, 0x75a28d1f,
800− 0x75a90103, 0x75aa089f, 0x75ae4081, 0x75ae839f,
801− 0x75b04081, 0x75b08c9f, 0x75b6c081, 0x75b7032d,
802− 0x75b8889f, 0x75bcc081, 0x75bd039f, 0x75bec081,
803− 0x75bf0c9f, 0x75c54081, 0x75c5832d, 0x75c7089f,
804− 0x75cb4081, 0x75cb839f, 0x75cd4081, 0x75cd8c9f,
805− 0x75d3c081, 0x75d4032d, 0x75d5889f, 0x75d9c081,
806− 0x75da039f, 0x75dbc081, 0x75dc0c9f, 0x75e24081,
807− 0x75e2832d, 0x75e4089f, 0x75e84081, 0x75e8839f,
808− 0x75ea4081, 0x75ea8c9f, 0x75f0c081, 0x75f1042d,
809− 0x75f3851f, 0x75f6051f, 0x75f8851f, 0x75fb051f,
810− 0x75fd851f, 0x7b80022d, 0x7b814dad, 0x7b884203,
811− 0x7b89c081, 0x7b8a452d, 0x7b8d0403, 0x7b908081,
812− 0x7b91dc03, 0x7ba0052d, 0x7ba2c8ad, 0x7ba84483,
813− 0x7baac8ad, 0x7c400097, 0x7c404521, 0x7c440d25,
814− 0x7c4a8087, 0x7c4ac115, 0x7c4b4117, 0x7c4c0d1f,
815− 0x7c528217, 0x7c538099, 0x7c53c097, 0x7c5a8197,
816− 0x7c640097, 0x7c80012f, 0x7c808081, 0x7c841603,
817− 0x7c9004c1, 0x7c940103, 0xbe0001ac, 0xbe00d110,
818− 0xbe0947ac, 0xbe0d3910, 0xbe29872c, 0xbe2d022c,
819− 0xbe2e3790, 0xbe49ff90, 0xbe69bc10,
789+ 0x29dc0081, 0x29fe0103, 0x2ad70203, 0x2ada4081,
790+ 0x3e401482, 0x3e4a7f82, 0x3e6a3f82, 0x3e8aa102,
791+ 0x3e9b0110, 0x3e9c2f82, 0x3eb3c590, 0x3ec00197,
792+ 0x3ec0c119, 0x3ec1413f, 0x3ec4c2af, 0x3ec74184,
793+ 0x3ec804ad, 0x3eca4081, 0x3eca8304, 0x3ecc03a0,
794+ 0x3ece02a0, 0x3ecf8084, 0x3ed00120, 0x3ed0c120,
795+ 0x3ed184ae, 0x3ed3c085, 0x3ed4312d, 0x3ef4cbad,
796+ 0x3efa892f, 0x3eff022d, 0x3f002f2f, 0x3f1782a5,
797+ 0x3f18c0b1, 0x3f1907af, 0x3f1cffaf, 0x3f3c81a5,
798+ 0x3f3d64af, 0x3f542031, 0x3f649b31, 0x3f7c0131,
799+ 0x3f7c83b3, 0x3f7e40b1, 0x3f7e80bd, 0x3f7ec0bb,
800+ 0x3f7f00b3, 0x3f840503, 0x3f8c01ad, 0x3f8cc315,
801+ 0x3f8e462d, 0x3f91cc03, 0x3f97c695, 0x3f9c01af,
802+ 0x3f9d0085, 0x3f9d852f, 0x3fa03aad, 0x3fbd442f,
803+ 0x3fc06f1f, 0x3fd7c11f, 0x3fd85fad, 0x3fe80081,
804+ 0x3fe84f1f, 0x3ff0831f, 0x3ff2831f, 0x3ff4831f,
805+ 0x3ff6819f, 0x3ff80783, 0x44268192, 0x442ac092,
806+ 0x444b8112, 0x44d2c112, 0x452ec212, 0x456e8112,
807+ 0x464e0092, 0x74578392, 0x746ec312, 0x75000d1f,
808+ 0x75068d1f, 0x750d0d1f, 0x7513839f, 0x7515891f,
809+ 0x751a0d1f, 0x75208d1f, 0x75271015, 0x752f439f,
810+ 0x7531459f, 0x75340d1f, 0x753a8d1f, 0x75410395,
811+ 0x7543441f, 0x7545839f, 0x75478d1f, 0x754e0795,
812+ 0x7552839f, 0x75548d1f, 0x755b0d1f, 0x75618d1f,
813+ 0x75680d1f, 0x756e8d1f, 0x75750d1f, 0x757b8d1f,
814+ 0x75820d1f, 0x75888d1f, 0x758f0d1f, 0x75958d1f,
815+ 0x759c0d1f, 0x75a28d1f, 0x75a90103, 0x75aa089f,
816+ 0x75ae4081, 0x75ae839f, 0x75b04081, 0x75b08c9f,
817+ 0x75b6c081, 0x75b7032d, 0x75b8889f, 0x75bcc081,
818+ 0x75bd039f, 0x75bec081, 0x75bf0c9f, 0x75c54081,
819+ 0x75c5832d, 0x75c7089f, 0x75cb4081, 0x75cb839f,
820+ 0x75cd4081, 0x75cd8c9f, 0x75d3c081, 0x75d4032d,
821+ 0x75d5889f, 0x75d9c081, 0x75da039f, 0x75dbc081,
822+ 0x75dc0c9f, 0x75e24081, 0x75e2832d, 0x75e4089f,
823+ 0x75e84081, 0x75e8839f, 0x75ea4081, 0x75ea8c9f,
824+ 0x75f0c081, 0x75f1042d, 0x75f3851f, 0x75f6051f,
825+ 0x75f8851f, 0x75fb051f, 0x75fd851f, 0x7b80022d,
826+ 0x7b814dad, 0x7b884203, 0x7b89c081, 0x7b8a452d,
827+ 0x7b8d0403, 0x7b908081, 0x7b91dc03, 0x7ba0052d,
828+ 0x7ba2c8ad, 0x7ba84483, 0x7baac8ad, 0x7c400097,
829+ 0x7c404521, 0x7c440d25, 0x7c4a8087, 0x7c4ac115,
830+ 0x7c4b4117, 0x7c4c0d1f, 0x7c528217, 0x7c538099,
831+ 0x7c53c097, 0x7c5a8197, 0x7c640097, 0x7c80012f,
832+ 0x7c808081, 0x7c841603, 0x7c9004c1, 0x7c940103,
833+ 0x7efc051f, 0xbe0001ac, 0xbe00d110, 0xbe0947ac,
834+ 0xbe0d3910, 0xbe29872c, 0xbe2d022c, 0xbe2e3790,
835+ 0xbe49ff90, 0xbe69bc10,
820836 };
821837
822−static const uint16_t unicode_decomp_table2[687] = {
838+static const uint16_t unicode_decomp_table2[690] = {
823839 0x0020, 0x0000, 0x0061, 0x0002, 0x0004, 0x0006, 0x03bc, 0x0008,
824840 0x000a, 0x000c, 0x0015, 0x0095, 0x00a5, 0x00b9, 0x00c1, 0x00c3,
825841 0x00c7, 0x00cb, 0x00d1, 0x00d7, 0x00dd, 0x00e0, 0x00e6, 0x00f8,
@@ -883,32 +899,33 @@ static const uint16_t unicode_decomp_table2[687] = { · 57 unmodified lines
883899 0x10f4, 0x1100, 0x1105, 0x1111, 0x1141, 0x1149, 0x114d, 0x1153,
884900 0x1157, 0x115a, 0x116e, 0x1171, 0x1175, 0x117b, 0x117d, 0x1181,
885901 0x1184, 0x118c, 0x1192, 0x1196, 0x119c, 0x11a2, 0x11a8, 0x11ab,
886− 0xa76f, 0x11af, 0x11b3, 0x11bb, 0x120d, 0x130b, 0x1409, 0x148d,
887− 0x1492, 0x1550, 0x1569, 0x156f, 0x1575, 0x157b, 0x1587, 0x1593,
888− 0x002b, 0x159e, 0x15b6, 0x15ba, 0x15be, 0x15c2, 0x15c6, 0x15ca,
889− 0x15de, 0x15e2, 0x1646, 0x165f, 0x1685, 0x168b, 0x1749, 0x174f,
890− 0x1754, 0x1774, 0x1874, 0x187a, 0x190e, 0x19d0, 0x1a74, 0x1a7c,
891− 0x1a9a, 0x1a9f, 0x1ab3, 0x1abd, 0x1ac3, 0x1ad7, 0x1adc, 0x1ae2,
892− 0x1af0, 0x1b20, 0x1b2d, 0x1b35, 0x1b39, 0x1b4f, 0x1bc6, 0x1bd8,
893− 0x1bda, 0x1bdc, 0x3164, 0x1c1d, 0x1c1f, 0x1c21, 0x1c23, 0x1c25,
894− 0x1c27, 0x1c45, 0x1c53, 0x1c58, 0x1c61, 0x1c6a, 0x1c7c, 0x1c85,
895− 0x1ca5, 0x1cc0, 0x1cc2, 0x1cc4, 0x1cc6, 0x1cc8, 0x1cca, 0x1ccc,
896− 0x1cce, 0x1cee, 0x1cf0, 0x1cf2, 0x1cf4, 0x1cf6, 0x1cfd, 0x1cff,
897− 0x1d01, 0x1d03, 0x1d12, 0x1d14, 0x1d16, 0x1d18, 0x1d1a, 0x1d1c,
898− 0x1d1e, 0x1d20, 0x1d22, 0x1d24, 0x1d26, 0x1d28, 0x1d2a, 0x1d2c,
899− 0x1d2e, 0x1d32, 0x03f4, 0x1d34, 0x2207, 0x1d36, 0x2202, 0x1d38,
900− 0x1d40, 0x03f4, 0x1d42, 0x2207, 0x1d44, 0x2202, 0x1d46, 0x1d4e,
901− 0x03f4, 0x1d50, 0x2207, 0x1d52, 0x2202, 0x1d54, 0x1d5c, 0x03f4,
902− 0x1d5e, 0x2207, 0x1d60, 0x2202, 0x1d62, 0x1d6a, 0x03f4, 0x1d6c,
903− 0x2207, 0x1d6e, 0x2202, 0x1d70, 0x1d7a, 0x1d7c, 0x1d7e, 0x1d80,
904− 0x1d82, 0x1d84, 0x1d8a, 0x1da7, 0x062d, 0x1daf, 0x1dbb, 0x062c,
905− 0x1dcb, 0x1e3b, 0x1e47, 0x1e5a, 0x1e6c, 0x1e7f, 0x1e81, 0x1e85,
906− 0x1e8b, 0x1e91, 0x1e93, 0x1e97, 0x1e99, 0x1ea1, 0x1ea4, 0x1ea6,
907− 0x1eac, 0x1eae, 0x30b5, 0x1eb4, 0x1f0c, 0x1f22, 0x1f26, 0x1f2b,
908− 0x1f78, 0x1f89, 0x208a, 0x209a, 0x20a0, 0x219a, 0x22b8,
902+ 0xa76f, 0x11af, 0x11b3, 0x028d, 0x11bb, 0x120d, 0x130b, 0x1409,
903+ 0x148d, 0x1492, 0x1550, 0x1569, 0x156f, 0x1575, 0x157b, 0x1587,
904+ 0x1593, 0x002b, 0x159e, 0x15b6, 0x15ba, 0x15be, 0x15c2, 0x15c6,
905+ 0x15ca, 0x15de, 0x15e2, 0x1646, 0x165f, 0x1685, 0x168b, 0x1749,
906+ 0x174f, 0x1754, 0x1774, 0x1874, 0x187a, 0x190e, 0x19d0, 0x1a74,
907+ 0x1a7c, 0x1a9a, 0x1a9f, 0x1ab3, 0x1abd, 0x1ac3, 0x1ad7, 0x1adc,
908+ 0x1ae2, 0x1af0, 0x1b20, 0x1b2d, 0x1b35, 0x1b39, 0x1b4f, 0x1bc6,
909+ 0x1bd8, 0x1bda, 0x1bdc, 0x3164, 0x1c1d, 0x1c1f, 0x1c21, 0x1c23,
910+ 0x1c25, 0x1c27, 0x1c45, 0x1c53, 0x1c58, 0x1c61, 0x1c6a, 0x1c7c,
911+ 0x1c85, 0x1c8a, 0x1caa, 0x1cc5, 0x1cc7, 0x1cc9, 0x1ccb, 0x1ccd,
912+ 0x1ccf, 0x1cd1, 0x1cd3, 0x1cf3, 0x1cf5, 0x1cf7, 0x1cf9, 0x1cfb,
913+ 0x1d02, 0x1d04, 0x1d06, 0x1d08, 0x1d17, 0x1d19, 0x1d1b, 0x1d1d,
914+ 0x1d1f, 0x1d21, 0x1d23, 0x1d25, 0x1d27, 0x1d29, 0x1d2b, 0x1d2d,
915+ 0x1d2f, 0x1d31, 0x1d33, 0x1d37, 0x03f4, 0x1d39, 0x2207, 0x1d3b,
916+ 0x2202, 0x1d3d, 0x1d45, 0x03f4, 0x1d47, 0x2207, 0x1d49, 0x2202,
917+ 0x1d4b, 0x1d53, 0x03f4, 0x1d55, 0x2207, 0x1d57, 0x2202, 0x1d59,
918+ 0x1d61, 0x03f4, 0x1d63, 0x2207, 0x1d65, 0x2202, 0x1d67, 0x1d6f,
919+ 0x03f4, 0x1d71, 0x2207, 0x1d73, 0x2202, 0x1d75, 0x1d7f, 0x1d81,
920+ 0x1d83, 0x1d85, 0x1d87, 0x1d89, 0x1d8f, 0x1dac, 0x062d, 0x1db4,
921+ 0x1dc0, 0x062c, 0x1dd0, 0x1e40, 0x1e4c, 0x1e5f, 0x1e71, 0x1e84,
922+ 0x1e86, 0x1e8a, 0x1e90, 0x1e96, 0x1e98, 0x1e9c, 0x1e9e, 0x1ea6,
923+ 0x1ea9, 0x1eab, 0x1eb1, 0x1eb3, 0x30b5, 0x1eb9, 0x1f11, 0x1f27,
924+ 0x1f2b, 0x1f2d, 0x1f32, 0x1f7f, 0x1f90, 0x2091, 0x20a1, 0x20a7,
925+ 0x21a1, 0x22bf,
909926 };
910927
911−static const uint8_t unicode_decomp_data[9158] = {
928+static const uint8_t unicode_decomp_data[9165] = {
912929 0x20, 0x88, 0x20, 0x84, 0x32, 0x33, 0x20, 0x81,
913930 0x20, 0xa7, 0x31, 0x6f, 0x31, 0xd0, 0x34, 0x31,
914931 0xd0, 0x32, 0x33, 0xd0, 0x34, 0x41, 0x80, 0x41,
@@ -1821,242 +1838,243 @@ static const uint8_t unicode_decomp_data[9158] = { · 906 unmodified lines
18211838 0x13, 0x55, 0xb9, 0x14, 0xba, 0x14, 0xb9, 0x14,
18221839 0xb0, 0x14, 0x00, 0x00, 0x00, 0x00, 0xb9, 0x14,
18231840 0xbd, 0x14, 0x55, 0x50, 0xb8, 0x15, 0xaf, 0x15,
1824− 0xb9, 0x15, 0xaf, 0x15, 0x55, 0x57, 0xd1, 0x65,
1825− 0xd1, 0x58, 0xd1, 0x65, 0xd1, 0x5f, 0xd1, 0x6e,
1826− 0xd1, 0x5f, 0xd1, 0x6f, 0xd1, 0x5f, 0xd1, 0x70,
1827− 0xd1, 0x5f, 0xd1, 0x71, 0xd1, 0x5f, 0xd1, 0x72,
1828− 0xd1, 0x55, 0x55, 0x55, 0x05, 0xb9, 0xd1, 0x65,
1829− 0xd1, 0xba, 0xd1, 0x65, 0xd1, 0xbb, 0xd1, 0x6e,
1830− 0xd1, 0xbc, 0xd1, 0x6e, 0xd1, 0xbb, 0xd1, 0x6f,
1831− 0xd1, 0xbc, 0xd1, 0x6f, 0xd1, 0x55, 0x55, 0x55,
1832− 0x41, 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00,
1833− 0x69, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,
1834− 0x43, 0x44, 0x00, 0x00, 0x47, 0x00, 0x00, 0x4a,
1835− 0x4b, 0x00, 0x00, 0x4e, 0x4f, 0x50, 0x51, 0x00,
1836− 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a,
1837− 0x61, 0x62, 0x63, 0x64, 0x00, 0x66, 0x68, 0x00,
1838− 0x70, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x42,
1839− 0x00, 0x44, 0x45, 0x46, 0x47, 0x4a, 0x00, 0x53,
1841+ 0xb9, 0x15, 0xaf, 0x15, 0x55, 0x35, 0x19, 0x30,
1842+ 0x19, 0x05, 0x57, 0xd1, 0x65, 0xd1, 0x58, 0xd1,
1843+ 0x65, 0xd1, 0x5f, 0xd1, 0x6e, 0xd1, 0x5f, 0xd1,
1844+ 0x6f, 0xd1, 0x5f, 0xd1, 0x70, 0xd1, 0x5f, 0xd1,
1845+ 0x71, 0xd1, 0x5f, 0xd1, 0x72, 0xd1, 0x55, 0x55,
1846+ 0x55, 0x05, 0xb9, 0xd1, 0x65, 0xd1, 0xba, 0xd1,
1847+ 0x65, 0xd1, 0xbb, 0xd1, 0x6e, 0xd1, 0xbc, 0xd1,
1848+ 0x6e, 0xd1, 0xbb, 0xd1, 0x6f, 0xd1, 0xbc, 0xd1,
1849+ 0x6f, 0xd1, 0x55, 0x55, 0x55, 0x41, 0x00, 0x61,
1850+ 0x00, 0x41, 0x00, 0x61, 0x00, 0x69, 0x00, 0x41,
1851+ 0x00, 0x61, 0x00, 0x41, 0x00, 0x43, 0x44, 0x00,
1852+ 0x00, 0x47, 0x00, 0x00, 0x4a, 0x4b, 0x00, 0x00,
1853+ 0x4e, 0x4f, 0x50, 0x51, 0x00, 0x53, 0x54, 0x55,
1854+ 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63,
1855+ 0x64, 0x00, 0x66, 0x68, 0x00, 0x70, 0x00, 0x41,
18401856 0x00, 0x61, 0x00, 0x41, 0x42, 0x00, 0x44, 0x45,
1841− 0x46, 0x47, 0x00, 0x49, 0x4a, 0x4b, 0x4c, 0x4d,
1842− 0x00, 0x4f, 0x53, 0x00, 0x61, 0x00, 0x41, 0x00,
1843− 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,
1844− 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41, 0x00,
1845− 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x31, 0x01,
1846− 0x37, 0x02, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03,
1847− 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05,
1848− 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03,
1849− 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03,
1850− 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00,
1851− 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03,
1852− 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04,
1853− 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03,
1854− 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05,
1855− 0x0b, 0x0c, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00,
1856− 0x30, 0x00, 0x30, 0x00, 0x27, 0x06, 0x00, 0x01,
1857− 0x05, 0x08, 0x2a, 0x06, 0x1e, 0x08, 0x03, 0x0d,
1858− 0x20, 0x19, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17,
1859− 0x0b, 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, 0x06,
1860− 0x0c, 0x0e, 0x10, 0x44, 0x90, 0x77, 0x45, 0x28,
1861− 0x06, 0x2c, 0x06, 0x00, 0x00, 0x47, 0x06, 0x33,
1862− 0x06, 0x17, 0x10, 0x11, 0x12, 0x13, 0x00, 0x06,
1863− 0x0e, 0x02, 0x0f, 0x34, 0x06, 0x2a, 0x06, 0x2b,
1864− 0x06, 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00,
1865− 0x00, 0x3a, 0x06, 0x2d, 0x06, 0x00, 0x00, 0x4a,
1866− 0x06, 0x00, 0x00, 0x44, 0x06, 0x00, 0x00, 0x46,
1867− 0x06, 0x33, 0x06, 0x39, 0x06, 0x00, 0x00, 0x35,
1868− 0x06, 0x42, 0x06, 0x00, 0x00, 0x34, 0x06, 0x00,
1869− 0x00, 0x00, 0x00, 0x2e, 0x06, 0x00, 0x00, 0x36,
1870− 0x06, 0x00, 0x00, 0x3a, 0x06, 0x00, 0x00, 0xba,
1871− 0x06, 0x00, 0x00, 0x6f, 0x06, 0x00, 0x00, 0x28,
1872− 0x06, 0x2c, 0x06, 0x00, 0x00, 0x47, 0x06, 0x00,
1873− 0x00, 0x00, 0x00, 0x2d, 0x06, 0x37, 0x06, 0x4a,
1874− 0x06, 0x43, 0x06, 0x00, 0x00, 0x45, 0x06, 0x46,
1875− 0x06, 0x33, 0x06, 0x39, 0x06, 0x41, 0x06, 0x35,
1876− 0x06, 0x42, 0x06, 0x00, 0x00, 0x34, 0x06, 0x2a,
1877− 0x06, 0x2b, 0x06, 0x2e, 0x06, 0x00, 0x00, 0x36,
1878− 0x06, 0x38, 0x06, 0x3a, 0x06, 0x6e, 0x06, 0x00,
1879− 0x00, 0xa1, 0x06, 0x27, 0x06, 0x00, 0x01, 0x05,
1880− 0x08, 0x20, 0x21, 0x0b, 0x06, 0x10, 0x23, 0x2a,
1881− 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f, 0x17, 0x0b,
1882− 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04, 0x06, 0x0c,
1883− 0x0e, 0x10, 0x28, 0x06, 0x2c, 0x06, 0x2f, 0x06,
1884− 0x00, 0x00, 0x48, 0x06, 0x32, 0x06, 0x2d, 0x06,
1885− 0x37, 0x06, 0x4a, 0x06, 0x2a, 0x06, 0x1a, 0x1b,
1857+ 0x46, 0x47, 0x4a, 0x00, 0x53, 0x00, 0x61, 0x00,
1858+ 0x41, 0x42, 0x00, 0x44, 0x45, 0x46, 0x47, 0x00,
1859+ 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x00, 0x4f, 0x53,
1860+ 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
1861+ 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
1862+ 0x00, 0x61, 0x00, 0x41, 0x00, 0x61, 0x00, 0x41,
1863+ 0x00, 0x61, 0x00, 0x31, 0x01, 0x37, 0x02, 0x91,
1864+ 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24,
1865+ 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3,
1866+ 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f,
1867+ 0x04, 0x20, 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1,
1868+ 0x03, 0xd1, 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20,
1869+ 0x05, 0x91, 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1,
1870+ 0x03, 0x24, 0x00, 0x1f, 0x04, 0x20, 0x05, 0x91,
1871+ 0x03, 0xa3, 0x03, 0xb1, 0x03, 0xd1, 0x03, 0x24,
1872+ 0x00, 0x1f, 0x04, 0x20, 0x05, 0x0b, 0x0c, 0x30,
1873+ 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30,
1874+ 0x00, 0x27, 0x06, 0x00, 0x01, 0x05, 0x08, 0x2a,
1875+ 0x06, 0x1e, 0x08, 0x03, 0x0d, 0x20, 0x19, 0x1a,
1876+ 0x1b, 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07,
1877+ 0x0a, 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10,
1878+ 0x44, 0x90, 0x77, 0x45, 0x28, 0x06, 0x2c, 0x06,
1879+ 0x00, 0x00, 0x47, 0x06, 0x33, 0x06, 0x17, 0x10,
1880+ 0x11, 0x12, 0x13, 0x00, 0x06, 0x0e, 0x02, 0x0f,
1881+ 0x34, 0x06, 0x2a, 0x06, 0x2b, 0x06, 0x2e, 0x06,
1882+ 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, 0x3a, 0x06,
1883+ 0x2d, 0x06, 0x00, 0x00, 0x4a, 0x06, 0x00, 0x00,
1884+ 0x44, 0x06, 0x00, 0x00, 0x46, 0x06, 0x33, 0x06,
1885+ 0x39, 0x06, 0x00, 0x00, 0x35, 0x06, 0x42, 0x06,
1886+ 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0x00, 0x00,
1887+ 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00, 0x00,
1888+ 0x3a, 0x06, 0x00, 0x00, 0xba, 0x06, 0x00, 0x00,
1889+ 0x6f, 0x06, 0x00, 0x00, 0x28, 0x06, 0x2c, 0x06,
1890+ 0x00, 0x00, 0x47, 0x06, 0x00, 0x00, 0x00, 0x00,
1891+ 0x2d, 0x06, 0x37, 0x06, 0x4a, 0x06, 0x43, 0x06,
1892+ 0x00, 0x00, 0x45, 0x06, 0x46, 0x06, 0x33, 0x06,
1893+ 0x39, 0x06, 0x41, 0x06, 0x35, 0x06, 0x42, 0x06,
1894+ 0x00, 0x00, 0x34, 0x06, 0x2a, 0x06, 0x2b, 0x06,
1895+ 0x2e, 0x06, 0x00, 0x00, 0x36, 0x06, 0x38, 0x06,
1896+ 0x3a, 0x06, 0x6e, 0x06, 0x00, 0x00, 0xa1, 0x06,
1897+ 0x27, 0x06, 0x00, 0x01, 0x05, 0x08, 0x20, 0x21,
1898+ 0x0b, 0x06, 0x10, 0x23, 0x2a, 0x06, 0x1a, 0x1b,
18861899 0x1c, 0x09, 0x0f, 0x17, 0x0b, 0x18, 0x07, 0x0a,
1887− 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x30,
1888− 0x2e, 0x30, 0x00, 0x2c, 0x00, 0x28, 0x00, 0x41,
1889− 0x00, 0x29, 0x00, 0x14, 0x30, 0x53, 0x00, 0x15,
1890− 0x30, 0x43, 0x52, 0x43, 0x44, 0x57, 0x5a, 0x41,
1891− 0x00, 0x48, 0x56, 0x4d, 0x56, 0x53, 0x44, 0x53,
1892− 0x53, 0x50, 0x50, 0x56, 0x57, 0x43, 0x4d, 0x43,
1893− 0x4d, 0x44, 0x4d, 0x52, 0x44, 0x4a, 0x4b, 0x30,
1894− 0x30, 0x00, 0x68, 0x68, 0x4b, 0x62, 0x57, 0x5b,
1895− 0xcc, 0x53, 0xc7, 0x30, 0x8c, 0x4e, 0x1a, 0x59,
1896− 0xe3, 0x89, 0x29, 0x59, 0xa4, 0x4e, 0x20, 0x66,
1897− 0x21, 0x71, 0x99, 0x65, 0x4d, 0x52, 0x8c, 0x5f,
1898− 0x8d, 0x51, 0xb0, 0x65, 0x1d, 0x52, 0x42, 0x7d,
1899− 0x1f, 0x75, 0xa9, 0x8c, 0xf0, 0x58, 0x39, 0x54,
1900− 0x14, 0x6f, 0x95, 0x62, 0x55, 0x63, 0x00, 0x4e,
1901− 0x09, 0x4e, 0x4a, 0x90, 0xe6, 0x5d, 0x2d, 0x4e,
1902− 0xf3, 0x53, 0x07, 0x63, 0x70, 0x8d, 0x53, 0x62,
1903− 0x81, 0x79, 0x7a, 0x7a, 0x08, 0x54, 0x80, 0x6e,
1904− 0x09, 0x67, 0x08, 0x67, 0x33, 0x75, 0x72, 0x52,
1905− 0xb6, 0x55, 0x4d, 0x91, 0x14, 0x30, 0x15, 0x30,
1906− 0x2c, 0x67, 0x09, 0x4e, 0x8c, 0x4e, 0x89, 0x5b,
1907− 0xb9, 0x70, 0x53, 0x62, 0xd7, 0x76, 0xdd, 0x52,
1908− 0x57, 0x65, 0x97, 0x5f, 0xef, 0x53, 0x38, 0x4e,
1909− 0x05, 0x00, 0x09, 0x22, 0x01, 0x60, 0x4f, 0xae,
1910− 0x4f, 0xbb, 0x4f, 0x02, 0x50, 0x7a, 0x50, 0x99,
1911− 0x50, 0xe7, 0x50, 0xcf, 0x50, 0x9e, 0x34, 0x3a,
1912− 0x06, 0x4d, 0x51, 0x54, 0x51, 0x64, 0x51, 0x77,
1913− 0x51, 0x1c, 0x05, 0xb9, 0x34, 0x67, 0x51, 0x8d,
1914− 0x51, 0x4b, 0x05, 0x97, 0x51, 0xa4, 0x51, 0xcc,
1915− 0x4e, 0xac, 0x51, 0xb5, 0x51, 0xdf, 0x91, 0xf5,
1916− 0x51, 0x03, 0x52, 0xdf, 0x34, 0x3b, 0x52, 0x46,
1917− 0x52, 0x72, 0x52, 0x77, 0x52, 0x15, 0x35, 0x02,
1918− 0x00, 0x20, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00,
1919− 0xc7, 0x52, 0x00, 0x02, 0x1d, 0x33, 0x3e, 0x3f,
1920− 0x50, 0x82, 0x8a, 0x93, 0xac, 0xb6, 0xb8, 0xb8,
1921− 0xb8, 0x2c, 0x0a, 0x70, 0x70, 0xca, 0x53, 0xdf,
1922− 0x53, 0x63, 0x0b, 0xeb, 0x53, 0xf1, 0x53, 0x06,
1923− 0x54, 0x9e, 0x54, 0x38, 0x54, 0x48, 0x54, 0x68,
1924− 0x54, 0xa2, 0x54, 0xf6, 0x54, 0x10, 0x55, 0x53,
1925− 0x55, 0x63, 0x55, 0x84, 0x55, 0x84, 0x55, 0x99,
1926− 0x55, 0xab, 0x55, 0xb3, 0x55, 0xc2, 0x55, 0x16,
1927− 0x57, 0x06, 0x56, 0x17, 0x57, 0x51, 0x56, 0x74,
1928− 0x56, 0x07, 0x52, 0xee, 0x58, 0xce, 0x57, 0xf4,
1929− 0x57, 0x0d, 0x58, 0x8b, 0x57, 0x32, 0x58, 0x31,
1930− 0x58, 0xac, 0x58, 0xe4, 0x14, 0xf2, 0x58, 0xf7,
1931− 0x58, 0x06, 0x59, 0x1a, 0x59, 0x22, 0x59, 0x62,
1932− 0x59, 0xa8, 0x16, 0xea, 0x16, 0xec, 0x59, 0x1b,
1933− 0x5a, 0x27, 0x5a, 0xd8, 0x59, 0x66, 0x5a, 0xee,
1934− 0x36, 0xfc, 0x36, 0x08, 0x5b, 0x3e, 0x5b, 0x3e,
1935− 0x5b, 0xc8, 0x19, 0xc3, 0x5b, 0xd8, 0x5b, 0xe7,
1936− 0x5b, 0xf3, 0x5b, 0x18, 0x1b, 0xff, 0x5b, 0x06,
1937− 0x5c, 0x53, 0x5f, 0x22, 0x5c, 0x81, 0x37, 0x60,
1938− 0x5c, 0x6e, 0x5c, 0xc0, 0x5c, 0x8d, 0x5c, 0xe4,
1939− 0x1d, 0x43, 0x5d, 0xe6, 0x1d, 0x6e, 0x5d, 0x6b,
1940− 0x5d, 0x7c, 0x5d, 0xe1, 0x5d, 0xe2, 0x5d, 0x2f,
1941− 0x38, 0xfd, 0x5d, 0x28, 0x5e, 0x3d, 0x5e, 0x69,
1942− 0x5e, 0x62, 0x38, 0x83, 0x21, 0x7c, 0x38, 0xb0,
1943− 0x5e, 0xb3, 0x5e, 0xb6, 0x5e, 0xca, 0x5e, 0x92,
1944− 0xa3, 0xfe, 0x5e, 0x31, 0x23, 0x31, 0x23, 0x01,
1945− 0x82, 0x22, 0x5f, 0x22, 0x5f, 0xc7, 0x38, 0xb8,
1946− 0x32, 0xda, 0x61, 0x62, 0x5f, 0x6b, 0x5f, 0xe3,
1947− 0x38, 0x9a, 0x5f, 0xcd, 0x5f, 0xd7, 0x5f, 0xf9,
1948− 0x5f, 0x81, 0x60, 0x3a, 0x39, 0x1c, 0x39, 0x94,
1949− 0x60, 0xd4, 0x26, 0xc7, 0x60, 0x02, 0x02, 0x00,
1950− 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00,
1951− 0x0a, 0x00, 0x00, 0x02, 0x08, 0x00, 0x80, 0x08,
1952− 0x00, 0x00, 0x08, 0x80, 0x28, 0x80, 0x02, 0x00,
1953− 0x00, 0x02, 0x48, 0x61, 0x00, 0x04, 0x06, 0x04,
1954− 0x32, 0x46, 0x6a, 0x5c, 0x67, 0x96, 0xaa, 0xae,
1955− 0xc8, 0xd3, 0x5d, 0x62, 0x00, 0x54, 0x77, 0xf3,
1956− 0x0c, 0x2b, 0x3d, 0x63, 0xfc, 0x62, 0x68, 0x63,
1957− 0x83, 0x63, 0xe4, 0x63, 0xf1, 0x2b, 0x22, 0x64,
1958− 0xc5, 0x63, 0xa9, 0x63, 0x2e, 0x3a, 0x69, 0x64,
1959− 0x7e, 0x64, 0x9d, 0x64, 0x77, 0x64, 0x6c, 0x3a,
1960− 0x4f, 0x65, 0x6c, 0x65, 0x0a, 0x30, 0xe3, 0x65,
1961− 0xf8, 0x66, 0x49, 0x66, 0x19, 0x3b, 0x91, 0x66,
1962− 0x08, 0x3b, 0xe4, 0x3a, 0x92, 0x51, 0x95, 0x51,
1963− 0x00, 0x67, 0x9c, 0x66, 0xad, 0x80, 0xd9, 0x43,
1964− 0x17, 0x67, 0x1b, 0x67, 0x21, 0x67, 0x5e, 0x67,
1965− 0x53, 0x67, 0xc3, 0x33, 0x49, 0x3b, 0xfa, 0x67,
1966− 0x85, 0x67, 0x52, 0x68, 0x85, 0x68, 0x6d, 0x34,
1967− 0x8e, 0x68, 0x1f, 0x68, 0x14, 0x69, 0x9d, 0x3b,
1968− 0x42, 0x69, 0xa3, 0x69, 0xea, 0x69, 0xa8, 0x6a,
1969− 0xa3, 0x36, 0xdb, 0x6a, 0x18, 0x3c, 0x21, 0x6b,
1970− 0xa7, 0x38, 0x54, 0x6b, 0x4e, 0x3c, 0x72, 0x6b,
1971− 0x9f, 0x6b, 0xba, 0x6b, 0xbb, 0x6b, 0x8d, 0x3a,
1972− 0x0b, 0x1d, 0xfa, 0x3a, 0x4e, 0x6c, 0xbc, 0x3c,
1973− 0xbf, 0x6c, 0xcd, 0x6c, 0x67, 0x6c, 0x16, 0x6d,
1974− 0x3e, 0x6d, 0x77, 0x6d, 0x41, 0x6d, 0x69, 0x6d,
1975− 0x78, 0x6d, 0x85, 0x6d, 0x1e, 0x3d, 0x34, 0x6d,
1976− 0x2f, 0x6e, 0x6e, 0x6e, 0x33, 0x3d, 0xcb, 0x6e,
1977− 0xc7, 0x6e, 0xd1, 0x3e, 0xf9, 0x6d, 0x6e, 0x6f,
1978− 0x5e, 0x3f, 0x8e, 0x3f, 0xc6, 0x6f, 0x39, 0x70,
1979− 0x1e, 0x70, 0x1b, 0x70, 0x96, 0x3d, 0x4a, 0x70,
1980− 0x7d, 0x70, 0x77, 0x70, 0xad, 0x70, 0x25, 0x05,
1981− 0x45, 0x71, 0x63, 0x42, 0x9c, 0x71, 0xab, 0x43,
1982− 0x28, 0x72, 0x35, 0x72, 0x50, 0x72, 0x08, 0x46,
1983− 0x80, 0x72, 0x95, 0x72, 0x35, 0x47, 0x02, 0x20,
1984− 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08,
1985− 0x80, 0x00, 0x00, 0x02, 0x02, 0x80, 0x8a, 0x00,
1986− 0x00, 0x20, 0x00, 0x08, 0x0a, 0x00, 0x80, 0x88,
1987− 0x80, 0x20, 0x14, 0x48, 0x7a, 0x73, 0x8b, 0x73,
1988− 0xac, 0x3e, 0xa5, 0x73, 0xb8, 0x3e, 0xb8, 0x3e,
1989− 0x47, 0x74, 0x5c, 0x74, 0x71, 0x74, 0x85, 0x74,
1990− 0xca, 0x74, 0x1b, 0x3f, 0x24, 0x75, 0x36, 0x4c,
1991− 0x3e, 0x75, 0x92, 0x4c, 0x70, 0x75, 0x9f, 0x21,
1992− 0x10, 0x76, 0xa1, 0x4f, 0xb8, 0x4f, 0x44, 0x50,
1993− 0xfc, 0x3f, 0x08, 0x40, 0xf4, 0x76, 0xf3, 0x50,
1994− 0xf2, 0x50, 0x19, 0x51, 0x33, 0x51, 0x1e, 0x77,
1995− 0x1f, 0x77, 0x1f, 0x77, 0x4a, 0x77, 0x39, 0x40,
1996− 0x8b, 0x77, 0x46, 0x40, 0x96, 0x40, 0x1d, 0x54,
1997− 0x4e, 0x78, 0x8c, 0x78, 0xcc, 0x78, 0xe3, 0x40,
1998− 0x26, 0x56, 0x56, 0x79, 0x9a, 0x56, 0xc5, 0x56,
1999− 0x8f, 0x79, 0xeb, 0x79, 0x2f, 0x41, 0x40, 0x7a,
2000− 0x4a, 0x7a, 0x4f, 0x7a, 0x7c, 0x59, 0xa7, 0x5a,
2001− 0xa7, 0x5a, 0xee, 0x7a, 0x02, 0x42, 0xab, 0x5b,
2002− 0xc6, 0x7b, 0xc9, 0x7b, 0x27, 0x42, 0x80, 0x5c,
2003− 0xd2, 0x7c, 0xa0, 0x42, 0xe8, 0x7c, 0xe3, 0x7c,
2004− 0x00, 0x7d, 0x86, 0x5f, 0x63, 0x7d, 0x01, 0x43,
2005− 0xc7, 0x7d, 0x02, 0x7e, 0x45, 0x7e, 0x34, 0x43,
2006− 0x28, 0x62, 0x47, 0x62, 0x59, 0x43, 0xd9, 0x62,
2007− 0x7a, 0x7f, 0x3e, 0x63, 0x95, 0x7f, 0xfa, 0x7f,
2008− 0x05, 0x80, 0xda, 0x64, 0x23, 0x65, 0x60, 0x80,
2009− 0xa8, 0x65, 0x70, 0x80, 0x5f, 0x33, 0xd5, 0x43,
2010− 0xb2, 0x80, 0x03, 0x81, 0x0b, 0x44, 0x3e, 0x81,
2011− 0xb5, 0x5a, 0xa7, 0x67, 0xb5, 0x67, 0x93, 0x33,
2012− 0x9c, 0x33, 0x01, 0x82, 0x04, 0x82, 0x9e, 0x8f,
2013− 0x6b, 0x44, 0x91, 0x82, 0x8b, 0x82, 0x9d, 0x82,
2014− 0xb3, 0x52, 0xb1, 0x82, 0xb3, 0x82, 0xbd, 0x82,
2015− 0xe6, 0x82, 0x3c, 0x6b, 0xe5, 0x82, 0x1d, 0x83,
2016− 0x63, 0x83, 0xad, 0x83, 0x23, 0x83, 0xbd, 0x83,
2017− 0xe7, 0x83, 0x57, 0x84, 0x53, 0x83, 0xca, 0x83,
2018− 0xcc, 0x83, 0xdc, 0x83, 0x36, 0x6c, 0x6b, 0x6d,
2019− 0x02, 0x00, 0x00, 0x20, 0x22, 0x2a, 0xa0, 0x0a,
2020− 0x00, 0x20, 0x80, 0x28, 0x00, 0xa8, 0x20, 0x20,
2021− 0x00, 0x02, 0x80, 0x22, 0x02, 0x8a, 0x08, 0x00,
2022− 0xaa, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28,
2023− 0xd5, 0x6c, 0x2b, 0x45, 0xf1, 0x84, 0xf3, 0x84,
2024− 0x16, 0x85, 0xca, 0x73, 0x64, 0x85, 0x2c, 0x6f,
2025− 0x5d, 0x45, 0x61, 0x45, 0xb1, 0x6f, 0xd2, 0x70,
2026− 0x6b, 0x45, 0x50, 0x86, 0x5c, 0x86, 0x67, 0x86,
2027− 0x69, 0x86, 0xa9, 0x86, 0x88, 0x86, 0x0e, 0x87,
2028− 0xe2, 0x86, 0x79, 0x87, 0x28, 0x87, 0x6b, 0x87,
2029− 0x86, 0x87, 0xd7, 0x45, 0xe1, 0x87, 0x01, 0x88,
2030− 0xf9, 0x45, 0x60, 0x88, 0x63, 0x88, 0x67, 0x76,
2031− 0xd7, 0x88, 0xde, 0x88, 0x35, 0x46, 0xfa, 0x88,
2032− 0xbb, 0x34, 0xae, 0x78, 0x66, 0x79, 0xbe, 0x46,
2033− 0xc7, 0x46, 0xa0, 0x8a, 0xed, 0x8a, 0x8a, 0x8b,
2034− 0x55, 0x8c, 0xa8, 0x7c, 0xab, 0x8c, 0xc1, 0x8c,
2035− 0x1b, 0x8d, 0x77, 0x8d, 0x2f, 0x7f, 0x04, 0x08,
2036− 0xcb, 0x8d, 0xbc, 0x8d, 0xf0, 0x8d, 0xde, 0x08,
2037− 0xd4, 0x8e, 0x38, 0x8f, 0xd2, 0x85, 0xed, 0x85,
2038− 0x94, 0x90, 0xf1, 0x90, 0x11, 0x91, 0x2e, 0x87,
2039− 0x1b, 0x91, 0x38, 0x92, 0xd7, 0x92, 0xd8, 0x92,
2040− 0x7c, 0x92, 0xf9, 0x93, 0x15, 0x94, 0xfa, 0x8b,
2041− 0x8b, 0x95, 0x95, 0x49, 0xb7, 0x95, 0x77, 0x8d,
2042− 0xe6, 0x49, 0xc3, 0x96, 0xb2, 0x5d, 0x23, 0x97,
2043− 0x45, 0x91, 0x1a, 0x92, 0x6e, 0x4a, 0x76, 0x4a,
2044− 0xe0, 0x97, 0x0a, 0x94, 0xb2, 0x4a, 0x96, 0x94,
2045− 0x0b, 0x98, 0x0b, 0x98, 0x29, 0x98, 0xb6, 0x95,
2046− 0xe2, 0x98, 0x33, 0x4b, 0x29, 0x99, 0xa7, 0x99,
2047− 0xc2, 0x99, 0xfe, 0x99, 0xce, 0x4b, 0x30, 0x9b,
2048− 0x12, 0x9b, 0x40, 0x9c, 0xfd, 0x9c, 0xce, 0x4c,
2049− 0xed, 0x4c, 0x67, 0x9d, 0xce, 0xa0, 0xf8, 0x4c,
2050− 0x05, 0xa1, 0x0e, 0xa2, 0x91, 0xa2, 0xbb, 0x9e,
2051− 0x56, 0x4d, 0xf9, 0x9e, 0xfe, 0x9e, 0x05, 0x9f,
2052− 0x0f, 0x9f, 0x16, 0x9f, 0x3b, 0x9f, 0x00, 0xa6,
2053− 0x02, 0x88, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80,
2054− 0x00, 0x28, 0x00, 0x08, 0xa0, 0x80, 0xa0, 0x80,
2055− 0x00, 0x80, 0x80, 0x00, 0x0a, 0x88, 0x80, 0x00,
2056− 0x80, 0x00, 0x20, 0x2a, 0x00, 0x80,
1900+ 0x00, 0x01, 0x04, 0x06, 0x0c, 0x0e, 0x10, 0x28,
1901+ 0x06, 0x2c, 0x06, 0x2f, 0x06, 0x00, 0x00, 0x48,
1902+ 0x06, 0x32, 0x06, 0x2d, 0x06, 0x37, 0x06, 0x4a,
1903+ 0x06, 0x2a, 0x06, 0x1a, 0x1b, 0x1c, 0x09, 0x0f,
1904+ 0x17, 0x0b, 0x18, 0x07, 0x0a, 0x00, 0x01, 0x04,
1905+ 0x06, 0x0c, 0x0e, 0x10, 0x30, 0x2e, 0x30, 0x00,
1906+ 0x2c, 0x00, 0x28, 0x00, 0x41, 0x00, 0x29, 0x00,
1907+ 0x14, 0x30, 0x53, 0x00, 0x15, 0x30, 0x43, 0x52,
1908+ 0x43, 0x44, 0x57, 0x5a, 0x41, 0x00, 0x48, 0x56,
1909+ 0x4d, 0x56, 0x53, 0x44, 0x53, 0x53, 0x50, 0x50,
1910+ 0x56, 0x57, 0x43, 0x4d, 0x43, 0x4d, 0x44, 0x4d,
1911+ 0x52, 0x44, 0x4a, 0x4b, 0x30, 0x30, 0x00, 0x68,
1912+ 0x68, 0x4b, 0x62, 0x57, 0x5b, 0xcc, 0x53, 0xc7,
1913+ 0x30, 0x8c, 0x4e, 0x1a, 0x59, 0xe3, 0x89, 0x29,
1914+ 0x59, 0xa4, 0x4e, 0x20, 0x66, 0x21, 0x71, 0x99,
1915+ 0x65, 0x4d, 0x52, 0x8c, 0x5f, 0x8d, 0x51, 0xb0,
1916+ 0x65, 0x1d, 0x52, 0x42, 0x7d, 0x1f, 0x75, 0xa9,
1917+ 0x8c, 0xf0, 0x58, 0x39, 0x54, 0x14, 0x6f, 0x95,
1918+ 0x62, 0x55, 0x63, 0x00, 0x4e, 0x09, 0x4e, 0x4a,
1919+ 0x90, 0xe6, 0x5d, 0x2d, 0x4e, 0xf3, 0x53, 0x07,
1920+ 0x63, 0x70, 0x8d, 0x53, 0x62, 0x81, 0x79, 0x7a,
1921+ 0x7a, 0x08, 0x54, 0x80, 0x6e, 0x09, 0x67, 0x08,
1922+ 0x67, 0x33, 0x75, 0x72, 0x52, 0xb6, 0x55, 0x4d,
1923+ 0x91, 0x14, 0x30, 0x15, 0x30, 0x2c, 0x67, 0x09,
1924+ 0x4e, 0x8c, 0x4e, 0x89, 0x5b, 0xb9, 0x70, 0x53,
1925+ 0x62, 0xd7, 0x76, 0xdd, 0x52, 0x57, 0x65, 0x97,
1926+ 0x5f, 0xef, 0x53, 0x30, 0x00, 0x38, 0x4e, 0x05,
1927+ 0x00, 0x09, 0x22, 0x01, 0x60, 0x4f, 0xae, 0x4f,
1928+ 0xbb, 0x4f, 0x02, 0x50, 0x7a, 0x50, 0x99, 0x50,
1929+ 0xe7, 0x50, 0xcf, 0x50, 0x9e, 0x34, 0x3a, 0x06,
1930+ 0x4d, 0x51, 0x54, 0x51, 0x64, 0x51, 0x77, 0x51,
1931+ 0x1c, 0x05, 0xb9, 0x34, 0x67, 0x51, 0x8d, 0x51,
1932+ 0x4b, 0x05, 0x97, 0x51, 0xa4, 0x51, 0xcc, 0x4e,
1933+ 0xac, 0x51, 0xb5, 0x51, 0xdf, 0x91, 0xf5, 0x51,
1934+ 0x03, 0x52, 0xdf, 0x34, 0x3b, 0x52, 0x46, 0x52,
1935+ 0x72, 0x52, 0x77, 0x52, 0x15, 0x35, 0x02, 0x00,
1936+ 0x20, 0x80, 0x80, 0x00, 0x08, 0x00, 0x00, 0xc7,
1937+ 0x52, 0x00, 0x02, 0x1d, 0x33, 0x3e, 0x3f, 0x50,
1938+ 0x82, 0x8a, 0x93, 0xac, 0xb6, 0xb8, 0xb8, 0xb8,
1939+ 0x2c, 0x0a, 0x70, 0x70, 0xca, 0x53, 0xdf, 0x53,
1940+ 0x63, 0x0b, 0xeb, 0x53, 0xf1, 0x53, 0x06, 0x54,
1941+ 0x9e, 0x54, 0x38, 0x54, 0x48, 0x54, 0x68, 0x54,
1942+ 0xa2, 0x54, 0xf6, 0x54, 0x10, 0x55, 0x53, 0x55,
1943+ 0x63, 0x55, 0x84, 0x55, 0x84, 0x55, 0x99, 0x55,
1944+ 0xab, 0x55, 0xb3, 0x55, 0xc2, 0x55, 0x16, 0x57,
1945+ 0x06, 0x56, 0x17, 0x57, 0x51, 0x56, 0x74, 0x56,
1946+ 0x07, 0x52, 0xee, 0x58, 0xce, 0x57, 0xf4, 0x57,
1947+ 0x0d, 0x58, 0x8b, 0x57, 0x32, 0x58, 0x31, 0x58,
1948+ 0xac, 0x58, 0xe4, 0x14, 0xf2, 0x58, 0xf7, 0x58,
1949+ 0x06, 0x59, 0x1a, 0x59, 0x22, 0x59, 0x62, 0x59,
1950+ 0xa8, 0x16, 0xea, 0x16, 0xec, 0x59, 0x1b, 0x5a,
1951+ 0x27, 0x5a, 0xd8, 0x59, 0x66, 0x5a, 0xee, 0x36,
1952+ 0xfc, 0x36, 0x08, 0x5b, 0x3e, 0x5b, 0x3e, 0x5b,
1953+ 0xc8, 0x19, 0xc3, 0x5b, 0xd8, 0x5b, 0xe7, 0x5b,
1954+ 0xf3, 0x5b, 0x18, 0x1b, 0xff, 0x5b, 0x06, 0x5c,
1955+ 0x53, 0x5f, 0x22, 0x5c, 0x81, 0x37, 0x60, 0x5c,
1956+ 0x6e, 0x5c, 0xc0, 0x5c, 0x8d, 0x5c, 0xe4, 0x1d,
1957+ 0x43, 0x5d, 0xe6, 0x1d, 0x6e, 0x5d, 0x6b, 0x5d,
1958+ 0x7c, 0x5d, 0xe1, 0x5d, 0xe2, 0x5d, 0x2f, 0x38,
1959+ 0xfd, 0x5d, 0x28, 0x5e, 0x3d, 0x5e, 0x69, 0x5e,
1960+ 0x62, 0x38, 0x83, 0x21, 0x7c, 0x38, 0xb0, 0x5e,
1961+ 0xb3, 0x5e, 0xb6, 0x5e, 0xca, 0x5e, 0x92, 0xa3,
1962+ 0xfe, 0x5e, 0x31, 0x23, 0x31, 0x23, 0x01, 0x82,
1963+ 0x22, 0x5f, 0x22, 0x5f, 0xc7, 0x38, 0xb8, 0x32,
1964+ 0xda, 0x61, 0x62, 0x5f, 0x6b, 0x5f, 0xe3, 0x38,
1965+ 0x9a, 0x5f, 0xcd, 0x5f, 0xd7, 0x5f, 0xf9, 0x5f,
1966+ 0x81, 0x60, 0x3a, 0x39, 0x1c, 0x39, 0x94, 0x60,
1967+ 0xd4, 0x26, 0xc7, 0x60, 0x02, 0x02, 0x00, 0x00,
1968+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0a,
1969+ 0x00, 0x00, 0x02, 0x08, 0x00, 0x80, 0x08, 0x00,
1970+ 0x00, 0x08, 0x80, 0x28, 0x80, 0x02, 0x00, 0x00,
1971+ 0x02, 0x48, 0x61, 0x00, 0x04, 0x06, 0x04, 0x32,
1972+ 0x46, 0x6a, 0x5c, 0x67, 0x96, 0xaa, 0xae, 0xc8,
1973+ 0xd3, 0x5d, 0x62, 0x00, 0x54, 0x77, 0xf3, 0x0c,
1974+ 0x2b, 0x3d, 0x63, 0xfc, 0x62, 0x68, 0x63, 0x83,
1975+ 0x63, 0xe4, 0x63, 0xf1, 0x2b, 0x22, 0x64, 0xc5,
1976+ 0x63, 0xa9, 0x63, 0x2e, 0x3a, 0x69, 0x64, 0x7e,
1977+ 0x64, 0x9d, 0x64, 0x77, 0x64, 0x6c, 0x3a, 0x4f,
1978+ 0x65, 0x6c, 0x65, 0x0a, 0x30, 0xe3, 0x65, 0xf8,
1979+ 0x66, 0x49, 0x66, 0x19, 0x3b, 0x91, 0x66, 0x08,
1980+ 0x3b, 0xe4, 0x3a, 0x92, 0x51, 0x95, 0x51, 0x00,
1981+ 0x67, 0x9c, 0x66, 0xad, 0x80, 0xd9, 0x43, 0x17,
1982+ 0x67, 0x1b, 0x67, 0x21, 0x67, 0x5e, 0x67, 0x53,
1983+ 0x67, 0xc3, 0x33, 0x49, 0x3b, 0xfa, 0x67, 0x85,
1984+ 0x67, 0x52, 0x68, 0x85, 0x68, 0x6d, 0x34, 0x8e,
1985+ 0x68, 0x1f, 0x68, 0x14, 0x69, 0x9d, 0x3b, 0x42,
1986+ 0x69, 0xa3, 0x69, 0xea, 0x69, 0xa8, 0x6a, 0xa3,
1987+ 0x36, 0xdb, 0x6a, 0x18, 0x3c, 0x21, 0x6b, 0xa7,
1988+ 0x38, 0x54, 0x6b, 0x4e, 0x3c, 0x72, 0x6b, 0x9f,
1989+ 0x6b, 0xba, 0x6b, 0xbb, 0x6b, 0x8d, 0x3a, 0x0b,
1990+ 0x1d, 0xfa, 0x3a, 0x4e, 0x6c, 0xbc, 0x3c, 0xbf,
1991+ 0x6c, 0xcd, 0x6c, 0x67, 0x6c, 0x16, 0x6d, 0x3e,
1992+ 0x6d, 0x77, 0x6d, 0x41, 0x6d, 0x69, 0x6d, 0x78,
1993+ 0x6d, 0x85, 0x6d, 0x1e, 0x3d, 0x34, 0x6d, 0x2f,
1994+ 0x6e, 0x6e, 0x6e, 0x33, 0x3d, 0xcb, 0x6e, 0xc7,
1995+ 0x6e, 0xd1, 0x3e, 0xf9, 0x6d, 0x6e, 0x6f, 0x5e,
1996+ 0x3f, 0x8e, 0x3f, 0xc6, 0x6f, 0x39, 0x70, 0x1e,
1997+ 0x70, 0x1b, 0x70, 0x96, 0x3d, 0x4a, 0x70, 0x7d,
1998+ 0x70, 0x77, 0x70, 0xad, 0x70, 0x25, 0x05, 0x45,
1999+ 0x71, 0x63, 0x42, 0x9c, 0x71, 0xab, 0x43, 0x28,
2000+ 0x72, 0x35, 0x72, 0x50, 0x72, 0x08, 0x46, 0x80,
2001+ 0x72, 0x95, 0x72, 0x35, 0x47, 0x02, 0x20, 0x00,
2002+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x08, 0x80,
2003+ 0x00, 0x00, 0x02, 0x02, 0x80, 0x8a, 0x00, 0x00,
2004+ 0x20, 0x00, 0x08, 0x0a, 0x00, 0x80, 0x88, 0x80,
2005+ 0x20, 0x14, 0x48, 0x7a, 0x73, 0x8b, 0x73, 0xac,
2006+ 0x3e, 0xa5, 0x73, 0xb8, 0x3e, 0xb8, 0x3e, 0x47,
2007+ 0x74, 0x5c, 0x74, 0x71, 0x74, 0x85, 0x74, 0xca,
2008+ 0x74, 0x1b, 0x3f, 0x24, 0x75, 0x36, 0x4c, 0x3e,
2009+ 0x75, 0x92, 0x4c, 0x70, 0x75, 0x9f, 0x21, 0x10,
2010+ 0x76, 0xa1, 0x4f, 0xb8, 0x4f, 0x44, 0x50, 0xfc,
2011+ 0x3f, 0x08, 0x40, 0xf4, 0x76, 0xf3, 0x50, 0xf2,
2012+ 0x50, 0x19, 0x51, 0x33, 0x51, 0x1e, 0x77, 0x1f,
2013+ 0x77, 0x1f, 0x77, 0x4a, 0x77, 0x39, 0x40, 0x8b,
2014+ 0x77, 0x46, 0x40, 0x96, 0x40, 0x1d, 0x54, 0x4e,
2015+ 0x78, 0x8c, 0x78, 0xcc, 0x78, 0xe3, 0x40, 0x26,
2016+ 0x56, 0x56, 0x79, 0x9a, 0x56, 0xc5, 0x56, 0x8f,
2017+ 0x79, 0xeb, 0x79, 0x2f, 0x41, 0x40, 0x7a, 0x4a,
2018+ 0x7a, 0x4f, 0x7a, 0x7c, 0x59, 0xa7, 0x5a, 0xa7,
2019+ 0x5a, 0xee, 0x7a, 0x02, 0x42, 0xab, 0x5b, 0xc6,
2020+ 0x7b, 0xc9, 0x7b, 0x27, 0x42, 0x80, 0x5c, 0xd2,
2021+ 0x7c, 0xa0, 0x42, 0xe8, 0x7c, 0xe3, 0x7c, 0x00,
2022+ 0x7d, 0x86, 0x5f, 0x63, 0x7d, 0x01, 0x43, 0xc7,
2023+ 0x7d, 0x02, 0x7e, 0x45, 0x7e, 0x34, 0x43, 0x28,
2024+ 0x62, 0x47, 0x62, 0x59, 0x43, 0xd9, 0x62, 0x7a,
2025+ 0x7f, 0x3e, 0x63, 0x95, 0x7f, 0xfa, 0x7f, 0x05,
2026+ 0x80, 0xda, 0x64, 0x23, 0x65, 0x60, 0x80, 0xa8,
2027+ 0x65, 0x70, 0x80, 0x5f, 0x33, 0xd5, 0x43, 0xb2,
2028+ 0x80, 0x03, 0x81, 0x0b, 0x44, 0x3e, 0x81, 0xb5,
2029+ 0x5a, 0xa7, 0x67, 0xb5, 0x67, 0x93, 0x33, 0x9c,
2030+ 0x33, 0x01, 0x82, 0x04, 0x82, 0x9e, 0x8f, 0x6b,
2031+ 0x44, 0x91, 0x82, 0x8b, 0x82, 0x9d, 0x82, 0xb3,
2032+ 0x52, 0xb1, 0x82, 0xb3, 0x82, 0xbd, 0x82, 0xe6,
2033+ 0x82, 0x3c, 0x6b, 0xe5, 0x82, 0x1d, 0x83, 0x63,
2034+ 0x83, 0xad, 0x83, 0x23, 0x83, 0xbd, 0x83, 0xe7,
2035+ 0x83, 0x57, 0x84, 0x53, 0x83, 0xca, 0x83, 0xcc,
2036+ 0x83, 0xdc, 0x83, 0x36, 0x6c, 0x6b, 0x6d, 0x02,
2037+ 0x00, 0x00, 0x20, 0x22, 0x2a, 0xa0, 0x0a, 0x00,
2038+ 0x20, 0x80, 0x28, 0x00, 0xa8, 0x20, 0x20, 0x00,
2039+ 0x02, 0x80, 0x22, 0x02, 0x8a, 0x08, 0x00, 0xaa,
2040+ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x28, 0xd5,
2041+ 0x6c, 0x2b, 0x45, 0xf1, 0x84, 0xf3, 0x84, 0x16,
2042+ 0x85, 0xca, 0x73, 0x64, 0x85, 0x2c, 0x6f, 0x5d,
2043+ 0x45, 0x61, 0x45, 0xb1, 0x6f, 0xd2, 0x70, 0x6b,
2044+ 0x45, 0x50, 0x86, 0x5c, 0x86, 0x67, 0x86, 0x69,
2045+ 0x86, 0xa9, 0x86, 0x88, 0x86, 0x0e, 0x87, 0xe2,
2046+ 0x86, 0x79, 0x87, 0x28, 0x87, 0x6b, 0x87, 0x86,
2047+ 0x87, 0xd7, 0x45, 0xe1, 0x87, 0x01, 0x88, 0xf9,
2048+ 0x45, 0x60, 0x88, 0x63, 0x88, 0x67, 0x76, 0xd7,
2049+ 0x88, 0xde, 0x88, 0x35, 0x46, 0xfa, 0x88, 0xbb,
2050+ 0x34, 0xae, 0x78, 0x66, 0x79, 0xbe, 0x46, 0xc7,
2051+ 0x46, 0xa0, 0x8a, 0xed, 0x8a, 0x8a, 0x8b, 0x55,
2052+ 0x8c, 0xa8, 0x7c, 0xab, 0x8c, 0xc1, 0x8c, 0x1b,
2053+ 0x8d, 0x77, 0x8d, 0x2f, 0x7f, 0x04, 0x08, 0xcb,
2054+ 0x8d, 0xbc, 0x8d, 0xf0, 0x8d, 0xde, 0x08, 0xd4,
2055+ 0x8e, 0x38, 0x8f, 0xd2, 0x85, 0xed, 0x85, 0x94,
2056+ 0x90, 0xf1, 0x90, 0x11, 0x91, 0x2e, 0x87, 0x1b,
2057+ 0x91, 0x38, 0x92, 0xd7, 0x92, 0xd8, 0x92, 0x7c,
2058+ 0x92, 0xf9, 0x93, 0x15, 0x94, 0xfa, 0x8b, 0x8b,
2059+ 0x95, 0x95, 0x49, 0xb7, 0x95, 0x77, 0x8d, 0xe6,
2060+ 0x49, 0xc3, 0x96, 0xb2, 0x5d, 0x23, 0x97, 0x45,
2061+ 0x91, 0x1a, 0x92, 0x6e, 0x4a, 0x76, 0x4a, 0xe0,
2062+ 0x97, 0x0a, 0x94, 0xb2, 0x4a, 0x96, 0x94, 0x0b,
2063+ 0x98, 0x0b, 0x98, 0x29, 0x98, 0xb6, 0x95, 0xe2,
2064+ 0x98, 0x33, 0x4b, 0x29, 0x99, 0xa7, 0x99, 0xc2,
2065+ 0x99, 0xfe, 0x99, 0xce, 0x4b, 0x30, 0x9b, 0x12,
2066+ 0x9b, 0x40, 0x9c, 0xfd, 0x9c, 0xce, 0x4c, 0xed,
2067+ 0x4c, 0x67, 0x9d, 0xce, 0xa0, 0xf8, 0x4c, 0x05,
2068+ 0xa1, 0x0e, 0xa2, 0x91, 0xa2, 0xbb, 0x9e, 0x56,
2069+ 0x4d, 0xf9, 0x9e, 0xfe, 0x9e, 0x05, 0x9f, 0x0f,
2070+ 0x9f, 0x16, 0x9f, 0x3b, 0x9f, 0x00, 0xa6, 0x02,
2071+ 0x88, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
2072+ 0x28, 0x00, 0x08, 0xa0, 0x80, 0xa0, 0x80, 0x00,
2073+ 0x80, 0x80, 0x00, 0x0a, 0x88, 0x80, 0x00, 0x80,
2074+ 0x00, 0x20, 0x2a, 0x00, 0x80,
20572075 };
20582076
2059−static const uint16_t unicode_comp_table[944] = {
2077+static const uint16_t unicode_comp_table[945] = {
20602078 0x4a01, 0x49c0, 0x4a02, 0x0280, 0x0281, 0x0282, 0x0283, 0x02c0,
20612079 0x02c2, 0x0a00, 0x0284, 0x2442, 0x0285, 0x07c0, 0x0980, 0x0982,
20622080 0x2440, 0x2280, 0x02c4, 0x2282, 0x2284, 0x2286, 0x02c6, 0x02c8,
@@ -2173,8 +2191,9 @@ static const uint16_t unicode_comp_table[944] = { · 110 unmodified lines
21732191 0x5704, 0x5706, 0x5708, 0x570a, 0x570c, 0x570e, 0x5710, 0x5712,
21742192 0x5714, 0x5716, 0x5740, 0x5742, 0x5744, 0x5780, 0x5781, 0x57c0,
21752193 0x57c1, 0x5800, 0x5801, 0x5840, 0x5841, 0x5880, 0x5881, 0x5900,
2176− 0x5901, 0x5902, 0x5903, 0x5940, 0x8e40, 0x8e42, 0x8e80, 0x8ec0,
2177− 0x8ec1, 0x8f00, 0x8f01, 0x8f41, 0x8f40, 0x8f43, 0x8f80, 0x8f81,
2194+ 0x5901, 0x5902, 0x5903, 0x5940, 0x8e80, 0x8e82, 0x8ec0, 0x8f00,
2195+ 0x8f01, 0x8f40, 0x8f41, 0x8f81, 0x8f80, 0x8f83, 0x8fc0, 0x8fc1,
2196+ 0x9000,
21782197 };
21792198
21802199 typedef enum {
@@ -2260,7 +2279,7 @@ static const char unicode_gc_name_table[] = · 79 unmodified lines
22602279 "C,Other" "\0"
22612280 ;
22622281
2263−static const uint8_t unicode_gc_table[3719] = {
2282+static const uint8_t unicode_gc_table[3790] = {
22642283 0xfa, 0x18, 0x17, 0x56, 0x0d, 0x56, 0x12, 0x13,
22652284 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36,
22662285 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e,
@@ -2304,8 +2323,8 @@ static const uint8_t unicode_gc_table[3719] = { · 37 unmodified lines
23042323 0x06, 0x2d, 0xe5, 0x0e, 0x66, 0x04, 0xe6, 0x01,
23052324 0x04, 0x46, 0x04, 0x86, 0x20, 0xf6, 0x07, 0x00,
23062325 0xe5, 0x11, 0x46, 0x20, 0x16, 0x00, 0xe5, 0x03,
2307− 0xe0, 0x2d, 0xe5, 0x0d, 0x00, 0xe5, 0x00, 0xe0,
2308− 0x0d, 0xe6, 0x07, 0x1b, 0xe6, 0x18, 0x07, 0xe5,
2326+ 0xe0, 0x2d, 0xe5, 0x0d, 0x00, 0xe5, 0x0a, 0xe0,
2327+ 0x03, 0xe6, 0x07, 0x1b, 0xe6, 0x18, 0x07, 0xe5,
23092328 0x2e, 0x06, 0x07, 0x06, 0x05, 0x47, 0xe6, 0x00,
23102329 0x67, 0x06, 0x27, 0x05, 0xc6, 0xe5, 0x02, 0x26,
23112330 0x36, 0xe9, 0x02, 0x16, 0x04, 0xe5, 0x07, 0x06,
@@ -2328,80 +2347,80 @@ static const uint8_t unicode_gc_table[3719] = { · 16 unmodified lines
23282347 0x00, 0x06, 0x27, 0x00, 0xe5, 0x00, 0x20, 0x25,
23292348 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00, 0x25, 0x00,
23302349 0x85, 0x20, 0x06, 0x05, 0x07, 0x06, 0x07, 0x66,
2331− 0x20, 0x27, 0x20, 0x27, 0x06, 0xe0, 0x00, 0x06,
2332− 0x07, 0x60, 0x25, 0x00, 0x45, 0x26, 0x20, 0xe9,
2333− 0x02, 0x0f, 0x05, 0xab, 0xe0, 0x02, 0x06, 0x05,
2334− 0x00, 0xa5, 0x40, 0x45, 0x00, 0x65, 0x40, 0x25,
2335− 0x00, 0x05, 0x00, 0x25, 0x40, 0x25, 0x40, 0x45,
2336− 0x40, 0xe5, 0x04, 0x60, 0x27, 0x06, 0x27, 0x40,
2337− 0x47, 0x00, 0x47, 0x06, 0x20, 0x05, 0xa0, 0x07,
2338− 0xe0, 0x06, 0xe9, 0x02, 0x4b, 0xaf, 0x0d, 0x0f,
2339− 0x80, 0x06, 0x47, 0x06, 0xe5, 0x00, 0x00, 0x45,
2340− 0x00, 0xe5, 0x0f, 0x00, 0xe5, 0x08, 0x40, 0x05,
2341− 0x46, 0x67, 0x00, 0x46, 0x00, 0x66, 0xc0, 0x26,
2342− 0x00, 0x45, 0x80, 0x25, 0x26, 0x20, 0xe9, 0x02,
2343− 0xc0, 0x16, 0xcb, 0x0f, 0x05, 0x06, 0x27, 0x16,
2344− 0xe5, 0x00, 0x00, 0x45, 0x00, 0xe5, 0x0f, 0x00,
2345− 0xe5, 0x02, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07,
2346− 0x06, 0x87, 0x00, 0x06, 0x27, 0x00, 0x27, 0x26,
2347− 0xc0, 0x27, 0xc0, 0x05, 0x00, 0x25, 0x26, 0x20,
2348− 0xe9, 0x02, 0x00, 0x25, 0xe0, 0x05, 0x26, 0x27,
2349− 0x00, 0xe5, 0x00, 0x00, 0x45, 0x00, 0xe5, 0x21,
2350− 0x26, 0x05, 0x47, 0x66, 0x00, 0x47, 0x00, 0x47,
2351− 0x06, 0x05, 0x0f, 0x60, 0x45, 0x07, 0xcb, 0x45,
2352− 0x26, 0x20, 0xe9, 0x02, 0xeb, 0x01, 0x0f, 0xa5,
2353− 0x20, 0x27, 0x00, 0xe5, 0x0a, 0x40, 0xe5, 0x10,
2354− 0x00, 0xe5, 0x01, 0x00, 0x05, 0x20, 0xc5, 0x40,
2355− 0x06, 0x60, 0x47, 0x46, 0x00, 0x06, 0x00, 0xe7,
2356− 0x00, 0xa0, 0xe9, 0x02, 0x20, 0x27, 0x16, 0xe0,
2357− 0x04, 0xe5, 0x28, 0x06, 0x25, 0xc6, 0x60, 0x0d,
2358− 0xa5, 0x04, 0xe6, 0x00, 0x16, 0xe9, 0x02, 0x36,
2359− 0xe0, 0x1d, 0x25, 0x00, 0x05, 0x00, 0x85, 0x00,
2360− 0xe5, 0x10, 0x00, 0x05, 0x00, 0xe5, 0x02, 0x06,
2361− 0x25, 0xe6, 0x01, 0x05, 0x20, 0x85, 0x00, 0x04,
2362− 0x00, 0xa6, 0x20, 0xe9, 0x02, 0x20, 0x65, 0xe0,
2363− 0x18, 0x05, 0x4f, 0xf6, 0x07, 0x0f, 0x16, 0x4f,
2364− 0x26, 0xaf, 0xe9, 0x02, 0xeb, 0x02, 0x0f, 0x06,
2365− 0x0f, 0x06, 0x0f, 0x06, 0x12, 0x13, 0x12, 0x13,
2366− 0x27, 0xe5, 0x00, 0x00, 0xe5, 0x1c, 0x60, 0xe6,
2367− 0x06, 0x07, 0x86, 0x16, 0x26, 0x85, 0xe6, 0x03,
2368− 0x00, 0xe6, 0x1c, 0x00, 0xef, 0x00, 0x06, 0xaf,
2369− 0x00, 0x2f, 0x96, 0x6f, 0x36, 0xe0, 0x1d, 0xe5,
2370− 0x23, 0x27, 0x66, 0x07, 0xa6, 0x07, 0x26, 0x27,
2371− 0x26, 0x05, 0xe9, 0x02, 0xb6, 0xa5, 0x27, 0x26,
2372− 0x65, 0x46, 0x05, 0x47, 0x25, 0xc7, 0x45, 0x66,
2373− 0xe5, 0x05, 0x06, 0x27, 0x26, 0xa7, 0x06, 0x05,
2374− 0x07, 0xe9, 0x02, 0x47, 0x06, 0x2f, 0xe1, 0x1e,
2375− 0x00, 0x01, 0x80, 0x01, 0x20, 0xe2, 0x23, 0x16,
2376− 0x04, 0x42, 0xe5, 0x80, 0xc1, 0x00, 0x65, 0x20,
2377− 0xc5, 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x21,
2378− 0x00, 0x65, 0x20, 0xe5, 0x19, 0x00, 0x65, 0x20,
2379− 0xc5, 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x07,
2380− 0x00, 0xe5, 0x31, 0x00, 0x65, 0x20, 0xe5, 0x3b,
2381− 0x20, 0x46, 0xf6, 0x01, 0xeb, 0x0c, 0x40, 0xe5,
2382− 0x08, 0xef, 0x02, 0xa0, 0xe1, 0x4e, 0x20, 0xa2,
2383− 0x20, 0x11, 0xe5, 0x81, 0xe4, 0x0f, 0x16, 0xe5,
2384− 0x09, 0x17, 0xe5, 0x12, 0x12, 0x13, 0x40, 0xe5,
2385− 0x43, 0x56, 0x4a, 0xe5, 0x00, 0xc0, 0xe5, 0x05,
2386− 0x00, 0x65, 0x46, 0xe0, 0x03, 0xe5, 0x0a, 0x46,
2387− 0x36, 0xe0, 0x01, 0xe5, 0x0a, 0x26, 0xe0, 0x04,
2388− 0xe5, 0x05, 0x00, 0x45, 0x00, 0x26, 0xe0, 0x04,
2389− 0xe5, 0x2c, 0x26, 0x07, 0xc6, 0xe7, 0x00, 0x06,
2390− 0x27, 0xe6, 0x03, 0x56, 0x04, 0x56, 0x0d, 0x05,
2391− 0x06, 0x20, 0xe9, 0x02, 0xa0, 0xeb, 0x02, 0xa0,
2392− 0xb6, 0x11, 0x76, 0x46, 0x1b, 0x00, 0xe9, 0x02,
2393− 0xa0, 0xe5, 0x1b, 0x04, 0xe5, 0x2d, 0xc0, 0x85,
2394− 0x26, 0xe5, 0x1a, 0x06, 0x05, 0x80, 0xe5, 0x3e,
2395− 0xe0, 0x02, 0xe5, 0x17, 0x00, 0x46, 0x67, 0x26,
2396− 0x47, 0x60, 0x27, 0x06, 0xa7, 0x46, 0x60, 0x0f,
2397− 0x40, 0x36, 0xe9, 0x02, 0xe5, 0x16, 0x20, 0x85,
2398− 0xe0, 0x03, 0xe5, 0x24, 0x60, 0xe5, 0x12, 0xa0,
2399− 0xe9, 0x02, 0x0b, 0x40, 0xef, 0x1a, 0xe5, 0x0f,
2400− 0x26, 0x27, 0x06, 0x20, 0x36, 0xe5, 0x2d, 0x07,
2401− 0x06, 0x07, 0xc6, 0x00, 0x06, 0x07, 0x06, 0x27,
2402− 0xe6, 0x00, 0xa7, 0xe6, 0x02, 0x20, 0x06, 0xe9,
2403− 0x02, 0xa0, 0xe9, 0x02, 0xa0, 0xd6, 0x04, 0xb6,
2404− 0x20, 0xe6, 0x06, 0x08, 0xe0, 0x39, 0x66, 0x07,
2350+ 0x20, 0x27, 0x20, 0x27, 0x06, 0xc0, 0x26, 0x07,
2351+ 0x60, 0x25, 0x00, 0x45, 0x26, 0x20, 0xe9, 0x02,
2352+ 0x0f, 0x05, 0xab, 0xe0, 0x02, 0x06, 0x05, 0x00,
2353+ 0xa5, 0x40, 0x45, 0x00, 0x65, 0x40, 0x25, 0x00,
2354+ 0x05, 0x00, 0x25, 0x40, 0x25, 0x40, 0x45, 0x40,
2355+ 0xe5, 0x04, 0x60, 0x27, 0x06, 0x27, 0x40, 0x47,
2356+ 0x00, 0x47, 0x06, 0x20, 0x05, 0xa0, 0x07, 0xe0,
2357+ 0x06, 0xe9, 0x02, 0x4b, 0xaf, 0x0d, 0x0f, 0x80,
2358+ 0x06, 0x47, 0x06, 0xe5, 0x00, 0x00, 0x45, 0x00,
2359+ 0xe5, 0x0f, 0x00, 0xe5, 0x08, 0x40, 0x05, 0x46,
2360+ 0x67, 0x00, 0x46, 0x00, 0x66, 0xc0, 0x26, 0x00,
2361+ 0x45, 0x80, 0x25, 0x26, 0x20, 0xe9, 0x02, 0xc0,
2362+ 0x16, 0xcb, 0x0f, 0x05, 0x06, 0x27, 0x16, 0xe5,
2363+ 0x00, 0x00, 0x45, 0x00, 0xe5, 0x0f, 0x00, 0xe5,
2364+ 0x02, 0x00, 0x85, 0x20, 0x06, 0x05, 0x07, 0x06,
2365+ 0x87, 0x00, 0x06, 0x27, 0x00, 0x27, 0x26, 0xc0,
2366+ 0x27, 0xc0, 0x05, 0x00, 0x25, 0x26, 0x20, 0xe9,
2367+ 0x02, 0x00, 0x25, 0xe0, 0x05, 0x26, 0x27, 0xe5,
2368+ 0x01, 0x00, 0x45, 0x00, 0xe5, 0x21, 0x26, 0x05,
2369+ 0x47, 0x66, 0x00, 0x47, 0x00, 0x47, 0x06, 0x05,
2370+ 0x0f, 0x60, 0x45, 0x07, 0xcb, 0x45, 0x26, 0x20,
2371+ 0xe9, 0x02, 0xeb, 0x01, 0x0f, 0xa5, 0x00, 0x06,
2372+ 0x27, 0x00, 0xe5, 0x0a, 0x40, 0xe5, 0x10, 0x00,
2373+ 0xe5, 0x01, 0x00, 0x05, 0x20, 0xc5, 0x40, 0x06,
2374+ 0x60, 0x47, 0x46, 0x00, 0x06, 0x00, 0xe7, 0x00,
2375+ 0xa0, 0xe9, 0x02, 0x20, 0x27, 0x16, 0xe0, 0x04,
2376+ 0xe5, 0x28, 0x06, 0x25, 0xc6, 0x60, 0x0d, 0xa5,
2377+ 0x04, 0xe6, 0x00, 0x16, 0xe9, 0x02, 0x36, 0xe0,
2378+ 0x1d, 0x25, 0x00, 0x05, 0x00, 0x85, 0x00, 0xe5,
2379+ 0x10, 0x00, 0x05, 0x00, 0xe5, 0x02, 0x06, 0x25,
2380+ 0xe6, 0x01, 0x05, 0x20, 0x85, 0x00, 0x04, 0x00,
2381+ 0xa6, 0x20, 0xe9, 0x02, 0x20, 0x65, 0xe0, 0x18,
2382+ 0x05, 0x4f, 0xf6, 0x07, 0x0f, 0x16, 0x4f, 0x26,
2383+ 0xaf, 0xe9, 0x02, 0xeb, 0x02, 0x0f, 0x06, 0x0f,
2384+ 0x06, 0x0f, 0x06, 0x12, 0x13, 0x12, 0x13, 0x27,
2385+ 0xe5, 0x00, 0x00, 0xe5, 0x1c, 0x60, 0xe6, 0x06,
2386+ 0x07, 0x86, 0x16, 0x26, 0x85, 0xe6, 0x03, 0x00,
2387+ 0xe6, 0x1c, 0x00, 0xef, 0x00, 0x06, 0xaf, 0x00,
2388+ 0x2f, 0x96, 0x6f, 0x36, 0xe0, 0x1d, 0xe5, 0x23,
2389+ 0x27, 0x66, 0x07, 0xa6, 0x07, 0x26, 0x27, 0x26,
2390+ 0x05, 0xe9, 0x02, 0xb6, 0xa5, 0x27, 0x26, 0x65,
2391+ 0x46, 0x05, 0x47, 0x25, 0xc7, 0x45, 0x66, 0xe5,
2392+ 0x05, 0x06, 0x27, 0x26, 0xa7, 0x06, 0x05, 0x07,
2393+ 0xe9, 0x02, 0x47, 0x06, 0x2f, 0xe1, 0x1e, 0x00,
2394+ 0x01, 0x80, 0x01, 0x20, 0xe2, 0x23, 0x16, 0x04,
2395+ 0x42, 0xe5, 0x80, 0xc1, 0x00, 0x65, 0x20, 0xc5,
2396+ 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x21, 0x00,
2397+ 0x65, 0x20, 0xe5, 0x19, 0x00, 0x65, 0x20, 0xc5,
2398+ 0x00, 0x05, 0x00, 0x65, 0x20, 0xe5, 0x07, 0x00,
2399+ 0xe5, 0x31, 0x00, 0x65, 0x20, 0xe5, 0x3b, 0x20,
2400+ 0x46, 0xf6, 0x01, 0xeb, 0x0c, 0x40, 0xe5, 0x08,
2401+ 0xef, 0x02, 0xa0, 0xe1, 0x4e, 0x20, 0xa2, 0x20,
2402+ 0x11, 0xe5, 0x81, 0xe4, 0x0f, 0x16, 0xe5, 0x09,
2403+ 0x17, 0xe5, 0x12, 0x12, 0x13, 0x40, 0xe5, 0x43,
2404+ 0x56, 0x4a, 0xe5, 0x00, 0xc0, 0xe5, 0x05, 0x00,
2405+ 0x65, 0x46, 0xe0, 0x03, 0xe5, 0x0a, 0x46, 0x36,
2406+ 0xe0, 0x01, 0xe5, 0x0a, 0x26, 0xe0, 0x04, 0xe5,
2407+ 0x05, 0x00, 0x45, 0x00, 0x26, 0xe0, 0x04, 0xe5,
2408+ 0x2c, 0x26, 0x07, 0xc6, 0xe7, 0x00, 0x06, 0x27,
2409+ 0xe6, 0x03, 0x56, 0x04, 0x56, 0x0d, 0x05, 0x06,
2410+ 0x20, 0xe9, 0x02, 0xa0, 0xeb, 0x02, 0xa0, 0xb6,
2411+ 0x11, 0x76, 0x46, 0x1b, 0x00, 0xe9, 0x02, 0xa0,
2412+ 0xe5, 0x1b, 0x04, 0xe5, 0x2d, 0xc0, 0x85, 0x26,
2413+ 0xe5, 0x1a, 0x06, 0x05, 0x80, 0xe5, 0x3e, 0xe0,
2414+ 0x02, 0xe5, 0x17, 0x00, 0x46, 0x67, 0x26, 0x47,
2415+ 0x60, 0x27, 0x06, 0xa7, 0x46, 0x60, 0x0f, 0x40,
2416+ 0x36, 0xe9, 0x02, 0xe5, 0x16, 0x20, 0x85, 0xe0,
2417+ 0x03, 0xe5, 0x24, 0x60, 0xe5, 0x12, 0xa0, 0xe9,
2418+ 0x02, 0x0b, 0x40, 0xef, 0x1a, 0xe5, 0x0f, 0x26,
2419+ 0x27, 0x06, 0x20, 0x36, 0xe5, 0x2d, 0x07, 0x06,
2420+ 0x07, 0xc6, 0x00, 0x06, 0x07, 0x06, 0x27, 0xe6,
2421+ 0x00, 0xa7, 0xe6, 0x02, 0x20, 0x06, 0xe9, 0x02,
2422+ 0xa0, 0xe9, 0x02, 0xa0, 0xd6, 0x04, 0xb6, 0x20,
2423+ 0xe6, 0x06, 0x08, 0x26, 0xe0, 0x37, 0x66, 0x07,
24052424 0xe5, 0x27, 0x06, 0x07, 0x86, 0x07, 0x06, 0x87,
24062425 0x06, 0x27, 0xc5, 0x60, 0xe9, 0x02, 0xd6, 0xef,
24072426 0x02, 0xe6, 0x01, 0xef, 0x01, 0x40, 0x26, 0x07,
@@ -2461,7 +2480,7 @@ static const uint8_t unicode_gc_table[3719] = { · 53 unmodified lines
24612480 0x13, 0x12, 0x13, 0x12, 0x13, 0xec, 0x37, 0x12,
24622481 0x13, 0x12, 0x13, 0xec, 0x18, 0x12, 0x13, 0xec,
24632482 0x80, 0x7a, 0xef, 0x28, 0xec, 0x0d, 0x2f, 0xac,
2464− 0xef, 0x1f, 0x20, 0xef, 0x18, 0x20, 0xef, 0x60,
2483+ 0xef, 0x1f, 0x20, 0xef, 0x18, 0x00, 0xef, 0x61,
24652484 0xe1, 0x27, 0x00, 0xe2, 0x27, 0x00, 0x5f, 0x21,
24662485 0x22, 0xdf, 0x41, 0x02, 0x3f, 0x02, 0x3f, 0x82,
24672486 0x24, 0x41, 0x02, 0xff, 0x5a, 0x02, 0xaf, 0x7f,
@@ -2475,257 +2494,266 @@ static const uint8_t unicode_gc_table[3719] = { · 7 unmodified lines
24752494 0x11, 0x36, 0x11, 0x16, 0x14, 0x15, 0x36, 0x14,
24762495 0x15, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12,
24772496 0x13, 0x96, 0x04, 0xf6, 0x02, 0x31, 0x76, 0x11,
2478− 0x16, 0x12, 0xf6, 0x05, 0xe0, 0x28, 0xef, 0x12,
2479− 0x00, 0xef, 0x51, 0xe0, 0x04, 0xef, 0x80, 0x4e,
2480− 0xe0, 0x12, 0xef, 0x04, 0x60, 0x17, 0x56, 0x0f,
2481− 0x04, 0x05, 0x0a, 0x12, 0x13, 0x12, 0x13, 0x12,
2482− 0x13, 0x12, 0x13, 0x12, 0x13, 0x2f, 0x12, 0x13,
2483− 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x11, 0x12,
2484− 0x33, 0x0f, 0xea, 0x01, 0x66, 0x27, 0x11, 0x84,
2485− 0x2f, 0x4a, 0x04, 0x05, 0x16, 0x2f, 0x00, 0xe5,
2486− 0x4e, 0x20, 0x26, 0x2e, 0x24, 0x05, 0x11, 0xe5,
2487− 0x52, 0x16, 0x44, 0x05, 0x80, 0xe5, 0x23, 0x00,
2488− 0xe5, 0x56, 0x00, 0x2f, 0x6b, 0xef, 0x02, 0xe5,
2489− 0x13, 0x80, 0xef, 0x1c, 0xe0, 0x04, 0xe5, 0x08,
2490− 0xef, 0x17, 0x00, 0xeb, 0x02, 0xef, 0x16, 0xeb,
2491− 0x00, 0x0f, 0xeb, 0x07, 0xef, 0x18, 0xeb, 0x02,
2492− 0xef, 0x1f, 0xeb, 0x07, 0xef, 0x80, 0xb8, 0xe5,
2493− 0x99, 0x2e, 0xe0, 0x02, 0xef, 0x38, 0xe5, 0xc0,
2494− 0x11, 0x68, 0xe0, 0x08, 0xe5, 0x0d, 0x04, 0xe5,
2495− 0x83, 0xef, 0x40, 0xef, 0x2f, 0xe0, 0x01, 0xe5,
2496− 0x20, 0xa4, 0x36, 0xe5, 0x80, 0x84, 0x04, 0x56,
2497− 0xe5, 0x08, 0xe9, 0x02, 0x25, 0xe0, 0x0c, 0xff,
2498− 0x26, 0x05, 0x06, 0x48, 0x16, 0xe6, 0x02, 0x16,
2499− 0x04, 0xff, 0x14, 0x24, 0x26, 0xe5, 0x3e, 0xea,
2500− 0x02, 0x26, 0xb6, 0xe0, 0x00, 0xee, 0x0f, 0xe4,
2501− 0x01, 0x2e, 0xff, 0x06, 0x22, 0xff, 0x36, 0x04,
2502− 0xe2, 0x00, 0x9f, 0xff, 0x02, 0x04, 0x2e, 0x7f,
2503− 0x05, 0x7f, 0x22, 0xff, 0x0d, 0x61, 0x02, 0x81,
2504− 0x02, 0xff, 0x02, 0x20, 0x5f, 0x21, 0xe0, 0x28,
2505− 0x05, 0x24, 0x02, 0xc5, 0x06, 0x45, 0x06, 0x65,
2506− 0x06, 0xe5, 0x0f, 0x27, 0x26, 0x07, 0x6f, 0x60,
2507− 0xab, 0x2f, 0x0d, 0x0f, 0xa0, 0xe5, 0x2c, 0x76,
2508− 0xe0, 0x00, 0x27, 0xe5, 0x2a, 0xe7, 0x08, 0x26,
2509− 0xe0, 0x00, 0x36, 0xe9, 0x02, 0xa0, 0xe6, 0x0a,
2510− 0xa5, 0x56, 0x05, 0x16, 0x25, 0x06, 0xe9, 0x02,
2511− 0xe5, 0x14, 0xe6, 0x00, 0x36, 0xe5, 0x0f, 0xe6,
2512− 0x03, 0x27, 0xe0, 0x03, 0x16, 0xe5, 0x15, 0x40,
2513− 0x46, 0x07, 0xe5, 0x27, 0x06, 0x27, 0x66, 0x27,
2514− 0x26, 0x47, 0xf6, 0x05, 0x00, 0x04, 0xe9, 0x02,
2515− 0x60, 0x36, 0x85, 0x06, 0x04, 0xe5, 0x01, 0xe9,
2516− 0x02, 0x85, 0x00, 0xe5, 0x21, 0xa6, 0x27, 0x26,
2517− 0x27, 0x26, 0xe0, 0x01, 0x45, 0x06, 0xe5, 0x00,
2518− 0x06, 0x07, 0x20, 0xe9, 0x02, 0x20, 0x76, 0xe5,
2519− 0x08, 0x04, 0xa5, 0x4f, 0x05, 0x07, 0x06, 0x07,
2520− 0xe5, 0x2a, 0x06, 0x05, 0x46, 0x25, 0x26, 0x85,
2521− 0x26, 0x05, 0x06, 0x05, 0xe0, 0x10, 0x25, 0x04,
2522− 0x36, 0xe5, 0x03, 0x07, 0x26, 0x27, 0x36, 0x05,
2523− 0x24, 0x07, 0x06, 0xe0, 0x02, 0xa5, 0x20, 0xa5,
2524− 0x20, 0xa5, 0xe0, 0x01, 0xc5, 0x00, 0xc5, 0x00,
2525− 0xe2, 0x23, 0x0e, 0x64, 0xe2, 0x00, 0xe0, 0x00,
2526− 0xe2, 0x48, 0xe5, 0x1b, 0x27, 0x06, 0x27, 0x06,
2527− 0x27, 0x16, 0x07, 0x06, 0x20, 0xe9, 0x02, 0xa0,
2528− 0xe5, 0xab, 0x1c, 0xe0, 0x04, 0xe5, 0x0f, 0x60,
2529− 0xe5, 0x29, 0x60, 0xfc, 0x87, 0x78, 0xfd, 0x98,
2530− 0x78, 0xe5, 0x80, 0xe6, 0x20, 0xe5, 0x62, 0xe0,
2531− 0x1e, 0xc2, 0xe0, 0x04, 0x82, 0x80, 0x05, 0x06,
2532− 0xe5, 0x02, 0x0c, 0xe5, 0x05, 0x00, 0x85, 0x00,
2533− 0x05, 0x00, 0x25, 0x00, 0x25, 0x00, 0xe5, 0x64,
2534− 0xee, 0x08, 0xe0, 0x09, 0xe5, 0x80, 0xe3, 0x13,
2535− 0x12, 0xe0, 0x08, 0xe5, 0x38, 0x20, 0xe5, 0x2e,
2536− 0xe0, 0x20, 0xe5, 0x04, 0x0d, 0x0f, 0x20, 0xe6,
2537− 0x08, 0xd6, 0x12, 0x13, 0x16, 0xa0, 0xe6, 0x08,
2538− 0x16, 0x31, 0x30, 0x12, 0x13, 0x12, 0x13, 0x12,
2539− 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12,
2540− 0x13, 0x12, 0x13, 0x36, 0x12, 0x13, 0x76, 0x50,
2541− 0x56, 0x00, 0x76, 0x11, 0x12, 0x13, 0x12, 0x13,
2542− 0x12, 0x13, 0x56, 0x0c, 0x11, 0x4c, 0x00, 0x16,
2543− 0x0d, 0x36, 0x60, 0x85, 0x00, 0xe5, 0x7f, 0x20,
2544− 0x1b, 0x00, 0x56, 0x0d, 0x56, 0x12, 0x13, 0x16,
2545− 0x0c, 0x16, 0x11, 0x36, 0xe9, 0x02, 0x36, 0x4c,
2546− 0x36, 0xe1, 0x12, 0x12, 0x16, 0x13, 0x0e, 0x10,
2547− 0x0e, 0xe2, 0x12, 0x12, 0x0c, 0x13, 0x0c, 0x12,
2548− 0x13, 0x16, 0x12, 0x13, 0x36, 0xe5, 0x02, 0x04,
2549− 0xe5, 0x25, 0x24, 0xe5, 0x17, 0x40, 0xa5, 0x20,
2550− 0xa5, 0x20, 0xa5, 0x20, 0x45, 0x40, 0x2d, 0x0c,
2551− 0x0e, 0x0f, 0x2d, 0x00, 0x0f, 0x6c, 0x2f, 0xe0,
2552− 0x02, 0x5b, 0x2f, 0x20, 0xe5, 0x04, 0x00, 0xe5,
2553− 0x12, 0x00, 0xe5, 0x0b, 0x00, 0x25, 0x00, 0xe5,
2554− 0x07, 0x20, 0xe5, 0x06, 0xe0, 0x1a, 0xe5, 0x73,
2555− 0x80, 0x56, 0x60, 0xeb, 0x25, 0x40, 0xef, 0x01,
2556− 0xea, 0x2d, 0x6b, 0xef, 0x09, 0x2b, 0x4f, 0x00,
2557− 0xef, 0x04, 0x60, 0x0f, 0xe0, 0x27, 0xef, 0x25,
2558− 0x06, 0xe0, 0x7a, 0xe5, 0x15, 0x40, 0xe5, 0x29,
2559− 0xe0, 0x07, 0x06, 0xeb, 0x13, 0x60, 0xe5, 0x18,
2560− 0x6b, 0xe0, 0x01, 0xe5, 0x0c, 0x0a, 0xe5, 0x00,
2561− 0x0a, 0x80, 0xe5, 0x1e, 0x86, 0x80, 0xe5, 0x16,
2562− 0x00, 0x16, 0xe5, 0x1c, 0x60, 0xe5, 0x00, 0x16,
2563− 0x8a, 0xe0, 0x22, 0xe1, 0x20, 0xe2, 0x20, 0xe5,
2564− 0x46, 0x20, 0xe9, 0x02, 0xa0, 0xe1, 0x1c, 0x60,
2565− 0xe2, 0x1c, 0x60, 0xe5, 0x20, 0xe0, 0x00, 0xe5,
2566− 0x2c, 0xe0, 0x03, 0x16, 0xe0, 0x80, 0x08, 0xe5,
2567− 0x80, 0xaf, 0xe0, 0x01, 0xe5, 0x0e, 0xe0, 0x02,
2568− 0xe5, 0x00, 0xe0, 0x80, 0x10, 0xa5, 0x20, 0x05,
2569− 0x00, 0xe5, 0x24, 0x00, 0x25, 0x40, 0x05, 0x20,
2570− 0xe5, 0x0f, 0x00, 0x16, 0xeb, 0x00, 0xe5, 0x0f,
2571− 0x2f, 0xcb, 0xe5, 0x17, 0xe0, 0x00, 0xeb, 0x01,
2572− 0xe0, 0x28, 0xe5, 0x0b, 0x00, 0x25, 0x80, 0x8b,
2573− 0xe5, 0x0e, 0xab, 0x40, 0x16, 0xe5, 0x12, 0x80,
2574− 0x16, 0xe0, 0x38, 0xe5, 0x30, 0x60, 0x2b, 0x25,
2575− 0xeb, 0x08, 0x20, 0xeb, 0x26, 0x05, 0x46, 0x00,
2576− 0x26, 0x80, 0x66, 0x65, 0x00, 0x45, 0x00, 0xe5,
2577− 0x15, 0x20, 0x46, 0x60, 0x06, 0xeb, 0x01, 0xc0,
2578− 0xf6, 0x01, 0xc0, 0xe5, 0x15, 0x2b, 0x16, 0xe5,
2579− 0x15, 0x4b, 0xe0, 0x18, 0xe5, 0x00, 0x0f, 0xe5,
2580− 0x14, 0x26, 0x60, 0x8b, 0xd6, 0xe0, 0x01, 0xe5,
2581− 0x2e, 0x40, 0xd6, 0xe5, 0x0e, 0x20, 0xeb, 0x00,
2582− 0xe5, 0x0b, 0x80, 0xeb, 0x00, 0xe5, 0x0a, 0xc0,
2583− 0x76, 0xe0, 0x04, 0xcb, 0xe0, 0x48, 0xe5, 0x41,
2584− 0xe0, 0x2f, 0xe1, 0x2b, 0xe0, 0x05, 0xe2, 0x2b,
2585− 0xc0, 0xab, 0xe5, 0x1c, 0x66, 0xe0, 0x00, 0xe9,
2586− 0x02, 0xe0, 0x80, 0x9e, 0xeb, 0x17, 0xe0, 0x79,
2587− 0xe5, 0x15, 0xeb, 0x02, 0x05, 0xe0, 0x00, 0xe5,
2588− 0x0e, 0xe6, 0x03, 0x6b, 0x96, 0xe0, 0x7e, 0xe5,
2497+ 0x16, 0x12, 0xf6, 0x05, 0x2f, 0x16, 0xe0, 0x25,
2498+ 0xef, 0x12, 0x00, 0xef, 0x51, 0xe0, 0x04, 0xef,
2499+ 0x80, 0x4e, 0xe0, 0x12, 0xef, 0x04, 0x60, 0x17,
2500+ 0x56, 0x0f, 0x04, 0x05, 0x0a, 0x12, 0x13, 0x12,
2501+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x2f,
2502+ 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13,
2503+ 0x11, 0x12, 0x33, 0x0f, 0xea, 0x01, 0x66, 0x27,
2504+ 0x11, 0x84, 0x2f, 0x4a, 0x04, 0x05, 0x16, 0x2f,
2505+ 0x00, 0xe5, 0x4e, 0x20, 0x26, 0x2e, 0x24, 0x05,
2506+ 0x11, 0xe5, 0x52, 0x16, 0x44, 0x05, 0x80, 0xe5,
2507+ 0x23, 0x00, 0xe5, 0x56, 0x00, 0x2f, 0x6b, 0xef,
2508+ 0x02, 0xe5, 0x18, 0xef, 0x1c, 0xe0, 0x04, 0xe5,
2509+ 0x08, 0xef, 0x17, 0x00, 0xeb, 0x02, 0xef, 0x16,
2510+ 0xeb, 0x00, 0x0f, 0xeb, 0x07, 0xef, 0x18, 0xeb,
2511+ 0x02, 0xef, 0x1f, 0xeb, 0x07, 0xef, 0x80, 0xb8,
2512+ 0xe5, 0x99, 0x38, 0xef, 0x38, 0xe5, 0xc0, 0x11,
2513+ 0x75, 0x40, 0xe5, 0x0d, 0x04, 0xe5, 0x83, 0xef,
2514+ 0x40, 0xef, 0x2f, 0xe0, 0x01, 0xe5, 0x20, 0xa4,
2515+ 0x36, 0xe5, 0x80, 0x84, 0x04, 0x56, 0xe5, 0x08,
2516+ 0xe9, 0x02, 0x25, 0xe0, 0x0c, 0xff, 0x26, 0x05,
2517+ 0x06, 0x48, 0x16, 0xe6, 0x02, 0x16, 0x04, 0xff,
2518+ 0x14, 0x24, 0x26, 0xe5, 0x3e, 0xea, 0x02, 0x26,
2519+ 0xb6, 0xe0, 0x00, 0xee, 0x0f, 0xe4, 0x01, 0x2e,
2520+ 0xff, 0x06, 0x22, 0xff, 0x36, 0x04, 0xe2, 0x00,
2521+ 0x9f, 0xff, 0x02, 0x04, 0x2e, 0x7f, 0x05, 0x7f,
2522+ 0x22, 0xff, 0x0d, 0x61, 0x02, 0x81, 0x02, 0xff,
2523+ 0x02, 0x20, 0x5f, 0x41, 0x02, 0x3f, 0xe0, 0x22,
2524+ 0x3f, 0x05, 0x24, 0x02, 0xc5, 0x06, 0x45, 0x06,
2525+ 0x65, 0x06, 0xe5, 0x0f, 0x27, 0x26, 0x07, 0x6f,
2526+ 0x06, 0x40, 0xab, 0x2f, 0x0d, 0x0f, 0xa0, 0xe5,
2527+ 0x2c, 0x76, 0xe0, 0x00, 0x27, 0xe5, 0x2a, 0xe7,
2528+ 0x08, 0x26, 0xe0, 0x00, 0x36, 0xe9, 0x02, 0xa0,
2529+ 0xe6, 0x0a, 0xa5, 0x56, 0x05, 0x16, 0x25, 0x06,
2530+ 0xe9, 0x02, 0xe5, 0x14, 0xe6, 0x00, 0x36, 0xe5,
2531+ 0x0f, 0xe6, 0x03, 0x27, 0xe0, 0x03, 0x16, 0xe5,
2532+ 0x15, 0x40, 0x46, 0x07, 0xe5, 0x27, 0x06, 0x27,
2533+ 0x66, 0x27, 0x26, 0x47, 0xf6, 0x05, 0x00, 0x04,
2534+ 0xe9, 0x02, 0x60, 0x36, 0x85, 0x06, 0x04, 0xe5,
2535+ 0x01, 0xe9, 0x02, 0x85, 0x00, 0xe5, 0x21, 0xa6,
2536+ 0x27, 0x26, 0x27, 0x26, 0xe0, 0x01, 0x45, 0x06,
2537+ 0xe5, 0x00, 0x06, 0x07, 0x20, 0xe9, 0x02, 0x20,
2538+ 0x76, 0xe5, 0x08, 0x04, 0xa5, 0x4f, 0x05, 0x07,
2539+ 0x06, 0x07, 0xe5, 0x2a, 0x06, 0x05, 0x46, 0x25,
2540+ 0x26, 0x85, 0x26, 0x05, 0x06, 0x05, 0xe0, 0x10,
2541+ 0x25, 0x04, 0x36, 0xe5, 0x03, 0x07, 0x26, 0x27,
2542+ 0x36, 0x05, 0x24, 0x07, 0x06, 0xe0, 0x02, 0xa5,
2543+ 0x20, 0xa5, 0x20, 0xa5, 0xe0, 0x01, 0xc5, 0x00,
2544+ 0xc5, 0x00, 0xe2, 0x23, 0x0e, 0x64, 0xe2, 0x01,
2545+ 0x04, 0x2e, 0x60, 0xe2, 0x48, 0xe5, 0x1b, 0x27,
2546+ 0x06, 0x27, 0x06, 0x27, 0x16, 0x07, 0x06, 0x20,
2547+ 0xe9, 0x02, 0xa0, 0xe5, 0xab, 0x1c, 0xe0, 0x04,
2548+ 0xe5, 0x0f, 0x60, 0xe5, 0x29, 0x60, 0xfc, 0x87,
2549+ 0x78, 0xfd, 0x98, 0x78, 0xe5, 0x80, 0xe6, 0x20,
2550+ 0xe5, 0x62, 0xe0, 0x1e, 0xc2, 0xe0, 0x04, 0x82,
2551+ 0x80, 0x05, 0x06, 0xe5, 0x02, 0x0c, 0xe5, 0x05,
2552+ 0x00, 0x85, 0x00, 0x05, 0x00, 0x25, 0x00, 0x25,
2553+ 0x00, 0xe5, 0x64, 0xee, 0x08, 0xe0, 0x09, 0xe5,
2554+ 0x80, 0xe3, 0x13, 0x12, 0xe0, 0x08, 0xe5, 0x38,
2555+ 0x20, 0xe5, 0x2e, 0xe0, 0x20, 0xe5, 0x04, 0x0d,
2556+ 0x0f, 0x20, 0xe6, 0x08, 0xd6, 0x12, 0x13, 0x16,
2557+ 0xa0, 0xe6, 0x08, 0x16, 0x31, 0x30, 0x12, 0x13,
2558+ 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x12, 0x13,
2559+ 0x12, 0x13, 0x12, 0x13, 0x12, 0x13, 0x36, 0x12,
2560+ 0x13, 0x76, 0x50, 0x56, 0x00, 0x76, 0x11, 0x12,
2561+ 0x13, 0x12, 0x13, 0x12, 0x13, 0x56, 0x0c, 0x11,
2562+ 0x4c, 0x00, 0x16, 0x0d, 0x36, 0x60, 0x85, 0x00,
2563+ 0xe5, 0x7f, 0x20, 0x1b, 0x00, 0x56, 0x0d, 0x56,
2564+ 0x12, 0x13, 0x16, 0x0c, 0x16, 0x11, 0x36, 0xe9,
2565+ 0x02, 0x36, 0x4c, 0x36, 0xe1, 0x12, 0x12, 0x16,
2566+ 0x13, 0x0e, 0x10, 0x0e, 0xe2, 0x12, 0x12, 0x0c,
2567+ 0x13, 0x0c, 0x12, 0x13, 0x16, 0x12, 0x13, 0x36,
2568+ 0xe5, 0x02, 0x04, 0xe5, 0x25, 0x24, 0xe5, 0x17,
2569+ 0x40, 0xa5, 0x20, 0xa5, 0x20, 0xa5, 0x20, 0x45,
2570+ 0x40, 0x2d, 0x0c, 0x0e, 0x0f, 0x2d, 0x00, 0x0f,
2571+ 0x6c, 0x2f, 0xe0, 0x02, 0x5b, 0x2f, 0x20, 0xe5,
2572+ 0x04, 0x00, 0xe5, 0x12, 0x00, 0xe5, 0x0b, 0x00,
2573+ 0x25, 0x00, 0xe5, 0x07, 0x20, 0xe5, 0x06, 0xe0,
2574+ 0x1a, 0xe5, 0x73, 0x80, 0x56, 0x60, 0xeb, 0x25,
2575+ 0x40, 0xef, 0x01, 0xea, 0x2d, 0x6b, 0xef, 0x09,
2576+ 0x2b, 0x4f, 0x00, 0xef, 0x05, 0x40, 0x0f, 0xe0,
2577+ 0x27, 0xef, 0x25, 0x06, 0xe0, 0x7a, 0xe5, 0x15,
2578+ 0x40, 0xe5, 0x29, 0xe0, 0x07, 0x06, 0xeb, 0x13,
2579+ 0x60, 0xe5, 0x18, 0x6b, 0xe0, 0x01, 0xe5, 0x0c,
2580+ 0x0a, 0xe5, 0x00, 0x0a, 0x80, 0xe5, 0x1e, 0x86,
2581+ 0x80, 0xe5, 0x16, 0x00, 0x16, 0xe5, 0x1c, 0x60,
2582+ 0xe5, 0x00, 0x16, 0x8a, 0xe0, 0x22, 0xe1, 0x20,
2583+ 0xe2, 0x20, 0xe5, 0x46, 0x20, 0xe9, 0x02, 0xa0,
2584+ 0xe1, 0x1c, 0x60, 0xe2, 0x1c, 0x60, 0xe5, 0x20,
2585+ 0xe0, 0x00, 0xe5, 0x2c, 0xe0, 0x03, 0x16, 0xe0,
2586+ 0x80, 0x08, 0xe5, 0x80, 0xaf, 0xe0, 0x01, 0xe5,
2587+ 0x0e, 0xe0, 0x02, 0xe5, 0x00, 0xe0, 0x80, 0x10,
2588+ 0xa5, 0x20, 0x05, 0x00, 0xe5, 0x24, 0x00, 0x25,
2589+ 0x40, 0x05, 0x20, 0xe5, 0x0f, 0x00, 0x16, 0xeb,
2590+ 0x00, 0xe5, 0x0f, 0x2f, 0xcb, 0xe5, 0x17, 0xe0,
2591+ 0x00, 0xeb, 0x01, 0xe0, 0x28, 0xe5, 0x0b, 0x00,
2592+ 0x25, 0x80, 0x8b, 0xe5, 0x0e, 0xab, 0x40, 0x16,
2593+ 0xe5, 0x12, 0x80, 0x16, 0xe0, 0x38, 0xe5, 0x30,
2594+ 0x60, 0x2b, 0x25, 0xeb, 0x08, 0x20, 0xeb, 0x26,
2595+ 0x05, 0x46, 0x00, 0x26, 0x80, 0x66, 0x65, 0x00,
2596+ 0x45, 0x00, 0xe5, 0x15, 0x20, 0x46, 0x60, 0x06,
2597+ 0xeb, 0x01, 0xc0, 0xf6, 0x01, 0xc0, 0xe5, 0x15,
2598+ 0x2b, 0x16, 0xe5, 0x15, 0x4b, 0xe0, 0x18, 0xe5,
2599+ 0x00, 0x0f, 0xe5, 0x14, 0x26, 0x60, 0x8b, 0xd6,
2600+ 0xe0, 0x01, 0xe5, 0x2e, 0x40, 0xd6, 0xe5, 0x0e,
2601+ 0x20, 0xeb, 0x00, 0xe5, 0x0b, 0x80, 0xeb, 0x00,
2602+ 0xe5, 0x0a, 0xc0, 0x76, 0xe0, 0x04, 0xcb, 0xe0,
2603+ 0x48, 0xe5, 0x41, 0xe0, 0x2f, 0xe1, 0x2b, 0xe0,
2604+ 0x05, 0xe2, 0x2b, 0xc0, 0xab, 0xe5, 0x1c, 0x66,
2605+ 0xe0, 0x00, 0xe9, 0x02, 0xe0, 0x80, 0x9e, 0xeb,
2606+ 0x17, 0x00, 0xe5, 0x22, 0x00, 0x26, 0x11, 0x20,
2607+ 0x25, 0xe0, 0x46, 0xe5, 0x15, 0xeb, 0x02, 0x05,
2608+ 0xe0, 0x00, 0xe5, 0x0e, 0xe6, 0x03, 0x6b, 0x96,
2609+ 0xe0, 0x4e, 0xe5, 0x0d, 0xcb, 0xe0, 0x0c, 0xe5,
25892610 0x0f, 0xe0, 0x01, 0x07, 0x06, 0x07, 0xe5, 0x2d,
25902611 0xe6, 0x07, 0xd6, 0x60, 0xeb, 0x0c, 0xe9, 0x02,
25912612 0xe0, 0x07, 0x46, 0x07, 0xe5, 0x25, 0x47, 0x66,
25922613 0x27, 0x26, 0x36, 0x1b, 0x76, 0xe0, 0x03, 0x1b,
25932614 0x20, 0xe5, 0x11, 0xc0, 0xe9, 0x02, 0xa0, 0x46,
25942615 0xe5, 0x1c, 0x86, 0x07, 0xe6, 0x00, 0x00, 0xe9,
2595− 0x02, 0x76, 0x05, 0x27, 0xe0, 0x01, 0xe5, 0x1b,
2596− 0x06, 0x36, 0x05, 0xe0, 0x01, 0x26, 0x07, 0xe5,
2597− 0x28, 0x47, 0xe6, 0x01, 0x27, 0x65, 0x76, 0x66,
2598− 0x16, 0x20, 0xe9, 0x02, 0x05, 0x16, 0x05, 0x56,
2599− 0x00, 0xeb, 0x0c, 0xe0, 0x03, 0xe5, 0x0a, 0x00,
2600− 0xe5, 0x11, 0x47, 0x46, 0x27, 0x06, 0x07, 0x26,
2601− 0xb6, 0x06, 0xe0, 0x39, 0xc5, 0x00, 0x05, 0x00,
2602− 0x65, 0x00, 0xe5, 0x07, 0x00, 0xe5, 0x02, 0x16,
2603− 0xa0, 0xe5, 0x27, 0x06, 0x47, 0xe6, 0x00, 0x80,
2604− 0xe9, 0x02, 0xa0, 0x26, 0x27, 0x00, 0xe5, 0x00,
2605− 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00, 0xc5, 0x00,
2606− 0x25, 0x00, 0x85, 0x00, 0x26, 0x05, 0x27, 0x06,
2607− 0x67, 0x20, 0x27, 0x20, 0x47, 0x20, 0x05, 0xa0,
2608− 0x07, 0x80, 0x85, 0x27, 0x20, 0xc6, 0x40, 0x86,
2609− 0xe0, 0x80, 0x03, 0xe5, 0x2d, 0x47, 0xe6, 0x00,
2610− 0x27, 0x46, 0x07, 0x06, 0x65, 0x96, 0xe9, 0x02,
2611− 0x00, 0x16, 0x00, 0x16, 0x06, 0x05, 0xe0, 0x18,
2612− 0xe5, 0x28, 0x47, 0xa6, 0x07, 0x06, 0x67, 0x26,
2613− 0x07, 0x26, 0x25, 0x16, 0x05, 0xe0, 0x00, 0xe9,
2614− 0x02, 0xe0, 0x80, 0x1e, 0xe5, 0x27, 0x47, 0x66,
2615− 0x20, 0x67, 0x26, 0x07, 0x26, 0xf6, 0x0f, 0x65,
2616− 0x26, 0xe0, 0x1a, 0xe5, 0x28, 0x47, 0xe6, 0x00,
2617− 0x27, 0x06, 0x07, 0x26, 0x56, 0x05, 0xe0, 0x03,
2618− 0xe9, 0x02, 0xa0, 0xf6, 0x05, 0xe0, 0x0b, 0xe5,
2619− 0x23, 0x06, 0x07, 0x06, 0x27, 0xa6, 0x07, 0x06,
2620− 0x05, 0xc0, 0xe9, 0x02, 0xe0, 0x2e, 0xe5, 0x13,
2621− 0x20, 0x46, 0x27, 0x66, 0x07, 0x86, 0x60, 0xe9,
2622− 0x02, 0x2b, 0x56, 0x0f, 0xe0, 0x80, 0x38, 0xe5,
2623− 0x24, 0x47, 0xe6, 0x01, 0x07, 0x26, 0x16, 0xe0,
2624− 0x5c, 0xe1, 0x18, 0xe2, 0x18, 0xe9, 0x02, 0xeb,
2625− 0x01, 0xe0, 0x04, 0x05, 0xe0, 0x80, 0x18, 0xe5,
2626− 0x00, 0x20, 0xe5, 0x1f, 0x47, 0x66, 0x20, 0x26,
2627− 0x67, 0x06, 0x05, 0x16, 0x05, 0x07, 0xe0, 0x13,
2628− 0x05, 0xe6, 0x02, 0xe5, 0x20, 0xa6, 0x07, 0x05,
2629− 0x66, 0xf6, 0x00, 0x06, 0xe0, 0x00, 0x05, 0xa6,
2630− 0x27, 0x46, 0xe5, 0x26, 0xe6, 0x05, 0x07, 0x26,
2631− 0x56, 0x05, 0x96, 0xe0, 0x15, 0xe5, 0x31, 0xe0,
2632− 0x80, 0x7f, 0xe5, 0x01, 0x00, 0xe5, 0x1d, 0x07,
2633− 0xc6, 0x00, 0xa6, 0x07, 0x06, 0x05, 0x96, 0xe0,
2634− 0x02, 0xe9, 0x02, 0xeb, 0x0b, 0x40, 0x36, 0xe5,
2635− 0x16, 0x20, 0xe6, 0x0e, 0x00, 0x07, 0xc6, 0x07,
2636− 0x26, 0x07, 0x26, 0xe0, 0x41, 0xc5, 0x00, 0x25,
2637− 0x00, 0xe5, 0x1e, 0xa6, 0x40, 0x06, 0x00, 0x26,
2638− 0x00, 0xc6, 0x05, 0x06, 0xe0, 0x00, 0xe9, 0x02,
2639− 0xa0, 0xa5, 0x00, 0x25, 0x00, 0xe5, 0x18, 0x87,
2640− 0x00, 0x26, 0x00, 0x27, 0x06, 0x07, 0x06, 0x05,
2641− 0xc0, 0xe9, 0x02, 0xe0, 0x80, 0xae, 0xe5, 0x0b,
2642− 0x26, 0x27, 0x36, 0xe0, 0x80, 0x3f, 0xeb, 0x0d,
2643− 0xef, 0x00, 0x6d, 0xef, 0x09, 0xe0, 0x05, 0x16,
2644− 0xe5, 0x83, 0x12, 0xe0, 0x5e, 0xea, 0x67, 0x00,
2645− 0x96, 0xe0, 0x03, 0xe5, 0x80, 0x3c, 0xe0, 0x8a,
2646− 0x34, 0xe5, 0x83, 0xa7, 0x00, 0xfb, 0x01, 0xe0,
2647− 0x8f, 0x3f, 0xe5, 0x81, 0xbf, 0xe0, 0xa1, 0x31,
2648− 0xe5, 0x81, 0xb1, 0xc0, 0xe5, 0x17, 0x00, 0xe9,
2649− 0x02, 0x60, 0x36, 0xe0, 0x58, 0xe5, 0x16, 0x20,
2650− 0x86, 0x16, 0xe0, 0x02, 0xe5, 0x28, 0xc6, 0x96,
2651− 0x6f, 0x64, 0x16, 0x0f, 0xe0, 0x02, 0xe9, 0x02,
2652− 0x00, 0xcb, 0x00, 0xe5, 0x0d, 0x80, 0xe5, 0x0b,
2653− 0xe0, 0x82, 0x28, 0xe1, 0x18, 0xe2, 0x18, 0xeb,
2654− 0x0f, 0x76, 0xe0, 0x5d, 0xe5, 0x43, 0x60, 0x06,
2655− 0x05, 0xe7, 0x2f, 0xc0, 0x66, 0xe4, 0x05, 0xe0,
2656− 0x38, 0x24, 0x16, 0x04, 0xe0, 0x14, 0xe5, 0x97,
2657− 0x70, 0xe0, 0x00, 0xe5, 0x82, 0x6b, 0xe0, 0xa4,
2658− 0x85, 0xe5, 0x80, 0x97, 0xe0, 0x29, 0x45, 0xe0,
2659− 0x09, 0x65, 0xe0, 0x00, 0xe5, 0x81, 0x04, 0xe0,
2660− 0x88, 0x7c, 0xe5, 0x63, 0x80, 0xe5, 0x05, 0x40,
2661− 0xe5, 0x01, 0xc0, 0xe5, 0x02, 0x20, 0x0f, 0x26,
2662− 0x16, 0x7b, 0xe0, 0x92, 0xd4, 0xef, 0x80, 0x6e,
2663− 0xe0, 0x02, 0xef, 0x1f, 0x20, 0xef, 0x34, 0x27,
2664− 0x46, 0x4f, 0xa7, 0xfb, 0x00, 0xe6, 0x00, 0x2f,
2665− 0xc6, 0xef, 0x16, 0x66, 0xef, 0x33, 0xe0, 0x0f,
2666− 0xef, 0x3a, 0x46, 0x0f, 0xe0, 0x80, 0x12, 0xeb,
2667− 0x0c, 0xe0, 0x04, 0xef, 0x4f, 0xe0, 0x01, 0xeb,
2668− 0x11, 0xe0, 0x7f, 0xe1, 0x12, 0xe2, 0x12, 0xe1,
2669− 0x12, 0xc2, 0x00, 0xe2, 0x0a, 0xe1, 0x12, 0xe2,
2670− 0x12, 0x01, 0x00, 0x21, 0x20, 0x01, 0x20, 0x21,
2671− 0x20, 0x61, 0x00, 0xe1, 0x00, 0x62, 0x00, 0x02,
2672− 0x00, 0xc2, 0x00, 0xe2, 0x03, 0xe1, 0x12, 0xe2,
2673− 0x12, 0x21, 0x00, 0x61, 0x20, 0xe1, 0x00, 0x00,
2674− 0xc1, 0x00, 0xe2, 0x12, 0x21, 0x00, 0x61, 0x00,
2675− 0x81, 0x00, 0x01, 0x40, 0xc1, 0x00, 0xe2, 0x12,
2676− 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12,
2677− 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12,
2678− 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x14,
2679− 0x20, 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2,
2616+ 0x02, 0x76, 0x05, 0x27, 0x05, 0xe0, 0x00, 0xe5,
2617+ 0x1b, 0x06, 0x36, 0x05, 0xe0, 0x01, 0x26, 0x07,
2618+ 0xe5, 0x28, 0x47, 0xe6, 0x01, 0x27, 0x65, 0x76,
2619+ 0x66, 0x16, 0x07, 0x06, 0xe9, 0x02, 0x05, 0x16,
2620+ 0x05, 0x56, 0x00, 0xeb, 0x0c, 0xe0, 0x03, 0xe5,
2621+ 0x0a, 0x00, 0xe5, 0x11, 0x47, 0x46, 0x27, 0x06,
2622+ 0x07, 0x26, 0xb6, 0x06, 0xe0, 0x39, 0xc5, 0x00,
2623+ 0x05, 0x00, 0x65, 0x00, 0xe5, 0x07, 0x00, 0xe5,
2624+ 0x02, 0x16, 0xa0, 0xe5, 0x27, 0x06, 0x47, 0xe6,
2625+ 0x00, 0x80, 0xe9, 0x02, 0xa0, 0x26, 0x27, 0x00,
2626+ 0xe5, 0x00, 0x20, 0x25, 0x20, 0xe5, 0x0e, 0x00,
2627+ 0xc5, 0x00, 0x25, 0x00, 0x85, 0x00, 0x26, 0x05,
2628+ 0x27, 0x06, 0x67, 0x20, 0x27, 0x20, 0x47, 0x20,
2629+ 0x05, 0xa0, 0x07, 0x80, 0x85, 0x27, 0x20, 0xc6,
2630+ 0x40, 0x86, 0xe0, 0x80, 0x03, 0xe5, 0x2d, 0x47,
2631+ 0xe6, 0x00, 0x27, 0x46, 0x07, 0x06, 0x65, 0x96,
2632+ 0xe9, 0x02, 0x36, 0x00, 0x16, 0x06, 0x45, 0xe0,
2633+ 0x16, 0xe5, 0x28, 0x47, 0xa6, 0x07, 0x06, 0x67,
2634+ 0x26, 0x07, 0x26, 0x25, 0x16, 0x05, 0xe0, 0x00,
2635+ 0xe9, 0x02, 0xe0, 0x80, 0x1e, 0xe5, 0x27, 0x47,
2636+ 0x66, 0x20, 0x67, 0x26, 0x07, 0x26, 0xf6, 0x0f,
2637+ 0x65, 0x26, 0xe0, 0x1a, 0xe5, 0x28, 0x47, 0xe6,
2638+ 0x00, 0x27, 0x06, 0x07, 0x26, 0x56, 0x05, 0xe0,
2639+ 0x03, 0xe9, 0x02, 0xa0, 0xf6, 0x05, 0xe0, 0x0b,
2640+ 0xe5, 0x23, 0x06, 0x07, 0x06, 0x27, 0xa6, 0x07,
2641+ 0x06, 0x05, 0xc0, 0xe9, 0x02, 0xe0, 0x2e, 0xe5,
2642+ 0x13, 0x20, 0x46, 0x27, 0x66, 0x07, 0x86, 0x60,
2643+ 0xe9, 0x02, 0x2b, 0x56, 0x0f, 0xe0, 0x80, 0x38,
2644+ 0xe5, 0x24, 0x47, 0xe6, 0x01, 0x07, 0x26, 0x16,
2645+ 0xe0, 0x5c, 0xe1, 0x18, 0xe2, 0x18, 0xe9, 0x02,
2646+ 0xeb, 0x01, 0xe0, 0x04, 0xe5, 0x00, 0x20, 0x05,
2647+ 0x20, 0xe5, 0x00, 0x00, 0x25, 0x00, 0xe5, 0x10,
2648+ 0xa7, 0x00, 0x27, 0x20, 0x26, 0x07, 0x06, 0x05,
2649+ 0x07, 0x05, 0x07, 0x06, 0x56, 0xe0, 0x01, 0xe9,
2650+ 0x02, 0xe0, 0x3e, 0xe5, 0x00, 0x20, 0xe5, 0x1f,
2651+ 0x47, 0x66, 0x20, 0x26, 0x67, 0x06, 0x05, 0x16,
2652+ 0x05, 0x07, 0xe0, 0x13, 0x05, 0xe6, 0x02, 0xe5,
2653+ 0x20, 0xa6, 0x07, 0x05, 0x66, 0xf6, 0x00, 0x06,
2654+ 0xe0, 0x00, 0x05, 0xa6, 0x27, 0x46, 0xe5, 0x26,
2655+ 0xe6, 0x05, 0x07, 0x26, 0x56, 0x05, 0x96, 0xe0,
2656+ 0x15, 0xe5, 0x31, 0xe0, 0x80, 0x7f, 0xe5, 0x01,
2657+ 0x00, 0xe5, 0x1d, 0x07, 0xc6, 0x00, 0xa6, 0x07,
2658+ 0x06, 0x05, 0x96, 0xe0, 0x02, 0xe9, 0x02, 0xeb,
2659+ 0x0b, 0x40, 0x36, 0xe5, 0x16, 0x20, 0xe6, 0x0e,
2660+ 0x00, 0x07, 0xc6, 0x07, 0x26, 0x07, 0x26, 0xe0,
2661+ 0x41, 0xc5, 0x00, 0x25, 0x00, 0xe5, 0x1e, 0xa6,
2662+ 0x40, 0x06, 0x00, 0x26, 0x00, 0xc6, 0x05, 0x06,
2663+ 0xe0, 0x00, 0xe9, 0x02, 0xa0, 0xa5, 0x00, 0x25,
2664+ 0x00, 0xe5, 0x18, 0x87, 0x00, 0x26, 0x00, 0x27,
2665+ 0x06, 0x07, 0x06, 0x05, 0xc0, 0xe9, 0x02, 0xe0,
2666+ 0x80, 0xae, 0xe5, 0x0b, 0x26, 0x27, 0x36, 0xe0,
2667+ 0x80, 0x2f, 0x05, 0xe0, 0x07, 0xeb, 0x0d, 0xef,
2668+ 0x00, 0x6d, 0xef, 0x09, 0xe0, 0x05, 0x16, 0xe5,
2669+ 0x83, 0x12, 0xe0, 0x5e, 0xea, 0x67, 0x00, 0x96,
2670+ 0xe0, 0x03, 0xe5, 0x80, 0x3c, 0xe0, 0x8a, 0x34,
2671+ 0xe5, 0x83, 0xa7, 0x00, 0xfb, 0x01, 0xe0, 0x8f,
2672+ 0x3f, 0xe5, 0x81, 0xbf, 0xe0, 0xa1, 0x31, 0xe5,
2673+ 0x81, 0xb1, 0xc0, 0xe5, 0x17, 0x00, 0xe9, 0x02,
2674+ 0x60, 0x36, 0xe0, 0x58, 0xe5, 0x16, 0x20, 0x86,
2675+ 0x16, 0xe0, 0x02, 0xe5, 0x28, 0xc6, 0x96, 0x6f,
2676+ 0x64, 0x16, 0x0f, 0xe0, 0x02, 0xe9, 0x02, 0x00,
2677+ 0xcb, 0x00, 0xe5, 0x0d, 0x80, 0xe5, 0x0b, 0xe0,
2678+ 0x82, 0x28, 0xe1, 0x18, 0xe2, 0x18, 0xeb, 0x0f,
2679+ 0x76, 0xe0, 0x5d, 0xe5, 0x43, 0x60, 0x06, 0x05,
2680+ 0xe7, 0x2f, 0xc0, 0x66, 0xe4, 0x05, 0xe0, 0x38,
2681+ 0x24, 0x16, 0x04, 0x06, 0xe0, 0x03, 0x27, 0xe0,
2682+ 0x06, 0xe5, 0x97, 0x70, 0xe0, 0x00, 0xe5, 0x84,
2683+ 0x4e, 0xe0, 0x22, 0xe5, 0x01, 0xe0, 0xa2, 0x6f,
2684+ 0xe5, 0x80, 0x97, 0xe0, 0x29, 0x45, 0xe0, 0x09,
2685+ 0x65, 0xe0, 0x00, 0xe5, 0x81, 0x04, 0xe0, 0x88,
2686+ 0x7c, 0xe5, 0x63, 0x80, 0xe5, 0x05, 0x40, 0xe5,
2687+ 0x01, 0xc0, 0xe5, 0x02, 0x20, 0x0f, 0x26, 0x16,
2688+ 0x7b, 0xe0, 0x92, 0xd4, 0xef, 0x80, 0x6e, 0xe0,
2689+ 0x02, 0xef, 0x1f, 0x20, 0xef, 0x34, 0x27, 0x46,
2690+ 0x4f, 0xa7, 0xfb, 0x00, 0xe6, 0x00, 0x2f, 0xc6,
2691+ 0xef, 0x16, 0x66, 0xef, 0x33, 0xe0, 0x0f, 0xef,
2692+ 0x3a, 0x46, 0x0f, 0xe0, 0x80, 0x12, 0xeb, 0x0c,
2693+ 0xe0, 0x04, 0xef, 0x4f, 0xe0, 0x01, 0xeb, 0x11,
2694+ 0xe0, 0x7f, 0xe1, 0x12, 0xe2, 0x12, 0xe1, 0x12,
2695+ 0xc2, 0x00, 0xe2, 0x0a, 0xe1, 0x12, 0xe2, 0x12,
2696+ 0x01, 0x00, 0x21, 0x20, 0x01, 0x20, 0x21, 0x20,
2697+ 0x61, 0x00, 0xe1, 0x00, 0x62, 0x00, 0x02, 0x00,
2698+ 0xc2, 0x00, 0xe2, 0x03, 0xe1, 0x12, 0xe2, 0x12,
2699+ 0x21, 0x00, 0x61, 0x20, 0xe1, 0x00, 0x00, 0xc1,
2700+ 0x00, 0xe2, 0x12, 0x21, 0x00, 0x61, 0x00, 0x81,
2701+ 0x00, 0x01, 0x40, 0xc1, 0x00, 0xe2, 0x12, 0xe1,
2702+ 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1,
2703+ 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x12, 0xe1,
2704+ 0x12, 0xe2, 0x12, 0xe1, 0x12, 0xe2, 0x14, 0x20,
26802705 0xe1, 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1,
26812706 0x11, 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11,
26822707 0x0c, 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c,
2683− 0xe2, 0x11, 0x0c, 0xa2, 0x3f, 0x20, 0xe9, 0x2a,
2684− 0xef, 0x81, 0x78, 0xe6, 0x2f, 0x6f, 0xe6, 0x2a,
2685− 0xef, 0x00, 0x06, 0xef, 0x06, 0x06, 0x2f, 0x96,
2686− 0xe0, 0x07, 0x86, 0x00, 0xe6, 0x07, 0xe0, 0x84,
2687− 0xc8, 0xc6, 0x00, 0xe6, 0x09, 0x20, 0xc6, 0x00,
2688− 0x26, 0x00, 0x86, 0xe0, 0x80, 0x4d, 0xe5, 0x25,
2689− 0x40, 0xc6, 0xc4, 0x20, 0xe9, 0x02, 0x60, 0x05,
2690− 0x0f, 0xe0, 0x80, 0xe8, 0xe5, 0x24, 0x66, 0xe9,
2691− 0x02, 0x80, 0x0d, 0xe0, 0x84, 0x78, 0xe5, 0x80,
2692− 0x3d, 0x20, 0xeb, 0x01, 0xc6, 0xe0, 0x21, 0xe1,
2693− 0x1a, 0xe2, 0x1a, 0xc6, 0x04, 0x60, 0xe9, 0x02,
2694− 0x60, 0x36, 0xe0, 0x82, 0x89, 0xeb, 0x33, 0x0f,
2695− 0x4b, 0x0d, 0x6b, 0xe0, 0x44, 0xeb, 0x25, 0x0f,
2696− 0xeb, 0x07, 0xe0, 0x80, 0x3a, 0x65, 0x00, 0xe5,
2697− 0x13, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00,
2698− 0xe5, 0x02, 0x00, 0x65, 0x00, 0x05, 0x00, 0x05,
2699− 0xa0, 0x05, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05,
2700− 0x00, 0x45, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05,
2701− 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05,
2702− 0x00, 0x25, 0x00, 0x05, 0x20, 0x65, 0x00, 0xc5,
2703− 0x00, 0x65, 0x00, 0x65, 0x00, 0x05, 0x00, 0xe5,
2704− 0x02, 0x00, 0xe5, 0x09, 0x80, 0x45, 0x00, 0x85,
2705− 0x00, 0xe5, 0x09, 0xe0, 0x2c, 0x2c, 0xe0, 0x80,
2706− 0x86, 0xef, 0x24, 0x60, 0xef, 0x5c, 0xe0, 0x04,
2707− 0xef, 0x07, 0x20, 0xef, 0x07, 0x00, 0xef, 0x07,
2708− 0x00, 0xef, 0x1d, 0xe0, 0x02, 0xeb, 0x05, 0x40,
2709− 0xef, 0x55, 0x40, 0xef, 0x35, 0xe0, 0x31, 0xef,
2710− 0x15, 0xe0, 0x05, 0xef, 0x24, 0x60, 0xef, 0x01,
2711− 0xc0, 0x2f, 0xe0, 0x06, 0xaf, 0xe0, 0x80, 0x12,
2712− 0xef, 0x80, 0x73, 0x8e, 0xef, 0x82, 0x4e, 0xe0,
2713− 0x02, 0xef, 0x05, 0x40, 0xef, 0x03, 0x80, 0xef,
2714− 0x6c, 0xe0, 0x04, 0xef, 0x51, 0xc0, 0xef, 0x04,
2715− 0xe0, 0x0c, 0xef, 0x04, 0x60, 0xef, 0x30, 0xe0,
2716− 0x00, 0xef, 0x02, 0xa0, 0xef, 0x20, 0xe0, 0x00,
2717− 0xef, 0x16, 0xe0, 0x4a, 0xef, 0x04, 0x00, 0xef,
2718− 0x5d, 0x00, 0x6f, 0x40, 0xef, 0x21, 0x20, 0xaf,
2719− 0x40, 0xef, 0x15, 0x20, 0xef, 0x7f, 0xe0, 0x04,
2720− 0xef, 0x06, 0x20, 0x6f, 0x60, 0x4f, 0x80, 0x4f,
2721− 0xe0, 0x05, 0xaf, 0xe0, 0x84, 0xe2, 0xe5, 0xc0,
2722− 0x66, 0x4f, 0xe0, 0x21, 0xe5, 0x8f, 0xad, 0xe0,
2723− 0x03, 0xe5, 0x80, 0x56, 0x20, 0xe5, 0x95, 0xfa,
2724− 0xe0, 0x06, 0xe5, 0x9c, 0xa9, 0xe0, 0x8b, 0x97,
2725− 0xe5, 0x81, 0x96, 0xe0, 0xca, 0xc5, 0x5b, 0x1b,
2726− 0xe0, 0x16, 0xfb, 0x58, 0xe0, 0x78, 0xe6, 0x80,
2727− 0x68, 0xe0, 0xc0, 0xbd, 0x88, 0xfd, 0xc0, 0xbf,
2728− 0x76, 0x20, 0xfd, 0xc0, 0xbf, 0x76, 0x20,
2708+ 0xe2, 0x11, 0x0c, 0xa2, 0xe1, 0x11, 0x0c, 0xe2,
2709+ 0x11, 0x0c, 0xa2, 0x3f, 0x20, 0xe9, 0x2a, 0xef,
2710+ 0x81, 0x78, 0xe6, 0x2f, 0x6f, 0xe6, 0x2a, 0xef,
2711+ 0x00, 0x06, 0xef, 0x06, 0x06, 0x2f, 0x96, 0xe0,
2712+ 0x07, 0x86, 0x00, 0xe6, 0x07, 0xe0, 0x84, 0xc8,
2713+ 0xc6, 0x00, 0xe6, 0x09, 0x20, 0xc6, 0x00, 0x26,
2714+ 0x00, 0x86, 0xe0, 0x80, 0x4d, 0xe5, 0x25, 0x40,
2715+ 0xc6, 0xc4, 0x20, 0xe9, 0x02, 0x60, 0x05, 0x0f,
2716+ 0xe0, 0x80, 0xe8, 0xe5, 0x24, 0x66, 0xe9, 0x02,
2717+ 0x80, 0x0d, 0xe0, 0x84, 0x78, 0xe5, 0x80, 0x3d,
2718+ 0x20, 0xeb, 0x01, 0xc6, 0xe0, 0x21, 0xe1, 0x1a,
2719+ 0xe2, 0x1a, 0xc6, 0x04, 0x60, 0xe9, 0x02, 0x60,
2720+ 0x36, 0xe0, 0x82, 0x89, 0xeb, 0x33, 0x0f, 0x4b,
2721+ 0x0d, 0x6b, 0xe0, 0x44, 0xeb, 0x25, 0x0f, 0xeb,
2722+ 0x07, 0xe0, 0x80, 0x3a, 0x65, 0x00, 0xe5, 0x13,
2723+ 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00, 0xe5,
2724+ 0x02, 0x00, 0x65, 0x00, 0x05, 0x00, 0x05, 0xa0,
2725+ 0x05, 0x60, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00,
2726+ 0x45, 0x00, 0x25, 0x00, 0x05, 0x20, 0x05, 0x00,
2727+ 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00,
2728+ 0x25, 0x00, 0x05, 0x20, 0x65, 0x00, 0xc5, 0x00,
2729+ 0x65, 0x00, 0x65, 0x00, 0x05, 0x00, 0xe5, 0x02,
2730+ 0x00, 0xe5, 0x09, 0x80, 0x45, 0x00, 0x85, 0x00,
2731+ 0xe5, 0x09, 0xe0, 0x2c, 0x2c, 0xe0, 0x80, 0x86,
2732+ 0xef, 0x24, 0x60, 0xef, 0x5c, 0xe0, 0x04, 0xef,
2733+ 0x07, 0x20, 0xef, 0x07, 0x00, 0xef, 0x07, 0x00,
2734+ 0xef, 0x1d, 0xe0, 0x02, 0xeb, 0x05, 0xef, 0x80,
2735+ 0x19, 0xe0, 0x30, 0xef, 0x15, 0xe0, 0x05, 0xef,
2736+ 0x24, 0x60, 0xef, 0x01, 0xc0, 0x2f, 0xe0, 0x06,
2737+ 0xaf, 0xe0, 0x80, 0x12, 0xef, 0x80, 0x73, 0x8e,
2738+ 0xef, 0x82, 0x50, 0xe0, 0x00, 0xef, 0x05, 0x40,
2739+ 0xef, 0x05, 0x40, 0xef, 0x6c, 0xe0, 0x04, 0xef,
2740+ 0x51, 0xc0, 0xef, 0x04, 0xe0, 0x0c, 0xef, 0x04,
2741+ 0x60, 0xef, 0x30, 0xe0, 0x00, 0xef, 0x02, 0xa0,
2742+ 0xef, 0x20, 0xe0, 0x00, 0xef, 0x16, 0x20, 0x2f,
2743+ 0xe0, 0x46, 0xef, 0x71, 0x00, 0xef, 0x4a, 0x00,
2744+ 0xef, 0x7f, 0xe0, 0x04, 0xef, 0x06, 0x20, 0x8f,
2745+ 0x40, 0x4f, 0x80, 0xcf, 0xe0, 0x01, 0xef, 0x11,
2746+ 0xc0, 0xcf, 0xe0, 0x01, 0x4f, 0xe0, 0x05, 0xcf,
2747+ 0xe0, 0x21, 0xef, 0x80, 0x0b, 0x00, 0xef, 0x2f,
2748+ 0xe0, 0x1d, 0xe9, 0x02, 0xe0, 0x83, 0x7e, 0xe5,
2749+ 0xc0, 0x66, 0x56, 0xe0, 0x1a, 0xe5, 0x8f, 0xad,
2750+ 0xe0, 0x03, 0xe5, 0x80, 0x56, 0x20, 0xe5, 0x95,
2751+ 0xfa, 0xe0, 0x06, 0xe5, 0x9c, 0xa9, 0xe0, 0x8b,
2752+ 0x97, 0xe5, 0x81, 0x96, 0xe0, 0x85, 0x5a, 0xe5,
2753+ 0x92, 0xc3, 0xe0, 0xca, 0xac, 0x2e, 0x1b, 0xe0,
2754+ 0x16, 0xfb, 0x58, 0xe0, 0x78, 0xe6, 0x80, 0x68,
2755+ 0xe0, 0xc0, 0xbd, 0x88, 0xfd, 0xc0, 0xbf, 0x76,
2756+ 0x20, 0xfd, 0xc0, 0xbf, 0x76, 0x20,
27292757 };
27302758
27312759 typedef enum {
@@ -2753,6 +2781,7 @@ typedef enum { · 21 unmodified lines
27532781 UNICODE_SCRIPT_Chakma,
27542782 UNICODE_SCRIPT_Cham,
27552783 UNICODE_SCRIPT_Cherokee,
2784+ UNICODE_SCRIPT_Chorasmian,
27562785 UNICODE_SCRIPT_Common,
27572786 UNICODE_SCRIPT_Coptic,
27582787 UNICODE_SCRIPT_Cuneiform,
@@ -2760,6 +2789,7 @@ typedef enum { · 1 unmodified line
27602789 UNICODE_SCRIPT_Cyrillic,
27612790 UNICODE_SCRIPT_Deseret,
27622791 UNICODE_SCRIPT_Devanagari,
2792+ UNICODE_SCRIPT_Dives_Akuru,
27632793 UNICODE_SCRIPT_Dogra,
27642794 UNICODE_SCRIPT_Duployan,
27652795 UNICODE_SCRIPT_Egyptian_Hieroglyphs,
@@ -2793,6 +2823,7 @@ typedef enum { · 27 unmodified lines
27932823 UNICODE_SCRIPT_Kharoshthi,
27942824 UNICODE_SCRIPT_Khmer,
27952825 UNICODE_SCRIPT_Khojki,
2826+ UNICODE_SCRIPT_Khitan_Small_Script,
27962827 UNICODE_SCRIPT_Khudawadi,
27972828 UNICODE_SCRIPT_Lao,
27982829 UNICODE_SCRIPT_Latin,
@@ -2880,6 +2911,7 @@ typedef enum { · 81 unmodified lines
28802911 UNICODE_SCRIPT_Vai,
28812912 UNICODE_SCRIPT_Wancho,
28822913 UNICODE_SCRIPT_Warang_Citi,
2914+ UNICODE_SCRIPT_Yezidi,
28832915 UNICODE_SCRIPT_Yi,
28842916 UNICODE_SCRIPT_Zanabazar_Square,
28852917 UNICODE_SCRIPT_COUNT,
@@ -2909,6 +2941,7 @@ static const char unicode_script_name_table[] = · 23 unmodified lines
29092941 "Chakma,Cakm" "\0"
29102942 "Cham,Cham" "\0"
29112943 "Cherokee,Cher" "\0"
2944+ "Chorasmian,Chrs" "\0"
29122945 "Common,Zyyy" "\0"
29132946 "Coptic,Copt,Qaac" "\0"
29142947 "Cuneiform,Xsux" "\0"
@@ -2916,6 +2949,7 @@ static const char unicode_script_name_table[] = · 1 unmodified line
29162949 "Cyrillic,Cyrl" "\0"
29172950 "Deseret,Dsrt" "\0"
29182951 "Devanagari,Deva" "\0"
2952+ "Dives_Akuru,Diak" "\0"
29192953 "Dogra,Dogr" "\0"
29202954 "Duployan,Dupl" "\0"
29212955 "Egyptian_Hieroglyphs,Egyp" "\0"
@@ -2949,6 +2983,7 @@ static const char unicode_script_name_table[] = · 27 unmodified lines
29492983 "Kharoshthi,Khar" "\0"
29502984 "Khmer,Khmr" "\0"
29512985 "Khojki,Khoj" "\0"
2986+ "Khitan_Small_Script,Kits" "\0"
29522987 "Khudawadi,Sind" "\0"
29532988 "Lao,Laoo" "\0"
29542989 "Latin,Latn" "\0"
@@ -3036,434 +3071,442 @@ static const char unicode_script_name_table[] = · 81 unmodified lines
30363071 "Vai,Vaii" "\0"
30373072 "Wancho,Wcho" "\0"
30383073 "Warang_Citi,Wara" "\0"
3074+ "Yezidi,Yezi" "\0"
30393075 "Yi,Yiii" "\0"
30403076 "Zanabazar_Square,Zanb" "\0"
30413077 ;
30423078
3043−static const uint8_t unicode_script_table[2565] = {
3044− 0xc0, 0x18, 0x99, 0x42, 0x85, 0x18, 0x99, 0x42,
3045− 0xae, 0x18, 0x80, 0x42, 0x8e, 0x18, 0x80, 0x42,
3046− 0x84, 0x18, 0x96, 0x42, 0x80, 0x18, 0x9e, 0x42,
3047− 0x80, 0x18, 0xe1, 0x60, 0x42, 0xa6, 0x18, 0x84,
3048− 0x42, 0x84, 0x18, 0x81, 0x0d, 0x93, 0x18, 0xe0,
3049− 0x0f, 0x35, 0x83, 0x29, 0x80, 0x18, 0x82, 0x29,
3050− 0x01, 0x83, 0x29, 0x80, 0x18, 0x80, 0x29, 0x03,
3051− 0x80, 0x29, 0x80, 0x18, 0x80, 0x29, 0x80, 0x18,
3052− 0x82, 0x29, 0x00, 0x80, 0x29, 0x00, 0x93, 0x29,
3053− 0x00, 0xbe, 0x29, 0x8d, 0x19, 0x8f, 0x29, 0xe0,
3054− 0x24, 0x1c, 0x81, 0x35, 0xe0, 0x48, 0x1c, 0x00,
3055− 0xa5, 0x05, 0x01, 0xaf, 0x05, 0x80, 0x18, 0x80,
3056− 0x05, 0x01, 0x82, 0x05, 0x00, 0xb6, 0x32, 0x07,
3057− 0x9a, 0x32, 0x03, 0x85, 0x32, 0x0a, 0x84, 0x04,
3058− 0x80, 0x18, 0x85, 0x04, 0x80, 0x18, 0x8d, 0x04,
3059− 0x80, 0x18, 0x80, 0x04, 0x00, 0x80, 0x04, 0x80,
3060− 0x18, 0x9f, 0x04, 0x80, 0x18, 0x89, 0x04, 0x8a,
3061− 0x35, 0x99, 0x04, 0x80, 0x35, 0xe0, 0x0b, 0x04,
3062− 0x80, 0x18, 0xa1, 0x04, 0x8d, 0x84, 0x00, 0xbb,
3063− 0x84, 0x01, 0x82, 0x84, 0xaf, 0x04, 0xb1, 0x8e,
3064− 0x0d, 0xba, 0x60, 0x01, 0x82, 0x60, 0xad, 0x78,
3065− 0x01, 0x8e, 0x78, 0x00, 0x9b, 0x4d, 0x01, 0x80,
3066− 0x4d, 0x00, 0x8a, 0x84, 0x34, 0x94, 0x04, 0x00,
3067− 0x87, 0x04, 0x14, 0x8e, 0x04, 0x80, 0x18, 0x9c,
3068− 0x04, 0xd0, 0x1e, 0x83, 0x35, 0x8e, 0x1e, 0x81,
3069− 0x18, 0x99, 0x1e, 0x83, 0x0b, 0x00, 0x87, 0x0b,
3070− 0x01, 0x81, 0x0b, 0x01, 0x95, 0x0b, 0x00, 0x86,
3071− 0x0b, 0x00, 0x80, 0x0b, 0x02, 0x83, 0x0b, 0x01,
3072− 0x88, 0x0b, 0x01, 0x81, 0x0b, 0x01, 0x83, 0x0b,
3073− 0x07, 0x80, 0x0b, 0x03, 0x81, 0x0b, 0x00, 0x84,
3074− 0x0b, 0x01, 0x98, 0x0b, 0x01, 0x82, 0x2c, 0x00,
3075− 0x85, 0x2c, 0x03, 0x81, 0x2c, 0x01, 0x95, 0x2c,
3076− 0x00, 0x86, 0x2c, 0x00, 0x81, 0x2c, 0x00, 0x81,
3077− 0x2c, 0x00, 0x81, 0x2c, 0x01, 0x80, 0x2c, 0x00,
3078− 0x84, 0x2c, 0x03, 0x81, 0x2c, 0x01, 0x82, 0x2c,
3079− 0x02, 0x80, 0x2c, 0x06, 0x83, 0x2c, 0x00, 0x80,
3080− 0x2c, 0x06, 0x90, 0x2c, 0x09, 0x82, 0x2a, 0x00,
3081− 0x88, 0x2a, 0x00, 0x82, 0x2a, 0x00, 0x95, 0x2a,
3082− 0x00, 0x86, 0x2a, 0x00, 0x81, 0x2a, 0x00, 0x84,
3083− 0x2a, 0x01, 0x89, 0x2a, 0x00, 0x82, 0x2a, 0x00,
3084− 0x82, 0x2a, 0x01, 0x80, 0x2a, 0x0e, 0x83, 0x2a,
3085− 0x01, 0x8b, 0x2a, 0x06, 0x86, 0x2a, 0x00, 0x82,
3086− 0x6d, 0x00, 0x87, 0x6d, 0x01, 0x81, 0x6d, 0x01,
3087− 0x95, 0x6d, 0x00, 0x86, 0x6d, 0x00, 0x81, 0x6d,
3088− 0x00, 0x84, 0x6d, 0x01, 0x88, 0x6d, 0x01, 0x81,
3089− 0x6d, 0x01, 0x82, 0x6d, 0x07, 0x81, 0x6d, 0x03,
3090− 0x81, 0x6d, 0x00, 0x84, 0x6d, 0x01, 0x91, 0x6d,
3091− 0x09, 0x81, 0x8b, 0x00, 0x85, 0x8b, 0x02, 0x82,
3092− 0x8b, 0x00, 0x83, 0x8b, 0x02, 0x81, 0x8b, 0x00,
3093− 0x80, 0x8b, 0x00, 0x81, 0x8b, 0x02, 0x81, 0x8b,
3094− 0x02, 0x82, 0x8b, 0x02, 0x8b, 0x8b, 0x03, 0x84,
3095− 0x8b, 0x02, 0x82, 0x8b, 0x00, 0x83, 0x8b, 0x01,
3096− 0x80, 0x8b, 0x05, 0x80, 0x8b, 0x0d, 0x94, 0x8b,
3097− 0x04, 0x8c, 0x8d, 0x00, 0x82, 0x8d, 0x00, 0x96,
3098− 0x8d, 0x00, 0x8f, 0x8d, 0x02, 0x87, 0x8d, 0x00,
3099− 0x82, 0x8d, 0x00, 0x83, 0x8d, 0x06, 0x81, 0x8d,
3100− 0x00, 0x82, 0x8d, 0x04, 0x83, 0x8d, 0x01, 0x89,
3101− 0x8d, 0x06, 0x88, 0x8d, 0x8c, 0x3a, 0x00, 0x82,
3102− 0x3a, 0x00, 0x96, 0x3a, 0x00, 0x89, 0x3a, 0x00,
3103− 0x84, 0x3a, 0x01, 0x88, 0x3a, 0x00, 0x82, 0x3a,
3104− 0x00, 0x83, 0x3a, 0x06, 0x81, 0x3a, 0x06, 0x80,
3105− 0x3a, 0x00, 0x83, 0x3a, 0x01, 0x89, 0x3a, 0x00,
3106− 0x81, 0x3a, 0x0c, 0x83, 0x4c, 0x00, 0x87, 0x4c,
3107− 0x00, 0x82, 0x4c, 0x00, 0xb2, 0x4c, 0x00, 0x82,
3108− 0x4c, 0x00, 0x85, 0x4c, 0x03, 0x8f, 0x4c, 0x01,
3109− 0x99, 0x4c, 0x01, 0x81, 0x7e, 0x00, 0x91, 0x7e,
3110− 0x02, 0x97, 0x7e, 0x00, 0x88, 0x7e, 0x00, 0x80,
3111− 0x7e, 0x01, 0x86, 0x7e, 0x02, 0x80, 0x7e, 0x03,
3112− 0x85, 0x7e, 0x00, 0x80, 0x7e, 0x00, 0x87, 0x7e,
3113− 0x05, 0x89, 0x7e, 0x01, 0x82, 0x7e, 0x0b, 0xb9,
3114− 0x8f, 0x03, 0x80, 0x18, 0x9b, 0x8f, 0x24, 0x81,
3115− 0x41, 0x00, 0x80, 0x41, 0x00, 0x84, 0x41, 0x00,
3116− 0x97, 0x41, 0x00, 0x80, 0x41, 0x00, 0x96, 0x41,
3117− 0x01, 0x84, 0x41, 0x00, 0x80, 0x41, 0x00, 0x85,
3118− 0x41, 0x01, 0x89, 0x41, 0x01, 0x83, 0x41, 0x1f,
3119− 0xc7, 0x90, 0x00, 0xa3, 0x90, 0x03, 0xa6, 0x90,
3120− 0x00, 0xa3, 0x90, 0x00, 0x8e, 0x90, 0x00, 0x86,
3121− 0x90, 0x83, 0x18, 0x81, 0x90, 0x24, 0xe0, 0x3f,
3122− 0x5b, 0xa5, 0x25, 0x00, 0x80, 0x25, 0x04, 0x80,
3123− 0x25, 0x01, 0xaa, 0x25, 0x80, 0x18, 0x83, 0x25,
3124− 0xe0, 0x9f, 0x2e, 0xc8, 0x24, 0x00, 0x83, 0x24,
3125− 0x01, 0x86, 0x24, 0x00, 0x80, 0x24, 0x00, 0x83,
3126− 0x24, 0x01, 0xa8, 0x24, 0x00, 0x83, 0x24, 0x01,
3127− 0xa0, 0x24, 0x00, 0x83, 0x24, 0x01, 0x86, 0x24,
3128− 0x00, 0x80, 0x24, 0x00, 0x83, 0x24, 0x01, 0x8e,
3129− 0x24, 0x00, 0xb8, 0x24, 0x00, 0x83, 0x24, 0x01,
3130− 0xc2, 0x24, 0x01, 0x9f, 0x24, 0x02, 0x99, 0x24,
3131− 0x05, 0xd5, 0x17, 0x01, 0x85, 0x17, 0x01, 0xe2,
3132− 0x1f, 0x12, 0x9c, 0x63, 0x02, 0xca, 0x77, 0x82,
3133− 0x18, 0x8a, 0x77, 0x06, 0x8c, 0x85, 0x00, 0x86,
3134− 0x85, 0x0a, 0x94, 0x30, 0x81, 0x18, 0x08, 0x93,
3135− 0x11, 0x0b, 0x8c, 0x86, 0x00, 0x82, 0x86, 0x00,
3136− 0x81, 0x86, 0x0b, 0xdd, 0x3e, 0x01, 0x89, 0x3e,
3137− 0x05, 0x89, 0x3e, 0x05, 0x81, 0x58, 0x81, 0x18,
3138− 0x80, 0x58, 0x80, 0x18, 0x88, 0x58, 0x00, 0x89,
3139− 0x58, 0x05, 0xd8, 0x58, 0x06, 0xaa, 0x58, 0x04,
3140− 0xc5, 0x12, 0x09, 0x9e, 0x44, 0x00, 0x8b, 0x44,
3141− 0x03, 0x8b, 0x44, 0x03, 0x80, 0x44, 0x02, 0x8b,
3142− 0x44, 0x9d, 0x87, 0x01, 0x84, 0x87, 0x0a, 0xab,
3143− 0x5e, 0x03, 0x99, 0x5e, 0x05, 0x8a, 0x5e, 0x02,
3144− 0x81, 0x5e, 0x9f, 0x3e, 0x9b, 0x10, 0x01, 0x81,
3145− 0x10, 0xbe, 0x88, 0x00, 0x9c, 0x88, 0x01, 0x8a,
3146− 0x88, 0x05, 0x89, 0x88, 0x05, 0x8d, 0x88, 0x01,
3147− 0x8e, 0x35, 0x40, 0xcb, 0x07, 0x03, 0xac, 0x07,
3148− 0x02, 0xbf, 0x82, 0xb3, 0x0a, 0x07, 0x83, 0x0a,
3149− 0xb7, 0x43, 0x02, 0x8e, 0x43, 0x02, 0x82, 0x43,
3150− 0xaf, 0x64, 0x88, 0x1c, 0x06, 0xaa, 0x25, 0x01,
3151− 0x82, 0x25, 0x87, 0x82, 0x07, 0x82, 0x35, 0x80,
3152− 0x18, 0x8c, 0x35, 0x80, 0x18, 0x86, 0x35, 0x83,
3153− 0x18, 0x80, 0x35, 0x85, 0x18, 0x80, 0x35, 0x82,
3154− 0x18, 0x81, 0x35, 0x80, 0x18, 0x04, 0xa5, 0x42,
3155− 0x84, 0x29, 0x80, 0x1c, 0xb0, 0x42, 0x84, 0x29,
3156− 0x83, 0x42, 0x84, 0x29, 0x8c, 0x42, 0x80, 0x1c,
3157− 0xc5, 0x42, 0x80, 0x29, 0xb9, 0x35, 0x00, 0x84,
3158− 0x35, 0xe0, 0x9f, 0x42, 0x95, 0x29, 0x01, 0x85,
3159− 0x29, 0x01, 0xa5, 0x29, 0x01, 0x85, 0x29, 0x01,
3160− 0x87, 0x29, 0x00, 0x80, 0x29, 0x00, 0x80, 0x29,
3161− 0x00, 0x80, 0x29, 0x00, 0x9e, 0x29, 0x01, 0xb4,
3162− 0x29, 0x00, 0x8e, 0x29, 0x00, 0x8d, 0x29, 0x01,
3163− 0x85, 0x29, 0x00, 0x92, 0x29, 0x01, 0x82, 0x29,
3164− 0x00, 0x88, 0x29, 0x00, 0x8b, 0x18, 0x81, 0x35,
3165− 0xd6, 0x18, 0x00, 0x8a, 0x18, 0x80, 0x42, 0x01,
3166− 0x8a, 0x18, 0x80, 0x42, 0x8e, 0x18, 0x00, 0x8c,
3167− 0x42, 0x02, 0x9f, 0x18, 0x0f, 0xa0, 0x35, 0x0e,
3168− 0xa5, 0x18, 0x80, 0x29, 0x82, 0x18, 0x81, 0x42,
3169− 0x85, 0x18, 0x80, 0x42, 0x9a, 0x18, 0x80, 0x42,
3170− 0x90, 0x18, 0xa8, 0x42, 0x82, 0x18, 0x03, 0xe2,
3171− 0x36, 0x18, 0x18, 0x8a, 0x18, 0x14, 0xe3, 0x3f,
3172− 0x18, 0xe0, 0x9f, 0x0f, 0xe2, 0x13, 0x18, 0x01,
3173− 0x9f, 0x18, 0x01, 0xe0, 0x07, 0x18, 0xae, 0x26,
3174− 0x00, 0xae, 0x26, 0x00, 0x9f, 0x42, 0xe0, 0x13,
3175− 0x19, 0x04, 0x86, 0x19, 0xa5, 0x25, 0x00, 0x80,
3176− 0x25, 0x04, 0x80, 0x25, 0x01, 0xb7, 0x91, 0x06,
3177− 0x81, 0x91, 0x0d, 0x80, 0x91, 0x96, 0x24, 0x08,
3178− 0x86, 0x24, 0x00, 0x86, 0x24, 0x00, 0x86, 0x24,
3179− 0x00, 0x86, 0x24, 0x00, 0x86, 0x24, 0x00, 0x86,
3180− 0x24, 0x00, 0x86, 0x24, 0x00, 0x86, 0x24, 0x00,
3181− 0x9f, 0x1c, 0xcf, 0x18, 0x2f, 0x99, 0x2d, 0x00,
3182− 0xd8, 0x2d, 0x0b, 0xe0, 0x75, 0x2d, 0x19, 0x8b,
3183− 0x18, 0x03, 0x84, 0x18, 0x80, 0x2d, 0x80, 0x18,
3184− 0x80, 0x2d, 0x98, 0x18, 0x88, 0x2d, 0x83, 0x35,
3185− 0x81, 0x2e, 0x87, 0x18, 0x83, 0x2d, 0x83, 0x18,
3186− 0x00, 0xd5, 0x33, 0x01, 0x81, 0x35, 0x81, 0x18,
3187− 0x82, 0x33, 0x80, 0x18, 0xd9, 0x3b, 0x81, 0x18,
3188− 0x82, 0x3b, 0x04, 0xaa, 0x0d, 0x00, 0xdd, 0x2e,
3189− 0x00, 0x8f, 0x18, 0x9a, 0x0d, 0x04, 0xa3, 0x18,
3190− 0x0b, 0x8f, 0x3b, 0x9e, 0x2e, 0x00, 0xbf, 0x18,
3191− 0x9e, 0x2e, 0xd0, 0x18, 0xae, 0x3b, 0x80, 0x18,
3192− 0xd7, 0x3b, 0xe0, 0x47, 0x18, 0xf0, 0x09, 0x55,
3193− 0x2d, 0x09, 0xbf, 0x18, 0xf0, 0x41, 0x8f, 0x2d,
3194− 0x0f, 0xe4, 0x2c, 0x97, 0x02, 0xb6, 0x97, 0x08,
3195− 0xaf, 0x47, 0xe0, 0xcb, 0x94, 0x13, 0xdf, 0x1c,
3196− 0xd7, 0x08, 0x07, 0xa1, 0x18, 0xe0, 0x05, 0x42,
3197− 0x82, 0x18, 0xb4, 0x42, 0x01, 0x84, 0x42, 0x2f,
3198− 0x88, 0x42, 0xab, 0x83, 0x03, 0x89, 0x18, 0x05,
3199− 0xb7, 0x73, 0x07, 0xc5, 0x79, 0x07, 0x8b, 0x79,
3200− 0x05, 0x9f, 0x1e, 0xad, 0x3c, 0x80, 0x18, 0x80,
3201− 0x3c, 0xa3, 0x76, 0x0a, 0x80, 0x76, 0x9c, 0x2e,
3202− 0x02, 0xcd, 0x38, 0x00, 0x80, 0x18, 0x89, 0x38,
3203− 0x03, 0x81, 0x38, 0x9e, 0x5b, 0x00, 0xb6, 0x16,
3204− 0x08, 0x8d, 0x16, 0x01, 0x89, 0x16, 0x01, 0x83,
3205− 0x16, 0x9f, 0x5b, 0xc2, 0x89, 0x17, 0x84, 0x89,
3206− 0x96, 0x52, 0x09, 0x85, 0x24, 0x01, 0x85, 0x24,
3207− 0x01, 0x85, 0x24, 0x08, 0x86, 0x24, 0x00, 0x86,
3208− 0x24, 0x00, 0xaa, 0x42, 0x80, 0x18, 0x88, 0x42,
3209− 0x80, 0x29, 0x81, 0x42, 0x07, 0xcf, 0x17, 0xad,
3210− 0x52, 0x01, 0x89, 0x52, 0x05, 0xf0, 0x1b, 0x43,
3211− 0x2e, 0x0b, 0x96, 0x2e, 0x03, 0xb0, 0x2e, 0x70,
3212− 0x10, 0xa3, 0xe1, 0x0d, 0x2d, 0x01, 0xe0, 0x09,
3213− 0x2d, 0x25, 0x86, 0x42, 0x0b, 0x84, 0x05, 0x04,
3214− 0x99, 0x32, 0x00, 0x84, 0x32, 0x00, 0x80, 0x32,
3215− 0x00, 0x81, 0x32, 0x00, 0x81, 0x32, 0x00, 0x89,
3216− 0x32, 0xe0, 0x11, 0x04, 0x10, 0xe1, 0x0a, 0x04,
3217− 0x81, 0x18, 0x0f, 0xbf, 0x04, 0x01, 0xb5, 0x04,
3218− 0x27, 0x8d, 0x04, 0x01, 0x8f, 0x35, 0x89, 0x18,
3219− 0x05, 0x8d, 0x35, 0x81, 0x1c, 0xa2, 0x18, 0x00,
3220− 0x92, 0x18, 0x00, 0x83, 0x18, 0x03, 0x84, 0x04,
3221− 0x00, 0xe0, 0x26, 0x04, 0x01, 0x80, 0x18, 0x00,
3222− 0x9f, 0x18, 0x99, 0x42, 0x85, 0x18, 0x99, 0x42,
3223− 0x8a, 0x18, 0x89, 0x3b, 0x80, 0x18, 0xac, 0x3b,
3224− 0x81, 0x18, 0x9e, 0x2e, 0x02, 0x85, 0x2e, 0x01,
3225− 0x85, 0x2e, 0x01, 0x85, 0x2e, 0x01, 0x82, 0x2e,
3226− 0x02, 0x86, 0x18, 0x00, 0x86, 0x18, 0x09, 0x84,
3227− 0x18, 0x01, 0x8b, 0x46, 0x00, 0x99, 0x46, 0x00,
3228− 0x92, 0x46, 0x00, 0x81, 0x46, 0x00, 0x8e, 0x46,
3229− 0x01, 0x8d, 0x46, 0x21, 0xe0, 0x1a, 0x46, 0x04,
3230− 0x82, 0x18, 0x03, 0xac, 0x18, 0x02, 0x88, 0x18,
3231− 0xce, 0x29, 0x00, 0x8b, 0x18, 0x03, 0x80, 0x29,
3232− 0x2e, 0xac, 0x18, 0x80, 0x35, 0x60, 0x21, 0x9c,
3233− 0x48, 0x02, 0xb0, 0x13, 0x0e, 0x80, 0x35, 0x9a,
3234− 0x18, 0x03, 0xa3, 0x66, 0x08, 0x82, 0x66, 0x9a,
3235− 0x27, 0x04, 0xaa, 0x68, 0x04, 0x9d, 0x93, 0x00,
3236− 0x80, 0x93, 0xa3, 0x69, 0x03, 0x8d, 0x69, 0x29,
3237− 0xcf, 0x1d, 0xaf, 0x7b, 0x9d, 0x6f, 0x01, 0x89,
3238− 0x6f, 0x05, 0xa3, 0x6e, 0x03, 0xa3, 0x6e, 0x03,
3239− 0xa7, 0x22, 0x07, 0xb3, 0x14, 0x0a, 0x80, 0x14,
3240− 0x60, 0x2f, 0xe0, 0xd6, 0x45, 0x08, 0x95, 0x45,
3241− 0x09, 0x87, 0x45, 0x60, 0x37, 0x85, 0x1b, 0x01,
3242− 0x80, 0x1b, 0x00, 0xab, 0x1b, 0x00, 0x81, 0x1b,
3243− 0x02, 0x80, 0x1b, 0x01, 0x80, 0x1b, 0x95, 0x34,
3244− 0x00, 0x88, 0x34, 0x9f, 0x71, 0x9e, 0x5c, 0x07,
3245− 0x88, 0x5c, 0x2f, 0x92, 0x31, 0x00, 0x81, 0x31,
3246− 0x04, 0x84, 0x31, 0x9b, 0x74, 0x02, 0x80, 0x74,
3247− 0x99, 0x49, 0x04, 0x80, 0x49, 0x3f, 0x9f, 0x55,
3248− 0x97, 0x54, 0x03, 0x93, 0x54, 0x01, 0xad, 0x54,
3249− 0x83, 0x3d, 0x00, 0x81, 0x3d, 0x04, 0x87, 0x3d,
3250− 0x00, 0x82, 0x3d, 0x00, 0x9c, 0x3d, 0x01, 0x82,
3251− 0x3d, 0x03, 0x89, 0x3d, 0x06, 0x88, 0x3d, 0x06,
3252− 0x9f, 0x6b, 0x9f, 0x67, 0x1f, 0xa6, 0x4e, 0x03,
3253− 0x8b, 0x4e, 0x08, 0xb5, 0x06, 0x02, 0x86, 0x06,
3254− 0x95, 0x37, 0x01, 0x87, 0x37, 0x92, 0x36, 0x04,
3255− 0x87, 0x36, 0x91, 0x75, 0x06, 0x83, 0x75, 0x0b,
3256− 0x86, 0x75, 0x4f, 0xc8, 0x6c, 0x36, 0xb2, 0x65,
3257− 0x0c, 0xb2, 0x65, 0x06, 0x85, 0x65, 0xa7, 0x2f,
3258− 0x07, 0x89, 0x2f, 0x60, 0xc5, 0x9e, 0x04, 0x60,
3259− 0x20, 0xa7, 0x6a, 0x07, 0xa9, 0x7f, 0x60, 0x25,
3260− 0x96, 0x23, 0x08, 0xcd, 0x0e, 0x03, 0x9d, 0x0e,
3261− 0x0e, 0x80, 0x0e, 0xc1, 0x39, 0x0a, 0x80, 0x39,
3262− 0x01, 0x98, 0x80, 0x06, 0x89, 0x80, 0x05, 0xb4,
3263− 0x15, 0x00, 0x90, 0x15, 0x08, 0xa6, 0x4b, 0x08,
3264− 0xcd, 0x7a, 0x01, 0x8f, 0x7a, 0x00, 0x93, 0x7e,
3265− 0x0a, 0x91, 0x3f, 0x00, 0xab, 0x3f, 0x40, 0x86,
3266− 0x5a, 0x00, 0x80, 0x5a, 0x00, 0x83, 0x5a, 0x00,
3267− 0x8e, 0x5a, 0x00, 0x8a, 0x5a, 0x05, 0xba, 0x40,
3268− 0x04, 0x89, 0x40, 0x05, 0x83, 0x28, 0x00, 0x87,
3269− 0x28, 0x01, 0x81, 0x28, 0x01, 0x95, 0x28, 0x00,
3270− 0x86, 0x28, 0x00, 0x81, 0x28, 0x00, 0x84, 0x28,
3271− 0x00, 0x80, 0x35, 0x88, 0x28, 0x01, 0x81, 0x28,
3272− 0x01, 0x82, 0x28, 0x01, 0x80, 0x28, 0x05, 0x80,
3273− 0x28, 0x04, 0x86, 0x28, 0x01, 0x86, 0x28, 0x02,
3274− 0x84, 0x28, 0x60, 0x2a, 0xd9, 0x5f, 0x00, 0x80,
3275− 0x5f, 0x00, 0x82, 0x5f, 0x1f, 0xc7, 0x92, 0x07,
3276− 0x89, 0x92, 0x60, 0x45, 0xb5, 0x7c, 0x01, 0xa5,
3277− 0x7c, 0x21, 0xc4, 0x57, 0x0a, 0x89, 0x57, 0x05,
3278− 0x8c, 0x58, 0x12, 0xb8, 0x8a, 0x06, 0x89, 0x8a,
3279− 0x35, 0x9a, 0x02, 0x01, 0x8e, 0x02, 0x03, 0x8f,
3280− 0x02, 0x60, 0x5f, 0xbb, 0x1f, 0x60, 0x03, 0xd2,
3281− 0x96, 0x0b, 0x80, 0x96, 0x60, 0x3f, 0x87, 0x5d,
3282− 0x01, 0xad, 0x5d, 0x01, 0x8a, 0x5d, 0x1a, 0xc7,
3283− 0x98, 0x07, 0xd2, 0x81, 0x1c, 0xb8, 0x72, 0x60,
3284− 0xa6, 0x88, 0x0c, 0x00, 0xac, 0x0c, 0x00, 0x8d,
3285− 0x0c, 0x09, 0x9c, 0x0c, 0x02, 0x9f, 0x4f, 0x01,
3286− 0x95, 0x4f, 0x00, 0x8d, 0x4f, 0x48, 0x86, 0x50,
3287− 0x00, 0x81, 0x50, 0x00, 0xab, 0x50, 0x02, 0x80,
3288− 0x50, 0x00, 0x81, 0x50, 0x00, 0x88, 0x50, 0x07,
3289− 0x89, 0x50, 0x05, 0x85, 0x2b, 0x00, 0x81, 0x2b,
3290− 0x00, 0xa4, 0x2b, 0x00, 0x81, 0x2b, 0x00, 0x85,
3291− 0x2b, 0x06, 0x89, 0x2b, 0x60, 0xd5, 0x98, 0x4a,
3292− 0x60, 0x66, 0xb1, 0x8b, 0x0c, 0x80, 0x8b, 0xe3,
3293− 0x39, 0x1a, 0x60, 0x05, 0xe0, 0x0e, 0x1a, 0x00,
3294− 0x84, 0x1a, 0x0a, 0xe0, 0x63, 0x1a, 0x6a, 0x5b,
3295− 0xe3, 0xce, 0x21, 0x00, 0x88, 0x21, 0x6f, 0x66,
3296− 0xe1, 0xe6, 0x03, 0x70, 0x11, 0x58, 0xe1, 0xd8,
3297− 0x08, 0x06, 0x9e, 0x59, 0x00, 0x89, 0x59, 0x03,
3298− 0x81, 0x59, 0x5f, 0x9d, 0x09, 0x01, 0x85, 0x09,
3299− 0x09, 0xc5, 0x70, 0x09, 0x89, 0x70, 0x00, 0x86,
3300− 0x70, 0x00, 0x94, 0x70, 0x04, 0x92, 0x70, 0x62,
3301− 0x4f, 0xda, 0x51, 0x60, 0x04, 0xca, 0x56, 0x03,
3302− 0xb8, 0x56, 0x06, 0x90, 0x56, 0x3f, 0x80, 0x8c,
3303− 0x80, 0x61, 0x81, 0x18, 0x1b, 0xf0, 0x07, 0x97,
3304− 0x8c, 0x07, 0xe2, 0x92, 0x8c, 0x70, 0x14, 0xac,
3305− 0x80, 0x3b, 0xe0, 0xbd, 0x33, 0x30, 0x82, 0x33,
3306− 0x10, 0x83, 0x3b, 0x07, 0xe1, 0x2b, 0x61, 0x68,
3307− 0xa3, 0xe0, 0x0a, 0x20, 0x04, 0x8c, 0x20, 0x02,
3308− 0x88, 0x20, 0x06, 0x89, 0x20, 0x01, 0x83, 0x20,
3309− 0x83, 0x18, 0x70, 0x02, 0xfb, 0xe0, 0x95, 0x18,
3310− 0x09, 0xa6, 0x18, 0x01, 0xbd, 0x18, 0x82, 0x35,
3311− 0x90, 0x18, 0x87, 0x35, 0x81, 0x18, 0x86, 0x35,
3312− 0x9d, 0x18, 0x83, 0x35, 0xba, 0x18, 0x16, 0xc5,
3313− 0x29, 0x60, 0x39, 0x93, 0x18, 0x0b, 0xd6, 0x18,
3314− 0x08, 0x98, 0x18, 0x60, 0x26, 0xd4, 0x18, 0x00,
3315− 0xc6, 0x18, 0x00, 0x81, 0x18, 0x01, 0x80, 0x18,
3316− 0x01, 0x81, 0x18, 0x01, 0x83, 0x18, 0x00, 0x8b,
3317− 0x18, 0x00, 0x80, 0x18, 0x00, 0x86, 0x18, 0x00,
3318− 0xc0, 0x18, 0x00, 0x83, 0x18, 0x01, 0x87, 0x18,
3319− 0x00, 0x86, 0x18, 0x00, 0x9b, 0x18, 0x00, 0x83,
3320− 0x18, 0x00, 0x84, 0x18, 0x00, 0x80, 0x18, 0x02,
3321− 0x86, 0x18, 0x00, 0xe0, 0xf3, 0x18, 0x01, 0xe0,
3322− 0xc3, 0x18, 0x01, 0xb1, 0x18, 0xe2, 0x2b, 0x7d,
3323− 0x0e, 0x84, 0x7d, 0x00, 0x8e, 0x7d, 0x64, 0xef,
3324− 0x86, 0x26, 0x00, 0x90, 0x26, 0x01, 0x86, 0x26,
3325− 0x00, 0x81, 0x26, 0x00, 0x84, 0x26, 0x60, 0x74,
3326− 0xac, 0x62, 0x02, 0x8d, 0x62, 0x01, 0x89, 0x62,
3327− 0x03, 0x81, 0x62, 0x61, 0x0f, 0xb9, 0x95, 0x04,
3328− 0x80, 0x95, 0x64, 0x9f, 0xe0, 0x64, 0x53, 0x01,
3329− 0x8f, 0x53, 0x28, 0xcb, 0x01, 0x03, 0x89, 0x01,
3330− 0x03, 0x81, 0x01, 0x62, 0xb0, 0xc3, 0x18, 0x4b,
3331− 0xbc, 0x18, 0x60, 0x61, 0x83, 0x04, 0x00, 0x9a,
3332− 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04, 0x01,
3333− 0x80, 0x04, 0x00, 0x89, 0x04, 0x00, 0x83, 0x04,
3334− 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x05, 0x80,
3335− 0x04, 0x03, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00,
3336− 0x80, 0x04, 0x00, 0x82, 0x04, 0x00, 0x81, 0x04,
3337− 0x00, 0x80, 0x04, 0x01, 0x80, 0x04, 0x00, 0x80,
3338− 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x00,
3339− 0x80, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04,
3340− 0x01, 0x83, 0x04, 0x00, 0x86, 0x04, 0x00, 0x83,
3341− 0x04, 0x00, 0x83, 0x04, 0x00, 0x80, 0x04, 0x00,
3342− 0x89, 0x04, 0x00, 0x90, 0x04, 0x04, 0x82, 0x04,
3343− 0x00, 0x84, 0x04, 0x00, 0x90, 0x04, 0x33, 0x81,
3344− 0x04, 0x60, 0xad, 0xab, 0x18, 0x03, 0xe0, 0x03,
3345− 0x18, 0x0b, 0x8e, 0x18, 0x01, 0x8e, 0x18, 0x00,
3346− 0x8e, 0x18, 0x00, 0xa4, 0x18, 0x09, 0x8c, 0x18,
3347− 0x02, 0xdc, 0x18, 0x02, 0xbc, 0x18, 0x38, 0x99,
3348− 0x18, 0x80, 0x33, 0x81, 0x18, 0x0c, 0xab, 0x18,
3349− 0x03, 0x88, 0x18, 0x06, 0x81, 0x18, 0x0d, 0x85,
3350− 0x18, 0x60, 0x39, 0xe3, 0x75, 0x18, 0x09, 0x8c,
3351− 0x18, 0x02, 0x8a, 0x18, 0x04, 0xe0, 0x13, 0x18,
3352− 0x0b, 0xd8, 0x18, 0x06, 0x8b, 0x18, 0x13, 0x8b,
3353− 0x18, 0x03, 0xb7, 0x18, 0x07, 0x89, 0x18, 0x05,
3354− 0xa7, 0x18, 0x07, 0x9d, 0x18, 0x51, 0x8b, 0x18,
3355− 0x00, 0xe0, 0x04, 0x18, 0x00, 0x83, 0x18, 0x02,
3356− 0xa8, 0x18, 0x01, 0x85, 0x18, 0x02, 0x9c, 0x18,
3357− 0x01, 0xe0, 0x26, 0x18, 0x0b, 0x8d, 0x18, 0x01,
3358− 0x83, 0x18, 0x03, 0x82, 0x18, 0x04, 0x82, 0x18,
3359− 0x0c, 0x85, 0x18, 0x65, 0x09, 0xf0, 0x96, 0x76,
3360− 0x2d, 0x28, 0xef, 0xd4, 0x2d, 0x0a, 0xe0, 0x7d,
3361− 0x2d, 0x01, 0xf0, 0x06, 0x21, 0x2d, 0x0d, 0xf0,
3362− 0x0c, 0xd0, 0x2d, 0x6b, 0xbe, 0xe1, 0xbd, 0x2d,
3363− 0x7a, 0xf5, 0x82, 0x80, 0x18, 0x1d, 0xdf, 0x18,
3364− 0x60, 0x1f, 0xe0, 0x8f, 0x35,
3079+static const uint8_t unicode_script_table[2609] = {
3080+ 0xc0, 0x19, 0x99, 0x45, 0x85, 0x19, 0x99, 0x45,
3081+ 0xae, 0x19, 0x80, 0x45, 0x8e, 0x19, 0x80, 0x45,
3082+ 0x84, 0x19, 0x96, 0x45, 0x80, 0x19, 0x9e, 0x45,
3083+ 0x80, 0x19, 0xe1, 0x60, 0x45, 0xa6, 0x19, 0x84,
3084+ 0x45, 0x84, 0x19, 0x81, 0x0d, 0x93, 0x19, 0xe0,
3085+ 0x0f, 0x37, 0x83, 0x2b, 0x80, 0x19, 0x82, 0x2b,
3086+ 0x01, 0x83, 0x2b, 0x80, 0x19, 0x80, 0x2b, 0x03,
3087+ 0x80, 0x2b, 0x80, 0x19, 0x80, 0x2b, 0x80, 0x19,
3088+ 0x82, 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x93, 0x2b,
3089+ 0x00, 0xbe, 0x2b, 0x8d, 0x1a, 0x8f, 0x2b, 0xe0,
3090+ 0x24, 0x1d, 0x81, 0x37, 0xe0, 0x48, 0x1d, 0x00,
3091+ 0xa5, 0x05, 0x01, 0xb1, 0x05, 0x01, 0x82, 0x05,
3092+ 0x00, 0xb6, 0x34, 0x07, 0x9a, 0x34, 0x03, 0x85,
3093+ 0x34, 0x0a, 0x84, 0x04, 0x80, 0x19, 0x85, 0x04,
3094+ 0x80, 0x19, 0x8d, 0x04, 0x80, 0x19, 0x80, 0x04,
3095+ 0x00, 0x80, 0x04, 0x80, 0x19, 0x9f, 0x04, 0x80,
3096+ 0x19, 0x89, 0x04, 0x8a, 0x37, 0x99, 0x04, 0x80,
3097+ 0x37, 0xe0, 0x0b, 0x04, 0x80, 0x19, 0xa1, 0x04,
3098+ 0x8d, 0x87, 0x00, 0xbb, 0x87, 0x01, 0x82, 0x87,
3099+ 0xaf, 0x04, 0xb1, 0x91, 0x0d, 0xba, 0x63, 0x01,
3100+ 0x82, 0x63, 0xad, 0x7b, 0x01, 0x8e, 0x7b, 0x00,
3101+ 0x9b, 0x50, 0x01, 0x80, 0x50, 0x00, 0x8a, 0x87,
3102+ 0x34, 0x94, 0x04, 0x00, 0x91, 0x04, 0x0a, 0x8e,
3103+ 0x04, 0x80, 0x19, 0x9c, 0x04, 0xd0, 0x1f, 0x83,
3104+ 0x37, 0x8e, 0x1f, 0x81, 0x19, 0x99, 0x1f, 0x83,
3105+ 0x0b, 0x00, 0x87, 0x0b, 0x01, 0x81, 0x0b, 0x01,
3106+ 0x95, 0x0b, 0x00, 0x86, 0x0b, 0x00, 0x80, 0x0b,
3107+ 0x02, 0x83, 0x0b, 0x01, 0x88, 0x0b, 0x01, 0x81,
3108+ 0x0b, 0x01, 0x83, 0x0b, 0x07, 0x80, 0x0b, 0x03,
3109+ 0x81, 0x0b, 0x00, 0x84, 0x0b, 0x01, 0x98, 0x0b,
3110+ 0x01, 0x82, 0x2e, 0x00, 0x85, 0x2e, 0x03, 0x81,
3111+ 0x2e, 0x01, 0x95, 0x2e, 0x00, 0x86, 0x2e, 0x00,
3112+ 0x81, 0x2e, 0x00, 0x81, 0x2e, 0x00, 0x81, 0x2e,
3113+ 0x01, 0x80, 0x2e, 0x00, 0x84, 0x2e, 0x03, 0x81,
3114+ 0x2e, 0x01, 0x82, 0x2e, 0x02, 0x80, 0x2e, 0x06,
3115+ 0x83, 0x2e, 0x00, 0x80, 0x2e, 0x06, 0x90, 0x2e,
3116+ 0x09, 0x82, 0x2c, 0x00, 0x88, 0x2c, 0x00, 0x82,
3117+ 0x2c, 0x00, 0x95, 0x2c, 0x00, 0x86, 0x2c, 0x00,
3118+ 0x81, 0x2c, 0x00, 0x84, 0x2c, 0x01, 0x89, 0x2c,
3119+ 0x00, 0x82, 0x2c, 0x00, 0x82, 0x2c, 0x01, 0x80,
3120+ 0x2c, 0x0e, 0x83, 0x2c, 0x01, 0x8b, 0x2c, 0x06,
3121+ 0x86, 0x2c, 0x00, 0x82, 0x70, 0x00, 0x87, 0x70,
3122+ 0x01, 0x81, 0x70, 0x01, 0x95, 0x70, 0x00, 0x86,
3123+ 0x70, 0x00, 0x81, 0x70, 0x00, 0x84, 0x70, 0x01,
3124+ 0x88, 0x70, 0x01, 0x81, 0x70, 0x01, 0x82, 0x70,
3125+ 0x06, 0x82, 0x70, 0x03, 0x81, 0x70, 0x00, 0x84,
3126+ 0x70, 0x01, 0x91, 0x70, 0x09, 0x81, 0x8e, 0x00,
3127+ 0x85, 0x8e, 0x02, 0x82, 0x8e, 0x00, 0x83, 0x8e,
3128+ 0x02, 0x81, 0x8e, 0x00, 0x80, 0x8e, 0x00, 0x81,
3129+ 0x8e, 0x02, 0x81, 0x8e, 0x02, 0x82, 0x8e, 0x02,
3130+ 0x8b, 0x8e, 0x03, 0x84, 0x8e, 0x02, 0x82, 0x8e,
3131+ 0x00, 0x83, 0x8e, 0x01, 0x80, 0x8e, 0x05, 0x80,
3132+ 0x8e, 0x0d, 0x94, 0x8e, 0x04, 0x8c, 0x90, 0x00,
3133+ 0x82, 0x90, 0x00, 0x96, 0x90, 0x00, 0x8f, 0x90,
3134+ 0x02, 0x87, 0x90, 0x00, 0x82, 0x90, 0x00, 0x83,
3135+ 0x90, 0x06, 0x81, 0x90, 0x00, 0x82, 0x90, 0x04,
3136+ 0x83, 0x90, 0x01, 0x89, 0x90, 0x06, 0x88, 0x90,
3137+ 0x8c, 0x3c, 0x00, 0x82, 0x3c, 0x00, 0x96, 0x3c,
3138+ 0x00, 0x89, 0x3c, 0x00, 0x84, 0x3c, 0x01, 0x88,
3139+ 0x3c, 0x00, 0x82, 0x3c, 0x00, 0x83, 0x3c, 0x06,
3140+ 0x81, 0x3c, 0x06, 0x80, 0x3c, 0x00, 0x83, 0x3c,
3141+ 0x01, 0x89, 0x3c, 0x00, 0x81, 0x3c, 0x0c, 0x8c,
3142+ 0x4f, 0x00, 0x82, 0x4f, 0x00, 0xb2, 0x4f, 0x00,
3143+ 0x82, 0x4f, 0x00, 0x85, 0x4f, 0x03, 0x8f, 0x4f,
3144+ 0x01, 0x99, 0x4f, 0x00, 0x82, 0x81, 0x00, 0x91,
3145+ 0x81, 0x02, 0x97, 0x81, 0x00, 0x88, 0x81, 0x00,
3146+ 0x80, 0x81, 0x01, 0x86, 0x81, 0x02, 0x80, 0x81,
3147+ 0x03, 0x85, 0x81, 0x00, 0x80, 0x81, 0x00, 0x87,
3148+ 0x81, 0x05, 0x89, 0x81, 0x01, 0x82, 0x81, 0x0b,
3149+ 0xb9, 0x92, 0x03, 0x80, 0x19, 0x9b, 0x92, 0x24,
3150+ 0x81, 0x44, 0x00, 0x80, 0x44, 0x00, 0x84, 0x44,
3151+ 0x00, 0x97, 0x44, 0x00, 0x80, 0x44, 0x00, 0x96,
3152+ 0x44, 0x01, 0x84, 0x44, 0x00, 0x80, 0x44, 0x00,
3153+ 0x85, 0x44, 0x01, 0x89, 0x44, 0x01, 0x83, 0x44,
3154+ 0x1f, 0xc7, 0x93, 0x00, 0xa3, 0x93, 0x03, 0xa6,
3155+ 0x93, 0x00, 0xa3, 0x93, 0x00, 0x8e, 0x93, 0x00,
3156+ 0x86, 0x93, 0x83, 0x19, 0x81, 0x93, 0x24, 0xe0,
3157+ 0x3f, 0x5e, 0xa5, 0x27, 0x00, 0x80, 0x27, 0x04,
3158+ 0x80, 0x27, 0x01, 0xaa, 0x27, 0x80, 0x19, 0x83,
3159+ 0x27, 0xe0, 0x9f, 0x30, 0xc8, 0x26, 0x00, 0x83,
3160+ 0x26, 0x01, 0x86, 0x26, 0x00, 0x80, 0x26, 0x00,
3161+ 0x83, 0x26, 0x01, 0xa8, 0x26, 0x00, 0x83, 0x26,
3162+ 0x01, 0xa0, 0x26, 0x00, 0x83, 0x26, 0x01, 0x86,
3163+ 0x26, 0x00, 0x80, 0x26, 0x00, 0x83, 0x26, 0x01,
3164+ 0x8e, 0x26, 0x00, 0xb8, 0x26, 0x00, 0x83, 0x26,
3165+ 0x01, 0xc2, 0x26, 0x01, 0x9f, 0x26, 0x02, 0x99,
3166+ 0x26, 0x05, 0xd5, 0x17, 0x01, 0x85, 0x17, 0x01,
3167+ 0xe2, 0x1f, 0x12, 0x9c, 0x66, 0x02, 0xca, 0x7a,
3168+ 0x82, 0x19, 0x8a, 0x7a, 0x06, 0x8c, 0x88, 0x00,
3169+ 0x86, 0x88, 0x0a, 0x94, 0x32, 0x81, 0x19, 0x08,
3170+ 0x93, 0x11, 0x0b, 0x8c, 0x89, 0x00, 0x82, 0x89,
3171+ 0x00, 0x81, 0x89, 0x0b, 0xdd, 0x40, 0x01, 0x89,
3172+ 0x40, 0x05, 0x89, 0x40, 0x05, 0x81, 0x5b, 0x81,
3173+ 0x19, 0x80, 0x5b, 0x80, 0x19, 0x88, 0x5b, 0x00,
3174+ 0x89, 0x5b, 0x05, 0xd8, 0x5b, 0x06, 0xaa, 0x5b,
3175+ 0x04, 0xc5, 0x12, 0x09, 0x9e, 0x47, 0x00, 0x8b,
3176+ 0x47, 0x03, 0x8b, 0x47, 0x03, 0x80, 0x47, 0x02,
3177+ 0x8b, 0x47, 0x9d, 0x8a, 0x01, 0x84, 0x8a, 0x0a,
3178+ 0xab, 0x61, 0x03, 0x99, 0x61, 0x05, 0x8a, 0x61,
3179+ 0x02, 0x81, 0x61, 0x9f, 0x40, 0x9b, 0x10, 0x01,
3180+ 0x81, 0x10, 0xbe, 0x8b, 0x00, 0x9c, 0x8b, 0x01,
3181+ 0x8a, 0x8b, 0x05, 0x89, 0x8b, 0x05, 0x8d, 0x8b,
3182+ 0x01, 0x90, 0x37, 0x3e, 0xcb, 0x07, 0x03, 0xac,
3183+ 0x07, 0x02, 0xbf, 0x85, 0xb3, 0x0a, 0x07, 0x83,
3184+ 0x0a, 0xb7, 0x46, 0x02, 0x8e, 0x46, 0x02, 0x82,
3185+ 0x46, 0xaf, 0x67, 0x88, 0x1d, 0x06, 0xaa, 0x27,
3186+ 0x01, 0x82, 0x27, 0x87, 0x85, 0x07, 0x82, 0x37,
3187+ 0x80, 0x19, 0x8c, 0x37, 0x80, 0x19, 0x86, 0x37,
3188+ 0x83, 0x19, 0x80, 0x37, 0x85, 0x19, 0x80, 0x37,
3189+ 0x82, 0x19, 0x81, 0x37, 0x80, 0x19, 0x04, 0xa5,
3190+ 0x45, 0x84, 0x2b, 0x80, 0x1d, 0xb0, 0x45, 0x84,
3191+ 0x2b, 0x83, 0x45, 0x84, 0x2b, 0x8c, 0x45, 0x80,
3192+ 0x1d, 0xc5, 0x45, 0x80, 0x2b, 0xb9, 0x37, 0x00,
3193+ 0x84, 0x37, 0xe0, 0x9f, 0x45, 0x95, 0x2b, 0x01,
3194+ 0x85, 0x2b, 0x01, 0xa5, 0x2b, 0x01, 0x85, 0x2b,
3195+ 0x01, 0x87, 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x80,
3196+ 0x2b, 0x00, 0x80, 0x2b, 0x00, 0x9e, 0x2b, 0x01,
3197+ 0xb4, 0x2b, 0x00, 0x8e, 0x2b, 0x00, 0x8d, 0x2b,
3198+ 0x01, 0x85, 0x2b, 0x00, 0x92, 0x2b, 0x01, 0x82,
3199+ 0x2b, 0x00, 0x88, 0x2b, 0x00, 0x8b, 0x19, 0x81,
3200+ 0x37, 0xd6, 0x19, 0x00, 0x8a, 0x19, 0x80, 0x45,
3201+ 0x01, 0x8a, 0x19, 0x80, 0x45, 0x8e, 0x19, 0x00,
3202+ 0x8c, 0x45, 0x02, 0x9f, 0x19, 0x0f, 0xa0, 0x37,
3203+ 0x0e, 0xa5, 0x19, 0x80, 0x2b, 0x82, 0x19, 0x81,
3204+ 0x45, 0x85, 0x19, 0x80, 0x45, 0x9a, 0x19, 0x80,
3205+ 0x45, 0x90, 0x19, 0xa8, 0x45, 0x82, 0x19, 0x03,
3206+ 0xe2, 0x36, 0x19, 0x18, 0x8a, 0x19, 0x14, 0xe3,
3207+ 0x3f, 0x19, 0xe0, 0x9f, 0x0f, 0xe2, 0x13, 0x19,
3208+ 0x01, 0x9f, 0x19, 0x00, 0xe0, 0x08, 0x19, 0xae,
3209+ 0x28, 0x00, 0xae, 0x28, 0x00, 0x9f, 0x45, 0xe0,
3210+ 0x13, 0x1a, 0x04, 0x86, 0x1a, 0xa5, 0x27, 0x00,
3211+ 0x80, 0x27, 0x04, 0x80, 0x27, 0x01, 0xb7, 0x94,
3212+ 0x06, 0x81, 0x94, 0x0d, 0x80, 0x94, 0x96, 0x26,
3213+ 0x08, 0x86, 0x26, 0x00, 0x86, 0x26, 0x00, 0x86,
3214+ 0x26, 0x00, 0x86, 0x26, 0x00, 0x86, 0x26, 0x00,
3215+ 0x86, 0x26, 0x00, 0x86, 0x26, 0x00, 0x86, 0x26,
3216+ 0x00, 0x9f, 0x1d, 0xd2, 0x19, 0x2c, 0x99, 0x2f,
3217+ 0x00, 0xd8, 0x2f, 0x0b, 0xe0, 0x75, 0x2f, 0x19,
3218+ 0x8b, 0x19, 0x03, 0x84, 0x19, 0x80, 0x2f, 0x80,
3219+ 0x19, 0x80, 0x2f, 0x98, 0x19, 0x88, 0x2f, 0x83,
3220+ 0x37, 0x81, 0x30, 0x87, 0x19, 0x83, 0x2f, 0x83,
3221+ 0x19, 0x00, 0xd5, 0x35, 0x01, 0x81, 0x37, 0x81,
3222+ 0x19, 0x82, 0x35, 0x80, 0x19, 0xd9, 0x3d, 0x81,
3223+ 0x19, 0x82, 0x3d, 0x04, 0xaa, 0x0d, 0x00, 0xdd,
3224+ 0x30, 0x00, 0x8f, 0x19, 0x9f, 0x0d, 0xa3, 0x19,
3225+ 0x0b, 0x8f, 0x3d, 0x9e, 0x30, 0x00, 0xbf, 0x19,
3226+ 0x9e, 0x30, 0xd0, 0x19, 0xae, 0x3d, 0x80, 0x19,
3227+ 0xd7, 0x3d, 0xe0, 0x47, 0x19, 0xf0, 0x09, 0x5f,
3228+ 0x2f, 0xbf, 0x19, 0xf0, 0x41, 0x9c, 0x2f, 0x02,
3229+ 0xe4, 0x2c, 0x9b, 0x02, 0xb6, 0x9b, 0x08, 0xaf,
3230+ 0x4a, 0xe0, 0xcb, 0x97, 0x13, 0xdf, 0x1d, 0xd7,
3231+ 0x08, 0x07, 0xa1, 0x19, 0xe0, 0x05, 0x45, 0x82,
3232+ 0x19, 0xb4, 0x45, 0x01, 0x88, 0x45, 0x29, 0x8a,
3233+ 0x45, 0xac, 0x86, 0x02, 0x89, 0x19, 0x05, 0xb7,
3234+ 0x76, 0x07, 0xc5, 0x7c, 0x07, 0x8b, 0x7c, 0x05,
3235+ 0x9f, 0x1f, 0xad, 0x3e, 0x80, 0x19, 0x80, 0x3e,
3236+ 0xa3, 0x79, 0x0a, 0x80, 0x79, 0x9c, 0x30, 0x02,
3237+ 0xcd, 0x3a, 0x00, 0x80, 0x19, 0x89, 0x3a, 0x03,
3238+ 0x81, 0x3a, 0x9e, 0x5e, 0x00, 0xb6, 0x16, 0x08,
3239+ 0x8d, 0x16, 0x01, 0x89, 0x16, 0x01, 0x83, 0x16,
3240+ 0x9f, 0x5e, 0xc2, 0x8c, 0x17, 0x84, 0x8c, 0x96,
3241+ 0x55, 0x09, 0x85, 0x26, 0x01, 0x85, 0x26, 0x01,
3242+ 0x85, 0x26, 0x08, 0x86, 0x26, 0x00, 0x86, 0x26,
3243+ 0x00, 0xaa, 0x45, 0x80, 0x19, 0x88, 0x45, 0x80,
3244+ 0x2b, 0x83, 0x45, 0x81, 0x19, 0x03, 0xcf, 0x17,
3245+ 0xad, 0x55, 0x01, 0x89, 0x55, 0x05, 0xf0, 0x1b,
3246+ 0x43, 0x30, 0x0b, 0x96, 0x30, 0x03, 0xb0, 0x30,
3247+ 0x70, 0x10, 0xa3, 0xe1, 0x0d, 0x2f, 0x01, 0xe0,
3248+ 0x09, 0x2f, 0x25, 0x86, 0x45, 0x0b, 0x84, 0x05,
3249+ 0x04, 0x99, 0x34, 0x00, 0x84, 0x34, 0x00, 0x80,
3250+ 0x34, 0x00, 0x81, 0x34, 0x00, 0x81, 0x34, 0x00,
3251+ 0x89, 0x34, 0xe0, 0x11, 0x04, 0x10, 0xe1, 0x0a,
3252+ 0x04, 0x81, 0x19, 0x0f, 0xbf, 0x04, 0x01, 0xb5,
3253+ 0x04, 0x27, 0x8d, 0x04, 0x01, 0x8f, 0x37, 0x89,
3254+ 0x19, 0x05, 0x8d, 0x37, 0x81, 0x1d, 0xa2, 0x19,
3255+ 0x00, 0x92, 0x19, 0x00, 0x83, 0x19, 0x03, 0x84,
3256+ 0x04, 0x00, 0xe0, 0x26, 0x04, 0x01, 0x80, 0x19,
3257+ 0x00, 0x9f, 0x19, 0x99, 0x45, 0x85, 0x19, 0x99,
3258+ 0x45, 0x8a, 0x19, 0x89, 0x3d, 0x80, 0x19, 0xac,
3259+ 0x3d, 0x81, 0x19, 0x9e, 0x30, 0x02, 0x85, 0x30,
3260+ 0x01, 0x85, 0x30, 0x01, 0x85, 0x30, 0x01, 0x82,
3261+ 0x30, 0x02, 0x86, 0x19, 0x00, 0x86, 0x19, 0x09,
3262+ 0x84, 0x19, 0x01, 0x8b, 0x49, 0x00, 0x99, 0x49,
3263+ 0x00, 0x92, 0x49, 0x00, 0x81, 0x49, 0x00, 0x8e,
3264+ 0x49, 0x01, 0x8d, 0x49, 0x21, 0xe0, 0x1a, 0x49,
3265+ 0x04, 0x82, 0x19, 0x03, 0xac, 0x19, 0x02, 0x88,
3266+ 0x19, 0xce, 0x2b, 0x00, 0x8c, 0x19, 0x02, 0x80,
3267+ 0x2b, 0x2e, 0xac, 0x19, 0x80, 0x37, 0x60, 0x21,
3268+ 0x9c, 0x4b, 0x02, 0xb0, 0x13, 0x0e, 0x80, 0x37,
3269+ 0x9a, 0x19, 0x03, 0xa3, 0x69, 0x08, 0x82, 0x69,
3270+ 0x9a, 0x29, 0x04, 0xaa, 0x6b, 0x04, 0x9d, 0x96,
3271+ 0x00, 0x80, 0x96, 0xa3, 0x6c, 0x03, 0x8d, 0x6c,
3272+ 0x29, 0xcf, 0x1e, 0xaf, 0x7e, 0x9d, 0x72, 0x01,
3273+ 0x89, 0x72, 0x05, 0xa3, 0x71, 0x03, 0xa3, 0x71,
3274+ 0x03, 0xa7, 0x24, 0x07, 0xb3, 0x14, 0x0a, 0x80,
3275+ 0x14, 0x60, 0x2f, 0xe0, 0xd6, 0x48, 0x08, 0x95,
3276+ 0x48, 0x09, 0x87, 0x48, 0x60, 0x37, 0x85, 0x1c,
3277+ 0x01, 0x80, 0x1c, 0x00, 0xab, 0x1c, 0x00, 0x81,
3278+ 0x1c, 0x02, 0x80, 0x1c, 0x01, 0x80, 0x1c, 0x95,
3279+ 0x36, 0x00, 0x88, 0x36, 0x9f, 0x74, 0x9e, 0x5f,
3280+ 0x07, 0x88, 0x5f, 0x2f, 0x92, 0x33, 0x00, 0x81,
3281+ 0x33, 0x04, 0x84, 0x33, 0x9b, 0x77, 0x02, 0x80,
3282+ 0x77, 0x99, 0x4c, 0x04, 0x80, 0x4c, 0x3f, 0x9f,
3283+ 0x58, 0x97, 0x57, 0x03, 0x93, 0x57, 0x01, 0xad,
3284+ 0x57, 0x83, 0x3f, 0x00, 0x81, 0x3f, 0x04, 0x87,
3285+ 0x3f, 0x00, 0x82, 0x3f, 0x00, 0x9c, 0x3f, 0x01,
3286+ 0x82, 0x3f, 0x03, 0x89, 0x3f, 0x06, 0x88, 0x3f,
3287+ 0x06, 0x9f, 0x6e, 0x9f, 0x6a, 0x1f, 0xa6, 0x51,
3288+ 0x03, 0x8b, 0x51, 0x08, 0xb5, 0x06, 0x02, 0x86,
3289+ 0x06, 0x95, 0x39, 0x01, 0x87, 0x39, 0x92, 0x38,
3290+ 0x04, 0x87, 0x38, 0x91, 0x78, 0x06, 0x83, 0x78,
3291+ 0x0b, 0x86, 0x78, 0x4f, 0xc8, 0x6f, 0x36, 0xb2,
3292+ 0x68, 0x0c, 0xb2, 0x68, 0x06, 0x85, 0x68, 0xa7,
3293+ 0x31, 0x07, 0x89, 0x31, 0x60, 0xc5, 0x9e, 0x04,
3294+ 0x00, 0xa9, 0x9a, 0x00, 0x82, 0x9a, 0x01, 0x81,
3295+ 0x9a, 0x4d, 0xa7, 0x6d, 0x07, 0xa9, 0x82, 0x55,
3296+ 0x9b, 0x18, 0x13, 0x96, 0x25, 0x08, 0xcd, 0x0e,
3297+ 0x03, 0x9d, 0x0e, 0x0e, 0x80, 0x0e, 0xc1, 0x3b,
3298+ 0x0a, 0x80, 0x3b, 0x01, 0x98, 0x83, 0x06, 0x89,
3299+ 0x83, 0x05, 0xb4, 0x15, 0x00, 0x91, 0x15, 0x07,
3300+ 0xa6, 0x4e, 0x08, 0xdf, 0x7d, 0x00, 0x93, 0x81,
3301+ 0x0a, 0x91, 0x41, 0x00, 0xab, 0x41, 0x40, 0x86,
3302+ 0x5d, 0x00, 0x80, 0x5d, 0x00, 0x83, 0x5d, 0x00,
3303+ 0x8e, 0x5d, 0x00, 0x8a, 0x5d, 0x05, 0xba, 0x43,
3304+ 0x04, 0x89, 0x43, 0x05, 0x83, 0x2a, 0x00, 0x87,
3305+ 0x2a, 0x01, 0x81, 0x2a, 0x01, 0x95, 0x2a, 0x00,
3306+ 0x86, 0x2a, 0x00, 0x81, 0x2a, 0x00, 0x84, 0x2a,
3307+ 0x00, 0x80, 0x37, 0x88, 0x2a, 0x01, 0x81, 0x2a,
3308+ 0x01, 0x82, 0x2a, 0x01, 0x80, 0x2a, 0x05, 0x80,
3309+ 0x2a, 0x04, 0x86, 0x2a, 0x01, 0x86, 0x2a, 0x02,
3310+ 0x84, 0x2a, 0x60, 0x2a, 0xdb, 0x62, 0x00, 0x84,
3311+ 0x62, 0x1d, 0xc7, 0x95, 0x07, 0x89, 0x95, 0x60,
3312+ 0x45, 0xb5, 0x7f, 0x01, 0xa5, 0x7f, 0x21, 0xc4,
3313+ 0x5a, 0x0a, 0x89, 0x5a, 0x05, 0x8c, 0x5b, 0x12,
3314+ 0xb8, 0x8d, 0x06, 0x89, 0x8d, 0x35, 0x9a, 0x02,
3315+ 0x01, 0x8e, 0x02, 0x03, 0x8f, 0x02, 0x60, 0x5f,
3316+ 0xbb, 0x21, 0x60, 0x03, 0xd2, 0x99, 0x0b, 0x80,
3317+ 0x99, 0x86, 0x20, 0x01, 0x80, 0x20, 0x01, 0x87,
3318+ 0x20, 0x00, 0x81, 0x20, 0x00, 0x9d, 0x20, 0x00,
3319+ 0x81, 0x20, 0x01, 0x8b, 0x20, 0x08, 0x89, 0x20,
3320+ 0x45, 0x87, 0x60, 0x01, 0xad, 0x60, 0x01, 0x8a,
3321+ 0x60, 0x1a, 0xc7, 0x9c, 0x07, 0xd2, 0x84, 0x1c,
3322+ 0xb8, 0x75, 0x60, 0xa6, 0x88, 0x0c, 0x00, 0xac,
3323+ 0x0c, 0x00, 0x8d, 0x0c, 0x09, 0x9c, 0x0c, 0x02,
3324+ 0x9f, 0x52, 0x01, 0x95, 0x52, 0x00, 0x8d, 0x52,
3325+ 0x48, 0x86, 0x53, 0x00, 0x81, 0x53, 0x00, 0xab,
3326+ 0x53, 0x02, 0x80, 0x53, 0x00, 0x81, 0x53, 0x00,
3327+ 0x88, 0x53, 0x07, 0x89, 0x53, 0x05, 0x85, 0x2d,
3328+ 0x00, 0x81, 0x2d, 0x00, 0xa4, 0x2d, 0x00, 0x81,
3329+ 0x2d, 0x00, 0x85, 0x2d, 0x06, 0x89, 0x2d, 0x60,
3330+ 0xd5, 0x98, 0x4d, 0x60, 0x56, 0x80, 0x4a, 0x0e,
3331+ 0xb1, 0x8e, 0x0c, 0x80, 0x8e, 0xe3, 0x39, 0x1b,
3332+ 0x60, 0x05, 0xe0, 0x0e, 0x1b, 0x00, 0x84, 0x1b,
3333+ 0x0a, 0xe0, 0x63, 0x1b, 0x6a, 0x5b, 0xe3, 0xce,
3334+ 0x23, 0x00, 0x88, 0x23, 0x6f, 0x66, 0xe1, 0xe6,
3335+ 0x03, 0x70, 0x11, 0x58, 0xe1, 0xd8, 0x08, 0x06,
3336+ 0x9e, 0x5c, 0x00, 0x89, 0x5c, 0x03, 0x81, 0x5c,
3337+ 0x5f, 0x9d, 0x09, 0x01, 0x85, 0x09, 0x09, 0xc5,
3338+ 0x73, 0x09, 0x89, 0x73, 0x00, 0x86, 0x73, 0x00,
3339+ 0x94, 0x73, 0x04, 0x92, 0x73, 0x62, 0x4f, 0xda,
3340+ 0x54, 0x60, 0x04, 0xca, 0x59, 0x03, 0xb8, 0x59,
3341+ 0x06, 0x90, 0x59, 0x3f, 0x80, 0x8f, 0x80, 0x64,
3342+ 0x81, 0x19, 0x80, 0x42, 0x0a, 0x81, 0x2f, 0x0d,
3343+ 0xf0, 0x07, 0x97, 0x8f, 0x07, 0xe2, 0x9f, 0x8f,
3344+ 0xe1, 0x75, 0x42, 0x29, 0x88, 0x8f, 0x70, 0x12,
3345+ 0x96, 0x80, 0x3d, 0xe0, 0xbd, 0x35, 0x30, 0x82,
3346+ 0x35, 0x10, 0x83, 0x3d, 0x07, 0xe1, 0x2b, 0x64,
3347+ 0x68, 0xa3, 0xe0, 0x0a, 0x22, 0x04, 0x8c, 0x22,
3348+ 0x02, 0x88, 0x22, 0x06, 0x89, 0x22, 0x01, 0x83,
3349+ 0x22, 0x83, 0x19, 0x70, 0x02, 0xfb, 0xe0, 0x95,
3350+ 0x19, 0x09, 0xa6, 0x19, 0x01, 0xbd, 0x19, 0x82,
3351+ 0x37, 0x90, 0x19, 0x87, 0x37, 0x81, 0x19, 0x86,
3352+ 0x37, 0x9d, 0x19, 0x83, 0x37, 0xba, 0x19, 0x16,
3353+ 0xc5, 0x2b, 0x60, 0x39, 0x93, 0x19, 0x0b, 0xd6,
3354+ 0x19, 0x08, 0x98, 0x19, 0x60, 0x26, 0xd4, 0x19,
3355+ 0x00, 0xc6, 0x19, 0x00, 0x81, 0x19, 0x01, 0x80,
3356+ 0x19, 0x01, 0x81, 0x19, 0x01, 0x83, 0x19, 0x00,
3357+ 0x8b, 0x19, 0x00, 0x80, 0x19, 0x00, 0x86, 0x19,
3358+ 0x00, 0xc0, 0x19, 0x00, 0x83, 0x19, 0x01, 0x87,
3359+ 0x19, 0x00, 0x86, 0x19, 0x00, 0x9b, 0x19, 0x00,
3360+ 0x83, 0x19, 0x00, 0x84, 0x19, 0x00, 0x80, 0x19,
3361+ 0x02, 0x86, 0x19, 0x00, 0xe0, 0xf3, 0x19, 0x01,
3362+ 0xe0, 0xc3, 0x19, 0x01, 0xb1, 0x19, 0xe2, 0x2b,
3363+ 0x80, 0x0e, 0x84, 0x80, 0x00, 0x8e, 0x80, 0x64,
3364+ 0xef, 0x86, 0x28, 0x00, 0x90, 0x28, 0x01, 0x86,
3365+ 0x28, 0x00, 0x81, 0x28, 0x00, 0x84, 0x28, 0x60,
3366+ 0x74, 0xac, 0x65, 0x02, 0x8d, 0x65, 0x01, 0x89,
3367+ 0x65, 0x03, 0x81, 0x65, 0x61, 0x0f, 0xb9, 0x98,
3368+ 0x04, 0x80, 0x98, 0x64, 0x9f, 0xe0, 0x64, 0x56,
3369+ 0x01, 0x8f, 0x56, 0x28, 0xcb, 0x01, 0x03, 0x89,
3370+ 0x01, 0x03, 0x81, 0x01, 0x62, 0xb0, 0xc3, 0x19,
3371+ 0x4b, 0xbc, 0x19, 0x60, 0x61, 0x83, 0x04, 0x00,
3372+ 0x9a, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80, 0x04,
3373+ 0x01, 0x80, 0x04, 0x00, 0x89, 0x04, 0x00, 0x83,
3374+ 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04, 0x05,
3375+ 0x80, 0x04, 0x03, 0x80, 0x04, 0x00, 0x80, 0x04,
3376+ 0x00, 0x80, 0x04, 0x00, 0x82, 0x04, 0x00, 0x81,
3377+ 0x04, 0x00, 0x80, 0x04, 0x01, 0x80, 0x04, 0x00,
3378+ 0x80, 0x04, 0x00, 0x80, 0x04, 0x00, 0x80, 0x04,
3379+ 0x00, 0x80, 0x04, 0x00, 0x81, 0x04, 0x00, 0x80,
3380+ 0x04, 0x01, 0x83, 0x04, 0x00, 0x86, 0x04, 0x00,
3381+ 0x83, 0x04, 0x00, 0x83, 0x04, 0x00, 0x80, 0x04,
3382+ 0x00, 0x89, 0x04, 0x00, 0x90, 0x04, 0x04, 0x82,
3383+ 0x04, 0x00, 0x84, 0x04, 0x00, 0x90, 0x04, 0x33,
3384+ 0x81, 0x04, 0x60, 0xad, 0xab, 0x19, 0x03, 0xe0,
3385+ 0x03, 0x19, 0x0b, 0x8e, 0x19, 0x01, 0x8e, 0x19,
3386+ 0x00, 0x8e, 0x19, 0x00, 0xa4, 0x19, 0x09, 0xe0,
3387+ 0x4d, 0x19, 0x37, 0x99, 0x19, 0x80, 0x35, 0x81,
3388+ 0x19, 0x0c, 0xab, 0x19, 0x03, 0x88, 0x19, 0x06,
3389+ 0x81, 0x19, 0x0d, 0x85, 0x19, 0x60, 0x39, 0xe3,
3390+ 0x77, 0x19, 0x07, 0x8c, 0x19, 0x02, 0x8c, 0x19,
3391+ 0x02, 0xe0, 0x13, 0x19, 0x0b, 0xd8, 0x19, 0x06,
3392+ 0x8b, 0x19, 0x13, 0x8b, 0x19, 0x03, 0xb7, 0x19,
3393+ 0x07, 0x89, 0x19, 0x05, 0xa7, 0x19, 0x07, 0x9d,
3394+ 0x19, 0x01, 0x81, 0x19, 0x4d, 0xe0, 0x18, 0x19,
3395+ 0x00, 0xd1, 0x19, 0x00, 0xe0, 0x26, 0x19, 0x0b,
3396+ 0x8d, 0x19, 0x01, 0x84, 0x19, 0x02, 0x82, 0x19,
3397+ 0x04, 0x86, 0x19, 0x08, 0x98, 0x19, 0x06, 0x86,
3398+ 0x19, 0x08, 0x82, 0x19, 0x0c, 0x86, 0x19, 0x28,
3399+ 0xe0, 0x32, 0x19, 0x00, 0xb6, 0x19, 0x24, 0x89,
3400+ 0x19, 0x63, 0xa5, 0xf0, 0x96, 0x7d, 0x2f, 0x21,
3401+ 0xef, 0xd4, 0x2f, 0x0a, 0xe0, 0x7d, 0x2f, 0x01,
3402+ 0xf0, 0x06, 0x21, 0x2f, 0x0d, 0xf0, 0x0c, 0xd0,
3403+ 0x2f, 0x6b, 0xbe, 0xe1, 0xbd, 0x2f, 0x65, 0x81,
3404+ 0xf0, 0x02, 0xea, 0x2f, 0x7a, 0xdc, 0x55, 0x80,
3405+ 0x19, 0x1d, 0xdf, 0x19, 0x60, 0x1f, 0xe0, 0x8f,
3406+ 0x37,
33653407 };
33663408
3367−static const uint8_t unicode_script_ext_table[789] = {
3368− 0x82, 0xc1, 0x00, 0x00, 0x01, 0x29, 0x01, 0x00,
3369− 0x00, 0x01, 0x29, 0x1c, 0x00, 0x0c, 0x01, 0x42,
3370− 0x80, 0x92, 0x00, 0x00, 0x02, 0x1c, 0x68, 0x00,
3371− 0x02, 0x1c, 0x26, 0x01, 0x02, 0x1c, 0x42, 0x00,
3372− 0x02, 0x1c, 0x26, 0x80, 0x80, 0x00, 0x00, 0x02,
3373− 0x05, 0x25, 0x80, 0x01, 0x00, 0x00, 0x04, 0x04,
3374− 0x2f, 0x84, 0x8e, 0x0d, 0x00, 0x00, 0x04, 0x04,
3375− 0x2f, 0x84, 0x8e, 0x00, 0x03, 0x04, 0x84, 0x8e,
3376− 0x01, 0x00, 0x00, 0x04, 0x04, 0x2f, 0x84, 0x8e,
3377− 0x1f, 0x00, 0x00, 0x08, 0x01, 0x04, 0x4d, 0x4e,
3378− 0x75, 0x2f, 0x7f, 0x84, 0x09, 0x00, 0x0a, 0x02,
3379− 0x04, 0x84, 0x09, 0x00, 0x09, 0x02, 0x04, 0x8e,
3380− 0x05, 0x00, 0x00, 0x02, 0x04, 0x84, 0x62, 0x00,
3381− 0x00, 0x02, 0x04, 0x2f, 0x81, 0xfb, 0x00, 0x00,
3382− 0x0d, 0x0b, 0x1e, 0x28, 0x2a, 0x2c, 0x3a, 0x42,
3383− 0x4c, 0x6d, 0x7a, 0x8b, 0x8d, 0x92, 0x00, 0x0c,
3384− 0x0b, 0x1e, 0x28, 0x2a, 0x2c, 0x3a, 0x42, 0x4c,
3385− 0x6d, 0x8b, 0x8d, 0x92, 0x10, 0x00, 0x00, 0x14,
3386− 0x0b, 0x1e, 0x1f, 0x2b, 0x50, 0x28, 0x2a, 0x2c,
3387− 0x3a, 0x4b, 0x4c, 0x5d, 0x6d, 0x40, 0x7e, 0x83,
3388− 0x8a, 0x8b, 0x8d, 0x92, 0x00, 0x15, 0x0b, 0x1e,
3389− 0x1f, 0x2b, 0x50, 0x28, 0x2a, 0x2c, 0x3a, 0x44,
3390− 0x4b, 0x4c, 0x5d, 0x6d, 0x40, 0x7e, 0x83, 0x8a,
3391− 0x8b, 0x8d, 0x92, 0x09, 0x04, 0x1e, 0x1f, 0x39,
3392− 0x4b, 0x75, 0x00, 0x09, 0x03, 0x0b, 0x15, 0x83,
3393− 0x75, 0x00, 0x09, 0x02, 0x2c, 0x5a, 0x75, 0x00,
3394− 0x09, 0x02, 0x2a, 0x3f, 0x80, 0x75, 0x00, 0x0d,
3395− 0x02, 0x28, 0x8b, 0x80, 0x71, 0x00, 0x09, 0x02,
3396− 0x3a, 0x5d, 0x82, 0xcf, 0x00, 0x09, 0x03, 0x15,
3397− 0x5b, 0x87, 0x80, 0x30, 0x00, 0x00, 0x02, 0x25,
3398− 0x42, 0x85, 0xb8, 0x00, 0x01, 0x04, 0x11, 0x30,
3399− 0x86, 0x85, 0x80, 0x4a, 0x00, 0x01, 0x02, 0x58,
3400− 0x73, 0x00, 0x00, 0x00, 0x02, 0x58, 0x73, 0x84,
3401− 0x49, 0x00, 0x00, 0x04, 0x0b, 0x1e, 0x28, 0x3a,
3402− 0x00, 0x01, 0x1e, 0x00, 0x04, 0x0b, 0x1e, 0x28,
3403− 0x3a, 0x00, 0x02, 0x1e, 0x28, 0x00, 0x01, 0x1e,
3404− 0x01, 0x02, 0x0b, 0x1e, 0x00, 0x02, 0x1e, 0x7a,
3405− 0x00, 0x02, 0x0b, 0x1e, 0x00, 0x02, 0x1e, 0x7a,
3406− 0x00, 0x06, 0x1e, 0x3a, 0x4c, 0x6d, 0x8b, 0x8d,
3407− 0x00, 0x01, 0x1e, 0x01, 0x02, 0x1e, 0x7a, 0x01,
3408− 0x01, 0x1e, 0x00, 0x02, 0x1e, 0x7a, 0x00, 0x02,
3409− 0x0b, 0x1e, 0x06, 0x01, 0x1e, 0x00, 0x02, 0x1e,
3410− 0x5d, 0x00, 0x02, 0x0b, 0x1e, 0x01, 0x01, 0x1e,
3411− 0x00, 0x02, 0x0b, 0x1e, 0x03, 0x01, 0x1e, 0x00,
3412− 0x08, 0x0b, 0x1e, 0x28, 0x3a, 0x5d, 0x6d, 0x8d,
3413− 0x92, 0x00, 0x02, 0x1e, 0x28, 0x00, 0x03, 0x1e,
3414− 0x28, 0x3a, 0x01, 0x02, 0x0b, 0x1e, 0x00, 0x01,
3415− 0x0b, 0x01, 0x02, 0x1e, 0x28, 0x00, 0x01, 0x5d,
3416− 0x80, 0x44, 0x00, 0x01, 0x01, 0x29, 0x81, 0xec,
3417− 0x00, 0x00, 0x02, 0x42, 0x58, 0x80, 0x3f, 0x00,
3418− 0x00, 0x03, 0x1e, 0x28, 0x42, 0x8c, 0xd1, 0x00,
3419− 0x00, 0x02, 0x1c, 0x26, 0x81, 0x3c, 0x00, 0x01,
3420− 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x00,
3421− 0x05, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x01, 0x00,
3422− 0x00, 0x01, 0x2d, 0x00, 0x00, 0x09, 0x06, 0x0d,
3423− 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x00, 0x00, 0x00,
3424− 0x05, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x07, 0x06,
3425− 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x03, 0x05,
3426− 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x09, 0x00, 0x03,
3427− 0x02, 0x0d, 0x2d, 0x01, 0x00, 0x00, 0x05, 0x0d,
3428− 0x2e, 0x2d, 0x33, 0x3b, 0x04, 0x02, 0x33, 0x3b,
3429− 0x00, 0x00, 0x00, 0x05, 0x0d, 0x2e, 0x2d, 0x33,
3430− 0x3b, 0x03, 0x00, 0x01, 0x03, 0x2d, 0x33, 0x3b,
3431− 0x01, 0x01, 0x2d, 0x58, 0x00, 0x03, 0x02, 0x33,
3432− 0x3b, 0x02, 0x00, 0x00, 0x02, 0x33, 0x3b, 0x59,
3433− 0x00, 0x00, 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b,
3434− 0x97, 0x00, 0x02, 0x33, 0x3b, 0x80, 0x12, 0x00,
3435− 0x0f, 0x01, 0x2d, 0x1f, 0x00, 0x23, 0x01, 0x2d,
3436− 0x3b, 0x00, 0x27, 0x01, 0x2d, 0x37, 0x00, 0x30,
3437− 0x01, 0x2d, 0x0e, 0x00, 0x0b, 0x01, 0x2d, 0x32,
3438− 0x00, 0x00, 0x01, 0x2d, 0x57, 0x00, 0x18, 0x01,
3439− 0x2d, 0x09, 0x00, 0x04, 0x01, 0x2d, 0x5f, 0x00,
3440− 0x1e, 0x01, 0x2d, 0xc0, 0x31, 0xef, 0x00, 0x00,
3441− 0x02, 0x1c, 0x26, 0x81, 0x3f, 0x00, 0x02, 0x0e,
3442− 0x1e, 0x1f, 0x2a, 0x2c, 0x3f, 0x3a, 0x39, 0x4b,
3443− 0x4c, 0x57, 0x5d, 0x40, 0x8a, 0x92, 0x02, 0x0d,
3444− 0x1e, 0x1f, 0x2a, 0x2c, 0x3f, 0x3a, 0x39, 0x4b,
3445− 0x57, 0x5d, 0x40, 0x8a, 0x92, 0x03, 0x0b, 0x1e,
3446− 0x1f, 0x2a, 0x2c, 0x3f, 0x39, 0x4b, 0x57, 0x40,
3447− 0x8a, 0x92, 0x80, 0x36, 0x00, 0x00, 0x02, 0x0b,
3448− 0x1e, 0x00, 0x00, 0x00, 0x02, 0x1e, 0x8b, 0x39,
3449− 0x00, 0x00, 0x03, 0x3c, 0x42, 0x5b, 0x80, 0x1f,
3450− 0x00, 0x00, 0x02, 0x10, 0x38, 0xc0, 0x13, 0xa1,
3451− 0x00, 0x00, 0x02, 0x04, 0x8e, 0x09, 0x00, 0x00,
3452− 0x02, 0x04, 0x8e, 0x46, 0x00, 0x01, 0x05, 0x0d,
3453− 0x2e, 0x2d, 0x33, 0x3b, 0x80, 0x99, 0x00, 0x04,
3454− 0x06, 0x0d, 0x2e, 0x2d, 0x33, 0x3b, 0x97, 0x09,
3455− 0x00, 0x00, 0x02, 0x33, 0x3b, 0x2c, 0x00, 0x01,
3456− 0x02, 0x33, 0x3b, 0x80, 0xdf, 0x00, 0x02, 0x02,
3457− 0x1b, 0x46, 0x03, 0x00, 0x2c, 0x03, 0x1b, 0x45,
3458− 0x46, 0x02, 0x00, 0x08, 0x02, 0x1b, 0x46, 0x81,
3459− 0x1f, 0x00, 0x1b, 0x02, 0x04, 0x19, 0x8f, 0x84,
3460− 0x00, 0x00, 0x02, 0x28, 0x8b, 0x00, 0x00, 0x00,
3461− 0x02, 0x28, 0x8b, 0x36, 0x00, 0x01, 0x02, 0x28,
3462− 0x8b, 0x8c, 0x12, 0x00, 0x01, 0x02, 0x28, 0x8b,
3463− 0x00, 0x00, 0x00, 0x02, 0x28, 0x8b, 0xc0, 0x5c,
3464− 0x4b, 0x00, 0x03, 0x01, 0x20, 0x96, 0x3b, 0x00,
3465− 0x11, 0x01, 0x2d, 0x9e, 0x5d, 0x00, 0x01, 0x01,
3466− 0x2d, 0xce, 0xcd, 0x2d, 0x00,
3409+static const uint8_t unicode_script_ext_table[799] = {
3410+ 0x82, 0xc1, 0x00, 0x00, 0x01, 0x2b, 0x01, 0x00,
3411+ 0x00, 0x01, 0x2b, 0x1c, 0x00, 0x0c, 0x01, 0x45,
3412+ 0x80, 0x92, 0x00, 0x00, 0x02, 0x1d, 0x6b, 0x00,
3413+ 0x02, 0x1d, 0x28, 0x01, 0x02, 0x1d, 0x45, 0x00,
3414+ 0x02, 0x1d, 0x28, 0x81, 0x03, 0x00, 0x00, 0x05,
3415+ 0x04, 0x31, 0x87, 0x91, 0x9a, 0x0d, 0x00, 0x00,
3416+ 0x05, 0x04, 0x31, 0x87, 0x91, 0x9a, 0x00, 0x03,
3417+ 0x04, 0x87, 0x91, 0x01, 0x00, 0x00, 0x05, 0x04,
3418+ 0x31, 0x87, 0x91, 0x9a, 0x1f, 0x00, 0x00, 0x08,
3419+ 0x01, 0x04, 0x50, 0x51, 0x78, 0x31, 0x82, 0x87,
3420+ 0x09, 0x00, 0x0a, 0x02, 0x04, 0x87, 0x09, 0x00,
3421+ 0x09, 0x03, 0x04, 0x91, 0x9a, 0x05, 0x00, 0x00,
3422+ 0x02, 0x04, 0x87, 0x62, 0x00, 0x00, 0x02, 0x04,
3423+ 0x31, 0x81, 0xfb, 0x00, 0x00, 0x0d, 0x0b, 0x1f,
3424+ 0x2a, 0x2c, 0x2e, 0x3c, 0x45, 0x4f, 0x70, 0x7d,
3425+ 0x8e, 0x90, 0x95, 0x00, 0x0c, 0x0b, 0x1f, 0x2a,
3426+ 0x2c, 0x2e, 0x3c, 0x45, 0x4f, 0x70, 0x8e, 0x90,
3427+ 0x95, 0x10, 0x00, 0x00, 0x14, 0x0b, 0x1f, 0x21,
3428+ 0x2d, 0x53, 0x2a, 0x2c, 0x2e, 0x3c, 0x4e, 0x4f,
3429+ 0x60, 0x70, 0x43, 0x81, 0x86, 0x8d, 0x8e, 0x90,
3430+ 0x95, 0x00, 0x15, 0x0b, 0x1f, 0x21, 0x2d, 0x53,
3431+ 0x2a, 0x2c, 0x2e, 0x3c, 0x47, 0x4e, 0x4f, 0x60,
3432+ 0x70, 0x43, 0x81, 0x86, 0x8d, 0x8e, 0x90, 0x95,
3433+ 0x09, 0x04, 0x1f, 0x21, 0x3b, 0x4e, 0x75, 0x00,
3434+ 0x09, 0x03, 0x0b, 0x15, 0x86, 0x75, 0x00, 0x09,
3435+ 0x02, 0x2e, 0x5d, 0x75, 0x00, 0x09, 0x02, 0x2c,
3436+ 0x41, 0x80, 0x75, 0x00, 0x0d, 0x02, 0x2a, 0x8e,
3437+ 0x80, 0x71, 0x00, 0x09, 0x02, 0x3c, 0x60, 0x82,
3438+ 0xcf, 0x00, 0x09, 0x03, 0x15, 0x5e, 0x8a, 0x80,
3439+ 0x30, 0x00, 0x00, 0x02, 0x27, 0x45, 0x85, 0xb8,
3440+ 0x00, 0x01, 0x04, 0x11, 0x32, 0x89, 0x88, 0x80,
3441+ 0x4a, 0x00, 0x01, 0x02, 0x5b, 0x76, 0x00, 0x00,
3442+ 0x00, 0x02, 0x5b, 0x76, 0x84, 0x49, 0x00, 0x00,
3443+ 0x04, 0x0b, 0x1f, 0x2a, 0x3c, 0x00, 0x01, 0x1f,
3444+ 0x00, 0x04, 0x0b, 0x1f, 0x2a, 0x3c, 0x00, 0x02,
3445+ 0x1f, 0x2a, 0x00, 0x01, 0x1f, 0x01, 0x02, 0x0b,
3446+ 0x1f, 0x00, 0x02, 0x1f, 0x7d, 0x00, 0x02, 0x0b,
3447+ 0x1f, 0x00, 0x02, 0x1f, 0x7d, 0x00, 0x06, 0x1f,
3448+ 0x3c, 0x4f, 0x70, 0x8e, 0x90, 0x00, 0x01, 0x1f,
3449+ 0x01, 0x02, 0x1f, 0x7d, 0x01, 0x01, 0x1f, 0x00,
3450+ 0x02, 0x1f, 0x7d, 0x00, 0x02, 0x0b, 0x1f, 0x06,
3451+ 0x01, 0x1f, 0x00, 0x02, 0x1f, 0x60, 0x00, 0x02,
3452+ 0x0b, 0x1f, 0x01, 0x01, 0x1f, 0x00, 0x02, 0x0b,
3453+ 0x1f, 0x03, 0x01, 0x1f, 0x00, 0x08, 0x0b, 0x1f,
3454+ 0x2a, 0x3c, 0x60, 0x70, 0x90, 0x95, 0x00, 0x02,
3455+ 0x1f, 0x2a, 0x00, 0x03, 0x1f, 0x2a, 0x3c, 0x01,
3456+ 0x02, 0x0b, 0x1f, 0x00, 0x01, 0x0b, 0x01, 0x02,
3457+ 0x1f, 0x2a, 0x00, 0x01, 0x60, 0x80, 0x44, 0x00,
3458+ 0x01, 0x01, 0x2b, 0x35, 0x00, 0x00, 0x02, 0x1d,
3459+ 0x87, 0x81, 0xb5, 0x00, 0x00, 0x02, 0x45, 0x5b,
3460+ 0x80, 0x3f, 0x00, 0x00, 0x03, 0x1f, 0x2a, 0x45,
3461+ 0x8c, 0xd1, 0x00, 0x00, 0x02, 0x1d, 0x28, 0x81,
3462+ 0x3c, 0x00, 0x01, 0x06, 0x0d, 0x30, 0x2f, 0x35,
3463+ 0x3d, 0x9b, 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35,
3464+ 0x3d, 0x01, 0x00, 0x00, 0x01, 0x2f, 0x00, 0x00,
3465+ 0x09, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x9b,
3466+ 0x00, 0x00, 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35,
3467+ 0x3d, 0x07, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d,
3468+ 0x9b, 0x03, 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d,
3469+ 0x09, 0x00, 0x03, 0x02, 0x0d, 0x2f, 0x01, 0x00,
3470+ 0x00, 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x04,
3471+ 0x02, 0x35, 0x3d, 0x00, 0x00, 0x00, 0x05, 0x0d,
3472+ 0x30, 0x2f, 0x35, 0x3d, 0x03, 0x00, 0x01, 0x03,
3473+ 0x2f, 0x35, 0x3d, 0x01, 0x01, 0x2f, 0x58, 0x00,
3474+ 0x03, 0x02, 0x35, 0x3d, 0x02, 0x00, 0x00, 0x02,
3475+ 0x35, 0x3d, 0x59, 0x00, 0x00, 0x06, 0x0d, 0x30,
3476+ 0x2f, 0x35, 0x3d, 0x9b, 0x00, 0x02, 0x35, 0x3d,
3477+ 0x80, 0x12, 0x00, 0x0f, 0x01, 0x2f, 0x1f, 0x00,
3478+ 0x23, 0x01, 0x2f, 0x3b, 0x00, 0x27, 0x01, 0x2f,
3479+ 0x37, 0x00, 0x30, 0x01, 0x2f, 0x0e, 0x00, 0x0b,
3480+ 0x01, 0x2f, 0x32, 0x00, 0x00, 0x01, 0x2f, 0x57,
3481+ 0x00, 0x18, 0x01, 0x2f, 0x09, 0x00, 0x04, 0x01,
3482+ 0x2f, 0x5f, 0x00, 0x1e, 0x01, 0x2f, 0xc0, 0x31,
3483+ 0xef, 0x00, 0x00, 0x02, 0x1d, 0x28, 0x80, 0x0f,
3484+ 0x00, 0x07, 0x02, 0x2f, 0x45, 0x80, 0xa7, 0x00,
3485+ 0x02, 0x0e, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3c,
3486+ 0x3b, 0x4e, 0x4f, 0x5a, 0x60, 0x43, 0x8d, 0x95,
3487+ 0x02, 0x0d, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3c,
3488+ 0x3b, 0x4e, 0x5a, 0x60, 0x43, 0x8d, 0x95, 0x03,
3489+ 0x0b, 0x1f, 0x21, 0x2c, 0x2e, 0x41, 0x3b, 0x4e,
3490+ 0x5a, 0x43, 0x8d, 0x95, 0x80, 0x36, 0x00, 0x00,
3491+ 0x02, 0x0b, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x1f,
3492+ 0x8e, 0x39, 0x00, 0x00, 0x03, 0x3e, 0x45, 0x5e,
3493+ 0x80, 0x1f, 0x00, 0x00, 0x02, 0x10, 0x3a, 0xc0,
3494+ 0x13, 0xa1, 0x00, 0x00, 0x02, 0x04, 0x91, 0x09,
3495+ 0x00, 0x00, 0x02, 0x04, 0x91, 0x46, 0x00, 0x01,
3496+ 0x05, 0x0d, 0x30, 0x2f, 0x35, 0x3d, 0x80, 0x99,
3497+ 0x00, 0x04, 0x06, 0x0d, 0x30, 0x2f, 0x35, 0x3d,
3498+ 0x9b, 0x09, 0x00, 0x00, 0x02, 0x35, 0x3d, 0x2c,
3499+ 0x00, 0x01, 0x02, 0x35, 0x3d, 0x80, 0xdf, 0x00,
3500+ 0x02, 0x02, 0x1c, 0x49, 0x03, 0x00, 0x2c, 0x03,
3501+ 0x1c, 0x48, 0x49, 0x02, 0x00, 0x08, 0x02, 0x1c,
3502+ 0x49, 0x81, 0x1f, 0x00, 0x1b, 0x02, 0x04, 0x1a,
3503+ 0x8f, 0x84, 0x00, 0x00, 0x02, 0x2a, 0x8e, 0x00,
3504+ 0x00, 0x00, 0x02, 0x2a, 0x8e, 0x36, 0x00, 0x01,
3505+ 0x02, 0x2a, 0x8e, 0x8c, 0x12, 0x00, 0x01, 0x02,
3506+ 0x2a, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x2a, 0x8e,
3507+ 0xc0, 0x5c, 0x4b, 0x00, 0x03, 0x01, 0x22, 0x96,
3508+ 0x3b, 0x00, 0x11, 0x01, 0x2f, 0x9e, 0x5d, 0x00,
3509+ 0x01, 0x01, 0x2f, 0xce, 0xcd, 0x2d, 0x00,
34673510 };
34683511
34693512 static const uint8_t unicode_prop_Hyphen_table[28] = {
@@ -3501,7 +3544,7 @@ static const uint8_t unicode_prop_Other_Math_table[200] = { · 31 unmodified lines
35013544 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90,
35023545 };
35033546
3504−static const uint8_t unicode_prop_Other_Alphabetic_table[396] = {
3547+static const uint8_t unicode_prop_Other_Alphabetic_table[411] = {
35053548 0x43, 0x44, 0x80, 0x42, 0x69, 0x8d, 0x00, 0x01,
35063549 0x01, 0x00, 0xc7, 0x8a, 0xaf, 0x8c, 0x06, 0x8f,
35073550 0x80, 0xe4, 0x33, 0x19, 0x0b, 0x80, 0xa2, 0x80,
@@ -3517,7 +3560,7 @@ static const uint8_t unicode_prop_Other_Alphabetic_table[396] = { · 9 unmodified lines
35173560 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9c, 0x82,
35183561 0xb9, 0x30, 0x10, 0x17, 0x81, 0x8a, 0x81, 0x9b,
35193562 0x83, 0xb9, 0x30, 0x10, 0x82, 0x89, 0x80, 0x89,
3520− 0x81, 0x9d, 0x81, 0xca, 0x28, 0x00, 0x87, 0x91,
3563+ 0x81, 0x9c, 0x82, 0xca, 0x28, 0x00, 0x87, 0x91,
35213564 0x81, 0xbc, 0x01, 0x86, 0x91, 0x80, 0xe2, 0x01,
35223565 0x28, 0x81, 0x8f, 0x80, 0x40, 0xa2, 0x90, 0x8a,
35233566 0x8a, 0x80, 0xa3, 0xed, 0x8b, 0x00, 0x0b, 0x96,
@@ -3525,33 +3568,35 @@ static const uint8_t unicode_prop_Other_Alphabetic_table[396] = { · 1 unmodified line
35253568 0x89, 0x83, 0x46, 0x73, 0x81, 0x9d, 0x81, 0x9d,
35263569 0x81, 0x9d, 0x81, 0xc1, 0x92, 0x40, 0xbb, 0x81,
35273570 0xa1, 0x80, 0xf5, 0x8b, 0x83, 0x88, 0x40, 0xdd,
3528− 0x84, 0xb8, 0x89, 0x81, 0x93, 0x40, 0x8a, 0x84,
3529− 0xaf, 0x8e, 0xbb, 0x82, 0x9d, 0x88, 0x09, 0xb8,
3530− 0x8a, 0xb1, 0x92, 0x41, 0xaf, 0x8d, 0x46, 0xc0,
3531− 0xb3, 0x48, 0xf5, 0x9f, 0x60, 0x78, 0x73, 0x87,
3532− 0xa1, 0x81, 0x41, 0x61, 0x07, 0x80, 0x96, 0x84,
3533− 0xd7, 0x81, 0xb1, 0x8f, 0x00, 0xb8, 0x80, 0xa5,
3534− 0x84, 0x9b, 0x8b, 0xac, 0x83, 0xaf, 0x8b, 0xa4,
3535− 0x80, 0xc2, 0x8d, 0x8b, 0x07, 0x81, 0xac, 0x82,
3536− 0xb1, 0x00, 0x11, 0x0c, 0x80, 0xab, 0x24, 0x80,
3537− 0x40, 0xec, 0x87, 0x60, 0x4f, 0x32, 0x80, 0x48,
3538− 0x56, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83, 0x43,
3539− 0x13, 0x83, 0x42, 0xd7, 0x82, 0xb4, 0x8d, 0xbb,
3540− 0x80, 0xac, 0x88, 0xc6, 0x82, 0xa3, 0x8b, 0x91,
3541− 0x81, 0xb8, 0x82, 0xaf, 0x8c, 0xeb, 0x88, 0x08,
3542− 0x28, 0x40, 0x9f, 0x89, 0x96, 0x83, 0xb9, 0x31,
3543− 0x09, 0x81, 0x89, 0x80, 0x89, 0x81, 0x40, 0xd0,
3544− 0x8c, 0x02, 0xe9, 0x91, 0x40, 0xec, 0x31, 0x86,
3545− 0x9c, 0x81, 0xd1, 0x8e, 0x00, 0xe9, 0x8a, 0xe6,
3546− 0x8d, 0x41, 0x00, 0x8c, 0x41, 0x97, 0x31, 0x2b,
3547− 0x80, 0x9b, 0x89, 0xa9, 0x20, 0x83, 0x91, 0x8a,
3548− 0xad, 0x8d, 0x41, 0x96, 0x38, 0x86, 0xd2, 0x95,
3549− 0x80, 0x8d, 0xf9, 0x2a, 0x00, 0x08, 0x10, 0x02,
3550− 0x80, 0xc1, 0x20, 0x08, 0x83, 0x41, 0x5b, 0x83,
3551− 0x60, 0x50, 0x57, 0x00, 0xb6, 0x33, 0x60, 0x4d,
3552− 0x0a, 0x80, 0x60, 0x23, 0x60, 0x30, 0x90, 0x0e,
3553− 0x01, 0x04, 0x49, 0x1b, 0x80, 0x47, 0xe7, 0x99,
3554− 0x85, 0x99, 0x85, 0x99,
3571+ 0x84, 0xb8, 0x89, 0x81, 0x93, 0xc9, 0x81, 0xbe,
3572+ 0x84, 0xaf, 0x8e, 0xbb, 0x82, 0x9d, 0x88, 0x09,
3573+ 0xb8, 0x8a, 0xb1, 0x92, 0x41, 0xaf, 0x8d, 0x46,
3574+ 0xc0, 0xb3, 0x48, 0xf5, 0x9f, 0x60, 0x78, 0x73,
3575+ 0x87, 0xa1, 0x81, 0x41, 0x61, 0x07, 0x80, 0x96,
3576+ 0x84, 0xd7, 0x81, 0xb1, 0x8f, 0x00, 0xb8, 0x80,
3577+ 0xa5, 0x84, 0x9b, 0x8b, 0xac, 0x83, 0xaf, 0x8b,
3578+ 0xa4, 0x80, 0xc2, 0x8d, 0x8b, 0x07, 0x81, 0xac,
3579+ 0x82, 0xb1, 0x00, 0x11, 0x0c, 0x80, 0xab, 0x24,
3580+ 0x80, 0x40, 0xec, 0x87, 0x60, 0x4f, 0x32, 0x80,
3581+ 0x48, 0x56, 0x84, 0x46, 0x85, 0x10, 0x0c, 0x83,
3582+ 0x43, 0x13, 0x83, 0x41, 0x82, 0x81, 0x41, 0x52,
3583+ 0x82, 0xb4, 0x8d, 0xbb, 0x80, 0xac, 0x88, 0xc6,
3584+ 0x82, 0xa3, 0x8b, 0x91, 0x81, 0xb8, 0x82, 0xaf,
3585+ 0x8c, 0x8d, 0x81, 0xdb, 0x88, 0x08, 0x28, 0x40,
3586+ 0x9f, 0x89, 0x96, 0x83, 0xb9, 0x31, 0x09, 0x81,
3587+ 0x89, 0x80, 0x89, 0x81, 0x40, 0xd0, 0x8c, 0x02,
3588+ 0xe9, 0x91, 0x40, 0xec, 0x31, 0x86, 0x9c, 0x81,
3589+ 0xd1, 0x8e, 0x00, 0xe9, 0x8a, 0xe6, 0x8d, 0x41,
3590+ 0x00, 0x8c, 0x40, 0xf6, 0x28, 0x09, 0x0a, 0x00,
3591+ 0x80, 0x40, 0x8d, 0x31, 0x2b, 0x80, 0x9b, 0x89,
3592+ 0xa9, 0x20, 0x83, 0x91, 0x8a, 0xad, 0x8d, 0x41,
3593+ 0x96, 0x38, 0x86, 0xd2, 0x95, 0x80, 0x8d, 0xf9,
3594+ 0x2a, 0x00, 0x08, 0x10, 0x02, 0x80, 0xc1, 0x20,
3595+ 0x08, 0x83, 0x41, 0x5b, 0x83, 0x60, 0x50, 0x57,
3596+ 0x00, 0xb6, 0x33, 0xdc, 0x81, 0x60, 0x4c, 0xab,
3597+ 0x80, 0x60, 0x23, 0x60, 0x30, 0x90, 0x0e, 0x01,
3598+ 0x04, 0x49, 0x1b, 0x80, 0x47, 0xe7, 0x99, 0x85,
3599+ 0x99, 0x85, 0x99,
35553600 };
35563601
35573602 static const uint8_t unicode_prop_Other_Lowercase_table[51] = {
@@ -3569,15 +3614,16 @@ static const uint8_t unicode_prop_Other_Uppercase_table[15] = { · 11 unmodified lines
35693614 0xcc, 0x5f, 0x99, 0x85, 0x99, 0x85, 0x99,
35703615 };
35713616
3572−static const uint8_t unicode_prop_Other_Grapheme_Extend_table[62] = {
3617+static const uint8_t unicode_prop_Other_Grapheme_Extend_table[65] = {
35733618 0x49, 0xbd, 0x80, 0x97, 0x80, 0x41, 0x65, 0x80,
35743619 0x97, 0x80, 0xe5, 0x80, 0x97, 0x80, 0x40, 0xe9,
35753620 0x80, 0x91, 0x81, 0xe6, 0x80, 0x97, 0x80, 0xf6,
35763621 0x80, 0x8e, 0x80, 0x4d, 0x54, 0x80, 0x44, 0xd5,
35773622 0x80, 0x50, 0x20, 0x81, 0x60, 0xcf, 0x6d, 0x81,
35783623 0x53, 0x9d, 0x80, 0x97, 0x80, 0x41, 0x57, 0x80,
3579− 0x8b, 0x80, 0x40, 0xf0, 0x80, 0x60, 0xbb, 0xb4,
3580− 0x07, 0x84, 0x6c, 0x2e, 0xac, 0xdf,
3624+ 0x8b, 0x80, 0x40, 0xf0, 0x80, 0x43, 0x7f, 0x80,
3625+ 0x60, 0xb8, 0x33, 0x07, 0x84, 0x6c, 0x2e, 0xac,
3626+ 0xdf,
35813627 };
35823628
35833629 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] = { · 46 unmodified lines
36303676 0x84,
36313677 };
36323678
3633−static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[436] = {
3679+static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[441] = {
36343680 0x40, 0x9f, 0x06, 0x00, 0x01, 0x00, 0x01, 0x12,
36353681 0x10, 0x82, 0x9f, 0x80, 0xcf, 0x01, 0x80, 0x8b,
36363682 0x07, 0x80, 0xfb, 0x01, 0x01, 0x80, 0xa5, 0x80,
@@ -3663,29 +3709,30 @@ static const uint8_t unicode_prop_Changes_When_NFKC_Casefolded1_table[436] = { · 26 unmodified lines
36633709 0x80, 0xde, 0x80, 0xb0, 0xdd, 0x82, 0x8d, 0xdf,
36643710 0x9e, 0x80, 0xa7, 0x87, 0xae, 0x80, 0x41, 0x7f,
36653711 0x60, 0x72, 0x9b, 0x81, 0x40, 0xd1, 0x80, 0x40,
3666− 0x86, 0x81, 0x43, 0x61, 0x83, 0x60, 0x4d, 0x9f,
3667− 0x41, 0x0d, 0x08, 0x00, 0x81, 0x89, 0x00, 0x00,
3668− 0x09, 0x82, 0xc3, 0x81, 0xe9, 0xa5, 0x86, 0x8b,
3669− 0x24, 0x00, 0x97, 0x04, 0x00, 0x01, 0x01, 0x80,
3670− 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf, 0x81, 0xb5,
3671− 0xa7, 0x8c, 0x82, 0x99, 0x95, 0x94, 0x81, 0x8b,
3672− 0x80, 0x92, 0x03, 0x1a, 0x00, 0x80, 0x40, 0x86,
3673− 0x08, 0x80, 0x9f, 0x99, 0x40, 0x83, 0x15, 0x0d,
3674− 0x0d, 0x0a, 0x16, 0x06, 0x80, 0x88, 0x60, 0xbc,
3675− 0xa6, 0x83, 0x54, 0xb9, 0x86, 0x8d, 0x87, 0xbf,
3676− 0x85, 0x42, 0x3e, 0xd4, 0x80, 0xc6, 0x01, 0x08,
3677− 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06, 0x80, 0xc0,
3678− 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03, 0x04, 0x00,
3679− 0x16, 0x80, 0x41, 0x53, 0x81, 0x41, 0x23, 0x81,
3680− 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01, 0x00, 0x08,
3681− 0x80, 0x89, 0x03, 0x00, 0x00, 0x28, 0x18, 0x00,
3682− 0x00, 0x02, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00,
3683− 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03, 0x03, 0x00,
3684− 0x80, 0x89, 0x80, 0x90, 0x22, 0x04, 0x80, 0x90,
3685− 0x42, 0x43, 0x8a, 0x84, 0x9e, 0x80, 0x9f, 0x99,
3686− 0x82, 0xa2, 0x80, 0xee, 0x82, 0x8c, 0xab, 0x83,
3687− 0x88, 0x31, 0x61, 0x05, 0xad, 0x42, 0x1d, 0x6b,
3688− 0x05, 0xe1, 0x4f, 0xff,
3712+ 0x86, 0x81, 0x43, 0x61, 0x83, 0x88, 0x80, 0x60,
3713+ 0x4d, 0x95, 0x41, 0x0d, 0x08, 0x00, 0x81, 0x89,
3714+ 0x00, 0x00, 0x09, 0x82, 0xc3, 0x81, 0xe9, 0xa5,
3715+ 0x86, 0x8b, 0x24, 0x00, 0x97, 0x04, 0x00, 0x01,
3716+ 0x01, 0x80, 0xeb, 0xa0, 0x41, 0x6a, 0x91, 0xbf,
3717+ 0x81, 0xb5, 0xa7, 0x8c, 0x82, 0x99, 0x95, 0x94,
3718+ 0x81, 0x8b, 0x80, 0x92, 0x03, 0x1a, 0x00, 0x80,
3719+ 0x40, 0x86, 0x08, 0x80, 0x9f, 0x99, 0x40, 0x83,
3720+ 0x15, 0x0d, 0x0d, 0x0a, 0x16, 0x06, 0x80, 0x88,
3721+ 0x60, 0xbc, 0xa6, 0x83, 0x54, 0xb9, 0x86, 0x8d,
3722+ 0x87, 0xbf, 0x85, 0x42, 0x3e, 0xd4, 0x80, 0xc6,
3723+ 0x01, 0x08, 0x09, 0x0b, 0x80, 0x8b, 0x00, 0x06,
3724+ 0x80, 0xc0, 0x03, 0x0f, 0x06, 0x80, 0x9b, 0x03,
3725+ 0x04, 0x00, 0x16, 0x80, 0x41, 0x53, 0x81, 0x41,
3726+ 0x23, 0x81, 0xb1, 0x55, 0xff, 0x18, 0x9a, 0x01,
3727+ 0x00, 0x08, 0x80, 0x89, 0x03, 0x00, 0x00, 0x28,
3728+ 0x18, 0x00, 0x00, 0x02, 0x01, 0x00, 0x08, 0x00,
3729+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x0b, 0x06, 0x03,
3730+ 0x03, 0x00, 0x80, 0x89, 0x80, 0x90, 0x22, 0x04,
3731+ 0x80, 0x90, 0x42, 0x43, 0x8a, 0x84, 0x9e, 0x80,
3732+ 0x9f, 0x99, 0x82, 0xa2, 0x80, 0xee, 0x82, 0x8c,
3733+ 0xab, 0x83, 0x88, 0x31, 0x49, 0x9d, 0x89, 0x60,
3734+ 0xfc, 0x05, 0x42, 0x1d, 0x6b, 0x05, 0xe1, 0x4f,
3735+ 0xff,
36893736 };
36903737
36913738 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] = { · 5 unmodified lines
36973744 0xb6, 0x83,
36983745 };
36993746
3700−static const uint8_t unicode_prop_Dash_table[50] = {
3747+static const uint8_t unicode_prop_Dash_table[53] = {
37013748 0xac, 0x80, 0x45, 0x5b, 0x80, 0xb2, 0x80, 0x4e,
37023749 0x40, 0x80, 0x44, 0x04, 0x80, 0x48, 0x08, 0x85,
37033750 0xbc, 0x80, 0xa6, 0x80, 0x8e, 0x80, 0x41, 0x85,
37043751 0x80, 0x4c, 0x03, 0x01, 0x80, 0x9e, 0x0b, 0x80,
37053752 0x41, 0xda, 0x80, 0x92, 0x80, 0xee, 0x80, 0x60,
37063753 0xcd, 0x8f, 0x81, 0xa4, 0x80, 0x89, 0x80, 0x40,
3707− 0xa8, 0x80,
3754+ 0xa8, 0x80, 0x4f, 0x9e, 0x80,
37083755 };
37093756
37103757 static const uint8_t unicode_prop_Deprecated_table[23] = {
@@ -3713,7 +3760,7 @@ static const uint8_t unicode_prop_Deprecated_table[23] = { · 2 unmodified lines
37133760 0x42, 0xb8, 0x81, 0x6d, 0xdc, 0xd5, 0x80,
37143761 };
37153762
3716−static const uint8_t unicode_prop_Diacritic_table[350] = {
3763+static const uint8_t unicode_prop_Diacritic_table[358] = {
37173764 0xdd, 0x00, 0x80, 0xc6, 0x05, 0x03, 0x01, 0x81,
37183765 0x41, 0xf6, 0x40, 0x9e, 0x07, 0x25, 0x90, 0x0b,
37193766 0x80, 0x88, 0x81, 0x40, 0xfc, 0x84, 0x40, 0xd0,
@@ -3723,55 +3770,57 @@ static const uint8_t unicode_prop_Diacritic_table[350] = { · 3 unmodified lines
37233770 0x81, 0x40, 0xc8, 0x9b, 0xbc, 0x80, 0x8f, 0x02,
37243771 0x83, 0x9b, 0x80, 0xc9, 0x80, 0x8f, 0x80, 0xed,
37253772 0x80, 0x8f, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xae,
3726− 0x82, 0xbb, 0x80, 0x8f, 0x80, 0xfe, 0x80, 0xfe,
3727− 0x80, 0xed, 0x80, 0x8f, 0x80, 0xec, 0x81, 0x8f,
3728− 0x80, 0xfb, 0x80, 0xfb, 0x28, 0x80, 0xea, 0x80,
3729− 0x8c, 0x84, 0xca, 0x81, 0x9a, 0x00, 0x00, 0x03,
3730− 0x81, 0xc1, 0x10, 0x81, 0xbd, 0x80, 0xef, 0x00,
3731− 0x81, 0xa7, 0x0b, 0x84, 0x98, 0x30, 0x80, 0x89,
3732− 0x81, 0x42, 0xc0, 0x82, 0x44, 0x68, 0x8a, 0x88,
3733− 0x80, 0x41, 0x5a, 0x82, 0x41, 0x38, 0x39, 0x80,
3734− 0xaf, 0x8d, 0xf5, 0x80, 0x8e, 0x80, 0xa5, 0x88,
3735− 0xb5, 0x81, 0x40, 0x89, 0x81, 0xbf, 0x85, 0xd1,
3736− 0x98, 0x18, 0x28, 0x0a, 0xb1, 0xbe, 0xd8, 0x8b,
3737− 0xa4, 0x22, 0x82, 0x41, 0xbc, 0x00, 0x82, 0x8a,
3738− 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81, 0x4c,
3739− 0xef, 0x82, 0x41, 0x3c, 0x80, 0x41, 0xf9, 0x85,
3740− 0xe8, 0x83, 0xde, 0x80, 0x60, 0x75, 0x71, 0x80,
3741− 0x8b, 0x08, 0x80, 0x9b, 0x81, 0xd1, 0x81, 0x8d,
3742− 0xa1, 0xe5, 0x82, 0xec, 0x81, 0x40, 0xc9, 0x80,
3743− 0x9a, 0x91, 0xb8, 0x83, 0xa3, 0x80, 0xde, 0x80,
3744− 0x8b, 0x80, 0xa3, 0x80, 0x40, 0x94, 0x82, 0xc0,
3745− 0x83, 0xb2, 0x80, 0xe3, 0x84, 0x40, 0x8b, 0x81,
3746− 0x60, 0x4f, 0x2f, 0x80, 0x43, 0x00, 0x8f, 0x41,
3747− 0x0d, 0x00, 0x80, 0xae, 0x80, 0xac, 0x81, 0xc2,
3748− 0x80, 0x42, 0xfb, 0x80, 0x48, 0x03, 0x81, 0x42,
3749− 0x3a, 0x85, 0x42, 0x1d, 0x8a, 0x41, 0x67, 0x81,
3750− 0xf7, 0x81, 0xbd, 0x80, 0xcb, 0x80, 0x88, 0x82,
3751− 0xe7, 0x81, 0x40, 0xb1, 0x81, 0xd0, 0x80, 0x8f,
3752− 0x80, 0x97, 0x32, 0x84, 0x40, 0xcc, 0x02, 0x80,
3753− 0xfa, 0x81, 0x40, 0xfa, 0x81, 0xfd, 0x80, 0xf5,
3754− 0x81, 0xf2, 0x80, 0x41, 0x0c, 0x81, 0x41, 0xa4,
3755− 0x80, 0xd2, 0x80, 0x91, 0x80, 0xd0, 0x80, 0x41,
3756− 0xa4, 0x80, 0x41, 0x01, 0x00, 0x81, 0xd0, 0x80,
3757− 0x60, 0x4d, 0x57, 0x84, 0xba, 0x86, 0x44, 0x57,
3758− 0x90, 0x60, 0x61, 0xc6, 0x12, 0x2f, 0x39, 0x86,
3773+ 0x82, 0xbb, 0x80, 0x8f, 0x06, 0x80, 0xf6, 0x80,
3774+ 0xfe, 0x80, 0xed, 0x80, 0x8f, 0x80, 0xec, 0x81,
3775+ 0x8f, 0x80, 0xfb, 0x80, 0xfb, 0x28, 0x80, 0xea,
3776+ 0x80, 0x8c, 0x84, 0xca, 0x81, 0x9a, 0x00, 0x00,
3777+ 0x03, 0x81, 0xc1, 0x10, 0x81, 0xbd, 0x80, 0xef,
3778+ 0x00, 0x81, 0xa7, 0x0b, 0x84, 0x98, 0x30, 0x80,
3779+ 0x89, 0x81, 0x42, 0xc0, 0x82, 0x44, 0x68, 0x8a,
3780+ 0x88, 0x80, 0x41, 0x5a, 0x82, 0x41, 0x38, 0x39,
3781+ 0x80, 0xaf, 0x8d, 0xf5, 0x80, 0x8e, 0x80, 0xa5,
3782+ 0x88, 0xb5, 0x81, 0x40, 0x89, 0x81, 0xbf, 0x85,
3783+ 0xd1, 0x98, 0x18, 0x28, 0x0a, 0xb1, 0xbe, 0xd8,
3784+ 0x8b, 0xa4, 0x22, 0x82, 0x41, 0xbc, 0x00, 0x82,
3785+ 0x8a, 0x82, 0x8c, 0x82, 0x8c, 0x82, 0x8c, 0x81,
3786+ 0x4c, 0xef, 0x82, 0x41, 0x3c, 0x80, 0x41, 0xf9,
3787+ 0x85, 0xe8, 0x83, 0xde, 0x80, 0x60, 0x75, 0x71,
3788+ 0x80, 0x8b, 0x08, 0x80, 0x9b, 0x81, 0xd1, 0x81,
3789+ 0x8d, 0xa1, 0xe5, 0x82, 0xec, 0x81, 0x40, 0xc9,
3790+ 0x80, 0x9a, 0x91, 0xb8, 0x83, 0xa3, 0x80, 0xde,
3791+ 0x80, 0x8b, 0x80, 0xa3, 0x80, 0x40, 0x94, 0x82,
3792+ 0xc0, 0x83, 0xb2, 0x80, 0xe3, 0x84, 0x88, 0x82,
3793+ 0xff, 0x81, 0x60, 0x4f, 0x2f, 0x80, 0x43, 0x00,
3794+ 0x8f, 0x41, 0x0d, 0x00, 0x80, 0xae, 0x80, 0xac,
3795+ 0x81, 0xc2, 0x80, 0x42, 0xfb, 0x80, 0x48, 0x03,
3796+ 0x81, 0x42, 0x3a, 0x85, 0x42, 0x1d, 0x8a, 0x41,
3797+ 0x67, 0x81, 0xf7, 0x81, 0xbd, 0x80, 0xcb, 0x80,
3798+ 0x88, 0x82, 0xe7, 0x81, 0x40, 0xb1, 0x81, 0xd0,
3799+ 0x80, 0x8f, 0x80, 0x97, 0x32, 0x84, 0x40, 0xcc,
3800+ 0x02, 0x80, 0xfa, 0x81, 0x40, 0xfa, 0x81, 0xfd,
3801+ 0x80, 0xf5, 0x81, 0xf2, 0x80, 0x41, 0x0c, 0x81,
3802+ 0x41, 0x01, 0x0b, 0x80, 0x40, 0x9b, 0x80, 0xd2,
3803+ 0x80, 0x91, 0x80, 0xd0, 0x80, 0x41, 0xa4, 0x80,
3804+ 0x41, 0x01, 0x00, 0x81, 0xd0, 0x80, 0x60, 0x4d,
3805+ 0x57, 0x84, 0xba, 0x86, 0x44, 0x57, 0x90, 0xcf,
3806+ 0x81, 0x60, 0x61, 0x74, 0x12, 0x2f, 0x39, 0x86,
37593807 0x9d, 0x83, 0x4f, 0x81, 0x86, 0x41, 0xb4, 0x83,
37603808 0x45, 0xdf, 0x86, 0xec, 0x10, 0x82,
37613809 };
37623810
3763−static const uint8_t unicode_prop_Extender_table[86] = {
3811+static const uint8_t unicode_prop_Extender_table[89] = {
37643812 0x40, 0xb6, 0x80, 0x42, 0x17, 0x81, 0x43, 0x6d,
3765− 0x80, 0x41, 0xb8, 0x80, 0x46, 0x4a, 0x80, 0xfe,
3766− 0x80, 0x49, 0x42, 0x80, 0xb7, 0x80, 0x42, 0x62,
3767− 0x80, 0x41, 0x8d, 0x80, 0xc3, 0x80, 0x53, 0x88,
3768− 0x80, 0xaa, 0x84, 0xe6, 0x81, 0xdc, 0x82, 0x60,
3769− 0x6f, 0x15, 0x80, 0x45, 0xf5, 0x80, 0x43, 0xc1,
3770− 0x80, 0x95, 0x80, 0x40, 0x88, 0x80, 0xeb, 0x80,
3771− 0x94, 0x81, 0x60, 0x54, 0x7a, 0x80, 0x53, 0xeb,
3772− 0x80, 0x42, 0x67, 0x82, 0x44, 0xce, 0x80, 0x60,
3773− 0x50, 0xa8, 0x81, 0x44, 0x9b, 0x08, 0x80, 0x60,
3774− 0x71, 0x57, 0x81, 0x48, 0x05, 0x82,
3813+ 0x80, 0x41, 0xb8, 0x80, 0x43, 0x59, 0x80, 0x42,
3814+ 0xef, 0x80, 0xfe, 0x80, 0x49, 0x42, 0x80, 0xb7,
3815+ 0x80, 0x42, 0x62, 0x80, 0x41, 0x8d, 0x80, 0xc3,
3816+ 0x80, 0x53, 0x88, 0x80, 0xaa, 0x84, 0xe6, 0x81,
3817+ 0xdc, 0x82, 0x60, 0x6f, 0x15, 0x80, 0x45, 0xf5,
3818+ 0x80, 0x43, 0xc1, 0x80, 0x95, 0x80, 0x40, 0x88,
3819+ 0x80, 0xeb, 0x80, 0x94, 0x81, 0x60, 0x54, 0x7a,
3820+ 0x80, 0x53, 0xeb, 0x80, 0x42, 0x67, 0x82, 0x44,
3821+ 0xce, 0x80, 0x60, 0x50, 0xa8, 0x81, 0x44, 0x9b,
3822+ 0x08, 0x80, 0x60, 0x71, 0x57, 0x81, 0x48, 0x05,
3823+ 0x82,
37753824 };
37763825
37773826 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] = { · 9 unmodified lines
37873836 0x60, 0x2f, 0xf1, 0x81,
37883837 };
37893838
3790−static const uint8_t unicode_prop_Ideographic_table[58] = {
3839+static const uint8_t unicode_prop_Ideographic_table[66] = {
37913840 0x60, 0x30, 0x05, 0x81, 0x98, 0x88, 0x8d, 0x82,
3792− 0x43, 0xc4, 0x59, 0xb5, 0xc9, 0x60, 0x51, 0xef,
3793− 0x60, 0x59, 0x0f, 0x41, 0x6d, 0x81, 0xe9, 0x60,
3794− 0x75, 0x25, 0x57, 0xf7, 0x87, 0x42, 0xf2, 0x60,
3795− 0x26, 0x7c, 0x41, 0x8b, 0x60, 0x4d, 0x03, 0x60,
3796− 0xa6, 0xd6, 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd,
3797− 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x4c, 0x1e,
3798− 0x42, 0x1d,
3841+ 0x43, 0xc4, 0x59, 0xbf, 0xbf, 0x60, 0x51, 0xfc,
3842+ 0x60, 0x59, 0x02, 0x41, 0x6d, 0x81, 0xe9, 0x60,
3843+ 0x75, 0x09, 0x80, 0x9a, 0x57, 0xf7, 0x87, 0x44,
3844+ 0xd5, 0xa9, 0x88, 0x60, 0x24, 0x66, 0x41, 0x8b,
3845+ 0x60, 0x4d, 0x03, 0x60, 0xa6, 0xdd, 0xa1, 0x50,
3846+ 0x34, 0x8a, 0x40, 0xdd, 0x81, 0x56, 0x81, 0x8d,
3847+ 0x5d, 0x30, 0x4c, 0x1e, 0x42, 0x1d, 0x45, 0xe1,
3848+ 0x53, 0x4a,
37993849 };
38003850
38013851 static const uint8_t unicode_prop_Join_Control_table[4] = {
@@ -3851,7 +3901,7 @@ static const uint8_t unicode_prop_Regional_Indicator_table[4] = { · 49 unmodified lines
38513901 0x61, 0xf1, 0xe5, 0x99,
38523902 };
38533903
3854−static const uint8_t unicode_prop_Sentence_Terminal_table[184] = {
3904+static const uint8_t unicode_prop_Sentence_Terminal_table[188] = {
38553905 0xa0, 0x80, 0x8b, 0x80, 0x8f, 0x80, 0x45, 0x48,
38563906 0x80, 0x40, 0x93, 0x81, 0x40, 0xb3, 0x80, 0xaa,
38573907 0x82, 0x40, 0xf5, 0x80, 0xbc, 0x00, 0x02, 0x81,
@@ -3871,10 +3921,11 @@ static const uint8_t unicode_prop_Sentence_Terminal_table[184] = { · 13 unmodified lines
38713921 0x82, 0x40, 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7,
38723922 0x08, 0x81, 0xeb, 0x80, 0x41, 0xa0, 0x81, 0x41,
38733923 0x74, 0x0c, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82,
3874− 0x43, 0x02, 0x81, 0xd6, 0x81, 0x41, 0xa3, 0x81,
3875− 0x42, 0xb3, 0x81, 0x60, 0x4b, 0x74, 0x81, 0x40,
3876− 0x84, 0x80, 0xc0, 0x81, 0x8a, 0x80, 0x43, 0x52,
3877− 0x80, 0x60, 0x4e, 0x05, 0x80, 0x5d, 0xe7, 0x80,
3924+ 0x42, 0x04, 0x00, 0x80, 0x40, 0xfa, 0x81, 0xd6,
3925+ 0x81, 0x41, 0xa3, 0x81, 0x42, 0xb3, 0x81, 0x60,
3926+ 0x4b, 0x74, 0x81, 0x40, 0x84, 0x80, 0xc0, 0x81,
3927+ 0x8a, 0x80, 0x43, 0x52, 0x80, 0x60, 0x4e, 0x05,
3928+ 0x80, 0x5d, 0xe7, 0x80,
38783929 };
38793930
38803931 static const uint8_t unicode_prop_Soft_Dotted_table[71] = {
@@ -3889,7 +3940,7 @@ static const uint8_t unicode_prop_Soft_Dotted_table[71] = { · 8 unmodified lines
38893940 0x81, 0xb1, 0x81, 0xb1, 0x81, 0xb1, 0x81,
38903941 };
38913942
3892−static const uint8_t unicode_prop_Terminal_Punctuation_table[237] = {
3943+static const uint8_t unicode_prop_Terminal_Punctuation_table[241] = {
38933944 0xa0, 0x80, 0x89, 0x00, 0x80, 0x8a, 0x0a, 0x80,
38943945 0x43, 0x3d, 0x07, 0x80, 0x42, 0x00, 0x80, 0xb8,
38953946 0x80, 0xc7, 0x80, 0x8d, 0x01, 0x81, 0x40, 0xb3,
@@ -3913,21 +3964,23 @@ static const uint8_t unicode_prop_Terminal_Punctuation_table[237] = { · 17 unmodified lines
39133964 0x85, 0xc3, 0x85, 0xd8, 0x83, 0x43, 0xb7, 0x84,
39143965 0x40, 0xec, 0x86, 0xef, 0x83, 0xfe, 0x82, 0x40,
39153966 0x80, 0x0d, 0x80, 0x8f, 0x81, 0xd7, 0x84, 0xeb,
3916− 0x80, 0x41, 0xa0, 0x82, 0x8c, 0x80, 0x41, 0x65,
3917− 0x1a, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, 0x43,
3918− 0x02, 0x81, 0xd6, 0x0b, 0x81, 0x41, 0x9d, 0x82,
3919− 0xac, 0x80, 0x42, 0x84, 0x81, 0x45, 0x76, 0x84,
3920− 0x60, 0x45, 0xf8, 0x81, 0x40, 0x84, 0x80, 0xc0,
3921− 0x82, 0x89, 0x80, 0x43, 0x51, 0x81, 0x60, 0x4e,
3922− 0x05, 0x80, 0x5d, 0xe6, 0x83,
3967+ 0x80, 0x41, 0xa0, 0x82, 0x8b, 0x81, 0x41, 0x65,
3968+ 0x1a, 0x8e, 0xe8, 0x81, 0x40, 0xf8, 0x82, 0x42,
3969+ 0x04, 0x00, 0x80, 0x40, 0xfa, 0x81, 0xd6, 0x0b,
3970+ 0x81, 0x41, 0x9d, 0x82, 0xac, 0x80, 0x42, 0x84,
3971+ 0x81, 0x45, 0x76, 0x84, 0x60, 0x45, 0xf8, 0x81,
3972+ 0x40, 0x84, 0x80, 0xc0, 0x82, 0x89, 0x80, 0x43,
3973+ 0x51, 0x81, 0x60, 0x4e, 0x05, 0x80, 0x5d, 0xe6,
3974+ 0x83,
39233975 };
39243976
3925−static const uint8_t unicode_prop_Unified_Ideograph_table[38] = {
3926− 0x60, 0x33, 0xff, 0x59, 0xb5, 0xc9, 0x60, 0x51,
3927− 0xef, 0x60, 0x5a, 0x1d, 0x08, 0x00, 0x81, 0x89,
3977+static const uint8_t unicode_prop_Unified_Ideograph_table[42] = {
3978+ 0x60, 0x33, 0xff, 0x59, 0xbf, 0xbf, 0x60, 0x51,
3979+ 0xfc, 0x60, 0x5a, 0x10, 0x08, 0x00, 0x81, 0x89,
39283980 0x00, 0x00, 0x09, 0x82, 0x61, 0x05, 0xd5, 0x60,
3929− 0xa6, 0xd6, 0xa8, 0x50, 0x34, 0x8a, 0x40, 0xdd,
3930− 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30,
3981+ 0xa6, 0xdd, 0xa1, 0x50, 0x34, 0x8a, 0x40, 0xdd,
3982+ 0x81, 0x56, 0x81, 0x8d, 0x5d, 0x30, 0x54, 0x1e,
3983+ 0x53, 0x4a,
39313984 };
39323985
39333986 static const uint8_t unicode_prop_Variation_Selector_table[12] = {
@@ -3966,7 +4019,7 @@ static const uint8_t unicode_prop_Bidi_Mirrored_table[171] = { · 32 unmodified lines
39664019 0x80, 0xb8, 0x80,
39674020 };
39684021
3969−static const uint8_t unicode_prop_Emoji_table[236] = {
4022+static const uint8_t unicode_prop_Emoji_table[238] = {
39704023 0xa2, 0x05, 0x04, 0x89, 0xee, 0x03, 0x80, 0x5f,
39714024 0x8c, 0x80, 0x8b, 0x80, 0x40, 0xd7, 0x80, 0x95,
39724025 0x80, 0xd9, 0x85, 0x8e, 0x81, 0x41, 0x6e, 0x81,
@@ -3976,27 +4029,27 @@ static const uint8_t unicode_prop_Emoji_table[236] = { · 3 unmodified lines
39764029 0x09, 0x03, 0x01, 0x00, 0x09, 0x02, 0x02, 0x0f,
39774030 0x14, 0x00, 0x04, 0x8b, 0x8a, 0x09, 0x00, 0x08,
39784031 0x80, 0x91, 0x01, 0x81, 0x91, 0x28, 0x00, 0x0a,
3979− 0x0f, 0x0b, 0x81, 0x8a, 0x0c, 0x09, 0x04, 0x08,
3980− 0x00, 0x81, 0x93, 0x0c, 0x28, 0x19, 0x03, 0x01,
3981− 0x01, 0x28, 0x01, 0x00, 0x00, 0x05, 0x02, 0x05,
3982− 0x80, 0x89, 0x81, 0x8e, 0x01, 0x03, 0x00, 0x03,
3983− 0x10, 0x80, 0x8a, 0x81, 0xaf, 0x82, 0x88, 0x80,
3984− 0x8d, 0x80, 0x8d, 0x80, 0x41, 0x73, 0x81, 0x41,
3985− 0xce, 0x82, 0x92, 0x81, 0xb2, 0x03, 0x80, 0x44,
3986− 0xd9, 0x80, 0x8b, 0x80, 0x42, 0x58, 0x00, 0x80,
3987− 0x61, 0xbd, 0x69, 0x80, 0x40, 0xc9, 0x80, 0x40,
3988− 0x9f, 0x81, 0x8b, 0x81, 0x8d, 0x01, 0x89, 0xca,
3989− 0x99, 0x01, 0x96, 0x80, 0x93, 0x01, 0x88, 0x94,
3990− 0x81, 0x40, 0xad, 0xa1, 0x81, 0xef, 0x09, 0x02,
3991− 0x81, 0xd2, 0x0a, 0x80, 0x41, 0x06, 0x80, 0xbe,
3992− 0x8a, 0x28, 0x97, 0x31, 0x0f, 0x8b, 0x01, 0x19,
3993− 0x03, 0x81, 0x8c, 0x09, 0x07, 0x81, 0x88, 0x04,
3994− 0x82, 0x8b, 0x17, 0x11, 0x00, 0x03, 0x05, 0x02,
3995− 0x05, 0xd5, 0xaf, 0xc5, 0x27, 0x08, 0x89, 0x2a,
3996− 0x00, 0x0a, 0x01, 0x87, 0x40, 0xe4, 0x8b, 0x41,
3997− 0x20, 0xad, 0x80, 0x89, 0x80, 0xaa, 0x03, 0x82,
3998− 0xa8, 0x0d, 0x82, 0x9c, 0x81, 0xb2, 0xef, 0x1b,
3999− 0x14, 0x82, 0x8c, 0x85,
4032+ 0x0c, 0x01, 0x0b, 0x81, 0x8a, 0x0c, 0x09, 0x04,
4033+ 0x08, 0x00, 0x81, 0x93, 0x0c, 0x28, 0x19, 0x03,
4034+ 0x01, 0x01, 0x28, 0x01, 0x00, 0x00, 0x05, 0x02,
4035+ 0x05, 0x80, 0x89, 0x81, 0x8e, 0x01, 0x03, 0x00,
4036+ 0x03, 0x10, 0x80, 0x8a, 0x81, 0xaf, 0x82, 0x88,
4037+ 0x80, 0x8d, 0x80, 0x8d, 0x80, 0x41, 0x73, 0x81,
4038+ 0x41, 0xce, 0x82, 0x92, 0x81, 0xb2, 0x03, 0x80,
4039+ 0x44, 0xd9, 0x80, 0x8b, 0x80, 0x42, 0x58, 0x00,
4040+ 0x80, 0x61, 0xbd, 0x69, 0x80, 0x40, 0xc9, 0x80,
4041+ 0x40, 0x9f, 0x81, 0x8b, 0x81, 0x8d, 0x01, 0x89,
4042+ 0xca, 0x99, 0x01, 0x96, 0x80, 0x93, 0x01, 0x88,
4043+ 0x94, 0x81, 0x40, 0xad, 0xa1, 0x81, 0xef, 0x09,
4044+ 0x02, 0x81, 0xd2, 0x0a, 0x80, 0x41, 0x06, 0x80,
4045+ 0xbe, 0x8a, 0x28, 0x97, 0x31, 0x0f, 0x8b, 0x01,
4046+ 0x19, 0x03, 0x81, 0x8c, 0x09, 0x07, 0x81, 0x88,
4047+ 0x04, 0x82, 0x8b, 0x17, 0x11, 0x00, 0x03, 0x05,
4048+ 0x02, 0x05, 0xd5, 0xaf, 0xc5, 0x27, 0x0a, 0x3d,
4049+ 0x10, 0x01, 0x10, 0x81, 0x89, 0x40, 0xe2, 0x8b,
4050+ 0x41, 0x1f, 0xae, 0x80, 0x89, 0x80, 0xb1, 0x80,
4051+ 0xd1, 0x80, 0xb2, 0xef, 0x22, 0x14, 0x86, 0x88,
4052+ 0x98, 0x36, 0x88, 0x82, 0x8c, 0x86,
40004053 };
40014054
40024055 static const uint8_t unicode_prop_Emoji_Component_table[28] = {
@@ -4010,18 +4063,19 @@ static const uint8_t unicode_prop_Emoji_Modifier_table[4] = { · 7 unmodified lines
40104063 0x61, 0xf3, 0xfa, 0x84,
40114064 };
40124065
4013−static const uint8_t unicode_prop_Emoji_Modifier_Base_table[63] = {
4066+static const uint8_t unicode_prop_Emoji_Modifier_Base_table[66] = {
40144067 0x60, 0x26, 0x1c, 0x80, 0x40, 0xda, 0x80, 0x8f,
40154068 0x83, 0x61, 0xcc, 0x76, 0x80, 0xbb, 0x11, 0x01,
40164069 0x82, 0xf4, 0x09, 0x8a, 0x94, 0x92, 0x10, 0x1a,
40174070 0x02, 0x30, 0x00, 0x97, 0x80, 0x40, 0xc8, 0x0b,
40184071 0x80, 0x94, 0x03, 0x81, 0x40, 0xad, 0x12, 0x84,
40194072 0xd2, 0x80, 0x8f, 0x82, 0x88, 0x80, 0x8a, 0x80,
4020− 0x42, 0x41, 0x07, 0x3d, 0x80, 0x88, 0x89, 0x0a,
4021− 0xf5, 0x08, 0x08, 0x80, 0x90, 0x10, 0x8c,
4073+ 0x42, 0x3e, 0x01, 0x07, 0x3d, 0x80, 0x88, 0x89,
4074+ 0x0a, 0xb7, 0x80, 0xbc, 0x08, 0x08, 0x80, 0x90,
4075+ 0x10, 0x8c,
40224076 };
40234077
4024−static const uint8_t unicode_prop_Emoji_Presentation_table[143] = {
4078+static const uint8_t unicode_prop_Emoji_Presentation_table[144] = {
40254079 0x60, 0x23, 0x19, 0x81, 0x40, 0xcc, 0x1a, 0x01,
40264080 0x80, 0x42, 0x08, 0x81, 0x94, 0x81, 0xb1, 0x8b,
40274081 0xaa, 0x80, 0x92, 0x80, 0x8c, 0x07, 0x81, 0x90,
@@ -4036,13 +4090,13 @@ static const uint8_t unicode_prop_Emoji_Presentation_table[143] = { · 8 unmodified lines
40364090 0x1c, 0x8b, 0x90, 0x10, 0x82, 0xc6, 0x00, 0x80,
40374091 0x40, 0xba, 0x81, 0xbe, 0x8c, 0x18, 0x97, 0x91,
40384092 0x80, 0x99, 0x81, 0x8c, 0x80, 0xd5, 0xd4, 0xaf,
4039− 0xc5, 0x28, 0x12, 0x08, 0x94, 0x0e, 0x86, 0x40,
4040− 0xe4, 0x8b, 0x41, 0x20, 0xad, 0x80, 0x89, 0x80,
4041− 0xaa, 0x03, 0x82, 0xa8, 0x0d, 0x82, 0x9c, 0x81,
4042− 0xb2, 0xef, 0x1b, 0x14, 0x82, 0x8c, 0x85,
4093+ 0xc5, 0x28, 0x12, 0x0a, 0x92, 0x0e, 0x88, 0x40,
4094+ 0xe2, 0x8b, 0x41, 0x1f, 0xae, 0x80, 0x89, 0x80,
4095+ 0xb1, 0x80, 0xd1, 0x80, 0xb2, 0xef, 0x22, 0x14,
4096+ 0x86, 0x88, 0x98, 0x36, 0x88, 0x82, 0x8c, 0x86,
40434097 };
40444098
4045−static const uint8_t unicode_prop_Extended_Pictographic_table[152] = {
4099+static const uint8_t unicode_prop_Extended_Pictographic_table[156] = {
40464100 0x40, 0xa8, 0x03, 0x80, 0x5f, 0x8c, 0x80, 0x8b,
40474101 0x80, 0x40, 0xd7, 0x80, 0x95, 0x80, 0xd9, 0x85,
40484102 0x8e, 0x81, 0x41, 0x6e, 0x81, 0x8b, 0x80, 0xde,
@@ -4061,7 +4115,8 @@ static const uint8_t unicode_prop_Extended_Pictographic_table[152] = { · 12 unmodified lines
40614115 0x88, 0x41, 0xb1, 0x84, 0x41, 0x3d, 0x87, 0x41,
40624116 0x09, 0xaf, 0xff, 0xf3, 0x8b, 0xd4, 0xaa, 0x8b,
40634117 0x83, 0xb7, 0x87, 0x89, 0x85, 0xa7, 0x87, 0x9d,
4064− 0xd1, 0x8b, 0xae, 0x80, 0x89, 0x80, 0x46, 0xb6,
4118+ 0xd1, 0x8b, 0xae, 0x80, 0x89, 0x80, 0x41, 0xb8,
4119+ 0x40, 0xff, 0x43, 0xfd,
40654120 };
40664121
40674122 static const uint8_t unicode_prop_Default_Ignorable_Code_Point_table[51] = {
@@ -4175,11 +4230,11 @@ static const char unicode_prop_name_table[] = · 107 unmodified lines
41754230 "White_Space,space" "\0"
41764231 "Bidi_Mirrored,Bidi_M" "\0"
41774232 "Emoji" "\0"
4178− "Emoji_Component" "\0"
4179− "Emoji_Modifier" "\0"
4180− "Emoji_Modifier_Base" "\0"
4181− "Emoji_Presentation" "\0"
4182− "Extended_Pictographic" "\0"
4233+ "Emoji_Component,EComp" "\0"
4234+ "Emoji_Modifier,EMod" "\0"
4235+ "Emoji_Modifier_Base,EBase" "\0"
4236+ "Emoji_Presentation,EPres" "\0"
4237+ "Extended_Pictographic,ExtPict" "\0"
41834238 "Default_Ignorable_Code_Point,DI" "\0"
41844239 "ID_Start,IDS" "\0"
41854240 "Case_Ignorable,CI" "\0"
quickjs-libc.c+220−168
@@ -224,17 +224,15 @@ static JSValue js_printf_internal(JSContext *ctx, · 223 unmodified lines
224224 case 'X':
225225 if (i >= argc)
226226 goto missing;
227+ if (JS_ToInt64Ext(ctx, &int64_arg, argv[i++]))
228+ goto fail;
227229 if (modsize > 0) {
228− if (JS_ToInt64(ctx, &int64_arg, argv[i++]))
229− goto fail;
230230 q[1] = q[-1];
231231 q[-1] = q[0] = 'l';
232232 q[2] = '\0';
233233 dbuf_printf_fun(&dbuf, fmtbuf, (long long)int64_arg);
234234 } else {
235− if (JS_ToInt32(ctx, &int32_arg, argv[i++]))
236− goto fail;
237− dbuf_printf_fun(&dbuf, fmtbuf, int32_arg);
235+ dbuf_printf_fun(&dbuf, fmtbuf, (int)int64_arg);
238236 }
239237 break;
240238
@@ -369,6 +367,27 @@ static JSValue js_loadScript(JSContext *ctx, JSValueConst this_val, · 128 unmodified lines
369367 return ret;
370368 }
371369
370+/* load a file as a UTF-8 encoded string */
371+static JSValue js_std_loadFile(JSContext *ctx, JSValueConst this_val,
372+ int argc, JSValueConst *argv)
373+{
374+ uint8_t *buf;
375+ const char *filename;
376+ JSValue ret;
377+ size_t buf_len;
378+
379+ filename = JS_ToCString(ctx, argv[0]);
380+ if (!filename)
381+ return JS_EXCEPTION;
382+ buf = js_load_file(ctx, &buf_len, filename);
383+ JS_FreeCString(ctx, filename);
384+ if (!buf)
385+ return JS_NULL;
386+ ret = JS_NewStringLen(ctx, (char *)buf, buf_len);
387+ js_free(ctx, buf);
388+ return ret;
389+}
390+
372391 typedef JSModuleDef *(JSInitModuleFunc)(JSContext *ctx,
373392 const char *module_name);
374393
@@ -633,30 +652,14 @@ static void js_std_file_finalizer(JSRuntime *rt, JSValue val) · 258 unmodified lines
633652 }
634653 }
635654
636−static JSValue js_new_std_error(JSContext *ctx, int err)
655+static ssize_t js_get_errno(ssize_t ret)
637656 {
638− JSValue obj;
639− /* XXX: could add a specific Error prototype */
640− obj = JS_NewError(ctx);
641− JS_DefinePropertyValueStr(ctx, obj, "message",
642− JS_NewString(ctx, strerror(err)),
643− JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
644− JS_DefinePropertyValueStr(ctx, obj, "errno",
645− JS_NewInt32(ctx, err),
646− JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);
647− return obj;
648−}
649−
650−static JSValue js_std_error_constructor(JSContext *ctx, JSValueConst new_target,
651− int argc, JSValueConst *argv)
652−{
653− int err;
654− if (JS_ToInt32(ctx, &err, argv[0]))
655− return JS_EXCEPTION;
656− return js_new_std_error(ctx, err);
657+ if (ret == -1)
658+ ret = -errno;
659+ return ret;
657660 }
658661
659−static JSValue js_std_error_strerror(JSContext *ctx, JSValueConst this_val,
662+static JSValue js_std_strerror(JSContext *ctx, JSValueConst this_val,
660663 int argc, JSValueConst *argv)
661664 {
662665 int err;
@@ -665,15 +668,6 @@ static JSValue js_std_error_strerror(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
665668 return JS_NewString(ctx, strerror(err));
666669 }
667670
668−static JSValue js_std_throw_errno(JSContext *ctx, int err)
669−{
670− JSValue obj;
671− obj = js_new_std_error(ctx, err);
672− if (JS_IsException(obj))
673− obj = JS_NULL;
674− return JS_Throw(ctx, obj);
675−}
676−
677671 static JSValue js_new_std_file(JSContext *ctx, FILE *f,
678672 BOOL close_in_finalizer,
679673 BOOL is_popen)
@@ -695,12 +689,20 @@ static JSValue js_new_std_file(JSContext *ctx, FILE *f, · 15 unmodified lines
695689 return obj;
696690 }
697691
692+static void js_set_error_object(JSContext *ctx, JSValue obj, int err)
693+{
694+ if (!JS_IsUndefined(obj)) {
695+ JS_SetPropertyStr(ctx, obj, "errno", JS_NewInt32(ctx, err));
696+ }
697+}
698+
698699 static JSValue js_std_open(JSContext *ctx, JSValueConst this_val,
699700 int argc, JSValueConst *argv)
700701 {
701702 const char *filename, *mode = NULL;
702703 FILE *f;
703−
704+ int err;
705+
704706 filename = JS_ToCString(ctx, argv[0]);
705707 if (!filename)
706708 goto fail;
@@ -708,15 +710,21 @@ static JSValue js_std_open(JSContext *ctx, JSValueConst this_val, · 1 unmodified line
708710 if (!mode)
709711 goto fail;
710712 if (mode[strspn(mode, "rwa+b")] != '\0') {
711− js_std_throw_errno(ctx, EINVAL);
713+ JS_ThrowTypeError(ctx, "invalid file mode");
712714 goto fail;
713715 }
714716
715717 f = fopen(filename, mode);
718+ if (!f)
719+ err = errno;
720+ else
721+ err = 0;
722+ if (argc >= 3)
723+ js_set_error_object(ctx, argv[2], err);
716724 JS_FreeCString(ctx, filename);
717725 JS_FreeCString(ctx, mode);
718726 if (!f)
719− return js_std_throw_errno(ctx, errno);
727+ return JS_NULL;
720728 return js_new_std_file(ctx, f, TRUE, FALSE);
721729 fail:
722730 JS_FreeCString(ctx, filename);
@@ -729,7 +737,8 @@ static JSValue js_std_popen(JSContext *ctx, JSValueConst this_val, · 6 unmodified lines
729737 {
730738 const char *filename, *mode = NULL;
731739 FILE *f;
732−
740+ int err;
741+
733742 filename = JS_ToCString(ctx, argv[0]);
734743 if (!filename)
735744 goto fail;
@@ -737,15 +746,21 @@ static JSValue js_std_popen(JSContext *ctx, JSValueConst this_val, · 1 unmodified line
737746 if (!mode)
738747 goto fail;
739748 if (mode[strspn(mode, "rw")] != '\0') {
740− js_std_throw_errno(ctx, EINVAL);
749+ JS_ThrowTypeError(ctx, "invalid file mode");
741750 goto fail;
742751 }
743752
744753 f = popen(filename, mode);
754+ if (!f)
755+ err = errno;
756+ else
757+ err = 0;
758+ if (argc >= 3)
759+ js_set_error_object(ctx, argv[2], err);
745760 JS_FreeCString(ctx, filename);
746761 JS_FreeCString(ctx, mode);
747762 if (!f)
748− return js_std_throw_errno(ctx, errno);
763+ return JS_NULL;
749764 return js_new_std_file(ctx, f, TRUE, TRUE);
750765 fail:
751766 JS_FreeCString(ctx, filename);
@@ -758,7 +773,7 @@ static JSValue js_std_fdopen(JSContext *ctx, JSValueConst this_val, · 6 unmodified lines
758773 {
759774 const char *mode;
760775 FILE *f;
761− int fd;
776+ int fd, err;
762777
763778 if (JS_ToInt32(ctx, &fd, argv[0]))
764779 return JS_EXCEPTION;
@@ -766,14 +781,20 @@ static JSValue js_std_fdopen(JSContext *ctx, JSValueConst this_val, · 1 unmodified line
766781 if (!mode)
767782 goto fail;
768783 if (mode[strspn(mode, "rwa+")] != '\0') {
769− js_std_throw_errno(ctx, EINVAL);
784+ JS_ThrowTypeError(ctx, "invalid file mode");
770785 goto fail;
771786 }
772787
773788 f = fdopen(fd, mode);
789+ if (!f)
790+ err = errno;
791+ else
792+ err = 0;
793+ if (argc >= 3)
794+ js_set_error_object(ctx, argv[2], err);
774795 JS_FreeCString(ctx, mode);
775796 if (!f)
776− return js_std_throw_errno(ctx, errno);
797+ return JS_NULL;
777798 return js_new_std_file(ctx, f, TRUE, FALSE);
778799 fail:
779800 JS_FreeCString(ctx, mode);
@@ -785,8 +806,10 @@ static JSValue js_std_tmpfile(JSContext *ctx, JSValueConst this_val, · 5 unmodified lines
785806 {
786807 FILE *f;
787808 f = tmpfile();
809+ if (argc >= 1)
810+ js_set_error_object(ctx, argv[0], f ? 0 : errno);
788811 if (!f)
789− return js_std_throw_errno(ctx, errno);
812+ return JS_NULL;
790813 return js_new_std_file(ctx, f, TRUE, FALSE);
791814 }
792815
@@ -808,7 +831,7 @@ static FILE *js_std_file_get(JSContext *ctx, JSValueConst obj) · 15 unmodified lines
808831 if (!s)
809832 return NULL;
810833 if (!s->f) {
811− js_std_throw_errno(ctx, EBADF);
834+ JS_ThrowTypeError(ctx, "invalid file handle");
812835 return NULL;
813836 }
814837 return s->f;
@@ -843,17 +866,17 @@ static JSValue js_std_file_close(JSContext *ctx, JSValueConst this_val, · 28 unmodified lines
843866 int argc, JSValueConst *argv)
844867 {
845868 JSSTDFile *s = JS_GetOpaque2(ctx, this_val, js_std_file_class_id);
869+ int err;
846870 if (!s)
847871 return JS_EXCEPTION;
848872 if (!s->f)
849− return js_std_throw_errno(ctx, EBADF);
850− /* XXX: could return exit code */
873+ return JS_ThrowTypeError(ctx, "invalid file handle");
851874 if (s->is_popen)
852− pclose(s->f);
875+ err = js_get_errno(pclose(s->f));
853876 else
854− fclose(s->f);
877+ err = js_get_errno(fclose(s->f));
855878 s->f = NULL;
856− return JS_UNDEFINED;
879+ return JS_NewInt32(ctx, err);
857880 }
858881
859882 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, · 16 unmodified lines
876899 }
877900
878901 static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val,
879− int argc, JSValueConst *argv)
902+ int argc, JSValueConst *argv, int is_bigint)
880903 {
881904 FILE *f = js_std_file_get(ctx, this_val);
882905 int64_t pos;
@@ -887,7 +910,10 @@ static JSValue js_std_file_tell(JSContext *ctx, JSValueConst this_val, · 4 unmodified lines
887910 #else
888911 pos = ftell(f);
889912 #endif
890− return JS_NewInt64(ctx, pos);
913+ if (is_bigint)
914+ return JS_NewBigInt64(ctx, pos);
915+ else
916+ return JS_NewInt64(ctx, pos);
891917 }
892918
893919 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, · 4 unmodified lines
898924 int whence, ret;
899925 if (!f)
900926 return JS_EXCEPTION;
901− if (JS_ToInt64(ctx, &pos, argv[0]))
927+ if (JS_ToInt64Ext(ctx, &pos, argv[0]))
902928 return JS_EXCEPTION;
903929 if (JS_ToInt32(ctx, &whence, argv[1]))
904930 return JS_EXCEPTION;
@@ -908,8 +934,8 @@ static JSValue js_std_file_seek(JSContext *ctx, JSValueConst this_val, · 3 unmodified lines
908934 ret = fseek(f, pos, whence);
909935 #endif
910936 if (ret < 0)
911− return js_std_throw_errno(ctx, EBADF);
912− return JS_UNDEFINED;
937+ ret = -errno;
938+ return JS_NewInt32(ctx, ret);
913939 }
914940
915941 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, · 5 unmodified lines
921947 return JS_NewBool(ctx, feof(f));
922948 }
923949
950+static JSValue js_std_file_error(JSContext *ctx, JSValueConst this_val,
951+ int argc, JSValueConst *argv)
952+{
953+ FILE *f = js_std_file_get(ctx, this_val);
954+ if (!f)
955+ return JS_EXCEPTION;
956+ return JS_NewBool(ctx, ferror(f));
957+}
958+
959+static JSValue js_std_file_clearerr(JSContext *ctx, JSValueConst this_val,
960+ int argc, JSValueConst *argv)
961+{
962+ FILE *f = js_std_file_get(ctx, this_val);
963+ if (!f)
964+ return JS_EXCEPTION;
965+ clearerr(f);
966+ return JS_UNDEFINED;
967+}
968+
924969 static JSValue js_std_file_fileno(JSContext *ctx, JSValueConst this_val,
925970 int argc, JSValueConst *argv)
926971 {
@@ -1151,7 +1196,7 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 224 unmodified lines
11511196 f = popen((char *)cmd_buf.buf, "r");
11521197 dbuf_free(&cmd_buf);
11531198 if (!f) {
1154− return js_std_throw_errno(ctx, errno);
1199+ return JS_ThrowTypeError(ctx, "could not start curl");
11551200 }
11561201
11571202 js_std_dbuf_init(ctx, data_buf);
@@ -1162,20 +1207,21 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 4 unmodified lines
11621207 goto fail;
11631208
11641209 /* get the HTTP status */
1165− if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, NULL) < 0)
1210+ if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, NULL) < 0) {
1211+ status = 0;
11661212 goto bad_header;
1213+ }
11671214 status = http_get_status(buf);
11681215 if (!full_flag && !(status >= 200 && status <= 299)) {
1169− js_std_throw_errno(ctx, ENOENT);
1170− goto fail;
1216+ goto bad_header;
11711217 }
11721218
11731219 /* wait until there is an empty line */
11741220 for(;;) {
11751221 if (http_get_header_line(f, buf, URL_GET_BUF_SIZE, header_buf) < 0) {
11761222 bad_header:
1177− js_std_throw_errno(ctx, EINVAL);
1178− goto fail;
1223+ response = JS_NULL;
1224+ goto done;
11791225 }
11801226 if (!strcmp(buf, "\r\n"))
11811227 break;
@@ -1191,11 +1237,6 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 9 unmodified lines
11911237 break;
11921238 dbuf_put(data_buf, (uint8_t *)buf, len);
11931239 }
1194− js_free(ctx, buf);
1195− buf = NULL;
1196− pclose(f);
1197− f = NULL;
1198−
11991240 if (dbuf_error(data_buf))
12001241 goto fail;
12011242 if (binary_flag) {
@@ -1204,10 +1245,15 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
12041245 } else {
12051246 response = JS_NewStringLen(ctx, (char *)data_buf->buf, data_buf->size);
12061247 }
1207− dbuf_free(data_buf);
1208− data_buf = NULL;
12091248 if (JS_IsException(response))
12101249 goto fail;
1250+ done:
1251+ js_free(ctx, buf);
1252+ buf = NULL;
1253+ pclose(f);
1254+ f = NULL;
1255+ dbuf_free(data_buf);
1256+ data_buf = NULL;
12111257
12121258 if (full_flag) {
12131259 ret_obj = JS_NewObject(ctx);
@@ -1216,13 +1262,15 @@ static JSValue js_std_urlGet(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
12161262 JS_DefinePropertyValueStr(ctx, ret_obj, "response",
12171263 response,
12181264 JS_PROP_C_W_E);
1219− JS_DefinePropertyValueStr(ctx, ret_obj, "responseHeaders",
1220− JS_NewStringLen(ctx, (char *)header_buf->buf,
1221− header_buf->size),
1222− JS_PROP_C_W_E);
1223− JS_DefinePropertyValueStr(ctx, ret_obj, "status",
1224− JS_NewInt32(ctx, status),
1225− JS_PROP_C_W_E);
1265+ if (!JS_IsNull(response)) {
1266+ JS_DefinePropertyValueStr(ctx, ret_obj, "responseHeaders",
1267+ JS_NewStringLen(ctx, (char *)header_buf->buf,
1268+ header_buf->size),
1269+ JS_PROP_C_W_E);
1270+ JS_DefinePropertyValueStr(ctx, ret_obj, "status",
1271+ JS_NewInt32(ctx, status),
1272+ JS_PROP_C_W_E);
1273+ }
12261274 } else {
12271275 ret_obj = response;
12281276 }
@@ -1245,6 +1293,23 @@ static JSClassDef js_std_file_class = { · 16 unmodified lines
12451293 .finalizer = js_std_file_finalizer,
12461294 };
12471295
1296+static const JSCFunctionListEntry js_std_error_props[] = {
1297+ /* various errno values */
1298+#define DEF(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE )
1299+ DEF(EINVAL),
1300+ DEF(EIO),
1301+ DEF(EACCES),
1302+ DEF(EEXIST),
1303+ DEF(ENOSPC),
1304+ DEF(ENOSYS),
1305+ DEF(EBUSY),
1306+ DEF(ENOENT),
1307+ DEF(EPERM),
1308+ DEF(EPIPE),
1309+ DEF(EBADF),
1310+#undef DEF
1311+};
1312+
12481313 static const JSCFunctionListEntry js_std_funcs[] = {
12491314 JS_CFUNC_DEF("exit", 1, js_std_exit ),
12501315 JS_CFUNC_DEF("gc", 0, js_std_gc ),
@@ -1252,7 +1317,9 @@ static const JSCFunctionListEntry js_std_funcs[] = { · 1 unmodified line
12521317 JS_CFUNC_DEF("loadScript", 1, js_loadScript ),
12531318 JS_CFUNC_DEF("getenv", 1, js_std_getenv ),
12541319 JS_CFUNC_DEF("urlGet", 1, js_std_urlGet ),
1255−
1320+ JS_CFUNC_DEF("loadFile", 1, js_std_loadFile ),
1321+ JS_CFUNC_DEF("strerror", 1, js_std_strerror ),
1322+
12561323 /* FILE I/O */
12571324 JS_CFUNC_DEF("open", 2, js_std_open ),
12581325 JS_CFUNC_DEF("popen", 2, js_std_popen ),
@@ -1264,49 +1331,34 @@ static const JSCFunctionListEntry js_std_funcs[] = { · 5 unmodified lines
12641331 JS_PROP_INT32_DEF("SEEK_SET", SEEK_SET, JS_PROP_CONFIGURABLE ),
12651332 JS_PROP_INT32_DEF("SEEK_CUR", SEEK_CUR, JS_PROP_CONFIGURABLE ),
12661333 JS_PROP_INT32_DEF("SEEK_END", SEEK_END, JS_PROP_CONFIGURABLE ),
1267−
1334+ JS_OBJECT_DEF("Error", js_std_error_props, countof(js_std_error_props), JS_PROP_CONFIGURABLE),
12681335 /* setenv, ... */
12691336 };
1270−
1271−static const JSCFunctionListEntry js_std_error_funcs[] = {
1272− JS_CFUNC_DEF("strerror", 1, js_std_error_strerror ),
1273− /* various errno values */
1274−#define DEF(x) JS_PROP_INT32_DEF(#x, x, JS_PROP_CONFIGURABLE )
1275− DEF(EINVAL),
1276− DEF(EIO),
1277− DEF(EACCES),
1278− DEF(EEXIST),
1279− DEF(ENOSPC),
1280− DEF(ENOSYS),
1281− DEF(EBUSY),
1282− DEF(ENOENT),
1283− DEF(EPERM),
1284− DEF(EPIPE),
1285− DEF(EBADF),
1286−#undef DEF
1287−};
1288−
1337+
12891338 static const JSCFunctionListEntry js_std_file_proto_funcs[] = {
12901339 JS_CFUNC_DEF("close", 0, js_std_file_close ),
12911340 JS_CFUNC_MAGIC_DEF("puts", 1, js_std_file_puts, 1 ),
12921341 JS_CFUNC_DEF("printf", 1, js_std_file_printf ),
12931342 JS_CFUNC_DEF("flush", 0, js_std_file_flush ),
1294− JS_CFUNC_DEF("tell", 0, js_std_file_tell ),
1343+ JS_CFUNC_MAGIC_DEF("tell", 0, js_std_file_tell, 0 ),
1344+ JS_CFUNC_MAGIC_DEF("tello", 0, js_std_file_tell, 1 ),
12951345 JS_CFUNC_DEF("seek", 2, js_std_file_seek ),
12961346 JS_CFUNC_DEF("eof", 0, js_std_file_eof ),
12971347 JS_CFUNC_DEF("fileno", 0, js_std_file_fileno ),
1348+ JS_CFUNC_DEF("error", 0, js_std_file_error ),
1349+ JS_CFUNC_DEF("clearerr", 0, js_std_file_clearerr ),
12981350 JS_CFUNC_MAGIC_DEF("read", 3, js_std_file_read_write, 0 ),
12991351 JS_CFUNC_MAGIC_DEF("write", 3, js_std_file_read_write, 1 ),
13001352 JS_CFUNC_DEF("getline", 0, js_std_file_getline ),
13011353 JS_CFUNC_DEF("readAsString", 0, js_std_file_readAsString ),
13021354 JS_CFUNC_DEF("getByte", 0, js_std_file_getByte ),
13031355 JS_CFUNC_DEF("putByte", 1, js_std_file_putByte ),
1304− /* setvbuf, ferror, clearerr, ... */
1356+ /* setvbuf, ... */
13051357 };
13061358
13071359 static int js_std_init(JSContext *ctx, JSModuleDef *m)
13081360 {
1309− JSValue proto, obj;
1361+ JSValue proto;
13101362
13111363 /* FILE class */
13121364 /* the class ID is created once */
@@ -1323,13 +1375,6 @@ static int js_std_init(JSContext *ctx, JSModuleDef *m) · 10 unmodified lines
13231375 JS_SetModuleExport(ctx, m, "in", js_new_std_file(ctx, stdin, FALSE, FALSE));
13241376 JS_SetModuleExport(ctx, m, "out", js_new_std_file(ctx, stdout, FALSE, FALSE));
13251377 JS_SetModuleExport(ctx, m, "err", js_new_std_file(ctx, stderr, FALSE, FALSE));
1326−
1327− obj = JS_NewCFunction2(ctx, js_std_error_constructor,
1328− "Error", 1, JS_CFUNC_constructor, 0);
1329− JS_SetPropertyFunctionList(ctx, obj, js_std_error_funcs,
1330− countof(js_std_error_funcs));
1331− JS_SetModuleExport(ctx, m, "Error", obj);
1332−
13331378 return 0;
13341379 }
13351380
@@ -1343,20 +1388,12 @@ JSModuleDef *js_init_module_std(JSContext *ctx, const char *module_name) · 7 unmodified lines
13431388 JS_AddModuleExport(ctx, m, "in");
13441389 JS_AddModuleExport(ctx, m, "out");
13451390 JS_AddModuleExport(ctx, m, "err");
1346− JS_AddModuleExport(ctx, m, "Error");
13471391 return m;
13481392 }
13491393
13501394 /**********************************************************/
13511395 /* 'os' object */
13521396
1353−static JSValue js_os_return(JSContext *ctx, ssize_t ret)
1354−{
1355− if (ret < 0)
1356− ret = -errno;
1357− return JS_NewInt64(ctx, ret);
1358−}
1359−
13601397 static JSValue js_os_open(JSContext *ctx, JSValueConst this_val,
13611398 int argc, JSValueConst *argv)
13621399 {
@@ -1382,9 +1419,9 @@ static JSValue js_os_open(JSContext *ctx, JSValueConst this_val, · 19 unmodified lines
13821419 if (!(flags & O_TEXT))
13831420 flags |= O_BINARY;
13841421 #endif
1385− ret = open(filename, flags, mode);
1422+ ret = js_get_errno(open(filename, flags, mode));
13861423 JS_FreeCString(ctx, filename);
1387− return js_os_return(ctx, ret);
1424+ return JS_NewInt32(ctx, ret);
13881425 }
13891426
13901427 static JSValue js_os_close(JSContext *ctx, JSValueConst this_val,
@@ -1393,24 +1430,31 @@ static JSValue js_os_close(JSContext *ctx, JSValueConst this_val, · 2 unmodified lines
13931430 int fd, ret;
13941431 if (JS_ToInt32(ctx, &fd, argv[0]))
13951432 return JS_EXCEPTION;
1396− ret = close(fd);
1397− return js_os_return(ctx, ret);
1433+ ret = js_get_errno(close(fd));
1434+ return JS_NewInt32(ctx, ret);
13981435 }
13991436
14001437 static JSValue js_os_seek(JSContext *ctx, JSValueConst this_val,
14011438 int argc, JSValueConst *argv)
14021439 {
1403− int fd, whence, ret;
1404− int64_t pos;
1440+ int fd, whence;
1441+ int64_t pos, ret;
1442+ BOOL is_bigint;
14051443
14061444 if (JS_ToInt32(ctx, &fd, argv[0]))
14071445 return JS_EXCEPTION;
1408− if (JS_ToInt64(ctx, &pos, argv[1]))
1446+ is_bigint = JS_IsBigInt(ctx, argv[1]);
1447+ if (JS_ToInt64Ext(ctx, &pos, argv[1]))
14091448 return JS_EXCEPTION;
14101449 if (JS_ToInt32(ctx, &whence, argv[2]))
14111450 return JS_EXCEPTION;
14121451 ret = lseek(fd, pos, whence);
1413− return js_os_return(ctx, ret);
1452+ if (ret == -1)
1453+ ret = -errno;
1454+ if (is_bigint)
1455+ return JS_NewBigInt64(ctx, ret);
1456+ else
1457+ return JS_NewInt64(ctx, ret);
14141458 }
14151459
14161460 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, · 17 unmodified lines
14341478 if (pos + len > size)
14351479 return JS_ThrowRangeError(ctx, "read/write array buffer overflow");
14361480 if (magic)
1437− ret = write(fd, buf + pos, len);
1481+ ret = js_get_errno(write(fd, buf + pos, len));
14381482 else
1439− ret = read(fd, buf + pos, len);
1440− return js_os_return(ctx, ret);
1483+ ret = js_get_errno(read(fd, buf + pos, len));
1484+ return JS_NewInt64(ctx, ret);
14411485 }
14421486
14431487 static JSValue js_os_isatty(JSContext *ctx, JSValueConst this_val,
@@ -1555,9 +1599,9 @@ static JSValue js_os_remove(JSContext *ctx, JSValueConst this_val, · 111 unmodified lines
15551599 filename = JS_ToCString(ctx, argv[0]);
15561600 if (!filename)
15571601 return JS_EXCEPTION;
1558− ret = remove(filename);
1602+ ret = js_get_errno(remove(filename));
15591603 JS_FreeCString(ctx, filename);
1560− return js_os_return(ctx, ret);
1604+ return JS_NewInt32(ctx, ret);
15611605 }
15621606
15631607 static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val,
@@ -1574,10 +1618,10 @@ static JSValue js_os_rename(JSContext *ctx, JSValueConst this_val, · 10 unmodified lines
15741618 JS_FreeCString(ctx, oldpath);
15751619 return JS_EXCEPTION;
15761620 }
1577− ret = rename(oldpath, newpath);
1621+ ret = js_get_errno(rename(oldpath, newpath));
15781622 JS_FreeCString(ctx, oldpath);
15791623 JS_FreeCString(ctx, newpath);
1580− return js_os_return(ctx, ret);
1624+ return JS_NewInt32(ctx, ret);
15811625 }
15821626
15831627 static JSOSRWHandler *find_rh(int fd)
@@ -2018,7 +2062,7 @@ static JSValue js_os_getcwd(JSContext *ctx, JSValueConst this_val, · 434 unmodified lines
20182062
20192063 if (!getcwd(buf, sizeof(buf))) {
20202064 buf[0] = '\0';
2021− err = -errno;
2065+ err = errno;
20222066 } else {
20232067 err = 0;
20242068 }
@@ -2036,9 +2080,9 @@ static JSValue js_os_chdir(JSContext *ctx, JSValueConst this_val, · 11 unmodified lines
20362080 target = JS_ToCString(ctx, argv[0]);
20372081 if (!target)
20382082 return JS_EXCEPTION;
2039− err = chdir(target);
2083+ err = js_get_errno(chdir(target));
20402084 JS_FreeCString(ctx, target);
2041− return js_os_return(ctx, err);
2085+ return JS_NewInt32(ctx, err);
20422086 }
20432087
20442088 /* return [path, errorcode] */
@@ -2056,7 +2100,7 @@ static JSValue js_os_realpath(JSContext *ctx, JSValueConst this_val, · 11 unmodified lines
20562100 JS_FreeCString(ctx, path);
20572101 if (!res) {
20582102 buf[0] = '\0';
2059− err = -errno;
2103+ err = errno;
20602104 } else {
20612105 err = 0;
20622106 }
@@ -2078,9 +2122,9 @@ static JSValue js_os_mkdir(JSContext *ctx, JSValueConst this_val, · 15 unmodified lines
20782122 path = JS_ToCString(ctx, argv[0]);
20792123 if (!path)
20802124 return JS_EXCEPTION;
2081− ret = mkdir(path, mode);
2125+ ret = js_get_errno(mkdir(path, mode));
20822126 JS_FreeCString(ctx, path);
2083− return js_os_return(ctx, ret);
2127+ return JS_NewInt32(ctx, ret);
20842128 }
20852129
20862130 static int64_t timespec_to_ms(const struct timespec *tv)
@@ -2106,7 +2150,7 @@ static JSValue js_os_stat(JSContext *ctx, JSValueConst this_val, · 19 unmodified lines
21062150 res = stat(path, &st);
21072151 JS_FreeCString(ctx, path);
21082152 if (res < 0) {
2109− err = -errno;
2153+ err = errno;
21102154 obj = JS_NULL;
21112155 } else {
21122156 err = 0;
@@ -2179,10 +2223,10 @@ static JSValue js_os_symlink(JSContext *ctx, JSValueConst this_val, · 66 unmodified lines
21792223 JS_FreeCString(ctx, target);
21802224 return JS_EXCEPTION;
21812225 }
2182− err = symlink(target, linkpath);
2226+ err = js_get_errno(symlink(target, linkpath));
21832227 JS_FreeCString(ctx, target);
21842228 JS_FreeCString(ctx, linkpath);
2185− return js_os_return(ctx, err);
2229+ return JS_NewInt32(ctx, err);
21862230 }
21872231
21882232 /* return [path, errorcode] */
@@ -2198,14 +2242,14 @@ static JSValue js_os_readlink(JSContext *ctx, JSValueConst this_val, · 9 unmodified lines
21982242 if (!path)
21992243 return JS_EXCEPTION;
22002244 res = readlink(path, buf, sizeof(buf) - 1);
2201− JS_FreeCString(ctx, path);
22022245 if (res < 0) {
22032246 buf[0] = '\0';
2204− err = -errno;
2247+ err = errno;
22052248 } else {
22062249 buf[res] = '\0';
22072250 err = 0;
22082251 }
2252+ JS_FreeCString(ctx, path);
22092253 return make_string_error(ctx, buf, err);
22102254 }
22112255
@@ -2229,18 +2273,19 @@ static JSValue js_os_readdir(JSContext *ctx, JSValueConst this_val, · 17 unmodified lines
22292273 return JS_EXCEPTION;
22302274 }
22312275 f = opendir(path);
2276+ if (!f)
2277+ err = errno;
2278+ else
2279+ err = 0;
22322280 JS_FreeCString(ctx, path);
2233− err = 0;
2234− if (!f) {
2235− err = -errno;
2281+ if (!f)
22362282 goto done;
2237− }
22382283 len = 0;
22392284 for(;;) {
22402285 errno = 0;
22412286 d = readdir(f);
22422287 if (!d) {
2243− err = -errno;
2288+ err = errno;
22442289 break;
22452290 }
22462291 JS_DefinePropertyValueUint32(ctx, obj, len++,
@@ -2275,9 +2320,9 @@ static JSValue js_os_utimes(JSContext *ctx, JSValueConst this_val, · 28 unmodified lines
22752320 return JS_EXCEPTION;
22762321 ms_to_timeval(&times[0], atime);
22772322 ms_to_timeval(&times[1], mtime);
2278− ret = utimes(path, times);
2323+ ret = js_get_errno(utimes(path, times));
22792324 JS_FreeCString(ctx, path);
2280− return js_os_return(ctx, ret);
2325+ return JS_NewInt32(ctx, ret);
22812326 }
22822327
22832328 /* exec(args[, options]) -> exitcode */
@@ -2486,8 +2531,8 @@ static JSValue js_os_kill(JSContext *ctx, JSValueConst this_val, · 202 unmodified lines
24862531 return JS_EXCEPTION;
24872532 if (JS_ToInt32(ctx, &sig, argv[1]))
24882533 return JS_EXCEPTION;
2489− ret = kill(pid, sig);
2490− return js_os_return(ctx, ret);
2534+ ret = js_get_errno(kill(pid, sig));
2535+ return JS_NewInt32(ctx, ret);
24912536 }
24922537
24932538 /* sleep(delay_ms) */
@@ -2502,8 +2547,8 @@ static JSValue js_os_sleep(JSContext *ctx, JSValueConst this_val, · 8 unmodified lines
25022547 return JS_EXCEPTION;
25032548 ts.tv_sec = delay / 1000;
25042549 ts.tv_nsec = (delay % 1000) * 1000000;
2505− ret = nanosleep(&ts, NULL);
2506− return js_os_return(ctx, ret);
2550+ ret = js_get_errno(nanosleep(&ts, NULL));
2551+ return JS_NewInt32(ctx, ret);
25072552 }
25082553
25092554 /* dup(fd) */
@@ -2514,8 +2559,8 @@ static JSValue js_os_dup(JSContext *ctx, JSValueConst this_val, · 4 unmodified lines
25142559
25152560 if (JS_ToInt32(ctx, &fd, argv[0]))
25162561 return JS_EXCEPTION;
2517− ret = dup(fd);
2518− return js_os_return(ctx, ret);
2562+ ret = js_get_errno(dup(fd));
2563+ return JS_NewInt32(ctx, ret);
25192564 }
25202565
25212566 /* dup2(fd) */
@@ -2528,8 +2573,8 @@ static JSValue js_os_dup2(JSContext *ctx, JSValueConst this_val, · 6 unmodified lines
25282573 return JS_EXCEPTION;
25292574 if (JS_ToInt32(ctx, &fd2, argv[1]))
25302575 return JS_EXCEPTION;
2531− ret = dup2(fd, fd2);
2532− return js_os_return(ctx, ret);
2576+ ret = js_get_errno(dup2(fd, fd2));
2577+ return JS_NewInt32(ctx, ret);
25332578 }
25342579
25352580 #endif /* !_WIN32 */
@@ -2725,23 +2770,30 @@ void js_std_free_handlers(JSRuntime *rt) · 189 unmodified lines
27252770 }
27262771 }
27272772
2728−static void js_std_dump_error1(JSContext *ctx, JSValueConst exception_val,
2729− BOOL is_throw)
2773+static void js_dump_obj(JSContext *ctx, FILE *f, JSValueConst val)
2774+{
2775+ const char *str;
2776+
2777+ str = JS_ToCString(ctx, val);
2778+ if (str) {
2779+ fprintf(f, "%s\n", str);
2780+ JS_FreeCString(ctx, str);
2781+ } else {
2782+ fprintf(f, "[exception]\n");
2783+ }
2784+}
2785+
2786+static void js_std_dump_error1(JSContext *ctx, JSValueConst exception_val)
27302787 {
27312788 JSValue val;
2732− const char *stack;
27332789 BOOL is_error;
27342790
27352791 is_error = JS_IsError(ctx, exception_val);
2736− if (is_throw && !is_error)
2737− printf("Throw: ");
2738− js_print(ctx, JS_NULL, 1, (JSValueConst *)&exception_val);
2792+ js_dump_obj(ctx, stderr, exception_val);
27392793 if (is_error) {
27402794 val = JS_GetPropertyStr(ctx, exception_val, "stack");
27412795 if (!JS_IsUndefined(val)) {
2742− stack = JS_ToCString(ctx, val);
2743− printf("%s\n", stack);
2744− JS_FreeCString(ctx, stack);
2796+ js_dump_obj(ctx, stderr, val);
27452797 }
27462798 JS_FreeValue(ctx, val);
27472799 }
@@ -2752,7 +2804,7 @@ void js_std_dump_error(JSContext *ctx) · 4 unmodified lines
27522804 JSValue exception_val;
27532805
27542806 exception_val = JS_GetException(ctx);
2755− js_std_dump_error1(ctx, exception_val, TRUE);
2807+ js_std_dump_error1(ctx, exception_val);
27562808 JS_FreeValue(ctx, exception_val);
27572809 }
27582810
@@ -2761,8 +2813,8 @@ void js_std_promise_rejection_tracker(JSContext *ctx, JSValueConst promise, · 2 unmodified lines
27612813 BOOL is_handled, void *opaque)
27622814 {
27632815 if (!is_handled) {
2764− printf("Possibly unhandled promise rejection: ");
2765− js_std_dump_error1(ctx, reason, FALSE);
2816+ fprintf(stderr, "Possibly unhandled promise rejection: ");
2817+ js_std_dump_error1(ctx, reason);
27662818 }
27672819 }
27682820
quickjs-opcode.h+0−1
@@ -119,7 +119,6 @@ DEF( eval, 5, 1, 1, npop_u16) /* func args... -> ret_val */ · 118 unmodified lines
119119 DEF( apply_eval, 3, 2, 1, u16) /* func array -> ret_eval */
120120 DEF( regexp, 1, 2, 1, none) /* create a RegExp object from the pattern and a
121121 bytecode string */
122−DEF( get_super_ctor, 1, 1, 1, none)
123122 DEF( get_super, 1, 1, 1, none)
124123 DEF( import, 1, 1, 1, none) /* dynamic module import */
125124
quickjs.c+128−76
@@ -284,6 +284,7 @@ struct JSRuntime { · 283 unmodified lines
284284 JSNumericOperations bigdecimal_ops;
285285 uint32_t operator_count;
286286 #endif
287+ void *user_opaque;
287288 };
288289
289290 struct JSClass {
@@ -1537,6 +1538,16 @@ JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque) · 1247 unmodified lines
15371538 return NULL;
15381539 }
15391540
1541+void *JS_GetRuntimeOpaque(JSRuntime *rt)
1542+{
1543+ return rt->user_opaque;
1544+}
1545+
1546+void JS_SetRuntimeOpaque(JSRuntime *rt, void *opaque)
1547+{
1548+ rt->user_opaque = opaque;
1549+}
1550+
15401551 /* default memory allocation functions with memory limitation */
15411552 static inline size_t js_def_malloc_usable_size(void *ptr)
15421553 {
@@ -2198,26 +2209,6 @@ static inline BOOL is_math_mode(JSContext *ctx) · 655 unmodified lines
21982209 }
21992210 #endif
22002211
2201−JSValue JS_NewInt64(JSContext *ctx, int64_t v)
2202−{
2203− if (v == (int32_t)v) {
2204− return JS_NewInt32(ctx, v);
2205− } else {
2206− return __JS_NewFloat64(ctx, (double)v);
2207− }
2208−}
2209−
2210−static force_inline JSValue JS_NewUint32(JSContext *ctx, uint32_t val)
2211−{
2212− JSValue v;
2213− if (val <= 0x7fffffff) {
2214− v = JS_MKVAL(JS_TAG_INT, val);
2215− } else {
2216− v = __JS_NewFloat64(ctx, val);
2217− }
2218− return v;
2219−}
2220−
22212212 /* JSAtom support */
22222213
22232214 #define JS_ATOM_TAG_INT (1U << 31)
@@ -9794,6 +9785,8 @@ static JSValue js_atof(JSContext *ctx, const char *str, const char **pp, · 7570 unmodified lines
97949785 if (*p == '.' && (p > p_start || to_digit((uint8_t)p[1]) < radix)) {
97959786 is_float = TRUE;
97969787 p++;
9788+ if (*p == sep)
9789+ goto fail;
97979790 while (to_digit((uint8_t)*p) < radix ||
97989791 (*p == sep && to_digit((uint8_t)p[1]) < radix))
97999792 p++;
@@ -10129,7 +10122,6 @@ static __maybe_unused JSValue JS_ToIntegerFree(JSContext *ctx, JSValue val) · 329 unmodified lines
1012910122 ret = JS_NewInt32(ctx, 0);
1013010123 } else {
1013110124 /* convert -0 to +0 */
10132− /* XXX: should not be done here ? */
1013310125 d = trunc(d) + 0.0;
1013410126 ret = JS_NewFloat64(ctx, d);
1013510127 }
@@ -10385,6 +10377,14 @@ int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val) · 249 unmodified lines
1038510377 return JS_ToInt64Free(ctx, pres, JS_DupValue(ctx, val));
1038610378 }
1038710379
10380+int JS_ToInt64Ext(JSContext *ctx, int64_t *pres, JSValueConst val)
10381+{
10382+ if (JS_IsBigInt(ctx, val))
10383+ return JS_ToBigInt64(ctx, pres, val);
10384+ else
10385+ return JS_ToInt64(ctx, pres, val);
10386+}
10387+
1038810388 /* return (<0, 0) in case of exception */
1038910389 static int JS_ToInt32Free(JSContext *ctx, int32_t *pres, JSValue val)
1039010390 {
@@ -11840,7 +11840,8 @@ static JSValue JS_CompactBigInt(JSContext *ctx, JSValue val) · 1449 unmodified lines
1184011840 }
1184111841
1184211842 /* must be kept in sync with JSOverloadableOperatorEnum */
11843−static const char *js_overloadable_operator_names[JS_OVOP_COUNT] = {
11843+/* XXX: use atoms ? */
11844+static const char js_overloadable_operator_names[JS_OVOP_COUNT][4] = {
1184411845 "+",
1184511846 "-",
1184611847 "*",
@@ -12894,7 +12895,7 @@ static no_inline __exception int js_binary_arith_slow(JSContext *ctx, JSValue *s · 1047 unmodified lines
1289412895 handle_bigint:
1289512896 if (ctx->rt->bigint_ops.binary_arith(ctx, op, sp - 2, op1, op2))
1289612897 goto exception;
12897− } else if (tag1 == JS_TAG_FLOAT64 || tag2 == JS_TAG_FLOAT64) {
12898+ } else {
1289812899 double dr;
1289912900 /* float64 result */
1290012901 if (JS_ToFloat64Free(ctx, &d1, op1)) {
@@ -13031,7 +13032,11 @@ static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) · 130 unmodified lines
1303113032 } else if (tag1 == JS_TAG_BIG_FLOAT || tag2 == JS_TAG_BIG_FLOAT) {
1303213033 if (ctx->rt->bigfloat_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2))
1303313034 goto exception;
13034− } else if (tag1 == JS_TAG_FLOAT64 || tag2 == JS_TAG_FLOAT64) {
13035+ } else if (tag1 == JS_TAG_BIG_INT || tag2 == JS_TAG_BIG_INT) {
13036+ handle_bigint:
13037+ if (ctx->rt->bigint_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2))
13038+ goto exception;
13039+ } else {
1303513040 double d1, d2;
1303613041 /* float64 result */
1303713042 if (JS_ToFloat64Free(ctx, &d1, op1)) {
@@ -13040,10 +13045,9 @@ static no_inline __exception int js_add_slow(JSContext *ctx, JSValue *sp) · 2 unmodified lines
1304013045 }
1304113046 if (JS_ToFloat64Free(ctx, &d2, op2))
1304213047 goto exception;
13048+ if (is_math_mode(ctx) && is_safe_integer(d1) && is_safe_integer(d2))
13049+ goto handle_bigint;
1304313050 sp[-2] = __JS_NewFloat64(ctx, d1 + d2);
13044− } else {
13045− if (ctx->rt->bigint_ops.binary_arith(ctx, OP_add, sp - 2, op1, op2))
13046− goto exception;
1304713051 }
1304813052 return 0;
1304913053 exception:
@@ -13642,6 +13646,28 @@ static no_inline int js_mul_pow10(JSContext *ctx, JSValue *sp) · 592 unmodified lines
1364213646
1364313647 #else /* !CONFIG_BIGNUM */
1364413648
13649+static JSValue JS_ThrowUnsupportedBigint(JSContext *ctx)
13650+{
13651+ return JS_ThrowTypeError(ctx, "bigint is not supported");
13652+}
13653+
13654+JSValue JS_NewBigInt64(JSContext *ctx, int64_t v)
13655+{
13656+ return JS_ThrowUnsupportedBigint(ctx);
13657+}
13658+
13659+JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v)
13660+{
13661+ return JS_ThrowUnsupportedBigint(ctx);
13662+}
13663+
13664+int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val)
13665+{
13666+ JS_ThrowUnsupportedBigint(ctx);
13667+ *pres = 0;
13668+ return -1;
13669+}
13670+
1364513671 static no_inline __exception int js_unary_arith_slow(JSContext *ctx,
1364613672 JSValue *sp,
1364713673 OPCodeEnum op)
@@ -16280,22 +16306,6 @@ static JSValue JS_CallInternal(JSContext *ctx, JSValueConst func_obj, · 2632 unmodified lines
1628016306 }
1628116307 BREAK;
1628216308
16283− CASE(OP_get_super_ctor):
16284− {
16285− JSValue proto;
16286− proto = JS_DupValue(ctx, JS_GetPrototype(ctx, sp[-1]));
16287− if (JS_IsException(proto))
16288− goto exception;
16289− if (!JS_IsConstructor(ctx, proto)) {
16290− JS_FreeValue(ctx, proto);
16291− JS_ThrowTypeError(ctx, "not a constructor");
16292− goto exception;
16293− }
16294− JS_FreeValue(ctx, sp[-1]);
16295− sp[-1] = proto;
16296− }
16297− BREAK;
16298−
1629916309 CASE(OP_get_super):
1630016310 {
1630116311 JSValue proto;
@@ -23821,7 +23831,7 @@ static __exception int js_parse_postfix_expr(JSParseState *s, BOOL accept_lparen · 7519 unmodified lines
2382123831 emit_atom(s, JS_ATOM_this_active_func);
2382223832 emit_u16(s, 0);
2382323833
23824− emit_op(s, OP_get_super_ctor);
23834+ emit_op(s, OP_get_super);
2382523835
2382623836 emit_op(s, OP_scope_get_var);
2382723837 emit_atom(s, JS_ATOM_new_target);
@@ -31993,10 +32003,10 @@ static __exception int js_parse_function_decl2(JSParseState *s, · 8165 unmodified lines
3199332003 js_parse_expect(s, ')');
3199432004 goto fail;
3199532005 }
31996− if (s->token.val == ',') {
31997− if (next_token(s))
31998− goto fail;
31999− }
32006+ if (s->token.val == ')')
32007+ break;
32008+ if (js_parse_expect(s, ','))
32009+ goto fail;
3200032010 }
3200132011 if ((func_type == JS_PARSE_FUNC_GETTER && fd->arg_count != 0) ||
3200232012 (func_type == JS_PARSE_FUNC_SETTER && fd->arg_count != 1)) {
@@ -34381,6 +34391,10 @@ int JS_SetModuleExportList(JSContext *ctx, JSModuleDef *m, · 2378 unmodified lines
3438134391 case JS_DEF_PROP_DOUBLE:
3438234392 val = __JS_NewFloat64(ctx, e->u.f64);
3438334393 break;
34394+ case JS_DEF_OBJECT:
34395+ val = JS_NewObject(ctx);
34396+ JS_SetPropertyFunctionList(ctx, val, e->u.prop_list.tab, e->u.prop_list.len);
34397+ break;
3438434398 default:
3438534399 abort();
3438634400 }
@@ -37357,7 +37371,8 @@ static int64_t JS_FlattenIntoArray(JSContext *ctx, JSValueConst target, · 2970 unmodified lines
3735737371 JS_ThrowTypeError(ctx, "Array too long");
3735837372 goto fail;
3735937373 }
37360− if (JS_SetPropertyInt64(ctx, target, targetIndex, element) < 0)
37374+ if (JS_DefinePropertyValueInt64(ctx, target, targetIndex, element,
37375+ JS_PROP_C_W_E | JS_PROP_THROW) < 0)
3736137376 return -1;
3736237377 targetIndex++;
3736337378 }
@@ -37754,7 +37769,6 @@ static const JSCFunctionListEntry js_array_proto_funcs[] = { · 390 unmodified lines
3775437769 JS_CFUNC_DEF("copyWithin", 2, js_array_copyWithin ),
3775537770 JS_CFUNC_MAGIC_DEF("flatMap", 1, js_array_flatten, 1 ),
3775637771 JS_CFUNC_MAGIC_DEF("flat", 0, js_array_flatten, 0 ),
37757− JS_CFUNC_MAGIC_DEF("flatten", 0, js_array_flatten, 0 ),
3775837772 JS_CFUNC_MAGIC_DEF("values", 0, js_create_array_iterator, JS_ITERATOR_KIND_VALUE ),
3775937773 JS_ALIAS_DEF("[Symbol.iterator]", "values" ),
3776037774 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, · 2157 unmodified lines
3991839932 if (JS_ToFloat64(ctx, &b, argv[1]))
3991939933 return JS_EXCEPTION;
3992039934 r = hypot(a, b);
39921− } else {
39935+ } else if (argc == 0) {
3992239936 r = 0;
39937+ } else {
39938+ double *tab, a_max;
39939+ tab = js_malloc(ctx, sizeof(tab[0]) * argc);
39940+ if (!tab)
39941+ return JS_EXCEPTION;
39942+ /* avoid overflow by taking the maximum */
39943+ a_max = 0;
3992339944 for(i = 0; i < argc; i++) {
39924− if (JS_ToFloat64(ctx, &a, argv[i]))
39945+ if (JS_ToFloat64(ctx, &a, argv[i])) {
39946+ js_free(ctx, tab);
3992539947 return JS_EXCEPTION;
39926− r += a;
39948+ }
39949+ a = fabs(a);
39950+ tab[i] = a;
39951+ if (a > a_max)
39952+ a_max = a;
39953+ }
39954+ if (a_max == 0 || !isfinite(a_max)) {
39955+ r = a_max;
39956+ } else {
39957+ r = 0;
39958+ for(i = 0; i < argc; i++) {
39959+ a = tab[i] / a_max;
39960+ r += a * a;
39961+ }
39962+ r = a_max * sqrt(r);
3992739963 }
39928− r = sqrt(r);
39964+ js_free(ctx, tab);
3992939965 }
3993039966 return JS_NewFloat64(ctx, r);
3993139967 }
@@ -45234,10 +45270,10 @@ static JSValue js_promise_then_finally_func(JSContext *ctx, JSValueConst this_va · 5302 unmodified lines
4523445270 }
4523545271 JS_FreeValue(ctx, ret);
4523645272 if (magic == 0) {
45237− then_func = JS_NewCFunctionData(ctx, js_promise_finally_value_thunk, 1,
45273+ then_func = JS_NewCFunctionData(ctx, js_promise_finally_value_thunk, 0,
4523845274 0, 1, argv);
4523945275 } else {
45240− then_func = JS_NewCFunctionData(ctx, js_promise_finally_thrower, 1,
45276+ then_func = JS_NewCFunctionData(ctx, js_promise_finally_thrower, 0,
4524145277 0, 1, argv);
4524245278 }
4524345279 if (JS_IsException(then_func)) {
@@ -50037,7 +50073,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 4793 unmodified lines
5003750073 int argc, JSValueConst *argv, int special)
5003850074 {
5003950075 JSObject *p;
50040− int len, tag, is_int, is_big, k, stop, inc, res = -1;
50076+ int len, tag, is_int, is_bigint, k, stop, inc, res = -1;
5004150077 int64_t v64;
5004250078 double d;
5004350079 float f;
@@ -50080,7 +50116,11 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 36 unmodified lines
5008050116 inc = 1;
5008150117 }
5008250118
50083− is_big = 0;
50119+ if (validate_typed_array(ctx, this_val))
50120+ goto exception;
50121+ p = JS_VALUE_GET_OBJ(this_val);
50122+
50123+ is_bigint = 0;
5008450124 is_int = 0; /* avoid warning */
5008550125 v64 = 0; /* avoid warning */
5008650126 tag = JS_VALUE_GET_NORM_TAG(argv[0]);
@@ -50095,10 +50135,20 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 8 unmodified lines
5009550135 is_int = (v64 == d);
5009650136 } else
5009750137 #ifdef CONFIG_BIGNUM
50098− if (tag == JS_TAG_BIG_INT || tag == JS_TAG_BIG_FLOAT) {
50099− /* will a generic loop for bigint and bigfloat */
50100− /* XXX: should use the generic loop in math_mode? */
50101− is_big = 1;
50138+ if (tag == JS_TAG_BIG_INT) {
50139+ JSBigFloat *p1 = JS_VALUE_GET_PTR(argv[0]);
50140+
50141+ if (p->class_id == JS_CLASS_BIG_INT64_ARRAY) {
50142+ if (bf_get_int64(&v64, &p1->num, 0) != 0)
50143+ goto done;
50144+ } else if (p->class_id == JS_CLASS_BIG_UINT64_ARRAY) {
50145+ if (bf_get_uint64((uint64_t *)&v64, &p1->num) != 0)
50146+ goto done;
50147+ } else {
50148+ goto done;
50149+ }
50150+ d = 0;
50151+ is_bigint = 1;
5010250152 } else
5010350153 #endif
5010450154 {
@@ -50172,7 +50222,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 67 unmodified lines
5017250222 }
5017350223 break;
5017450224 case JS_CLASS_FLOAT32_ARRAY:
50175− if (is_big)
50225+ if (is_bigint)
5017650226 break;
5017750227 if (isnan(d)) {
5017850228 const float *pv = p->u.array.u.float_ptr;
@@ -50196,7 +50246,7 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 17 unmodified lines
5019650246 }
5019750247 break;
5019850248 case JS_CLASS_FLOAT64_ARRAY:
50199− if (is_big)
50249+ if (is_bigint)
5020050250 break;
5020150251 if (isnan(d)) {
5020250252 const double *pv = p->u.array.u.double_ptr;
@@ -50221,20 +50271,22 @@ static JSValue js_typed_array_indexOf(JSContext *ctx, JSValueConst this_val, · 18 unmodified lines
5022150271 break;
5022250272 #ifdef CONFIG_BIGNUM
5022350273 case JS_CLASS_BIG_INT64_ARRAY:
50274+ if (is_bigint || (is_math_mode(ctx) && is_int &&
50275+ v64 >= -MAX_SAFE_INTEGER &&
50276+ v64 <= MAX_SAFE_INTEGER)) {
50277+ goto scan64;
50278+ }
50279+ break;
5022450280 case JS_CLASS_BIG_UINT64_ARRAY:
50225− if (is_big || is_strict_mode(ctx)) {
50226− /* generic loop for bignums, argv[0] is a bignum != NaN */
50227− /* XXX: optimize with explicit values */
50281+ if (is_bigint || (is_math_mode(ctx) && is_int &&
50282+ v64 >= 0 && v64 <= MAX_SAFE_INTEGER)) {
50283+ const uint64_t *pv;
50284+ uint64_t v;
50285+ scan64:
50286+ pv = p->u.array.u.uint64_ptr;
50287+ v = v64;
5022850288 for (; k != stop; k += inc) {
50229− JSValue v = JS_GetPropertyUint32(ctx, this_val, k);
50230− int ret;
50231− if (JS_IsException(v))
50232− goto exception;
50233− ret = js_same_value_zero(ctx, v, argv[0]);
50234− JS_FreeValue(ctx, v);
50235− if (ret) {
50236− if (ret < 0)
50237− goto exception;
50289+ if (pv[k] == v) {
5023850290 res = k;
5023950291 break;
5024050292 }
quickjs.h+27−1
@@ -335,6 +335,8 @@ void JS_SetMemoryLimit(JSRuntime *rt, size_t limit); · 334 unmodified lines
335335 void JS_SetGCThreshold(JSRuntime *rt, size_t gc_threshold);
336336 JSRuntime *JS_NewRuntime2(const JSMallocFunctions *mf, void *opaque);
337337 void JS_FreeRuntime(JSRuntime *rt);
338+void *JS_GetRuntimeOpaque(JSRuntime *rt);
339+void JS_SetRuntimeOpaque(JSRuntime *rt, void *opaque);
338340 typedef void JS_MarkFunc(JSRuntime *rt, JSGCObjectHeader *gp);
339341 void JS_MarkValue(JSRuntime *rt, JSValueConst val, JS_MarkFunc *mark_func);
340342 void JS_RunGC(JSRuntime *rt);
@@ -508,7 +510,28 @@ static js_force_inline JSValue JS_NewCatchOffset(JSContext *ctx, int32_t val) · 167 unmodified lines
508510 return JS_MKVAL(JS_TAG_CATCH_OFFSET, val);
509511 }
510512
511−JSValue JS_NewInt64(JSContext *ctx, int64_t v);
513+static js_force_inline JSValue JS_NewInt64(JSContext *ctx, int64_t val)
514+{
515+ JSValue v;
516+ if (val == (int32_t)val) {
517+ v = JS_NewInt32(ctx, val);
518+ } else {
519+ v = __JS_NewFloat64(ctx, val);
520+ }
521+ return v;
522+}
523+
524+static js_force_inline JSValue JS_NewUint32(JSContext *ctx, uint32_t val)
525+{
526+ JSValue v;
527+ if (val <= 0x7fffffff) {
528+ v = JS_NewInt32(ctx, val);
529+ } else {
530+ v = __JS_NewFloat64(ctx, val);
531+ }
532+ return v;
533+}
534+
512535 JSValue JS_NewBigInt64(JSContext *ctx, int64_t v);
513536 JSValue JS_NewBigUint64(JSContext *ctx, uint64_t v);
514537
@@ -657,7 +680,10 @@ static int inline JS_ToUint32(JSContext *ctx, uint32_t *pres, JSValueConst val) · 142 unmodified lines
657680 int JS_ToInt64(JSContext *ctx, int64_t *pres, JSValueConst val);
658681 int JS_ToIndex(JSContext *ctx, uint64_t *plen, JSValueConst val);
659682 int JS_ToFloat64(JSContext *ctx, double *pres, JSValueConst val);
683+/* return an exception if 'val' is a Number */
660684 int JS_ToBigInt64(JSContext *ctx, int64_t *pres, JSValueConst val);
685+/* same as JS_ToInt64() but allow BigInt */
686+int JS_ToInt64Ext(JSContext *ctx, int64_t *pres, JSValueConst val);
661687
662688 JSValue JS_NewStringLen(JSContext *ctx, const char *str1, size_t len1);
663689 JSValue JS_NewString(JSContext *ctx, const char *str);
release.sh+15−6
@@ -50,21 +50,30 @@ fi · 49 unmodified lines
5050
5151 if [ "$binary" = "yes" ] ; then
5252
53+make -j4 qjs run-test262
54+make -j4 CONFIG_M32=y qjs32 run-test262-32
55+strip qjs run-test262 qjs32 run-test262-32
56+
5357 d="quickjs-linux-x86_64-${version}"
54−name="quickjs-linux-x86_64-${version}"
5558 outdir="/tmp/${d}"
5659
5760 rm -rf $outdir
5861 mkdir -p $outdir
5962
60−files="qjs run-test262"
63+cp qjs run-test262 $outdir
64+
65+( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
66+
67+d="quickjs-linux-i686-${version}"
68+outdir="/tmp/${d}"
6169
62−make -j4 $files
70+rm -rf $outdir
71+mkdir -p $outdir
6372
64−strip $files
65−cp $files $outdir
73+cp qjs32 $outdir/qjs
74+cp run-test262-32 $outdir/run-test262
6675
67−( cd /tmp/$d && rm -f ../${name}.zip && zip -r ../${name}.zip . )
76+( cd /tmp/$d && rm -f ../${d}.zip && zip -r ../${d}.zip . )
6877
6978 fi
7079
run-test262.c+4−1
@@ -385,8 +385,11 @@ static JSValue js_print(JSContext *ctx, JSValueConst this_val, · 384 unmodified lines
385385 str = JS_ToCString(ctx, argv[i]);
386386 if (!str)
387387 return JS_EXCEPTION;
388− if (!strcmp(str, "Test262:AsyncTestComplete"))
388+ if (!strcmp(str, "Test262:AsyncTestComplete")) {
389389 async_done++;
390+ } else if (strstart(str, "Test262:AsyncTestFailure", NULL)) {
391+ async_done = 2; /* force an error */
392+ }
390393 fputs(str, outfile);
391394 JS_FreeCString(ctx, str);
392395 }
test262.conf+1−0
@@ -87,6 +87,7 @@ destructuring-binding · 86 unmodified lines
8787 dynamic-import
8888 export-star-as-namespace-from-module
8989 FinalizationGroup=skip
90+FinalizationRegistry=skip
9091 Float32Array
9192 Float64Array
9293 for-in-order
test262_errors.txt+7−2
@@ -1,17 +1,22 @@
11 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
2+test262/test/language/expressions/async-arrow-function/eval-var-scope-syntax-err.js:49: TypeError: $DONE() not called
3+test262/test/language/expressions/async-function/named-eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called
4+test262/test/language/expressions/async-function/nameless-eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called
25 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
36 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
4−test262/test/language/expressions/class/super-evaluation-order.js:26: Test262Error: via ArgumentListEvaluation Expected SameValue(«0», «123») to be true
5−test262/test/language/expressions/class/super-evaluation-order.js:26: strict mode: Test262Error: via ArgumentListEvaluation Expected SameValue(«0», «123») to be true
67 test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: TypeError: $DONE() not called
78 test262/test/language/expressions/dynamic-import/usage-from-eval.js:26: strict mode: TypeError: $DONE() not called
89 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
910 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
1011 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
12+test262/test/language/expressions/object/method-definition/async-meth-eval-var-scope-syntax-err.js:36: TypeError: $DONE() not called
1113 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
1214 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
1315 test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:21: TypeError: value has no property
1416 test262/test/language/expressions/optional-chaining/optional-call-preserves-this.js:15: strict mode: TypeError: value has no property
17+test262/test/language/statements/async-function/eval-var-scope-syntax-err.js:33: TypeError: $DONE() not called
1518 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
19+test262/test/language/statements/for-await-of/async-gen-decl-dstr-array-elem-iter-rtrn-close-null.js:81: TypeError: $DONE() not called
20+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
1621 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
1722 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
tests/microbench.js+2−4
@@ -917,11 +917,9 @@ function load_result(filename) · 916 unmodified lines
917917 var f, str, res;
918918 if (typeof std === "undefined")
919919 return null;
920− try {
921− f = std.open(filename, "r");
922− } catch(e) {
920+ f = std.open(filename, "r");
921+ if (!f)
923922 return null;
924− }
925923 str = f.readAsString();
926924 res = JSON.parse(str);
927925 f.close();
tests/test_builtin.js+4−0
@@ -501,6 +501,10 @@ function test_regexp() · 500 unmodified lines
501501 a = eval("/\0a/");
502502 assert(a.toString(), "/\0a/");
503503 assert(a.exec("\0a")[0], "\0a");
504+
505+ assert(/{1a}/.toString(), "/{1a}/");
506+ a = /a{1+/.exec("a{11");
507+ assert(a, ["a{11"] );
504508 }
505509
506510 function test_symbol()
tests/test_std.js+10−1
@@ -106,6 +106,9 @@ function test_popen() · 105 unmodified lines
106106 f.puts(content);
107107 f.close();
108108
109+ /* test loadFile */
110+ assert(std.loadFile(fname), content);
111+
109112 /* execute the 'cat' shell command */
110113 f = std.popen("cat " + fname, "r");
111114 str = f.readAsString();
@@ -142,13 +145,19 @@ function test_os() · 30 unmodified lines
142145 buf[i] = i;
143146 assert(os.write(fd, buf.buffer, 0, buf.length) === buf.length);
144147
145− assert(os.seek(fd, 0, os.SEEK_SET) === 0);
148+ assert(os.seek(fd, 0, std.SEEK_SET) === 0);
146149 buf2 = new Uint8Array(buf.length);
147150 assert(os.read(fd, buf2.buffer, 0, buf2.length) === buf2.length);
148151
149152 for(i = 0; i < buf.length; i++)
150153 assert(buf[i] == buf2[i]);
151154
155+ if (typeof BigInt !== "undefined") {
156+ assert(os.seek(fd, BigInt(6), std.SEEK_SET), BigInt(6));
157+ assert(os.read(fd, buf2.buffer, 0, 1) === 1);
158+ assert(buf[6] == buf2[0]);
159+ }
160+
152161 assert(os.close(fd) === 0);
153162
154163 [files, err] = os.readdir(fdir);
unicode_download.sh+6−6
@@ -1,8 +1,8 @@
11 #!/bin/sh
22 set -e
33
4−url="ftp://ftp.unicode.org/Public/12.1.0/ucd"
5−emoji_url="ftp://ftp.unicode.org/Public/emoji/12.0/emoji-data.txt"
4+url="ftp://ftp.unicode.org/Public/13.0.0/ucd"
5+emoji_url="${url}/emoji/emoji-data.txt"
66
77 files="CaseFolding.txt DerivedNormalizationProps.txt PropList.txt \
88 SpecialCasing.txt CompositionExclusions.txt ScriptExtensions.txt \
@@ -11,9 +11,9 @@ PropertyValueAliases.txt" · 2 unmodified lines
1111
1212 mkdir -p unicode
1313
14−for f in $files; do
15− g="${url}/${f}"
16− wget $g -O unicode/$f
17−done
14+#for f in $files; do
15+# g="${url}/${f}"
16+# wget $g -O unicode/$f
17+#done
1818
1919 wget $emoji_url -O unicode/emoji-data.txt
unicode_gen_def.h+9−5
@@ -66,6 +66,7 @@ DEF(Caucasian_Albanian, "Aghb") · 65 unmodified lines
6666 DEF(Chakma, "Cakm")
6767 DEF(Cham, "Cham")
6868 DEF(Cherokee, "Cher")
69+DEF(Chorasmian, "Chrs")
6970 DEF(Common, "Zyyy")
7071 DEF(Coptic, "Copt,Qaac")
7172 DEF(Cuneiform, "Xsux")
@@ -73,6 +74,7 @@ DEF(Cypriot, "Cprt") · 1 unmodified line
7374 DEF(Cyrillic, "Cyrl")
7475 DEF(Deseret, "Dsrt")
7576 DEF(Devanagari, "Deva")
77+DEF(Dives_Akuru, "Diak")
7678 DEF(Dogra, "Dogr")
7779 DEF(Duployan, "Dupl")
7880 DEF(Egyptian_Hieroglyphs, "Egyp")
@@ -106,6 +108,7 @@ DEF(Kayah_Li, "Kali") · 27 unmodified lines
106108 DEF(Kharoshthi, "Khar")
107109 DEF(Khmer, "Khmr")
108110 DEF(Khojki, "Khoj")
111+DEF(Khitan_Small_Script, "Kits")
109112 DEF(Khudawadi, "Sind")
110113 DEF(Lao, "Laoo")
111114 DEF(Latin, "Latn")
@@ -193,6 +196,7 @@ DEF(Ugaritic, "Ugar") · 81 unmodified lines
193196 DEF(Vai, "Vaii")
194197 DEF(Wancho, "Wcho")
195198 DEF(Warang_Citi, "Wara")
199+DEF(Yezidi, "Yezi")
196200 DEF(Yi, "Yiii")
197201 DEF(Zanabazar_Square, "Zanb")
198202 #endif
@@ -244,11 +248,11 @@ DEF(Variation_Selector, "VS") · 45 unmodified lines
244248 DEF(White_Space, "space")
245249 DEF(Bidi_Mirrored, "Bidi_M")
246250 DEF(Emoji, "")
247−DEF(Emoji_Component, "")
248−DEF(Emoji_Modifier, "")
249−DEF(Emoji_Modifier_Base, "")
250−DEF(Emoji_Presentation, "")
251−DEF(Extended_Pictographic, "")
251+DEF(Emoji_Component, "EComp")
252+DEF(Emoji_Modifier, "EMod")
253+DEF(Emoji_Modifier_Base, "EBase")
254+DEF(Emoji_Presentation, "EPres")
255+DEF(Extended_Pictographic, "ExtPict")
252256 DEF(Default_Ignorable_Code_Point, "DI")
253257 DEF(ID_Start, "IDS")
254258 DEF(Case_Ignorable, "CI")

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t