diff options
-rw-r--r-- | generic/regc_locale.c | 6164 | ||||
-rw-r--r-- | generic/tclBinary.c | 6 | ||||
-rw-r--r-- | generic/tclCmdIL.c | 41 | ||||
-rw-r--r-- | generic/tclCompExpr.c | 4 | ||||
-rw-r--r-- | generic/tclEncoding.c | 4 | ||||
-rw-r--r-- | generic/tclInt.h | 6 | ||||
-rw-r--r-- | generic/tclLoad.c | 2 | ||||
-rw-r--r-- | generic/tclParse.c | 4 | ||||
-rw-r--r-- | generic/tclPkg.c | 1 | ||||
-rw-r--r-- | generic/tclScan.c | 66 | ||||
-rw-r--r-- | generic/tclStringObj.c | 26 | ||||
-rw-r--r-- | generic/tclUniData.c | 1226 | ||||
-rw-r--r-- | library/http/http.tcl | 2 | ||||
-rw-r--r-- | tests/encoding.test | 14 | ||||
-rw-r--r-- | tests/http.test | 2 | ||||
-rw-r--r-- | tests/unixInit.test | 17 | ||||
-rw-r--r-- | unix/Makefile.in | 16 | ||||
-rwxr-xr-x | unix/configure | 248 | ||||
-rw-r--r-- | unix/configure.ac | 31 | ||||
-rw-r--r-- | unix/tcl.m4 | 159 | ||||
-rw-r--r-- | unix/tclEpollNotfy.c | 804 | ||||
-rw-r--r-- | unix/tclKqueueNotfy.c | 842 | ||||
-rw-r--r-- | unix/tclSelectNotfy.c | 1117 | ||||
-rw-r--r-- | unix/tclUnixChan.c | 160 | ||||
-rw-r--r-- | unix/tclUnixNotfy.c | 1294 | ||||
-rw-r--r-- | unix/tclUnixTest.c | 45 | ||||
-rw-r--r-- | win/tclWinPipe.c | 2 |
27 files changed, 9766 insertions, 2537 deletions
diff --git a/generic/regc_locale.c b/generic/regc_locale.c index ab3b7f1..f0e8439 100644 --- a/generic/regc_locale.c +++ b/generic/regc_locale.c @@ -140,106 +140,1106 @@ static const crange alphaRangeTable[] = { {0x3f7, 0x481}, {0x48a, 0x52f}, {0x531, 0x556}, {0x561, 0x587}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x620, 0x64a}, {0x671, 0x6d3}, {0x6fa, 0x6fc}, {0x712, 0x72f}, {0x74d, 0x7a5}, {0x7ca, 0x7ea}, - {0x800, 0x815}, {0x840, 0x858}, {0x8a0, 0x8b4}, {0x8b6, 0x8bd}, - {0x904, 0x939}, {0x958, 0x961}, {0x971, 0x980}, {0x985, 0x98c}, - {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b6, 0x9b9}, {0x9df, 0x9e1}, - {0xa05, 0xa0a}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa59, 0xa5c}, - {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, - {0xaaa, 0xab0}, {0xab5, 0xab9}, {0xb05, 0xb0c}, {0xb13, 0xb28}, - {0xb2a, 0xb30}, {0xb35, 0xb39}, {0xb5f, 0xb61}, {0xb85, 0xb8a}, - {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xba8, 0xbaa}, {0xbae, 0xbb9}, - {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc39}, - {0xc58, 0xc5a}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, - {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, - {0xd12, 0xd3a}, {0xd54, 0xd56}, {0xd5f, 0xd61}, {0xd7a, 0xd7f}, - {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdc0, 0xdc6}, - {0xe01, 0xe30}, {0xe40, 0xe46}, {0xe94, 0xe97}, {0xe99, 0xe9f}, - {0xea1, 0xea3}, {0xead, 0xeb0}, {0xec0, 0xec4}, {0xedc, 0xedf}, - {0xf40, 0xf47}, {0xf49, 0xf6c}, {0xf88, 0xf8c}, {0x1000, 0x102a}, - {0x1050, 0x1055}, {0x105a, 0x105d}, {0x106e, 0x1070}, {0x1075, 0x1081}, - {0x10a0, 0x10c5}, {0x10d0, 0x10fa}, {0x10fc, 0x1248}, {0x124a, 0x124d}, - {0x1250, 0x1256}, {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, - {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c2, 0x12c5}, - {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, - {0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1401, 0x166c}, - {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, {0x16f1, 0x16f8}, - {0x1700, 0x170c}, {0x170e, 0x1711}, {0x1720, 0x1731}, {0x1740, 0x1751}, - {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3}, {0x1820, 0x1877}, - {0x1880, 0x1884}, {0x1887, 0x18a8}, {0x18b0, 0x18f5}, {0x1900, 0x191e}, - {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, - {0x1a00, 0x1a16}, {0x1a20, 0x1a54}, {0x1b05, 0x1b33}, {0x1b45, 0x1b4b}, - {0x1b83, 0x1ba0}, {0x1bba, 0x1be5}, {0x1c00, 0x1c23}, {0x1c4d, 0x1c4f}, - {0x1c5a, 0x1c7d}, {0x1c80, 0x1c88}, {0x1ce9, 0x1cec}, {0x1cee, 0x1cf1}, - {0x1d00, 0x1dbf}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, - {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, - {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3}, - {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc}, - {0x2090, 0x209c}, {0x210a, 0x2113}, {0x2119, 0x211d}, {0x212a, 0x212d}, - {0x212f, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149}, {0x2c00, 0x2c2e}, - {0x2c30, 0x2c5e}, {0x2c60, 0x2ce4}, {0x2ceb, 0x2cee}, {0x2d00, 0x2d25}, - {0x2d30, 0x2d67}, {0x2d80, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, - {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, {0x2dc8, 0x2dce}, - {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x3031, 0x3035}, {0x3041, 0x3096}, - {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, {0x3105, 0x312d}, - {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff}, {0x3400, 0x4db5}, - {0x4e00, 0x9fd5}, {0xa000, 0xa48c}, {0xa4d0, 0xa4fd}, {0xa500, 0xa60c}, - {0xa610, 0xa61f}, {0xa640, 0xa66e}, {0xa67f, 0xa69d}, {0xa6a0, 0xa6e5}, - {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7ae}, {0xa7b0, 0xa7b7}, - {0xa7f7, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, {0xa80c, 0xa822}, - {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7}, {0xa90a, 0xa925}, - {0xa930, 0xa946}, {0xa960, 0xa97c}, {0xa984, 0xa9b2}, {0xa9e0, 0xa9e4}, - {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28}, {0xaa40, 0xaa42}, - {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7e, 0xaaaf}, {0xaab9, 0xaabd}, - {0xaadb, 0xaadd}, {0xaae0, 0xaaea}, {0xaaf2, 0xaaf4}, {0xab01, 0xab06}, - {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, - {0xab30, 0xab5a}, {0xab5c, 0xab65}, {0xab70, 0xabe2}, {0xac00, 0xd7a3}, - {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xdc00, 0xdc3e}, {0xdc40, 0xdc7e}, - {0xdc80, 0xdcbe}, {0xdcc0, 0xdcfe}, {0xdd00, 0xdd3e}, {0xdd40, 0xdd7e}, - {0xdd80, 0xddbe}, {0xddc0, 0xddfe}, {0xde00, 0xde3e}, {0xde40, 0xde7e}, - {0xde80, 0xdebe}, {0xdec0, 0xdefe}, {0xdf00, 0xdf3e}, {0xdf40, 0xdf7e}, - {0xdf80, 0xdfbe}, {0xdfc0, 0xdffe}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, - {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1f, 0xfb28}, {0xfb2a, 0xfb36}, - {0xfb38, 0xfb3c}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, {0xfd50, 0xfd8f}, - {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, {0xfe76, 0xfefc}, - {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, {0xffc2, 0xffc7}, - {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} + {0x800, 0x815}, {0x840, 0x858}, {0x860, 0x86a}, {0x8a0, 0x8b4}, + {0x8b6, 0x8bd}, {0x904, 0x939}, {0x958, 0x961}, {0x971, 0x980}, + {0x985, 0x98c}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b6, 0x9b9}, + {0x9df, 0x9e1}, {0xa05, 0xa0a}, {0xa13, 0xa28}, {0xa2a, 0xa30}, + {0xa59, 0xa5c}, {0xa72, 0xa74}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, + {0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab5, 0xab9}, {0xb05, 0xb0c}, + {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb35, 0xb39}, {0xb5f, 0xb61}, + {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xba8, 0xbaa}, + {0xbae, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, + {0xc2a, 0xc39}, {0xc58, 0xc5a}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, + {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xd05, 0xd0c}, + {0xd0e, 0xd10}, {0xd12, 0xd3a}, {0xd54, 0xd56}, {0xd5f, 0xd61}, + {0xd7a, 0xd7f}, {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, + {0xdc0, 0xdc6}, {0xe01, 0xe30}, {0xe40, 0xe46}, {0xe94, 0xe97}, + {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xead, 0xeb0}, {0xec0, 0xec4}, + {0xedc, 0xedf}, {0xf40, 0xf47}, {0xf49, 0xf6c}, {0xf88, 0xf8c}, + {0x1000, 0x102a}, {0x1050, 0x1055}, {0x105a, 0x105d}, {0x106e, 0x1070}, + {0x1075, 0x1081}, {0x10a0, 0x10c5}, {0x10d0, 0x10fa}, {0x10fc, 0x1248}, + {0x124a, 0x124d}, {0x1250, 0x1256}, {0x125a, 0x125d}, {0x1260, 0x1288}, + {0x128a, 0x128d}, {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be}, + {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, + {0x1318, 0x135a}, {0x1380, 0x138f}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, + {0x1401, 0x166c}, {0x166f, 0x167f}, {0x1681, 0x169a}, {0x16a0, 0x16ea}, + {0x16f1, 0x16f8}, {0x1700, 0x170c}, {0x170e, 0x1711}, {0x1720, 0x1731}, + {0x1740, 0x1751}, {0x1760, 0x176c}, {0x176e, 0x1770}, {0x1780, 0x17b3}, + {0x1820, 0x1877}, {0x1880, 0x1884}, {0x1887, 0x18a8}, {0x18b0, 0x18f5}, + {0x1900, 0x191e}, {0x1950, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, + {0x19b0, 0x19c9}, {0x1a00, 0x1a16}, {0x1a20, 0x1a54}, {0x1b05, 0x1b33}, + {0x1b45, 0x1b4b}, {0x1b83, 0x1ba0}, {0x1bba, 0x1be5}, {0x1c00, 0x1c23}, + {0x1c4d, 0x1c4f}, {0x1c5a, 0x1c7d}, {0x1c80, 0x1c88}, {0x1ce9, 0x1cec}, + {0x1cee, 0x1cf1}, {0x1d00, 0x1dbf}, {0x1e00, 0x1f15}, {0x1f18, 0x1f1d}, + {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, + {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, + {0x1fd0, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, + {0x1ff6, 0x1ffc}, {0x2090, 0x209c}, {0x210a, 0x2113}, {0x2119, 0x211d}, + {0x212a, 0x212d}, {0x212f, 0x2139}, {0x213c, 0x213f}, {0x2145, 0x2149}, + {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2ce4}, {0x2ceb, 0x2cee}, + {0x2d00, 0x2d25}, {0x2d30, 0x2d67}, {0x2d80, 0x2d96}, {0x2da0, 0x2da6}, + {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, + {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x3031, 0x3035}, + {0x3041, 0x3096}, {0x309d, 0x309f}, {0x30a1, 0x30fa}, {0x30fc, 0x30ff}, + {0x3105, 0x312e}, {0x3131, 0x318e}, {0x31a0, 0x31ba}, {0x31f0, 0x31ff}, + {0x3400, 0x4db5}, {0x4e00, 0x9fea}, {0xa000, 0xa48c}, {0xa4d0, 0xa4fd}, + {0xa500, 0xa60c}, {0xa610, 0xa61f}, {0xa640, 0xa66e}, {0xa67f, 0xa69d}, + {0xa6a0, 0xa6e5}, {0xa717, 0xa71f}, {0xa722, 0xa788}, {0xa78b, 0xa7ae}, + {0xa7b0, 0xa7b7}, {0xa7f7, 0xa801}, {0xa803, 0xa805}, {0xa807, 0xa80a}, + {0xa80c, 0xa822}, {0xa840, 0xa873}, {0xa882, 0xa8b3}, {0xa8f2, 0xa8f7}, + {0xa90a, 0xa925}, {0xa930, 0xa946}, {0xa960, 0xa97c}, {0xa984, 0xa9b2}, + {0xa9e0, 0xa9e4}, {0xa9e6, 0xa9ef}, {0xa9fa, 0xa9fe}, {0xaa00, 0xaa28}, + {0xaa40, 0xaa42}, {0xaa44, 0xaa4b}, {0xaa60, 0xaa76}, {0xaa7e, 0xaaaf}, + {0xaab9, 0xaabd}, {0xaadb, 0xaadd}, {0xaae0, 0xaaea}, {0xaaf2, 0xaaf4}, + {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, + {0xab28, 0xab2e}, {0xab30, 0xab5a}, {0xab5c, 0xab65}, {0xab70, 0xabe2}, + {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, {0xf900, 0xfa6d}, + {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1f, 0xfb28}, + {0xfb2a, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb46, 0xfbb1}, {0xfbd3, 0xfd3d}, + {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfb}, {0xfe70, 0xfe74}, + {0xfe76, 0xfefc}, {0xff21, 0xff3a}, {0xff41, 0xff5a}, {0xff66, 0xffbe}, + {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc} #if TCL_UTF_MAX > 4 - ,{0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003f, 0x1004d}, - {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10280, 0x1029c}, {0x102a0, 0x102d0}, - {0x10300, 0x1031f}, {0x10330, 0x10340}, {0x10342, 0x10349}, {0x10350, 0x10375}, - {0x10380, 0x1039d}, {0x103a0, 0x103c3}, {0x103c8, 0x103cf}, {0x10400, 0x1049d}, - {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, {0x10500, 0x10527}, {0x10530, 0x10563}, - {0x10600, 0x10736}, {0x10740, 0x10755}, {0x10760, 0x10767}, {0x10800, 0x10805}, - {0x1080a, 0x10835}, {0x1083f, 0x10855}, {0x10860, 0x10876}, {0x10880, 0x1089e}, - {0x108e0, 0x108f2}, {0x10900, 0x10915}, {0x10920, 0x10939}, {0x10980, 0x109b7}, - {0x10a10, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a33}, {0x10a60, 0x10a7c}, - {0x10a80, 0x10a9c}, {0x10ac0, 0x10ac7}, {0x10ac9, 0x10ae4}, {0x10b00, 0x10b35}, - {0x10b40, 0x10b55}, {0x10b60, 0x10b72}, {0x10b80, 0x10b91}, {0x10c00, 0x10c48}, - {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x11003, 0x11037}, {0x11083, 0x110af}, - {0x110d0, 0x110e8}, {0x11103, 0x11126}, {0x11150, 0x11172}, {0x11183, 0x111b2}, - {0x111c1, 0x111c4}, {0x11200, 0x11211}, {0x11213, 0x1122b}, {0x11280, 0x11286}, - {0x1128a, 0x1128d}, {0x1128f, 0x1129d}, {0x1129f, 0x112a8}, {0x112b0, 0x112de}, - {0x11305, 0x1130c}, {0x11313, 0x11328}, {0x1132a, 0x11330}, {0x11335, 0x11339}, - {0x1135d, 0x11361}, {0x11400, 0x11434}, {0x11447, 0x1144a}, {0x11480, 0x114af}, - {0x11580, 0x115ae}, {0x115d8, 0x115db}, {0x11600, 0x1162f}, {0x11680, 0x116aa}, - {0x11700, 0x11719}, {0x118a0, 0x118df}, {0x11ac0, 0x11af8}, {0x11c00, 0x11c08}, - {0x11c0a, 0x11c2e}, {0x11c72, 0x11c8f}, {0x12000, 0x12399}, {0x12480, 0x12543}, - {0x13000, 0x1342e}, {0x14400, 0x14646}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, - {0x16ad0, 0x16aed}, {0x16b00, 0x16b2f}, {0x16b40, 0x16b43}, {0x16b63, 0x16b77}, - {0x16b7d, 0x16b8f}, {0x16f00, 0x16f44}, {0x16f93, 0x16f9f}, {0x17000, 0x187ec}, - {0x18800, 0x18af2}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, - {0x1bc90, 0x1bc99}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d4a9, 0x1d4ac}, - {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, - {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, - {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d6c0}, - {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6fa}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d734}, - {0x1d736, 0x1d74e}, {0x1d750, 0x1d76e}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d7a8}, - {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7cb}, {0x1e800, 0x1e8c4}, {0x1e900, 0x1e943}, - {0x1ee00, 0x1ee03}, {0x1ee05, 0x1ee1f}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, - {0x1ee4d, 0x1ee4f}, {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, - {0x1ee79, 0x1ee7c}, {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, - {0x1eea5, 0x1eea9}, {0x1eeab, 0x1eebb}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, - {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2f800, 0x2fa1d} + ,{0x10041, 0x1005a}, {0x10061, 0x1007a}, {0x100c0, 0x100d6}, {0x100d8, 0x100f6}, + {0x100f8, 0x102c1}, {0x102c6, 0x102d1}, {0x102e0, 0x102e4}, {0x10370, 0x10374}, + {0x1037a, 0x1037d}, {0x10388, 0x1038a}, {0x1038e, 0x103a1}, {0x103a3, 0x103f5}, + {0x103f7, 0x10481}, {0x1048a, 0x1052f}, {0x10531, 0x10556}, {0x10561, 0x10587}, + {0x105d0, 0x105ea}, {0x105f0, 0x105f2}, {0x10620, 0x1064a}, {0x10671, 0x106d3}, + {0x106fa, 0x106fc}, {0x10712, 0x1072f}, {0x1074d, 0x107a5}, {0x107ca, 0x107ea}, + {0x10800, 0x10815}, {0x10840, 0x10858}, {0x10860, 0x1086a}, {0x108a0, 0x108b4}, + {0x108b6, 0x108bd}, {0x10904, 0x10939}, {0x10958, 0x10961}, {0x10971, 0x10980}, + {0x10985, 0x1098c}, {0x10993, 0x109a8}, {0x109aa, 0x109b0}, {0x109b6, 0x109b9}, + {0x109df, 0x109e1}, {0x10a05, 0x10a0a}, {0x10a13, 0x10a28}, {0x10a2a, 0x10a30}, + {0x10a59, 0x10a5c}, {0x10a72, 0x10a74}, {0x10a85, 0x10a8d}, {0x10a8f, 0x10a91}, + {0x10a93, 0x10aa8}, {0x10aaa, 0x10ab0}, {0x10ab5, 0x10ab9}, {0x10b05, 0x10b0c}, + {0x10b13, 0x10b28}, {0x10b2a, 0x10b30}, {0x10b35, 0x10b39}, {0x10b5f, 0x10b61}, + {0x10b85, 0x10b8a}, {0x10b8e, 0x10b90}, {0x10b92, 0x10b95}, {0x10ba8, 0x10baa}, + {0x10bae, 0x10bb9}, {0x10c05, 0x10c0c}, {0x10c0e, 0x10c10}, {0x10c12, 0x10c28}, + {0x10c2a, 0x10c39}, {0x10c58, 0x10c5a}, {0x10c85, 0x10c8c}, {0x10c8e, 0x10c90}, + {0x10c92, 0x10ca8}, {0x10caa, 0x10cb3}, {0x10cb5, 0x10cb9}, {0x10d05, 0x10d0c}, + {0x10d0e, 0x10d10}, {0x10d12, 0x10d3a}, {0x10d54, 0x10d56}, {0x10d5f, 0x10d61}, + {0x10d7a, 0x10d7f}, {0x10d85, 0x10d96}, {0x10d9a, 0x10db1}, {0x10db3, 0x10dbb}, + {0x10dc0, 0x10dc6}, {0x10e01, 0x10e30}, {0x10e40, 0x10e46}, {0x10e94, 0x10e97}, + {0x10e99, 0x10e9f}, {0x10ea1, 0x10ea3}, {0x10ead, 0x10eb0}, {0x10ec0, 0x10ec4}, + {0x10edc, 0x10edf}, {0x10f40, 0x10f47}, {0x10f49, 0x10f6c}, {0x10f88, 0x10f8c}, + {0x11000, 0x1102a}, {0x11050, 0x11055}, {0x1105a, 0x1105d}, {0x1106e, 0x11070}, + {0x11075, 0x11081}, {0x110a0, 0x110c5}, {0x110d0, 0x110fa}, {0x110fc, 0x11248}, + {0x1124a, 0x1124d}, {0x11250, 0x11256}, {0x1125a, 0x1125d}, {0x11260, 0x11288}, + {0x1128a, 0x1128d}, {0x11290, 0x112b0}, {0x112b2, 0x112b5}, {0x112b8, 0x112be}, + {0x112c2, 0x112c5}, {0x112c8, 0x112d6}, {0x112d8, 0x11310}, {0x11312, 0x11315}, + {0x11318, 0x1135a}, {0x11380, 0x1138f}, {0x113a0, 0x113f5}, {0x113f8, 0x113fd}, + {0x11401, 0x1166c}, {0x1166f, 0x1167f}, {0x11681, 0x1169a}, {0x116a0, 0x116ea}, + {0x116f1, 0x116f8}, {0x11700, 0x1170c}, {0x1170e, 0x11711}, {0x11720, 0x11731}, + {0x11740, 0x11751}, {0x11760, 0x1176c}, {0x1176e, 0x11770}, {0x11780, 0x117b3}, + {0x11820, 0x11877}, {0x11880, 0x11884}, {0x11887, 0x118a8}, {0x118b0, 0x118f5}, + {0x11900, 0x1191e}, {0x11950, 0x1196d}, {0x11970, 0x11974}, {0x11980, 0x119ab}, + {0x119b0, 0x119c9}, {0x11a00, 0x11a16}, {0x11a20, 0x11a54}, {0x11b05, 0x11b33}, + {0x11b45, 0x11b4b}, {0x11b83, 0x11ba0}, {0x11bba, 0x11be5}, {0x11c00, 0x11c23}, + {0x11c4d, 0x11c4f}, {0x11c5a, 0x11c7d}, {0x11c80, 0x11c88}, {0x11ce9, 0x11cec}, + {0x11cee, 0x11cf1}, {0x11d00, 0x11dbf}, {0x11e00, 0x11f15}, {0x11f18, 0x11f1d}, + {0x11f20, 0x11f45}, {0x11f48, 0x11f4d}, {0x11f50, 0x11f57}, {0x11f5f, 0x11f7d}, + {0x11f80, 0x11fb4}, {0x11fb6, 0x11fbc}, {0x11fc2, 0x11fc4}, {0x11fc6, 0x11fcc}, + {0x11fd0, 0x11fd3}, {0x11fd6, 0x11fdb}, {0x11fe0, 0x11fec}, {0x11ff2, 0x11ff4}, + {0x11ff6, 0x11ffc}, {0x12090, 0x1209c}, {0x1210a, 0x12113}, {0x12119, 0x1211d}, + {0x1212a, 0x1212d}, {0x1212f, 0x12139}, {0x1213c, 0x1213f}, {0x12145, 0x12149}, + {0x12c00, 0x12c2e}, {0x12c30, 0x12c5e}, {0x12c60, 0x12ce4}, {0x12ceb, 0x12cee}, + {0x12d00, 0x12d25}, {0x12d30, 0x12d67}, {0x12d80, 0x12d96}, {0x12da0, 0x12da6}, + {0x12da8, 0x12dae}, {0x12db0, 0x12db6}, {0x12db8, 0x12dbe}, {0x12dc0, 0x12dc6}, + {0x12dc8, 0x12dce}, {0x12dd0, 0x12dd6}, {0x12dd8, 0x12dde}, {0x13031, 0x13035}, + {0x13041, 0x13096}, {0x1309d, 0x1309f}, {0x130a1, 0x130fa}, {0x130fc, 0x130ff}, + {0x13105, 0x1312e}, {0x13131, 0x1318e}, {0x131a0, 0x131ba}, {0x131f0, 0x131ff}, + {0x13400, 0x14db5}, {0x14e00, 0x19fea}, {0x1a000, 0x1a48c}, {0x1a4d0, 0x1a4fd}, + {0x1a500, 0x1a60c}, {0x1a610, 0x1a61f}, {0x1a640, 0x1a66e}, {0x1a67f, 0x1a69d}, + {0x1a6a0, 0x1a6e5}, {0x1a717, 0x1a71f}, {0x1a722, 0x1a788}, {0x1a78b, 0x1a7ae}, + {0x1a7b0, 0x1a7b7}, {0x1a7f7, 0x1a801}, {0x1a803, 0x1a805}, {0x1a807, 0x1a80a}, + {0x1a80c, 0x1a822}, {0x1a840, 0x1a873}, {0x1a882, 0x1a8b3}, {0x1a8f2, 0x1a8f7}, + {0x1a90a, 0x1a925}, {0x1a930, 0x1a946}, {0x1a960, 0x1a97c}, {0x1a984, 0x1a9b2}, + {0x1a9e0, 0x1a9e4}, {0x1a9e6, 0x1a9ef}, {0x1a9fa, 0x1a9fe}, {0x1aa00, 0x1aa28}, + {0x1aa40, 0x1aa42}, {0x1aa44, 0x1aa4b}, {0x1aa60, 0x1aa76}, {0x1aa7e, 0x1aaaf}, + {0x1aab9, 0x1aabd}, {0x1aadb, 0x1aadd}, {0x1aae0, 0x1aaea}, {0x1aaf2, 0x1aaf4}, + {0x1ab01, 0x1ab06}, {0x1ab09, 0x1ab0e}, {0x1ab11, 0x1ab16}, {0x1ab20, 0x1ab26}, + {0x1ab28, 0x1ab2e}, {0x1ab30, 0x1ab5a}, {0x1ab5c, 0x1ab65}, {0x1ab70, 0x1abe2}, + {0x1ac00, 0x1d7a3}, {0x1d7b0, 0x1d7c6}, {0x1d7cb, 0x1d7fb}, {0x1f900, 0x1fa6d}, + {0x1fa70, 0x1fad9}, {0x1fb00, 0x1fb06}, {0x1fb13, 0x1fb17}, {0x1fb1f, 0x1fb28}, + {0x1fb2a, 0x1fb36}, {0x1fb38, 0x1fb3c}, {0x1fb46, 0x1fbb1}, {0x1fbd3, 0x1fd3d}, + {0x1fd50, 0x1fd8f}, {0x1fd92, 0x1fdc7}, {0x1fdf0, 0x1fdfb}, {0x1fe70, 0x1fe74}, + {0x1fe76, 0x1fefc}, {0x1ff21, 0x1ff3a}, {0x1ff41, 0x1ff5a}, {0x1ff66, 0x1ffbe}, + {0x1ffc2, 0x1ffc7}, {0x1ffca, 0x1ffcf}, {0x1ffd2, 0x1ffd7}, {0x1ffda, 0x1ffdc}, + {0x20041, 0x2005a}, {0x20061, 0x2007a}, {0x200c0, 0x200d6}, {0x200d8, 0x200f6}, + {0x200f8, 0x202c1}, {0x202c6, 0x202d1}, {0x202e0, 0x202e4}, {0x20370, 0x20374}, + {0x2037a, 0x2037d}, {0x20388, 0x2038a}, {0x2038e, 0x203a1}, {0x203a3, 0x203f5}, + {0x203f7, 0x20481}, {0x2048a, 0x2052f}, {0x20531, 0x20556}, {0x20561, 0x20587}, + {0x205d0, 0x205ea}, {0x205f0, 0x205f2}, {0x20620, 0x2064a}, {0x20671, 0x206d3}, + {0x206fa, 0x206fc}, {0x20712, 0x2072f}, {0x2074d, 0x207a5}, {0x207ca, 0x207ea}, + {0x20800, 0x20815}, {0x20840, 0x20858}, {0x20860, 0x2086a}, {0x208a0, 0x208b4}, + {0x208b6, 0x208bd}, {0x20904, 0x20939}, {0x20958, 0x20961}, {0x20971, 0x20980}, + {0x20985, 0x2098c}, {0x20993, 0x209a8}, {0x209aa, 0x209b0}, {0x209b6, 0x209b9}, + {0x209df, 0x209e1}, {0x20a05, 0x20a0a}, {0x20a13, 0x20a28}, {0x20a2a, 0x20a30}, + {0x20a59, 0x20a5c}, {0x20a72, 0x20a74}, {0x20a85, 0x20a8d}, {0x20a8f, 0x20a91}, + {0x20a93, 0x20aa8}, {0x20aaa, 0x20ab0}, {0x20ab5, 0x20ab9}, {0x20b05, 0x20b0c}, + {0x20b13, 0x20b28}, {0x20b2a, 0x20b30}, {0x20b35, 0x20b39}, {0x20b5f, 0x20b61}, + {0x20b85, 0x20b8a}, {0x20b8e, 0x20b90}, {0x20b92, 0x20b95}, {0x20ba8, 0x20baa}, + {0x20bae, 0x20bb9}, {0x20c05, 0x20c0c}, {0x20c0e, 0x20c10}, {0x20c12, 0x20c28}, + {0x20c2a, 0x20c39}, {0x20c58, 0x20c5a}, {0x20c85, 0x20c8c}, {0x20c8e, 0x20c90}, + {0x20c92, 0x20ca8}, {0x20caa, 0x20cb3}, {0x20cb5, 0x20cb9}, {0x20d05, 0x20d0c}, + {0x20d0e, 0x20d10}, {0x20d12, 0x20d3a}, {0x20d54, 0x20d56}, {0x20d5f, 0x20d61}, + {0x20d7a, 0x20d7f}, {0x20d85, 0x20d96}, {0x20d9a, 0x20db1}, {0x20db3, 0x20dbb}, + {0x20dc0, 0x20dc6}, {0x20e01, 0x20e30}, {0x20e40, 0x20e46}, {0x20e94, 0x20e97}, + {0x20e99, 0x20e9f}, {0x20ea1, 0x20ea3}, {0x20ead, 0x20eb0}, {0x20ec0, 0x20ec4}, + {0x20edc, 0x20edf}, {0x20f40, 0x20f47}, {0x20f49, 0x20f6c}, {0x20f88, 0x20f8c}, + {0x21000, 0x2102a}, {0x21050, 0x21055}, {0x2105a, 0x2105d}, {0x2106e, 0x21070}, + {0x21075, 0x21081}, {0x210a0, 0x210c5}, {0x210d0, 0x210fa}, {0x210fc, 0x21248}, + {0x2124a, 0x2124d}, {0x21250, 0x21256}, {0x2125a, 0x2125d}, {0x21260, 0x21288}, + {0x2128a, 0x2128d}, {0x21290, 0x212b0}, {0x212b2, 0x212b5}, {0x212b8, 0x212be}, + {0x212c2, 0x212c5}, {0x212c8, 0x212d6}, {0x212d8, 0x21310}, {0x21312, 0x21315}, + {0x21318, 0x2135a}, {0x21380, 0x2138f}, {0x213a0, 0x213f5}, {0x213f8, 0x213fd}, + {0x21401, 0x2166c}, {0x2166f, 0x2167f}, {0x21681, 0x2169a}, {0x216a0, 0x216ea}, + {0x216f1, 0x216f8}, {0x21700, 0x2170c}, {0x2170e, 0x21711}, {0x21720, 0x21731}, + {0x21740, 0x21751}, {0x21760, 0x2176c}, {0x2176e, 0x21770}, {0x21780, 0x217b3}, + {0x21820, 0x21877}, {0x21880, 0x21884}, {0x21887, 0x218a8}, {0x218b0, 0x218f5}, + {0x21900, 0x2191e}, {0x21950, 0x2196d}, {0x21970, 0x21974}, {0x21980, 0x219ab}, + {0x219b0, 0x219c9}, {0x21a00, 0x21a16}, {0x21a20, 0x21a54}, {0x21b05, 0x21b33}, + {0x21b45, 0x21b4b}, {0x21b83, 0x21ba0}, {0x21bba, 0x21be5}, {0x21c00, 0x21c23}, + {0x21c4d, 0x21c4f}, {0x21c5a, 0x21c7d}, {0x21c80, 0x21c88}, {0x21ce9, 0x21cec}, + {0x21cee, 0x21cf1}, {0x21d00, 0x21dbf}, {0x21e00, 0x21f15}, {0x21f18, 0x21f1d}, + {0x21f20, 0x21f45}, {0x21f48, 0x21f4d}, {0x21f50, 0x21f57}, {0x21f5f, 0x21f7d}, + {0x21f80, 0x21fb4}, {0x21fb6, 0x21fbc}, {0x21fc2, 0x21fc4}, {0x21fc6, 0x21fcc}, + {0x21fd0, 0x21fd3}, {0x21fd6, 0x21fdb}, {0x21fe0, 0x21fec}, {0x21ff2, 0x21ff4}, + {0x21ff6, 0x21ffc}, {0x22090, 0x2209c}, {0x2210a, 0x22113}, {0x22119, 0x2211d}, + {0x2212a, 0x2212d}, {0x2212f, 0x22139}, {0x2213c, 0x2213f}, {0x22145, 0x22149}, + {0x22c00, 0x22c2e}, {0x22c30, 0x22c5e}, {0x22c60, 0x22ce4}, {0x22ceb, 0x22cee}, + {0x22d00, 0x22d25}, {0x22d30, 0x22d67}, {0x22d80, 0x22d96}, {0x22da0, 0x22da6}, + {0x22da8, 0x22dae}, {0x22db0, 0x22db6}, {0x22db8, 0x22dbe}, {0x22dc0, 0x22dc6}, + {0x22dc8, 0x22dce}, {0x22dd0, 0x22dd6}, {0x22dd8, 0x22dde}, {0x23031, 0x23035}, + {0x23041, 0x23096}, {0x2309d, 0x2309f}, {0x230a1, 0x230fa}, {0x230fc, 0x230ff}, + {0x23105, 0x2312e}, {0x23131, 0x2318e}, {0x231a0, 0x231ba}, {0x231f0, 0x231ff}, + {0x23400, 0x24db5}, {0x24e00, 0x29fea}, {0x2a000, 0x2a48c}, {0x2a4d0, 0x2a4fd}, + {0x2a500, 0x2a60c}, {0x2a610, 0x2a61f}, {0x2a640, 0x2a66e}, {0x2a67f, 0x2a69d}, + {0x2a6a0, 0x2a6e5}, {0x2a717, 0x2a71f}, {0x2a722, 0x2a788}, {0x2a78b, 0x2a7ae}, + {0x2a7b0, 0x2a7b7}, {0x2a7f7, 0x2a801}, {0x2a803, 0x2a805}, {0x2a807, 0x2a80a}, + {0x2a80c, 0x2a822}, {0x2a840, 0x2a873}, {0x2a882, 0x2a8b3}, {0x2a8f2, 0x2a8f7}, + {0x2a90a, 0x2a925}, {0x2a930, 0x2a946}, {0x2a960, 0x2a97c}, {0x2a984, 0x2a9b2}, + {0x2a9e0, 0x2a9e4}, {0x2a9e6, 0x2a9ef}, {0x2a9fa, 0x2a9fe}, {0x2aa00, 0x2aa28}, + {0x2aa40, 0x2aa42}, {0x2aa44, 0x2aa4b}, {0x2aa60, 0x2aa76}, {0x2aa7e, 0x2aaaf}, + {0x2aab9, 0x2aabd}, {0x2aadb, 0x2aadd}, {0x2aae0, 0x2aaea}, {0x2aaf2, 0x2aaf4}, + {0x2ab01, 0x2ab06}, {0x2ab09, 0x2ab0e}, {0x2ab11, 0x2ab16}, {0x2ab20, 0x2ab26}, + {0x2ab28, 0x2ab2e}, {0x2ab30, 0x2ab5a}, {0x2ab5c, 0x2ab65}, {0x2ab70, 0x2abe2}, + {0x2ac00, 0x2d7a3}, {0x2d7b0, 0x2d7c6}, {0x2d7cb, 0x2d7fb}, {0x2f900, 0x2fa6d}, + {0x2fa70, 0x2fad9}, {0x2fb00, 0x2fb06}, {0x2fb13, 0x2fb17}, {0x2fb1f, 0x2fb28}, + {0x2fb2a, 0x2fb36}, {0x2fb38, 0x2fb3c}, {0x2fb46, 0x2fbb1}, {0x2fbd3, 0x2fd3d}, + {0x2fd50, 0x2fd8f}, {0x2fd92, 0x2fdc7}, {0x2fdf0, 0x2fdfb}, {0x2fe70, 0x2fe74}, + {0x2fe76, 0x2fefc}, {0x2ff21, 0x2ff3a}, {0x2ff41, 0x2ff5a}, {0x2ff66, 0x2ffbe}, + {0x2ffc2, 0x2ffc7}, {0x2ffca, 0x2ffcf}, {0x2ffd2, 0x2ffd7}, {0x2ffda, 0x2ffdc}, + {0x30041, 0x3005a}, {0x30061, 0x3007a}, {0x300c0, 0x300d6}, {0x300d8, 0x300f6}, + {0x300f8, 0x302c1}, {0x302c6, 0x302d1}, {0x302e0, 0x302e4}, {0x30370, 0x30374}, + {0x3037a, 0x3037d}, {0x30388, 0x3038a}, {0x3038e, 0x303a1}, {0x303a3, 0x303f5}, + {0x303f7, 0x30481}, {0x3048a, 0x3052f}, {0x30531, 0x30556}, {0x30561, 0x30587}, + {0x305d0, 0x305ea}, {0x305f0, 0x305f2}, {0x30620, 0x3064a}, {0x30671, 0x306d3}, + {0x306fa, 0x306fc}, {0x30712, 0x3072f}, {0x3074d, 0x307a5}, {0x307ca, 0x307ea}, + {0x30800, 0x30815}, {0x30840, 0x30858}, {0x30860, 0x3086a}, {0x308a0, 0x308b4}, + {0x308b6, 0x308bd}, {0x30904, 0x30939}, {0x30958, 0x30961}, {0x30971, 0x30980}, + {0x30985, 0x3098c}, {0x30993, 0x309a8}, {0x309aa, 0x309b0}, {0x309b6, 0x309b9}, + {0x309df, 0x309e1}, {0x30a05, 0x30a0a}, {0x30a13, 0x30a28}, {0x30a2a, 0x30a30}, + {0x30a59, 0x30a5c}, {0x30a72, 0x30a74}, {0x30a85, 0x30a8d}, {0x30a8f, 0x30a91}, + {0x30a93, 0x30aa8}, {0x30aaa, 0x30ab0}, {0x30ab5, 0x30ab9}, {0x30b05, 0x30b0c}, + {0x30b13, 0x30b28}, {0x30b2a, 0x30b30}, {0x30b35, 0x30b39}, {0x30b5f, 0x30b61}, + {0x30b85, 0x30b8a}, {0x30b8e, 0x30b90}, {0x30b92, 0x30b95}, {0x30ba8, 0x30baa}, + {0x30bae, 0x30bb9}, {0x30c05, 0x30c0c}, {0x30c0e, 0x30c10}, {0x30c12, 0x30c28}, + {0x30c2a, 0x30c39}, {0x30c58, 0x30c5a}, {0x30c85, 0x30c8c}, {0x30c8e, 0x30c90}, + {0x30c92, 0x30ca8}, {0x30caa, 0x30cb3}, {0x30cb5, 0x30cb9}, {0x30d05, 0x30d0c}, + {0x30d0e, 0x30d10}, {0x30d12, 0x30d3a}, {0x30d54, 0x30d56}, {0x30d5f, 0x30d61}, + {0x30d7a, 0x30d7f}, {0x30d85, 0x30d96}, {0x30d9a, 0x30db1}, {0x30db3, 0x30dbb}, + {0x30dc0, 0x30dc6}, {0x30e01, 0x30e30}, {0x30e40, 0x30e46}, {0x30e94, 0x30e97}, + {0x30e99, 0x30e9f}, {0x30ea1, 0x30ea3}, {0x30ead, 0x30eb0}, {0x30ec0, 0x30ec4}, + {0x30edc, 0x30edf}, {0x30f40, 0x30f47}, {0x30f49, 0x30f6c}, {0x30f88, 0x30f8c}, + {0x31000, 0x3102a}, {0x31050, 0x31055}, {0x3105a, 0x3105d}, {0x3106e, 0x31070}, + {0x31075, 0x31081}, {0x310a0, 0x310c5}, {0x310d0, 0x310fa}, {0x310fc, 0x31248}, + {0x3124a, 0x3124d}, {0x31250, 0x31256}, {0x3125a, 0x3125d}, {0x31260, 0x31288}, + {0x3128a, 0x3128d}, {0x31290, 0x312b0}, {0x312b2, 0x312b5}, {0x312b8, 0x312be}, + {0x312c2, 0x312c5}, {0x312c8, 0x312d6}, {0x312d8, 0x31310}, {0x31312, 0x31315}, + {0x31318, 0x3135a}, {0x31380, 0x3138f}, {0x313a0, 0x313f5}, {0x313f8, 0x313fd}, + {0x31401, 0x3166c}, {0x3166f, 0x3167f}, {0x31681, 0x3169a}, {0x316a0, 0x316ea}, + {0x316f1, 0x316f8}, {0x31700, 0x3170c}, {0x3170e, 0x31711}, {0x31720, 0x31731}, + {0x31740, 0x31751}, {0x31760, 0x3176c}, {0x3176e, 0x31770}, {0x31780, 0x317b3}, + {0x31820, 0x31877}, {0x31880, 0x31884}, {0x31887, 0x318a8}, {0x318b0, 0x318f5}, + {0x31900, 0x3191e}, {0x31950, 0x3196d}, {0x31970, 0x31974}, {0x31980, 0x319ab}, + {0x319b0, 0x319c9}, {0x31a00, 0x31a16}, {0x31a20, 0x31a54}, {0x31b05, 0x31b33}, + {0x31b45, 0x31b4b}, {0x31b83, 0x31ba0}, {0x31bba, 0x31be5}, {0x31c00, 0x31c23}, + {0x31c4d, 0x31c4f}, {0x31c5a, 0x31c7d}, {0x31c80, 0x31c88}, {0x31ce9, 0x31cec}, + {0x31cee, 0x31cf1}, {0x31d00, 0x31dbf}, {0x31e00, 0x31f15}, {0x31f18, 0x31f1d}, + {0x31f20, 0x31f45}, {0x31f48, 0x31f4d}, {0x31f50, 0x31f57}, {0x31f5f, 0x31f7d}, + {0x31f80, 0x31fb4}, {0x31fb6, 0x31fbc}, {0x31fc2, 0x31fc4}, {0x31fc6, 0x31fcc}, + {0x31fd0, 0x31fd3}, {0x31fd6, 0x31fdb}, {0x31fe0, 0x31fec}, {0x31ff2, 0x31ff4}, + {0x31ff6, 0x31ffc}, {0x32090, 0x3209c}, {0x3210a, 0x32113}, {0x32119, 0x3211d}, + {0x3212a, 0x3212d}, {0x3212f, 0x32139}, {0x3213c, 0x3213f}, {0x32145, 0x32149}, + {0x32c00, 0x32c2e}, {0x32c30, 0x32c5e}, {0x32c60, 0x32ce4}, {0x32ceb, 0x32cee}, + {0x32d00, 0x32d25}, {0x32d30, 0x32d67}, {0x32d80, 0x32d96}, {0x32da0, 0x32da6}, + {0x32da8, 0x32dae}, {0x32db0, 0x32db6}, {0x32db8, 0x32dbe}, {0x32dc0, 0x32dc6}, + {0x32dc8, 0x32dce}, {0x32dd0, 0x32dd6}, {0x32dd8, 0x32dde}, {0x33031, 0x33035}, + {0x33041, 0x33096}, {0x3309d, 0x3309f}, {0x330a1, 0x330fa}, {0x330fc, 0x330ff}, + {0x33105, 0x3312e}, {0x33131, 0x3318e}, {0x331a0, 0x331ba}, {0x331f0, 0x331ff}, + {0x33400, 0x34db5}, {0x34e00, 0x39fea}, {0x3a000, 0x3a48c}, {0x3a4d0, 0x3a4fd}, + {0x3a500, 0x3a60c}, {0x3a610, 0x3a61f}, {0x3a640, 0x3a66e}, {0x3a67f, 0x3a69d}, + {0x3a6a0, 0x3a6e5}, {0x3a717, 0x3a71f}, {0x3a722, 0x3a788}, {0x3a78b, 0x3a7ae}, + {0x3a7b0, 0x3a7b7}, {0x3a7f7, 0x3a801}, {0x3a803, 0x3a805}, {0x3a807, 0x3a80a}, + {0x3a80c, 0x3a822}, {0x3a840, 0x3a873}, {0x3a882, 0x3a8b3}, {0x3a8f2, 0x3a8f7}, + {0x3a90a, 0x3a925}, {0x3a930, 0x3a946}, {0x3a960, 0x3a97c}, {0x3a984, 0x3a9b2}, + {0x3a9e0, 0x3a9e4}, {0x3a9e6, 0x3a9ef}, {0x3a9fa, 0x3a9fe}, {0x3aa00, 0x3aa28}, + {0x3aa40, 0x3aa42}, {0x3aa44, 0x3aa4b}, {0x3aa60, 0x3aa76}, {0x3aa7e, 0x3aaaf}, + {0x3aab9, 0x3aabd}, {0x3aadb, 0x3aadd}, {0x3aae0, 0x3aaea}, {0x3aaf2, 0x3aaf4}, + {0x3ab01, 0x3ab06}, {0x3ab09, 0x3ab0e}, {0x3ab11, 0x3ab16}, {0x3ab20, 0x3ab26}, + {0x3ab28, 0x3ab2e}, {0x3ab30, 0x3ab5a}, {0x3ab5c, 0x3ab65}, {0x3ab70, 0x3abe2}, + {0x3ac00, 0x3d7a3}, {0x3d7b0, 0x3d7c6}, {0x3d7cb, 0x3d7fb}, {0x3f900, 0x3fa6d}, + {0x3fa70, 0x3fad9}, {0x3fb00, 0x3fb06}, {0x3fb13, 0x3fb17}, {0x3fb1f, 0x3fb28}, + {0x3fb2a, 0x3fb36}, {0x3fb38, 0x3fb3c}, {0x3fb46, 0x3fbb1}, {0x3fbd3, 0x3fd3d}, + {0x3fd50, 0x3fd8f}, {0x3fd92, 0x3fdc7}, {0x3fdf0, 0x3fdfb}, {0x3fe70, 0x3fe74}, + {0x3fe76, 0x3fefc}, {0x3ff21, 0x3ff3a}, {0x3ff41, 0x3ff5a}, {0x3ff66, 0x3ffbe}, + {0x3ffc2, 0x3ffc7}, {0x3ffca, 0x3ffcf}, {0x3ffd2, 0x3ffd7}, {0x3ffda, 0x3ffdc}, + {0x40041, 0x4005a}, {0x40061, 0x4007a}, {0x400c0, 0x400d6}, {0x400d8, 0x400f6}, + {0x400f8, 0x402c1}, {0x402c6, 0x402d1}, {0x402e0, 0x402e4}, {0x40370, 0x40374}, + {0x4037a, 0x4037d}, {0x40388, 0x4038a}, {0x4038e, 0x403a1}, {0x403a3, 0x403f5}, + {0x403f7, 0x40481}, {0x4048a, 0x4052f}, {0x40531, 0x40556}, {0x40561, 0x40587}, + {0x405d0, 0x405ea}, {0x405f0, 0x405f2}, {0x40620, 0x4064a}, {0x40671, 0x406d3}, + {0x406fa, 0x406fc}, {0x40712, 0x4072f}, {0x4074d, 0x407a5}, {0x407ca, 0x407ea}, + {0x40800, 0x40815}, {0x40840, 0x40858}, {0x40860, 0x4086a}, {0x408a0, 0x408b4}, + {0x408b6, 0x408bd}, {0x40904, 0x40939}, {0x40958, 0x40961}, {0x40971, 0x40980}, + {0x40985, 0x4098c}, {0x40993, 0x409a8}, {0x409aa, 0x409b0}, {0x409b6, 0x409b9}, + {0x409df, 0x409e1}, {0x40a05, 0x40a0a}, {0x40a13, 0x40a28}, {0x40a2a, 0x40a30}, + {0x40a59, 0x40a5c}, {0x40a72, 0x40a74}, {0x40a85, 0x40a8d}, {0x40a8f, 0x40a91}, + {0x40a93, 0x40aa8}, {0x40aaa, 0x40ab0}, {0x40ab5, 0x40ab9}, {0x40b05, 0x40b0c}, + {0x40b13, 0x40b28}, {0x40b2a, 0x40b30}, {0x40b35, 0x40b39}, {0x40b5f, 0x40b61}, + {0x40b85, 0x40b8a}, {0x40b8e, 0x40b90}, {0x40b92, 0x40b95}, {0x40ba8, 0x40baa}, + {0x40bae, 0x40bb9}, {0x40c05, 0x40c0c}, {0x40c0e, 0x40c10}, {0x40c12, 0x40c28}, + {0x40c2a, 0x40c39}, {0x40c58, 0x40c5a}, {0x40c85, 0x40c8c}, {0x40c8e, 0x40c90}, + {0x40c92, 0x40ca8}, {0x40caa, 0x40cb3}, {0x40cb5, 0x40cb9}, {0x40d05, 0x40d0c}, + {0x40d0e, 0x40d10}, {0x40d12, 0x40d3a}, {0x40d54, 0x40d56}, {0x40d5f, 0x40d61}, + {0x40d7a, 0x40d7f}, {0x40d85, 0x40d96}, {0x40d9a, 0x40db1}, {0x40db3, 0x40dbb}, + {0x40dc0, 0x40dc6}, {0x40e01, 0x40e30}, {0x40e40, 0x40e46}, {0x40e94, 0x40e97}, + {0x40e99, 0x40e9f}, {0x40ea1, 0x40ea3}, {0x40ead, 0x40eb0}, {0x40ec0, 0x40ec4}, + {0x40edc, 0x40edf}, {0x40f40, 0x40f47}, {0x40f49, 0x40f6c}, {0x40f88, 0x40f8c}, + {0x41000, 0x4102a}, {0x41050, 0x41055}, {0x4105a, 0x4105d}, {0x4106e, 0x41070}, + {0x41075, 0x41081}, {0x410a0, 0x410c5}, {0x410d0, 0x410fa}, {0x410fc, 0x41248}, + {0x4124a, 0x4124d}, {0x41250, 0x41256}, {0x4125a, 0x4125d}, {0x41260, 0x41288}, + {0x4128a, 0x4128d}, {0x41290, 0x412b0}, {0x412b2, 0x412b5}, {0x412b8, 0x412be}, + {0x412c2, 0x412c5}, {0x412c8, 0x412d6}, {0x412d8, 0x41310}, {0x41312, 0x41315}, + {0x41318, 0x4135a}, {0x41380, 0x4138f}, {0x413a0, 0x413f5}, {0x413f8, 0x413fd}, + {0x41401, 0x4166c}, {0x4166f, 0x4167f}, {0x41681, 0x4169a}, {0x416a0, 0x416ea}, + {0x416f1, 0x416f8}, {0x41700, 0x4170c}, {0x4170e, 0x41711}, {0x41720, 0x41731}, + {0x41740, 0x41751}, {0x41760, 0x4176c}, {0x4176e, 0x41770}, {0x41780, 0x417b3}, + {0x41820, 0x41877}, {0x41880, 0x41884}, {0x41887, 0x418a8}, {0x418b0, 0x418f5}, + {0x41900, 0x4191e}, {0x41950, 0x4196d}, {0x41970, 0x41974}, {0x41980, 0x419ab}, + {0x419b0, 0x419c9}, {0x41a00, 0x41a16}, {0x41a20, 0x41a54}, {0x41b05, 0x41b33}, + {0x41b45, 0x41b4b}, {0x41b83, 0x41ba0}, {0x41bba, 0x41be5}, {0x41c00, 0x41c23}, + {0x41c4d, 0x41c4f}, {0x41c5a, 0x41c7d}, {0x41c80, 0x41c88}, {0x41ce9, 0x41cec}, + {0x41cee, 0x41cf1}, {0x41d00, 0x41dbf}, {0x41e00, 0x41f15}, {0x41f18, 0x41f1d}, + {0x41f20, 0x41f45}, {0x41f48, 0x41f4d}, {0x41f50, 0x41f57}, {0x41f5f, 0x41f7d}, + {0x41f80, 0x41fb4}, {0x41fb6, 0x41fbc}, {0x41fc2, 0x41fc4}, {0x41fc6, 0x41fcc}, + {0x41fd0, 0x41fd3}, {0x41fd6, 0x41fdb}, {0x41fe0, 0x41fec}, {0x41ff2, 0x41ff4}, + {0x41ff6, 0x41ffc}, {0x42090, 0x4209c}, {0x4210a, 0x42113}, {0x42119, 0x4211d}, + {0x4212a, 0x4212d}, {0x4212f, 0x42139}, {0x4213c, 0x4213f}, {0x42145, 0x42149}, + {0x42c00, 0x42c2e}, {0x42c30, 0x42c5e}, {0x42c60, 0x42ce4}, {0x42ceb, 0x42cee}, + {0x42d00, 0x42d25}, {0x42d30, 0x42d67}, {0x42d80, 0x42d96}, {0x42da0, 0x42da6}, + {0x42da8, 0x42dae}, {0x42db0, 0x42db6}, {0x42db8, 0x42dbe}, {0x42dc0, 0x42dc6}, + {0x42dc8, 0x42dce}, {0x42dd0, 0x42dd6}, {0x42dd8, 0x42dde}, {0x43031, 0x43035}, + {0x43041, 0x43096}, {0x4309d, 0x4309f}, {0x430a1, 0x430fa}, {0x430fc, 0x430ff}, + {0x43105, 0x4312e}, {0x43131, 0x4318e}, {0x431a0, 0x431ba}, {0x431f0, 0x431ff}, + {0x43400, 0x44db5}, {0x44e00, 0x49fea}, {0x4a000, 0x4a48c}, {0x4a4d0, 0x4a4fd}, + {0x4a500, 0x4a60c}, {0x4a610, 0x4a61f}, {0x4a640, 0x4a66e}, {0x4a67f, 0x4a69d}, + {0x4a6a0, 0x4a6e5}, {0x4a717, 0x4a71f}, {0x4a722, 0x4a788}, {0x4a78b, 0x4a7ae}, + {0x4a7b0, 0x4a7b7}, {0x4a7f7, 0x4a801}, {0x4a803, 0x4a805}, {0x4a807, 0x4a80a}, + {0x4a80c, 0x4a822}, {0x4a840, 0x4a873}, {0x4a882, 0x4a8b3}, {0x4a8f2, 0x4a8f7}, + {0x4a90a, 0x4a925}, {0x4a930, 0x4a946}, {0x4a960, 0x4a97c}, {0x4a984, 0x4a9b2}, + {0x4a9e0, 0x4a9e4}, {0x4a9e6, 0x4a9ef}, {0x4a9fa, 0x4a9fe}, {0x4aa00, 0x4aa28}, + {0x4aa40, 0x4aa42}, {0x4aa44, 0x4aa4b}, {0x4aa60, 0x4aa76}, {0x4aa7e, 0x4aaaf}, + {0x4aab9, 0x4aabd}, {0x4aadb, 0x4aadd}, {0x4aae0, 0x4aaea}, {0x4aaf2, 0x4aaf4}, + {0x4ab01, 0x4ab06}, {0x4ab09, 0x4ab0e}, {0x4ab11, 0x4ab16}, {0x4ab20, 0x4ab26}, + {0x4ab28, 0x4ab2e}, {0x4ab30, 0x4ab5a}, {0x4ab5c, 0x4ab65}, {0x4ab70, 0x4abe2}, + {0x4ac00, 0x4d7a3}, {0x4d7b0, 0x4d7c6}, {0x4d7cb, 0x4d7fb}, {0x4f900, 0x4fa6d}, + {0x4fa70, 0x4fad9}, {0x4fb00, 0x4fb06}, {0x4fb13, 0x4fb17}, {0x4fb1f, 0x4fb28}, + {0x4fb2a, 0x4fb36}, {0x4fb38, 0x4fb3c}, {0x4fb46, 0x4fbb1}, {0x4fbd3, 0x4fd3d}, + {0x4fd50, 0x4fd8f}, {0x4fd92, 0x4fdc7}, {0x4fdf0, 0x4fdfb}, {0x4fe70, 0x4fe74}, + {0x4fe76, 0x4fefc}, {0x4ff21, 0x4ff3a}, {0x4ff41, 0x4ff5a}, {0x4ff66, 0x4ffbe}, + {0x4ffc2, 0x4ffc7}, {0x4ffca, 0x4ffcf}, {0x4ffd2, 0x4ffd7}, {0x4ffda, 0x4ffdc}, + {0x50041, 0x5005a}, {0x50061, 0x5007a}, {0x500c0, 0x500d6}, {0x500d8, 0x500f6}, + {0x500f8, 0x502c1}, {0x502c6, 0x502d1}, {0x502e0, 0x502e4}, {0x50370, 0x50374}, + {0x5037a, 0x5037d}, {0x50388, 0x5038a}, {0x5038e, 0x503a1}, {0x503a3, 0x503f5}, + {0x503f7, 0x50481}, {0x5048a, 0x5052f}, {0x50531, 0x50556}, {0x50561, 0x50587}, + {0x505d0, 0x505ea}, {0x505f0, 0x505f2}, {0x50620, 0x5064a}, {0x50671, 0x506d3}, + {0x506fa, 0x506fc}, {0x50712, 0x5072f}, {0x5074d, 0x507a5}, {0x507ca, 0x507ea}, + {0x50800, 0x50815}, {0x50840, 0x50858}, {0x50860, 0x5086a}, {0x508a0, 0x508b4}, + {0x508b6, 0x508bd}, {0x50904, 0x50939}, {0x50958, 0x50961}, {0x50971, 0x50980}, + {0x50985, 0x5098c}, {0x50993, 0x509a8}, {0x509aa, 0x509b0}, {0x509b6, 0x509b9}, + {0x509df, 0x509e1}, {0x50a05, 0x50a0a}, {0x50a13, 0x50a28}, {0x50a2a, 0x50a30}, + {0x50a59, 0x50a5c}, {0x50a72, 0x50a74}, {0x50a85, 0x50a8d}, {0x50a8f, 0x50a91}, + {0x50a93, 0x50aa8}, {0x50aaa, 0x50ab0}, {0x50ab5, 0x50ab9}, {0x50b05, 0x50b0c}, + {0x50b13, 0x50b28}, {0x50b2a, 0x50b30}, {0x50b35, 0x50b39}, {0x50b5f, 0x50b61}, + {0x50b85, 0x50b8a}, {0x50b8e, 0x50b90}, {0x50b92, 0x50b95}, {0x50ba8, 0x50baa}, + {0x50bae, 0x50bb9}, {0x50c05, 0x50c0c}, {0x50c0e, 0x50c10}, {0x50c12, 0x50c28}, + {0x50c2a, 0x50c39}, {0x50c58, 0x50c5a}, {0x50c85, 0x50c8c}, {0x50c8e, 0x50c90}, + {0x50c92, 0x50ca8}, {0x50caa, 0x50cb3}, {0x50cb5, 0x50cb9}, {0x50d05, 0x50d0c}, + {0x50d0e, 0x50d10}, {0x50d12, 0x50d3a}, {0x50d54, 0x50d56}, {0x50d5f, 0x50d61}, + {0x50d7a, 0x50d7f}, {0x50d85, 0x50d96}, {0x50d9a, 0x50db1}, {0x50db3, 0x50dbb}, + {0x50dc0, 0x50dc6}, {0x50e01, 0x50e30}, {0x50e40, 0x50e46}, {0x50e94, 0x50e97}, + {0x50e99, 0x50e9f}, {0x50ea1, 0x50ea3}, {0x50ead, 0x50eb0}, {0x50ec0, 0x50ec4}, + {0x50edc, 0x50edf}, {0x50f40, 0x50f47}, {0x50f49, 0x50f6c}, {0x50f88, 0x50f8c}, + {0x51000, 0x5102a}, {0x51050, 0x51055}, {0x5105a, 0x5105d}, {0x5106e, 0x51070}, + {0x51075, 0x51081}, {0x510a0, 0x510c5}, {0x510d0, 0x510fa}, {0x510fc, 0x51248}, + {0x5124a, 0x5124d}, {0x51250, 0x51256}, {0x5125a, 0x5125d}, {0x51260, 0x51288}, + {0x5128a, 0x5128d}, {0x51290, 0x512b0}, {0x512b2, 0x512b5}, {0x512b8, 0x512be}, + {0x512c2, 0x512c5}, {0x512c8, 0x512d6}, {0x512d8, 0x51310}, {0x51312, 0x51315}, + {0x51318, 0x5135a}, {0x51380, 0x5138f}, {0x513a0, 0x513f5}, {0x513f8, 0x513fd}, + {0x51401, 0x5166c}, {0x5166f, 0x5167f}, {0x51681, 0x5169a}, {0x516a0, 0x516ea}, + {0x516f1, 0x516f8}, {0x51700, 0x5170c}, {0x5170e, 0x51711}, {0x51720, 0x51731}, + {0x51740, 0x51751}, {0x51760, 0x5176c}, {0x5176e, 0x51770}, {0x51780, 0x517b3}, + {0x51820, 0x51877}, {0x51880, 0x51884}, {0x51887, 0x518a8}, {0x518b0, 0x518f5}, + {0x51900, 0x5191e}, {0x51950, 0x5196d}, {0x51970, 0x51974}, {0x51980, 0x519ab}, + {0x519b0, 0x519c9}, {0x51a00, 0x51a16}, {0x51a20, 0x51a54}, {0x51b05, 0x51b33}, + {0x51b45, 0x51b4b}, {0x51b83, 0x51ba0}, {0x51bba, 0x51be5}, {0x51c00, 0x51c23}, + {0x51c4d, 0x51c4f}, {0x51c5a, 0x51c7d}, {0x51c80, 0x51c88}, {0x51ce9, 0x51cec}, + {0x51cee, 0x51cf1}, {0x51d00, 0x51dbf}, {0x51e00, 0x51f15}, {0x51f18, 0x51f1d}, + {0x51f20, 0x51f45}, {0x51f48, 0x51f4d}, {0x51f50, 0x51f57}, {0x51f5f, 0x51f7d}, + {0x51f80, 0x51fb4}, {0x51fb6, 0x51fbc}, {0x51fc2, 0x51fc4}, {0x51fc6, 0x51fcc}, + {0x51fd0, 0x51fd3}, {0x51fd6, 0x51fdb}, {0x51fe0, 0x51fec}, {0x51ff2, 0x51ff4}, + {0x51ff6, 0x51ffc}, {0x52090, 0x5209c}, {0x5210a, 0x52113}, {0x52119, 0x5211d}, + {0x5212a, 0x5212d}, {0x5212f, 0x52139}, {0x5213c, 0x5213f}, {0x52145, 0x52149}, + {0x52c00, 0x52c2e}, {0x52c30, 0x52c5e}, {0x52c60, 0x52ce4}, {0x52ceb, 0x52cee}, + {0x52d00, 0x52d25}, {0x52d30, 0x52d67}, {0x52d80, 0x52d96}, {0x52da0, 0x52da6}, + {0x52da8, 0x52dae}, {0x52db0, 0x52db6}, {0x52db8, 0x52dbe}, {0x52dc0, 0x52dc6}, + {0x52dc8, 0x52dce}, {0x52dd0, 0x52dd6}, {0x52dd8, 0x52dde}, {0x53031, 0x53035}, + {0x53041, 0x53096}, {0x5309d, 0x5309f}, {0x530a1, 0x530fa}, {0x530fc, 0x530ff}, + {0x53105, 0x5312e}, {0x53131, 0x5318e}, {0x531a0, 0x531ba}, {0x531f0, 0x531ff}, + {0x53400, 0x54db5}, {0x54e00, 0x59fea}, {0x5a000, 0x5a48c}, {0x5a4d0, 0x5a4fd}, + {0x5a500, 0x5a60c}, {0x5a610, 0x5a61f}, {0x5a640, 0x5a66e}, {0x5a67f, 0x5a69d}, + {0x5a6a0, 0x5a6e5}, {0x5a717, 0x5a71f}, {0x5a722, 0x5a788}, {0x5a78b, 0x5a7ae}, + {0x5a7b0, 0x5a7b7}, {0x5a7f7, 0x5a801}, {0x5a803, 0x5a805}, {0x5a807, 0x5a80a}, + {0x5a80c, 0x5a822}, {0x5a840, 0x5a873}, {0x5a882, 0x5a8b3}, {0x5a8f2, 0x5a8f7}, + {0x5a90a, 0x5a925}, {0x5a930, 0x5a946}, {0x5a960, 0x5a97c}, {0x5a984, 0x5a9b2}, + {0x5a9e0, 0x5a9e4}, {0x5a9e6, 0x5a9ef}, {0x5a9fa, 0x5a9fe}, {0x5aa00, 0x5aa28}, + {0x5aa40, 0x5aa42}, {0x5aa44, 0x5aa4b}, {0x5aa60, 0x5aa76}, {0x5aa7e, 0x5aaaf}, + {0x5aab9, 0x5aabd}, {0x5aadb, 0x5aadd}, {0x5aae0, 0x5aaea}, {0x5aaf2, 0x5aaf4}, + {0x5ab01, 0x5ab06}, {0x5ab09, 0x5ab0e}, {0x5ab11, 0x5ab16}, {0x5ab20, 0x5ab26}, + {0x5ab28, 0x5ab2e}, {0x5ab30, 0x5ab5a}, {0x5ab5c, 0x5ab65}, {0x5ab70, 0x5abe2}, + {0x5ac00, 0x5d7a3}, {0x5d7b0, 0x5d7c6}, {0x5d7cb, 0x5d7fb}, {0x5f900, 0x5fa6d}, + {0x5fa70, 0x5fad9}, {0x5fb00, 0x5fb06}, {0x5fb13, 0x5fb17}, {0x5fb1f, 0x5fb28}, + {0x5fb2a, 0x5fb36}, {0x5fb38, 0x5fb3c}, {0x5fb46, 0x5fbb1}, {0x5fbd3, 0x5fd3d}, + {0x5fd50, 0x5fd8f}, {0x5fd92, 0x5fdc7}, {0x5fdf0, 0x5fdfb}, {0x5fe70, 0x5fe74}, + {0x5fe76, 0x5fefc}, {0x5ff21, 0x5ff3a}, {0x5ff41, 0x5ff5a}, {0x5ff66, 0x5ffbe}, + {0x5ffc2, 0x5ffc7}, {0x5ffca, 0x5ffcf}, {0x5ffd2, 0x5ffd7}, {0x5ffda, 0x5ffdc}, + {0x60041, 0x6005a}, {0x60061, 0x6007a}, {0x600c0, 0x600d6}, {0x600d8, 0x600f6}, + {0x600f8, 0x602c1}, {0x602c6, 0x602d1}, {0x602e0, 0x602e4}, {0x60370, 0x60374}, + {0x6037a, 0x6037d}, {0x60388, 0x6038a}, {0x6038e, 0x603a1}, {0x603a3, 0x603f5}, + {0x603f7, 0x60481}, {0x6048a, 0x6052f}, {0x60531, 0x60556}, {0x60561, 0x60587}, + {0x605d0, 0x605ea}, {0x605f0, 0x605f2}, {0x60620, 0x6064a}, {0x60671, 0x606d3}, + {0x606fa, 0x606fc}, {0x60712, 0x6072f}, {0x6074d, 0x607a5}, {0x607ca, 0x607ea}, + {0x60800, 0x60815}, {0x60840, 0x60858}, {0x60860, 0x6086a}, {0x608a0, 0x608b4}, + {0x608b6, 0x608bd}, {0x60904, 0x60939}, {0x60958, 0x60961}, {0x60971, 0x60980}, + {0x60985, 0x6098c}, {0x60993, 0x609a8}, {0x609aa, 0x609b0}, {0x609b6, 0x609b9}, + {0x609df, 0x609e1}, {0x60a05, 0x60a0a}, {0x60a13, 0x60a28}, {0x60a2a, 0x60a30}, + {0x60a59, 0x60a5c}, {0x60a72, 0x60a74}, {0x60a85, 0x60a8d}, {0x60a8f, 0x60a91}, + {0x60a93, 0x60aa8}, {0x60aaa, 0x60ab0}, {0x60ab5, 0x60ab9}, {0x60b05, 0x60b0c}, + {0x60b13, 0x60b28}, {0x60b2a, 0x60b30}, {0x60b35, 0x60b39}, {0x60b5f, 0x60b61}, + {0x60b85, 0x60b8a}, {0x60b8e, 0x60b90}, {0x60b92, 0x60b95}, {0x60ba8, 0x60baa}, + {0x60bae, 0x60bb9}, {0x60c05, 0x60c0c}, {0x60c0e, 0x60c10}, {0x60c12, 0x60c28}, + {0x60c2a, 0x60c39}, {0x60c58, 0x60c5a}, {0x60c85, 0x60c8c}, {0x60c8e, 0x60c90}, + {0x60c92, 0x60ca8}, {0x60caa, 0x60cb3}, {0x60cb5, 0x60cb9}, {0x60d05, 0x60d0c}, + {0x60d0e, 0x60d10}, {0x60d12, 0x60d3a}, {0x60d54, 0x60d56}, {0x60d5f, 0x60d61}, + {0x60d7a, 0x60d7f}, {0x60d85, 0x60d96}, {0x60d9a, 0x60db1}, {0x60db3, 0x60dbb}, + {0x60dc0, 0x60dc6}, {0x60e01, 0x60e30}, {0x60e40, 0x60e46}, {0x60e94, 0x60e97}, + {0x60e99, 0x60e9f}, {0x60ea1, 0x60ea3}, {0x60ead, 0x60eb0}, {0x60ec0, 0x60ec4}, + {0x60edc, 0x60edf}, {0x60f40, 0x60f47}, {0x60f49, 0x60f6c}, {0x60f88, 0x60f8c}, + {0x61000, 0x6102a}, {0x61050, 0x61055}, {0x6105a, 0x6105d}, {0x6106e, 0x61070}, + {0x61075, 0x61081}, {0x610a0, 0x610c5}, {0x610d0, 0x610fa}, {0x610fc, 0x61248}, + {0x6124a, 0x6124d}, {0x61250, 0x61256}, {0x6125a, 0x6125d}, {0x61260, 0x61288}, + {0x6128a, 0x6128d}, {0x61290, 0x612b0}, {0x612b2, 0x612b5}, {0x612b8, 0x612be}, + {0x612c2, 0x612c5}, {0x612c8, 0x612d6}, {0x612d8, 0x61310}, {0x61312, 0x61315}, + {0x61318, 0x6135a}, {0x61380, 0x6138f}, {0x613a0, 0x613f5}, {0x613f8, 0x613fd}, + {0x61401, 0x6166c}, {0x6166f, 0x6167f}, {0x61681, 0x6169a}, {0x616a0, 0x616ea}, + {0x616f1, 0x616f8}, {0x61700, 0x6170c}, {0x6170e, 0x61711}, {0x61720, 0x61731}, + {0x61740, 0x61751}, {0x61760, 0x6176c}, {0x6176e, 0x61770}, {0x61780, 0x617b3}, + {0x61820, 0x61877}, {0x61880, 0x61884}, {0x61887, 0x618a8}, {0x618b0, 0x618f5}, + {0x61900, 0x6191e}, {0x61950, 0x6196d}, {0x61970, 0x61974}, {0x61980, 0x619ab}, + {0x619b0, 0x619c9}, {0x61a00, 0x61a16}, {0x61a20, 0x61a54}, {0x61b05, 0x61b33}, + {0x61b45, 0x61b4b}, {0x61b83, 0x61ba0}, {0x61bba, 0x61be5}, {0x61c00, 0x61c23}, + {0x61c4d, 0x61c4f}, {0x61c5a, 0x61c7d}, {0x61c80, 0x61c88}, {0x61ce9, 0x61cec}, + {0x61cee, 0x61cf1}, {0x61d00, 0x61dbf}, {0x61e00, 0x61f15}, {0x61f18, 0x61f1d}, + {0x61f20, 0x61f45}, {0x61f48, 0x61f4d}, {0x61f50, 0x61f57}, {0x61f5f, 0x61f7d}, + {0x61f80, 0x61fb4}, {0x61fb6, 0x61fbc}, {0x61fc2, 0x61fc4}, {0x61fc6, 0x61fcc}, + {0x61fd0, 0x61fd3}, {0x61fd6, 0x61fdb}, {0x61fe0, 0x61fec}, {0x61ff2, 0x61ff4}, + {0x61ff6, 0x61ffc}, {0x62090, 0x6209c}, {0x6210a, 0x62113}, {0x62119, 0x6211d}, + {0x6212a, 0x6212d}, {0x6212f, 0x62139}, {0x6213c, 0x6213f}, {0x62145, 0x62149}, + {0x62c00, 0x62c2e}, {0x62c30, 0x62c5e}, {0x62c60, 0x62ce4}, {0x62ceb, 0x62cee}, + {0x62d00, 0x62d25}, {0x62d30, 0x62d67}, {0x62d80, 0x62d96}, {0x62da0, 0x62da6}, + {0x62da8, 0x62dae}, {0x62db0, 0x62db6}, {0x62db8, 0x62dbe}, {0x62dc0, 0x62dc6}, + {0x62dc8, 0x62dce}, {0x62dd0, 0x62dd6}, {0x62dd8, 0x62dde}, {0x63031, 0x63035}, + {0x63041, 0x63096}, {0x6309d, 0x6309f}, {0x630a1, 0x630fa}, {0x630fc, 0x630ff}, + {0x63105, 0x6312e}, {0x63131, 0x6318e}, {0x631a0, 0x631ba}, {0x631f0, 0x631ff}, + {0x63400, 0x64db5}, {0x64e00, 0x69fea}, {0x6a000, 0x6a48c}, {0x6a4d0, 0x6a4fd}, + {0x6a500, 0x6a60c}, {0x6a610, 0x6a61f}, {0x6a640, 0x6a66e}, {0x6a67f, 0x6a69d}, + {0x6a6a0, 0x6a6e5}, {0x6a717, 0x6a71f}, {0x6a722, 0x6a788}, {0x6a78b, 0x6a7ae}, + {0x6a7b0, 0x6a7b7}, {0x6a7f7, 0x6a801}, {0x6a803, 0x6a805}, {0x6a807, 0x6a80a}, + {0x6a80c, 0x6a822}, {0x6a840, 0x6a873}, {0x6a882, 0x6a8b3}, {0x6a8f2, 0x6a8f7}, + {0x6a90a, 0x6a925}, {0x6a930, 0x6a946}, {0x6a960, 0x6a97c}, {0x6a984, 0x6a9b2}, + {0x6a9e0, 0x6a9e4}, {0x6a9e6, 0x6a9ef}, {0x6a9fa, 0x6a9fe}, {0x6aa00, 0x6aa28}, + {0x6aa40, 0x6aa42}, {0x6aa44, 0x6aa4b}, {0x6aa60, 0x6aa76}, {0x6aa7e, 0x6aaaf}, + {0x6aab9, 0x6aabd}, {0x6aadb, 0x6aadd}, {0x6aae0, 0x6aaea}, {0x6aaf2, 0x6aaf4}, + {0x6ab01, 0x6ab06}, {0x6ab09, 0x6ab0e}, {0x6ab11, 0x6ab16}, {0x6ab20, 0x6ab26}, + {0x6ab28, 0x6ab2e}, {0x6ab30, 0x6ab5a}, {0x6ab5c, 0x6ab65}, {0x6ab70, 0x6abe2}, + {0x6ac00, 0x6d7a3}, {0x6d7b0, 0x6d7c6}, {0x6d7cb, 0x6d7fb}, {0x6f900, 0x6fa6d}, + {0x6fa70, 0x6fad9}, {0x6fb00, 0x6fb06}, {0x6fb13, 0x6fb17}, {0x6fb1f, 0x6fb28}, + {0x6fb2a, 0x6fb36}, {0x6fb38, 0x6fb3c}, {0x6fb46, 0x6fbb1}, {0x6fbd3, 0x6fd3d}, + {0x6fd50, 0x6fd8f}, {0x6fd92, 0x6fdc7}, {0x6fdf0, 0x6fdfb}, {0x6fe70, 0x6fe74}, + {0x6fe76, 0x6fefc}, {0x6ff21, 0x6ff3a}, {0x6ff41, 0x6ff5a}, {0x6ff66, 0x6ffbe}, + {0x6ffc2, 0x6ffc7}, {0x6ffca, 0x6ffcf}, {0x6ffd2, 0x6ffd7}, {0x6ffda, 0x6ffdc}, + {0x70041, 0x7005a}, {0x70061, 0x7007a}, {0x700c0, 0x700d6}, {0x700d8, 0x700f6}, + {0x700f8, 0x702c1}, {0x702c6, 0x702d1}, {0x702e0, 0x702e4}, {0x70370, 0x70374}, + {0x7037a, 0x7037d}, {0x70388, 0x7038a}, {0x7038e, 0x703a1}, {0x703a3, 0x703f5}, + {0x703f7, 0x70481}, {0x7048a, 0x7052f}, {0x70531, 0x70556}, {0x70561, 0x70587}, + {0x705d0, 0x705ea}, {0x705f0, 0x705f2}, {0x70620, 0x7064a}, {0x70671, 0x706d3}, + {0x706fa, 0x706fc}, {0x70712, 0x7072f}, {0x7074d, 0x707a5}, {0x707ca, 0x707ea}, + {0x70800, 0x70815}, {0x70840, 0x70858}, {0x70860, 0x7086a}, {0x708a0, 0x708b4}, + {0x708b6, 0x708bd}, {0x70904, 0x70939}, {0x70958, 0x70961}, {0x70971, 0x70980}, + {0x70985, 0x7098c}, {0x70993, 0x709a8}, {0x709aa, 0x709b0}, {0x709b6, 0x709b9}, + {0x709df, 0x709e1}, {0x70a05, 0x70a0a}, {0x70a13, 0x70a28}, {0x70a2a, 0x70a30}, + {0x70a59, 0x70a5c}, {0x70a72, 0x70a74}, {0x70a85, 0x70a8d}, {0x70a8f, 0x70a91}, + {0x70a93, 0x70aa8}, {0x70aaa, 0x70ab0}, {0x70ab5, 0x70ab9}, {0x70b05, 0x70b0c}, + {0x70b13, 0x70b28}, {0x70b2a, 0x70b30}, {0x70b35, 0x70b39}, {0x70b5f, 0x70b61}, + {0x70b85, 0x70b8a}, {0x70b8e, 0x70b90}, {0x70b92, 0x70b95}, {0x70ba8, 0x70baa}, + {0x70bae, 0x70bb9}, {0x70c05, 0x70c0c}, {0x70c0e, 0x70c10}, {0x70c12, 0x70c28}, + {0x70c2a, 0x70c39}, {0x70c58, 0x70c5a}, {0x70c85, 0x70c8c}, {0x70c8e, 0x70c90}, + {0x70c92, 0x70ca8}, {0x70caa, 0x70cb3}, {0x70cb5, 0x70cb9}, {0x70d05, 0x70d0c}, + {0x70d0e, 0x70d10}, {0x70d12, 0x70d3a}, {0x70d54, 0x70d56}, {0x70d5f, 0x70d61}, + {0x70d7a, 0x70d7f}, {0x70d85, 0x70d96}, {0x70d9a, 0x70db1}, {0x70db3, 0x70dbb}, + {0x70dc0, 0x70dc6}, {0x70e01, 0x70e30}, {0x70e40, 0x70e46}, {0x70e94, 0x70e97}, + {0x70e99, 0x70e9f}, {0x70ea1, 0x70ea3}, {0x70ead, 0x70eb0}, {0x70ec0, 0x70ec4}, + {0x70edc, 0x70edf}, {0x70f40, 0x70f47}, {0x70f49, 0x70f6c}, {0x70f88, 0x70f8c}, + {0x71000, 0x7102a}, {0x71050, 0x71055}, {0x7105a, 0x7105d}, {0x7106e, 0x71070}, + {0x71075, 0x71081}, {0x710a0, 0x710c5}, {0x710d0, 0x710fa}, {0x710fc, 0x71248}, + {0x7124a, 0x7124d}, {0x71250, 0x71256}, {0x7125a, 0x7125d}, {0x71260, 0x71288}, + {0x7128a, 0x7128d}, {0x71290, 0x712b0}, {0x712b2, 0x712b5}, {0x712b8, 0x712be}, + {0x712c2, 0x712c5}, {0x712c8, 0x712d6}, {0x712d8, 0x71310}, {0x71312, 0x71315}, + {0x71318, 0x7135a}, {0x71380, 0x7138f}, {0x713a0, 0x713f5}, {0x713f8, 0x713fd}, + {0x71401, 0x7166c}, {0x7166f, 0x7167f}, {0x71681, 0x7169a}, {0x716a0, 0x716ea}, + {0x716f1, 0x716f8}, {0x71700, 0x7170c}, {0x7170e, 0x71711}, {0x71720, 0x71731}, + {0x71740, 0x71751}, {0x71760, 0x7176c}, {0x7176e, 0x71770}, {0x71780, 0x717b3}, + {0x71820, 0x71877}, {0x71880, 0x71884}, {0x71887, 0x718a8}, {0x718b0, 0x718f5}, + {0x71900, 0x7191e}, {0x71950, 0x7196d}, {0x71970, 0x71974}, {0x71980, 0x719ab}, + {0x719b0, 0x719c9}, {0x71a00, 0x71a16}, {0x71a20, 0x71a54}, {0x71b05, 0x71b33}, + {0x71b45, 0x71b4b}, {0x71b83, 0x71ba0}, {0x71bba, 0x71be5}, {0x71c00, 0x71c23}, + {0x71c4d, 0x71c4f}, {0x71c5a, 0x71c7d}, {0x71c80, 0x71c88}, {0x71ce9, 0x71cec}, + {0x71cee, 0x71cf1}, {0x71d00, 0x71dbf}, {0x71e00, 0x71f15}, {0x71f18, 0x71f1d}, + {0x71f20, 0x71f45}, {0x71f48, 0x71f4d}, {0x71f50, 0x71f57}, {0x71f5f, 0x71f7d}, + {0x71f80, 0x71fb4}, {0x71fb6, 0x71fbc}, {0x71fc2, 0x71fc4}, {0x71fc6, 0x71fcc}, + {0x71fd0, 0x71fd3}, {0x71fd6, 0x71fdb}, {0x71fe0, 0x71fec}, {0x71ff2, 0x71ff4}, + {0x71ff6, 0x71ffc}, {0x72090, 0x7209c}, {0x7210a, 0x72113}, {0x72119, 0x7211d}, + {0x7212a, 0x7212d}, {0x7212f, 0x72139}, {0x7213c, 0x7213f}, {0x72145, 0x72149}, + {0x72c00, 0x72c2e}, {0x72c30, 0x72c5e}, {0x72c60, 0x72ce4}, {0x72ceb, 0x72cee}, + {0x72d00, 0x72d25}, {0x72d30, 0x72d67}, {0x72d80, 0x72d96}, {0x72da0, 0x72da6}, + {0x72da8, 0x72dae}, {0x72db0, 0x72db6}, {0x72db8, 0x72dbe}, {0x72dc0, 0x72dc6}, + {0x72dc8, 0x72dce}, {0x72dd0, 0x72dd6}, {0x72dd8, 0x72dde}, {0x73031, 0x73035}, + {0x73041, 0x73096}, {0x7309d, 0x7309f}, {0x730a1, 0x730fa}, {0x730fc, 0x730ff}, + {0x73105, 0x7312e}, {0x73131, 0x7318e}, {0x731a0, 0x731ba}, {0x731f0, 0x731ff}, + {0x73400, 0x74db5}, {0x74e00, 0x79fea}, {0x7a000, 0x7a48c}, {0x7a4d0, 0x7a4fd}, + {0x7a500, 0x7a60c}, {0x7a610, 0x7a61f}, {0x7a640, 0x7a66e}, {0x7a67f, 0x7a69d}, + {0x7a6a0, 0x7a6e5}, {0x7a717, 0x7a71f}, {0x7a722, 0x7a788}, {0x7a78b, 0x7a7ae}, + {0x7a7b0, 0x7a7b7}, {0x7a7f7, 0x7a801}, {0x7a803, 0x7a805}, {0x7a807, 0x7a80a}, + {0x7a80c, 0x7a822}, {0x7a840, 0x7a873}, {0x7a882, 0x7a8b3}, {0x7a8f2, 0x7a8f7}, + {0x7a90a, 0x7a925}, {0x7a930, 0x7a946}, {0x7a960, 0x7a97c}, {0x7a984, 0x7a9b2}, + {0x7a9e0, 0x7a9e4}, {0x7a9e6, 0x7a9ef}, {0x7a9fa, 0x7a9fe}, {0x7aa00, 0x7aa28}, + {0x7aa40, 0x7aa42}, {0x7aa44, 0x7aa4b}, {0x7aa60, 0x7aa76}, {0x7aa7e, 0x7aaaf}, + {0x7aab9, 0x7aabd}, {0x7aadb, 0x7aadd}, {0x7aae0, 0x7aaea}, {0x7aaf2, 0x7aaf4}, + {0x7ab01, 0x7ab06}, {0x7ab09, 0x7ab0e}, {0x7ab11, 0x7ab16}, {0x7ab20, 0x7ab26}, + {0x7ab28, 0x7ab2e}, {0x7ab30, 0x7ab5a}, {0x7ab5c, 0x7ab65}, {0x7ab70, 0x7abe2}, + {0x7ac00, 0x7d7a3}, {0x7d7b0, 0x7d7c6}, {0x7d7cb, 0x7d7fb}, {0x7f900, 0x7fa6d}, + {0x7fa70, 0x7fad9}, {0x7fb00, 0x7fb06}, {0x7fb13, 0x7fb17}, {0x7fb1f, 0x7fb28}, + {0x7fb2a, 0x7fb36}, {0x7fb38, 0x7fb3c}, {0x7fb46, 0x7fbb1}, {0x7fbd3, 0x7fd3d}, + {0x7fd50, 0x7fd8f}, {0x7fd92, 0x7fdc7}, {0x7fdf0, 0x7fdfb}, {0x7fe70, 0x7fe74}, + {0x7fe76, 0x7fefc}, {0x7ff21, 0x7ff3a}, {0x7ff41, 0x7ff5a}, {0x7ff66, 0x7ffbe}, + {0x7ffc2, 0x7ffc7}, {0x7ffca, 0x7ffcf}, {0x7ffd2, 0x7ffd7}, {0x7ffda, 0x7ffdc}, + {0x80041, 0x8005a}, {0x80061, 0x8007a}, {0x800c0, 0x800d6}, {0x800d8, 0x800f6}, + {0x800f8, 0x802c1}, {0x802c6, 0x802d1}, {0x802e0, 0x802e4}, {0x80370, 0x80374}, + {0x8037a, 0x8037d}, {0x80388, 0x8038a}, {0x8038e, 0x803a1}, {0x803a3, 0x803f5}, + {0x803f7, 0x80481}, {0x8048a, 0x8052f}, {0x80531, 0x80556}, {0x80561, 0x80587}, + {0x805d0, 0x805ea}, {0x805f0, 0x805f2}, {0x80620, 0x8064a}, {0x80671, 0x806d3}, + {0x806fa, 0x806fc}, {0x80712, 0x8072f}, {0x8074d, 0x807a5}, {0x807ca, 0x807ea}, + {0x80800, 0x80815}, {0x80840, 0x80858}, {0x80860, 0x8086a}, {0x808a0, 0x808b4}, + {0x808b6, 0x808bd}, {0x80904, 0x80939}, {0x80958, 0x80961}, {0x80971, 0x80980}, + {0x80985, 0x8098c}, {0x80993, 0x809a8}, {0x809aa, 0x809b0}, {0x809b6, 0x809b9}, + {0x809df, 0x809e1}, {0x80a05, 0x80a0a}, {0x80a13, 0x80a28}, {0x80a2a, 0x80a30}, + {0x80a59, 0x80a5c}, {0x80a72, 0x80a74}, {0x80a85, 0x80a8d}, {0x80a8f, 0x80a91}, + {0x80a93, 0x80aa8}, {0x80aaa, 0x80ab0}, {0x80ab5, 0x80ab9}, {0x80b05, 0x80b0c}, + {0x80b13, 0x80b28}, {0x80b2a, 0x80b30}, {0x80b35, 0x80b39}, {0x80b5f, 0x80b61}, + {0x80b85, 0x80b8a}, {0x80b8e, 0x80b90}, {0x80b92, 0x80b95}, {0x80ba8, 0x80baa}, + {0x80bae, 0x80bb9}, {0x80c05, 0x80c0c}, {0x80c0e, 0x80c10}, {0x80c12, 0x80c28}, + {0x80c2a, 0x80c39}, {0x80c58, 0x80c5a}, {0x80c85, 0x80c8c}, {0x80c8e, 0x80c90}, + {0x80c92, 0x80ca8}, {0x80caa, 0x80cb3}, {0x80cb5, 0x80cb9}, {0x80d05, 0x80d0c}, + {0x80d0e, 0x80d10}, {0x80d12, 0x80d3a}, {0x80d54, 0x80d56}, {0x80d5f, 0x80d61}, + {0x80d7a, 0x80d7f}, {0x80d85, 0x80d96}, {0x80d9a, 0x80db1}, {0x80db3, 0x80dbb}, + {0x80dc0, 0x80dc6}, {0x80e01, 0x80e30}, {0x80e40, 0x80e46}, {0x80e94, 0x80e97}, + {0x80e99, 0x80e9f}, {0x80ea1, 0x80ea3}, {0x80ead, 0x80eb0}, {0x80ec0, 0x80ec4}, + {0x80edc, 0x80edf}, {0x80f40, 0x80f47}, {0x80f49, 0x80f6c}, {0x80f88, 0x80f8c}, + {0x81000, 0x8102a}, {0x81050, 0x81055}, {0x8105a, 0x8105d}, {0x8106e, 0x81070}, + {0x81075, 0x81081}, {0x810a0, 0x810c5}, {0x810d0, 0x810fa}, {0x810fc, 0x81248}, + {0x8124a, 0x8124d}, {0x81250, 0x81256}, {0x8125a, 0x8125d}, {0x81260, 0x81288}, + {0x8128a, 0x8128d}, {0x81290, 0x812b0}, {0x812b2, 0x812b5}, {0x812b8, 0x812be}, + {0x812c2, 0x812c5}, {0x812c8, 0x812d6}, {0x812d8, 0x81310}, {0x81312, 0x81315}, + {0x81318, 0x8135a}, {0x81380, 0x8138f}, {0x813a0, 0x813f5}, {0x813f8, 0x813fd}, + {0x81401, 0x8166c}, {0x8166f, 0x8167f}, {0x81681, 0x8169a}, {0x816a0, 0x816ea}, + {0x816f1, 0x816f8}, {0x81700, 0x8170c}, {0x8170e, 0x81711}, {0x81720, 0x81731}, + {0x81740, 0x81751}, {0x81760, 0x8176c}, {0x8176e, 0x81770}, {0x81780, 0x817b3}, + {0x81820, 0x81877}, {0x81880, 0x81884}, {0x81887, 0x818a8}, {0x818b0, 0x818f5}, + {0x81900, 0x8191e}, {0x81950, 0x8196d}, {0x81970, 0x81974}, {0x81980, 0x819ab}, + {0x819b0, 0x819c9}, {0x81a00, 0x81a16}, {0x81a20, 0x81a54}, {0x81b05, 0x81b33}, + {0x81b45, 0x81b4b}, {0x81b83, 0x81ba0}, {0x81bba, 0x81be5}, {0x81c00, 0x81c23}, + {0x81c4d, 0x81c4f}, {0x81c5a, 0x81c7d}, {0x81c80, 0x81c88}, {0x81ce9, 0x81cec}, + {0x81cee, 0x81cf1}, {0x81d00, 0x81dbf}, {0x81e00, 0x81f15}, {0x81f18, 0x81f1d}, + {0x81f20, 0x81f45}, {0x81f48, 0x81f4d}, {0x81f50, 0x81f57}, {0x81f5f, 0x81f7d}, + {0x81f80, 0x81fb4}, {0x81fb6, 0x81fbc}, {0x81fc2, 0x81fc4}, {0x81fc6, 0x81fcc}, + {0x81fd0, 0x81fd3}, {0x81fd6, 0x81fdb}, {0x81fe0, 0x81fec}, {0x81ff2, 0x81ff4}, + {0x81ff6, 0x81ffc}, {0x82090, 0x8209c}, {0x8210a, 0x82113}, {0x82119, 0x8211d}, + {0x8212a, 0x8212d}, {0x8212f, 0x82139}, {0x8213c, 0x8213f}, {0x82145, 0x82149}, + {0x82c00, 0x82c2e}, {0x82c30, 0x82c5e}, {0x82c60, 0x82ce4}, {0x82ceb, 0x82cee}, + {0x82d00, 0x82d25}, {0x82d30, 0x82d67}, {0x82d80, 0x82d96}, {0x82da0, 0x82da6}, + {0x82da8, 0x82dae}, {0x82db0, 0x82db6}, {0x82db8, 0x82dbe}, {0x82dc0, 0x82dc6}, + {0x82dc8, 0x82dce}, {0x82dd0, 0x82dd6}, {0x82dd8, 0x82dde}, {0x83031, 0x83035}, + {0x83041, 0x83096}, {0x8309d, 0x8309f}, {0x830a1, 0x830fa}, {0x830fc, 0x830ff}, + {0x83105, 0x8312e}, {0x83131, 0x8318e}, {0x831a0, 0x831ba}, {0x831f0, 0x831ff}, + {0x83400, 0x84db5}, {0x84e00, 0x89fea}, {0x8a000, 0x8a48c}, {0x8a4d0, 0x8a4fd}, + {0x8a500, 0x8a60c}, {0x8a610, 0x8a61f}, {0x8a640, 0x8a66e}, {0x8a67f, 0x8a69d}, + {0x8a6a0, 0x8a6e5}, {0x8a717, 0x8a71f}, {0x8a722, 0x8a788}, {0x8a78b, 0x8a7ae}, + {0x8a7b0, 0x8a7b7}, {0x8a7f7, 0x8a801}, {0x8a803, 0x8a805}, {0x8a807, 0x8a80a}, + {0x8a80c, 0x8a822}, {0x8a840, 0x8a873}, {0x8a882, 0x8a8b3}, {0x8a8f2, 0x8a8f7}, + {0x8a90a, 0x8a925}, {0x8a930, 0x8a946}, {0x8a960, 0x8a97c}, {0x8a984, 0x8a9b2}, + {0x8a9e0, 0x8a9e4}, {0x8a9e6, 0x8a9ef}, {0x8a9fa, 0x8a9fe}, {0x8aa00, 0x8aa28}, + {0x8aa40, 0x8aa42}, {0x8aa44, 0x8aa4b}, {0x8aa60, 0x8aa76}, {0x8aa7e, 0x8aaaf}, + {0x8aab9, 0x8aabd}, {0x8aadb, 0x8aadd}, {0x8aae0, 0x8aaea}, {0x8aaf2, 0x8aaf4}, + {0x8ab01, 0x8ab06}, {0x8ab09, 0x8ab0e}, {0x8ab11, 0x8ab16}, {0x8ab20, 0x8ab26}, + {0x8ab28, 0x8ab2e}, {0x8ab30, 0x8ab5a}, {0x8ab5c, 0x8ab65}, {0x8ab70, 0x8abe2}, + {0x8ac00, 0x8d7a3}, {0x8d7b0, 0x8d7c6}, {0x8d7cb, 0x8d7fb}, {0x8f900, 0x8fa6d}, + {0x8fa70, 0x8fad9}, {0x8fb00, 0x8fb06}, {0x8fb13, 0x8fb17}, {0x8fb1f, 0x8fb28}, + {0x8fb2a, 0x8fb36}, {0x8fb38, 0x8fb3c}, {0x8fb46, 0x8fbb1}, {0x8fbd3, 0x8fd3d}, + {0x8fd50, 0x8fd8f}, {0x8fd92, 0x8fdc7}, {0x8fdf0, 0x8fdfb}, {0x8fe70, 0x8fe74}, + {0x8fe76, 0x8fefc}, {0x8ff21, 0x8ff3a}, {0x8ff41, 0x8ff5a}, {0x8ff66, 0x8ffbe}, + {0x8ffc2, 0x8ffc7}, {0x8ffca, 0x8ffcf}, {0x8ffd2, 0x8ffd7}, {0x8ffda, 0x8ffdc}, + {0x90041, 0x9005a}, {0x90061, 0x9007a}, {0x900c0, 0x900d6}, {0x900d8, 0x900f6}, + {0x900f8, 0x902c1}, {0x902c6, 0x902d1}, {0x902e0, 0x902e4}, {0x90370, 0x90374}, + {0x9037a, 0x9037d}, {0x90388, 0x9038a}, {0x9038e, 0x903a1}, {0x903a3, 0x903f5}, + {0x903f7, 0x90481}, {0x9048a, 0x9052f}, {0x90531, 0x90556}, {0x90561, 0x90587}, + {0x905d0, 0x905ea}, {0x905f0, 0x905f2}, {0x90620, 0x9064a}, {0x90671, 0x906d3}, + {0x906fa, 0x906fc}, {0x90712, 0x9072f}, {0x9074d, 0x907a5}, {0x907ca, 0x907ea}, + {0x90800, 0x90815}, {0x90840, 0x90858}, {0x90860, 0x9086a}, {0x908a0, 0x908b4}, + {0x908b6, 0x908bd}, {0x90904, 0x90939}, {0x90958, 0x90961}, {0x90971, 0x90980}, + {0x90985, 0x9098c}, {0x90993, 0x909a8}, {0x909aa, 0x909b0}, {0x909b6, 0x909b9}, + {0x909df, 0x909e1}, {0x90a05, 0x90a0a}, {0x90a13, 0x90a28}, {0x90a2a, 0x90a30}, + {0x90a59, 0x90a5c}, {0x90a72, 0x90a74}, {0x90a85, 0x90a8d}, {0x90a8f, 0x90a91}, + {0x90a93, 0x90aa8}, {0x90aaa, 0x90ab0}, {0x90ab5, 0x90ab9}, {0x90b05, 0x90b0c}, + {0x90b13, 0x90b28}, {0x90b2a, 0x90b30}, {0x90b35, 0x90b39}, {0x90b5f, 0x90b61}, + {0x90b85, 0x90b8a}, {0x90b8e, 0x90b90}, {0x90b92, 0x90b95}, {0x90ba8, 0x90baa}, + {0x90bae, 0x90bb9}, {0x90c05, 0x90c0c}, {0x90c0e, 0x90c10}, {0x90c12, 0x90c28}, + {0x90c2a, 0x90c39}, {0x90c58, 0x90c5a}, {0x90c85, 0x90c8c}, {0x90c8e, 0x90c90}, + {0x90c92, 0x90ca8}, {0x90caa, 0x90cb3}, {0x90cb5, 0x90cb9}, {0x90d05, 0x90d0c}, + {0x90d0e, 0x90d10}, {0x90d12, 0x90d3a}, {0x90d54, 0x90d56}, {0x90d5f, 0x90d61}, + {0x90d7a, 0x90d7f}, {0x90d85, 0x90d96}, {0x90d9a, 0x90db1}, {0x90db3, 0x90dbb}, + {0x90dc0, 0x90dc6}, {0x90e01, 0x90e30}, {0x90e40, 0x90e46}, {0x90e94, 0x90e97}, + {0x90e99, 0x90e9f}, {0x90ea1, 0x90ea3}, {0x90ead, 0x90eb0}, {0x90ec0, 0x90ec4}, + {0x90edc, 0x90edf}, {0x90f40, 0x90f47}, {0x90f49, 0x90f6c}, {0x90f88, 0x90f8c}, + {0x91000, 0x9102a}, {0x91050, 0x91055}, {0x9105a, 0x9105d}, {0x9106e, 0x91070}, + {0x91075, 0x91081}, {0x910a0, 0x910c5}, {0x910d0, 0x910fa}, {0x910fc, 0x91248}, + {0x9124a, 0x9124d}, {0x91250, 0x91256}, {0x9125a, 0x9125d}, {0x91260, 0x91288}, + {0x9128a, 0x9128d}, {0x91290, 0x912b0}, {0x912b2, 0x912b5}, {0x912b8, 0x912be}, + {0x912c2, 0x912c5}, {0x912c8, 0x912d6}, {0x912d8, 0x91310}, {0x91312, 0x91315}, + {0x91318, 0x9135a}, {0x91380, 0x9138f}, {0x913a0, 0x913f5}, {0x913f8, 0x913fd}, + {0x91401, 0x9166c}, {0x9166f, 0x9167f}, {0x91681, 0x9169a}, {0x916a0, 0x916ea}, + {0x916f1, 0x916f8}, {0x91700, 0x9170c}, {0x9170e, 0x91711}, {0x91720, 0x91731}, + {0x91740, 0x91751}, {0x91760, 0x9176c}, {0x9176e, 0x91770}, {0x91780, 0x917b3}, + {0x91820, 0x91877}, {0x91880, 0x91884}, {0x91887, 0x918a8}, {0x918b0, 0x918f5}, + {0x91900, 0x9191e}, {0x91950, 0x9196d}, {0x91970, 0x91974}, {0x91980, 0x919ab}, + {0x919b0, 0x919c9}, {0x91a00, 0x91a16}, {0x91a20, 0x91a54}, {0x91b05, 0x91b33}, + {0x91b45, 0x91b4b}, {0x91b83, 0x91ba0}, {0x91bba, 0x91be5}, {0x91c00, 0x91c23}, + {0x91c4d, 0x91c4f}, {0x91c5a, 0x91c7d}, {0x91c80, 0x91c88}, {0x91ce9, 0x91cec}, + {0x91cee, 0x91cf1}, {0x91d00, 0x91dbf}, {0x91e00, 0x91f15}, {0x91f18, 0x91f1d}, + {0x91f20, 0x91f45}, {0x91f48, 0x91f4d}, {0x91f50, 0x91f57}, {0x91f5f, 0x91f7d}, + {0x91f80, 0x91fb4}, {0x91fb6, 0x91fbc}, {0x91fc2, 0x91fc4}, {0x91fc6, 0x91fcc}, + {0x91fd0, 0x91fd3}, {0x91fd6, 0x91fdb}, {0x91fe0, 0x91fec}, {0x91ff2, 0x91ff4}, + {0x91ff6, 0x91ffc}, {0x92090, 0x9209c}, {0x9210a, 0x92113}, {0x92119, 0x9211d}, + {0x9212a, 0x9212d}, {0x9212f, 0x92139}, {0x9213c, 0x9213f}, {0x92145, 0x92149}, + {0x92c00, 0x92c2e}, {0x92c30, 0x92c5e}, {0x92c60, 0x92ce4}, {0x92ceb, 0x92cee}, + {0x92d00, 0x92d25}, {0x92d30, 0x92d67}, {0x92d80, 0x92d96}, {0x92da0, 0x92da6}, + {0x92da8, 0x92dae}, {0x92db0, 0x92db6}, {0x92db8, 0x92dbe}, {0x92dc0, 0x92dc6}, + {0x92dc8, 0x92dce}, {0x92dd0, 0x92dd6}, {0x92dd8, 0x92dde}, {0x93031, 0x93035}, + {0x93041, 0x93096}, {0x9309d, 0x9309f}, {0x930a1, 0x930fa}, {0x930fc, 0x930ff}, + {0x93105, 0x9312e}, {0x93131, 0x9318e}, {0x931a0, 0x931ba}, {0x931f0, 0x931ff}, + {0x93400, 0x94db5}, {0x94e00, 0x99fea}, {0x9a000, 0x9a48c}, {0x9a4d0, 0x9a4fd}, + {0x9a500, 0x9a60c}, {0x9a610, 0x9a61f}, {0x9a640, 0x9a66e}, {0x9a67f, 0x9a69d}, + {0x9a6a0, 0x9a6e5}, {0x9a717, 0x9a71f}, {0x9a722, 0x9a788}, {0x9a78b, 0x9a7ae}, + {0x9a7b0, 0x9a7b7}, {0x9a7f7, 0x9a801}, {0x9a803, 0x9a805}, {0x9a807, 0x9a80a}, + {0x9a80c, 0x9a822}, {0x9a840, 0x9a873}, {0x9a882, 0x9a8b3}, {0x9a8f2, 0x9a8f7}, + {0x9a90a, 0x9a925}, {0x9a930, 0x9a946}, {0x9a960, 0x9a97c}, {0x9a984, 0x9a9b2}, + {0x9a9e0, 0x9a9e4}, {0x9a9e6, 0x9a9ef}, {0x9a9fa, 0x9a9fe}, {0x9aa00, 0x9aa28}, + {0x9aa40, 0x9aa42}, {0x9aa44, 0x9aa4b}, {0x9aa60, 0x9aa76}, {0x9aa7e, 0x9aaaf}, + {0x9aab9, 0x9aabd}, {0x9aadb, 0x9aadd}, {0x9aae0, 0x9aaea}, {0x9aaf2, 0x9aaf4}, + {0x9ab01, 0x9ab06}, {0x9ab09, 0x9ab0e}, {0x9ab11, 0x9ab16}, {0x9ab20, 0x9ab26}, + {0x9ab28, 0x9ab2e}, {0x9ab30, 0x9ab5a}, {0x9ab5c, 0x9ab65}, {0x9ab70, 0x9abe2}, + {0x9ac00, 0x9d7a3}, {0x9d7b0, 0x9d7c6}, {0x9d7cb, 0x9d7fb}, {0x9f900, 0x9fa6d}, + {0x9fa70, 0x9fad9}, {0x9fb00, 0x9fb06}, {0x9fb13, 0x9fb17}, {0x9fb1f, 0x9fb28}, + {0x9fb2a, 0x9fb36}, {0x9fb38, 0x9fb3c}, {0x9fb46, 0x9fbb1}, {0x9fbd3, 0x9fd3d}, + {0x9fd50, 0x9fd8f}, {0x9fd92, 0x9fdc7}, {0x9fdf0, 0x9fdfb}, {0x9fe70, 0x9fe74}, + {0x9fe76, 0x9fefc}, {0x9ff21, 0x9ff3a}, {0x9ff41, 0x9ff5a}, {0x9ff66, 0x9ffbe}, + {0x9ffc2, 0x9ffc7}, {0x9ffca, 0x9ffcf}, {0x9ffd2, 0x9ffd7}, {0x9ffda, 0x9ffdc}, + {0xa0041, 0xa005a}, {0xa0061, 0xa007a}, {0xa00c0, 0xa00d6}, {0xa00d8, 0xa00f6}, + {0xa00f8, 0xa02c1}, {0xa02c6, 0xa02d1}, {0xa02e0, 0xa02e4}, {0xa0370, 0xa0374}, + {0xa037a, 0xa037d}, {0xa0388, 0xa038a}, {0xa038e, 0xa03a1}, {0xa03a3, 0xa03f5}, + {0xa03f7, 0xa0481}, {0xa048a, 0xa052f}, {0xa0531, 0xa0556}, {0xa0561, 0xa0587}, + {0xa05d0, 0xa05ea}, {0xa05f0, 0xa05f2}, {0xa0620, 0xa064a}, {0xa0671, 0xa06d3}, + {0xa06fa, 0xa06fc}, {0xa0712, 0xa072f}, {0xa074d, 0xa07a5}, {0xa07ca, 0xa07ea}, + {0xa0800, 0xa0815}, {0xa0840, 0xa0858}, {0xa0860, 0xa086a}, {0xa08a0, 0xa08b4}, + {0xa08b6, 0xa08bd}, {0xa0904, 0xa0939}, {0xa0958, 0xa0961}, {0xa0971, 0xa0980}, + {0xa0985, 0xa098c}, {0xa0993, 0xa09a8}, {0xa09aa, 0xa09b0}, {0xa09b6, 0xa09b9}, + {0xa09df, 0xa09e1}, {0xa0a05, 0xa0a0a}, {0xa0a13, 0xa0a28}, {0xa0a2a, 0xa0a30}, + {0xa0a59, 0xa0a5c}, {0xa0a72, 0xa0a74}, {0xa0a85, 0xa0a8d}, {0xa0a8f, 0xa0a91}, + {0xa0a93, 0xa0aa8}, {0xa0aaa, 0xa0ab0}, {0xa0ab5, 0xa0ab9}, {0xa0b05, 0xa0b0c}, + {0xa0b13, 0xa0b28}, {0xa0b2a, 0xa0b30}, {0xa0b35, 0xa0b39}, {0xa0b5f, 0xa0b61}, + {0xa0b85, 0xa0b8a}, {0xa0b8e, 0xa0b90}, {0xa0b92, 0xa0b95}, {0xa0ba8, 0xa0baa}, + {0xa0bae, 0xa0bb9}, {0xa0c05, 0xa0c0c}, {0xa0c0e, 0xa0c10}, {0xa0c12, 0xa0c28}, + {0xa0c2a, 0xa0c39}, {0xa0c58, 0xa0c5a}, {0xa0c85, 0xa0c8c}, {0xa0c8e, 0xa0c90}, + {0xa0c92, 0xa0ca8}, {0xa0caa, 0xa0cb3}, {0xa0cb5, 0xa0cb9}, {0xa0d05, 0xa0d0c}, + {0xa0d0e, 0xa0d10}, {0xa0d12, 0xa0d3a}, {0xa0d54, 0xa0d56}, {0xa0d5f, 0xa0d61}, + {0xa0d7a, 0xa0d7f}, {0xa0d85, 0xa0d96}, {0xa0d9a, 0xa0db1}, {0xa0db3, 0xa0dbb}, + {0xa0dc0, 0xa0dc6}, {0xa0e01, 0xa0e30}, {0xa0e40, 0xa0e46}, {0xa0e94, 0xa0e97}, + {0xa0e99, 0xa0e9f}, {0xa0ea1, 0xa0ea3}, {0xa0ead, 0xa0eb0}, {0xa0ec0, 0xa0ec4}, + {0xa0edc, 0xa0edf}, {0xa0f40, 0xa0f47}, {0xa0f49, 0xa0f6c}, {0xa0f88, 0xa0f8c}, + {0xa1000, 0xa102a}, {0xa1050, 0xa1055}, {0xa105a, 0xa105d}, {0xa106e, 0xa1070}, + {0xa1075, 0xa1081}, {0xa10a0, 0xa10c5}, {0xa10d0, 0xa10fa}, {0xa10fc, 0xa1248}, + {0xa124a, 0xa124d}, {0xa1250, 0xa1256}, {0xa125a, 0xa125d}, {0xa1260, 0xa1288}, + {0xa128a, 0xa128d}, {0xa1290, 0xa12b0}, {0xa12b2, 0xa12b5}, {0xa12b8, 0xa12be}, + {0xa12c2, 0xa12c5}, {0xa12c8, 0xa12d6}, {0xa12d8, 0xa1310}, {0xa1312, 0xa1315}, + {0xa1318, 0xa135a}, {0xa1380, 0xa138f}, {0xa13a0, 0xa13f5}, {0xa13f8, 0xa13fd}, + {0xa1401, 0xa166c}, {0xa166f, 0xa167f}, {0xa1681, 0xa169a}, {0xa16a0, 0xa16ea}, + {0xa16f1, 0xa16f8}, {0xa1700, 0xa170c}, {0xa170e, 0xa1711}, {0xa1720, 0xa1731}, + {0xa1740, 0xa1751}, {0xa1760, 0xa176c}, {0xa176e, 0xa1770}, {0xa1780, 0xa17b3}, + {0xa1820, 0xa1877}, {0xa1880, 0xa1884}, {0xa1887, 0xa18a8}, {0xa18b0, 0xa18f5}, + {0xa1900, 0xa191e}, {0xa1950, 0xa196d}, {0xa1970, 0xa1974}, {0xa1980, 0xa19ab}, + {0xa19b0, 0xa19c9}, {0xa1a00, 0xa1a16}, {0xa1a20, 0xa1a54}, {0xa1b05, 0xa1b33}, + {0xa1b45, 0xa1b4b}, {0xa1b83, 0xa1ba0}, {0xa1bba, 0xa1be5}, {0xa1c00, 0xa1c23}, + {0xa1c4d, 0xa1c4f}, {0xa1c5a, 0xa1c7d}, {0xa1c80, 0xa1c88}, {0xa1ce9, 0xa1cec}, + {0xa1cee, 0xa1cf1}, {0xa1d00, 0xa1dbf}, {0xa1e00, 0xa1f15}, {0xa1f18, 0xa1f1d}, + {0xa1f20, 0xa1f45}, {0xa1f48, 0xa1f4d}, {0xa1f50, 0xa1f57}, {0xa1f5f, 0xa1f7d}, + {0xa1f80, 0xa1fb4}, {0xa1fb6, 0xa1fbc}, {0xa1fc2, 0xa1fc4}, {0xa1fc6, 0xa1fcc}, + {0xa1fd0, 0xa1fd3}, {0xa1fd6, 0xa1fdb}, {0xa1fe0, 0xa1fec}, {0xa1ff2, 0xa1ff4}, + {0xa1ff6, 0xa1ffc}, {0xa2090, 0xa209c}, {0xa210a, 0xa2113}, {0xa2119, 0xa211d}, + {0xa212a, 0xa212d}, {0xa212f, 0xa2139}, {0xa213c, 0xa213f}, {0xa2145, 0xa2149}, + {0xa2c00, 0xa2c2e}, {0xa2c30, 0xa2c5e}, {0xa2c60, 0xa2ce4}, {0xa2ceb, 0xa2cee}, + {0xa2d00, 0xa2d25}, {0xa2d30, 0xa2d67}, {0xa2d80, 0xa2d96}, {0xa2da0, 0xa2da6}, + {0xa2da8, 0xa2dae}, {0xa2db0, 0xa2db6}, {0xa2db8, 0xa2dbe}, {0xa2dc0, 0xa2dc6}, + {0xa2dc8, 0xa2dce}, {0xa2dd0, 0xa2dd6}, {0xa2dd8, 0xa2dde}, {0xa3031, 0xa3035}, + {0xa3041, 0xa3096}, {0xa309d, 0xa309f}, {0xa30a1, 0xa30fa}, {0xa30fc, 0xa30ff}, + {0xa3105, 0xa312e}, {0xa3131, 0xa318e}, {0xa31a0, 0xa31ba}, {0xa31f0, 0xa31ff}, + {0xa3400, 0xa4db5}, {0xa4e00, 0xa9fea}, {0xaa000, 0xaa48c}, {0xaa4d0, 0xaa4fd}, + {0xaa500, 0xaa60c}, {0xaa610, 0xaa61f}, {0xaa640, 0xaa66e}, {0xaa67f, 0xaa69d}, + {0xaa6a0, 0xaa6e5}, {0xaa717, 0xaa71f}, {0xaa722, 0xaa788}, {0xaa78b, 0xaa7ae}, + {0xaa7b0, 0xaa7b7}, {0xaa7f7, 0xaa801}, {0xaa803, 0xaa805}, {0xaa807, 0xaa80a}, + {0xaa80c, 0xaa822}, {0xaa840, 0xaa873}, {0xaa882, 0xaa8b3}, {0xaa8f2, 0xaa8f7}, + {0xaa90a, 0xaa925}, {0xaa930, 0xaa946}, {0xaa960, 0xaa97c}, {0xaa984, 0xaa9b2}, + {0xaa9e0, 0xaa9e4}, {0xaa9e6, 0xaa9ef}, {0xaa9fa, 0xaa9fe}, {0xaaa00, 0xaaa28}, + {0xaaa40, 0xaaa42}, {0xaaa44, 0xaaa4b}, {0xaaa60, 0xaaa76}, {0xaaa7e, 0xaaaaf}, + {0xaaab9, 0xaaabd}, {0xaaadb, 0xaaadd}, {0xaaae0, 0xaaaea}, {0xaaaf2, 0xaaaf4}, + {0xaab01, 0xaab06}, {0xaab09, 0xaab0e}, {0xaab11, 0xaab16}, {0xaab20, 0xaab26}, + {0xaab28, 0xaab2e}, {0xaab30, 0xaab5a}, {0xaab5c, 0xaab65}, {0xaab70, 0xaabe2}, + {0xaac00, 0xad7a3}, {0xad7b0, 0xad7c6}, {0xad7cb, 0xad7fb}, {0xaf900, 0xafa6d}, + {0xafa70, 0xafad9}, {0xafb00, 0xafb06}, {0xafb13, 0xafb17}, {0xafb1f, 0xafb28}, + {0xafb2a, 0xafb36}, {0xafb38, 0xafb3c}, {0xafb46, 0xafbb1}, {0xafbd3, 0xafd3d}, + {0xafd50, 0xafd8f}, {0xafd92, 0xafdc7}, {0xafdf0, 0xafdfb}, {0xafe70, 0xafe74}, + {0xafe76, 0xafefc}, {0xaff21, 0xaff3a}, {0xaff41, 0xaff5a}, {0xaff66, 0xaffbe}, + {0xaffc2, 0xaffc7}, {0xaffca, 0xaffcf}, {0xaffd2, 0xaffd7}, {0xaffda, 0xaffdc}, + {0xb0041, 0xb005a}, {0xb0061, 0xb007a}, {0xb00c0, 0xb00d6}, {0xb00d8, 0xb00f6}, + {0xb00f8, 0xb02c1}, {0xb02c6, 0xb02d1}, {0xb02e0, 0xb02e4}, {0xb0370, 0xb0374}, + {0xb037a, 0xb037d}, {0xb0388, 0xb038a}, {0xb038e, 0xb03a1}, {0xb03a3, 0xb03f5}, + {0xb03f7, 0xb0481}, {0xb048a, 0xb052f}, {0xb0531, 0xb0556}, {0xb0561, 0xb0587}, + {0xb05d0, 0xb05ea}, {0xb05f0, 0xb05f2}, {0xb0620, 0xb064a}, {0xb0671, 0xb06d3}, + {0xb06fa, 0xb06fc}, {0xb0712, 0xb072f}, {0xb074d, 0xb07a5}, {0xb07ca, 0xb07ea}, + {0xb0800, 0xb0815}, {0xb0840, 0xb0858}, {0xb0860, 0xb086a}, {0xb08a0, 0xb08b4}, + {0xb08b6, 0xb08bd}, {0xb0904, 0xb0939}, {0xb0958, 0xb0961}, {0xb0971, 0xb0980}, + {0xb0985, 0xb098c}, {0xb0993, 0xb09a8}, {0xb09aa, 0xb09b0}, {0xb09b6, 0xb09b9}, + {0xb09df, 0xb09e1}, {0xb0a05, 0xb0a0a}, {0xb0a13, 0xb0a28}, {0xb0a2a, 0xb0a30}, + {0xb0a59, 0xb0a5c}, {0xb0a72, 0xb0a74}, {0xb0a85, 0xb0a8d}, {0xb0a8f, 0xb0a91}, + {0xb0a93, 0xb0aa8}, {0xb0aaa, 0xb0ab0}, {0xb0ab5, 0xb0ab9}, {0xb0b05, 0xb0b0c}, + {0xb0b13, 0xb0b28}, {0xb0b2a, 0xb0b30}, {0xb0b35, 0xb0b39}, {0xb0b5f, 0xb0b61}, + {0xb0b85, 0xb0b8a}, {0xb0b8e, 0xb0b90}, {0xb0b92, 0xb0b95}, {0xb0ba8, 0xb0baa}, + {0xb0bae, 0xb0bb9}, {0xb0c05, 0xb0c0c}, {0xb0c0e, 0xb0c10}, {0xb0c12, 0xb0c28}, + {0xb0c2a, 0xb0c39}, {0xb0c58, 0xb0c5a}, {0xb0c85, 0xb0c8c}, {0xb0c8e, 0xb0c90}, + {0xb0c92, 0xb0ca8}, {0xb0caa, 0xb0cb3}, {0xb0cb5, 0xb0cb9}, {0xb0d05, 0xb0d0c}, + {0xb0d0e, 0xb0d10}, {0xb0d12, 0xb0d3a}, {0xb0d54, 0xb0d56}, {0xb0d5f, 0xb0d61}, + {0xb0d7a, 0xb0d7f}, {0xb0d85, 0xb0d96}, {0xb0d9a, 0xb0db1}, {0xb0db3, 0xb0dbb}, + {0xb0dc0, 0xb0dc6}, {0xb0e01, 0xb0e30}, {0xb0e40, 0xb0e46}, {0xb0e94, 0xb0e97}, + {0xb0e99, 0xb0e9f}, {0xb0ea1, 0xb0ea3}, {0xb0ead, 0xb0eb0}, {0xb0ec0, 0xb0ec4}, + {0xb0edc, 0xb0edf}, {0xb0f40, 0xb0f47}, {0xb0f49, 0xb0f6c}, {0xb0f88, 0xb0f8c}, + {0xb1000, 0xb102a}, {0xb1050, 0xb1055}, {0xb105a, 0xb105d}, {0xb106e, 0xb1070}, + {0xb1075, 0xb1081}, {0xb10a0, 0xb10c5}, {0xb10d0, 0xb10fa}, {0xb10fc, 0xb1248}, + {0xb124a, 0xb124d}, {0xb1250, 0xb1256}, {0xb125a, 0xb125d}, {0xb1260, 0xb1288}, + {0xb128a, 0xb128d}, {0xb1290, 0xb12b0}, {0xb12b2, 0xb12b5}, {0xb12b8, 0xb12be}, + {0xb12c2, 0xb12c5}, {0xb12c8, 0xb12d6}, {0xb12d8, 0xb1310}, {0xb1312, 0xb1315}, + {0xb1318, 0xb135a}, {0xb1380, 0xb138f}, {0xb13a0, 0xb13f5}, {0xb13f8, 0xb13fd}, + {0xb1401, 0xb166c}, {0xb166f, 0xb167f}, {0xb1681, 0xb169a}, {0xb16a0, 0xb16ea}, + {0xb16f1, 0xb16f8}, {0xb1700, 0xb170c}, {0xb170e, 0xb1711}, {0xb1720, 0xb1731}, + {0xb1740, 0xb1751}, {0xb1760, 0xb176c}, {0xb176e, 0xb1770}, {0xb1780, 0xb17b3}, + {0xb1820, 0xb1877}, {0xb1880, 0xb1884}, {0xb1887, 0xb18a8}, {0xb18b0, 0xb18f5}, + {0xb1900, 0xb191e}, {0xb1950, 0xb196d}, {0xb1970, 0xb1974}, {0xb1980, 0xb19ab}, + {0xb19b0, 0xb19c9}, {0xb1a00, 0xb1a16}, {0xb1a20, 0xb1a54}, {0xb1b05, 0xb1b33}, + {0xb1b45, 0xb1b4b}, {0xb1b83, 0xb1ba0}, {0xb1bba, 0xb1be5}, {0xb1c00, 0xb1c23}, + {0xb1c4d, 0xb1c4f}, {0xb1c5a, 0xb1c7d}, {0xb1c80, 0xb1c88}, {0xb1ce9, 0xb1cec}, + {0xb1cee, 0xb1cf1}, {0xb1d00, 0xb1dbf}, {0xb1e00, 0xb1f15}, {0xb1f18, 0xb1f1d}, + {0xb1f20, 0xb1f45}, {0xb1f48, 0xb1f4d}, {0xb1f50, 0xb1f57}, {0xb1f5f, 0xb1f7d}, + {0xb1f80, 0xb1fb4}, {0xb1fb6, 0xb1fbc}, {0xb1fc2, 0xb1fc4}, {0xb1fc6, 0xb1fcc}, + {0xb1fd0, 0xb1fd3}, {0xb1fd6, 0xb1fdb}, {0xb1fe0, 0xb1fec}, {0xb1ff2, 0xb1ff4}, + {0xb1ff6, 0xb1ffc}, {0xb2090, 0xb209c}, {0xb210a, 0xb2113}, {0xb2119, 0xb211d}, + {0xb212a, 0xb212d}, {0xb212f, 0xb2139}, {0xb213c, 0xb213f}, {0xb2145, 0xb2149}, + {0xb2c00, 0xb2c2e}, {0xb2c30, 0xb2c5e}, {0xb2c60, 0xb2ce4}, {0xb2ceb, 0xb2cee}, + {0xb2d00, 0xb2d25}, {0xb2d30, 0xb2d67}, {0xb2d80, 0xb2d96}, {0xb2da0, 0xb2da6}, + {0xb2da8, 0xb2dae}, {0xb2db0, 0xb2db6}, {0xb2db8, 0xb2dbe}, {0xb2dc0, 0xb2dc6}, + {0xb2dc8, 0xb2dce}, {0xb2dd0, 0xb2dd6}, {0xb2dd8, 0xb2dde}, {0xb3031, 0xb3035}, + {0xb3041, 0xb3096}, {0xb309d, 0xb309f}, {0xb30a1, 0xb30fa}, {0xb30fc, 0xb30ff}, + {0xb3105, 0xb312e}, {0xb3131, 0xb318e}, {0xb31a0, 0xb31ba}, {0xb31f0, 0xb31ff}, + {0xb3400, 0xb4db5}, {0xb4e00, 0xb9fea}, {0xba000, 0xba48c}, {0xba4d0, 0xba4fd}, + {0xba500, 0xba60c}, {0xba610, 0xba61f}, {0xba640, 0xba66e}, {0xba67f, 0xba69d}, + {0xba6a0, 0xba6e5}, {0xba717, 0xba71f}, {0xba722, 0xba788}, {0xba78b, 0xba7ae}, + {0xba7b0, 0xba7b7}, {0xba7f7, 0xba801}, {0xba803, 0xba805}, {0xba807, 0xba80a}, + {0xba80c, 0xba822}, {0xba840, 0xba873}, {0xba882, 0xba8b3}, {0xba8f2, 0xba8f7}, + {0xba90a, 0xba925}, {0xba930, 0xba946}, {0xba960, 0xba97c}, {0xba984, 0xba9b2}, + {0xba9e0, 0xba9e4}, {0xba9e6, 0xba9ef}, {0xba9fa, 0xba9fe}, {0xbaa00, 0xbaa28}, + {0xbaa40, 0xbaa42}, {0xbaa44, 0xbaa4b}, {0xbaa60, 0xbaa76}, {0xbaa7e, 0xbaaaf}, + {0xbaab9, 0xbaabd}, {0xbaadb, 0xbaadd}, {0xbaae0, 0xbaaea}, {0xbaaf2, 0xbaaf4}, + {0xbab01, 0xbab06}, {0xbab09, 0xbab0e}, {0xbab11, 0xbab16}, {0xbab20, 0xbab26}, + {0xbab28, 0xbab2e}, {0xbab30, 0xbab5a}, {0xbab5c, 0xbab65}, {0xbab70, 0xbabe2}, + {0xbac00, 0xbd7a3}, {0xbd7b0, 0xbd7c6}, {0xbd7cb, 0xbd7fb}, {0xbf900, 0xbfa6d}, + {0xbfa70, 0xbfad9}, {0xbfb00, 0xbfb06}, {0xbfb13, 0xbfb17}, {0xbfb1f, 0xbfb28}, + {0xbfb2a, 0xbfb36}, {0xbfb38, 0xbfb3c}, {0xbfb46, 0xbfbb1}, {0xbfbd3, 0xbfd3d}, + {0xbfd50, 0xbfd8f}, {0xbfd92, 0xbfdc7}, {0xbfdf0, 0xbfdfb}, {0xbfe70, 0xbfe74}, + {0xbfe76, 0xbfefc}, {0xbff21, 0xbff3a}, {0xbff41, 0xbff5a}, {0xbff66, 0xbffbe}, + {0xbffc2, 0xbffc7}, {0xbffca, 0xbffcf}, {0xbffd2, 0xbffd7}, {0xbffda, 0xbffdc}, + {0xc0041, 0xc005a}, {0xc0061, 0xc007a}, {0xc00c0, 0xc00d6}, {0xc00d8, 0xc00f6}, + {0xc00f8, 0xc02c1}, {0xc02c6, 0xc02d1}, {0xc02e0, 0xc02e4}, {0xc0370, 0xc0374}, + {0xc037a, 0xc037d}, {0xc0388, 0xc038a}, {0xc038e, 0xc03a1}, {0xc03a3, 0xc03f5}, + {0xc03f7, 0xc0481}, {0xc048a, 0xc052f}, {0xc0531, 0xc0556}, {0xc0561, 0xc0587}, + {0xc05d0, 0xc05ea}, {0xc05f0, 0xc05f2}, {0xc0620, 0xc064a}, {0xc0671, 0xc06d3}, + {0xc06fa, 0xc06fc}, {0xc0712, 0xc072f}, {0xc074d, 0xc07a5}, {0xc07ca, 0xc07ea}, + {0xc0800, 0xc0815}, {0xc0840, 0xc0858}, {0xc0860, 0xc086a}, {0xc08a0, 0xc08b4}, + {0xc08b6, 0xc08bd}, {0xc0904, 0xc0939}, {0xc0958, 0xc0961}, {0xc0971, 0xc0980}, + {0xc0985, 0xc098c}, {0xc0993, 0xc09a8}, {0xc09aa, 0xc09b0}, {0xc09b6, 0xc09b9}, + {0xc09df, 0xc09e1}, {0xc0a05, 0xc0a0a}, {0xc0a13, 0xc0a28}, {0xc0a2a, 0xc0a30}, + {0xc0a59, 0xc0a5c}, {0xc0a72, 0xc0a74}, {0xc0a85, 0xc0a8d}, {0xc0a8f, 0xc0a91}, + {0xc0a93, 0xc0aa8}, {0xc0aaa, 0xc0ab0}, {0xc0ab5, 0xc0ab9}, {0xc0b05, 0xc0b0c}, + {0xc0b13, 0xc0b28}, {0xc0b2a, 0xc0b30}, {0xc0b35, 0xc0b39}, {0xc0b5f, 0xc0b61}, + {0xc0b85, 0xc0b8a}, {0xc0b8e, 0xc0b90}, {0xc0b92, 0xc0b95}, {0xc0ba8, 0xc0baa}, + {0xc0bae, 0xc0bb9}, {0xc0c05, 0xc0c0c}, {0xc0c0e, 0xc0c10}, {0xc0c12, 0xc0c28}, + {0xc0c2a, 0xc0c39}, {0xc0c58, 0xc0c5a}, {0xc0c85, 0xc0c8c}, {0xc0c8e, 0xc0c90}, + {0xc0c92, 0xc0ca8}, {0xc0caa, 0xc0cb3}, {0xc0cb5, 0xc0cb9}, {0xc0d05, 0xc0d0c}, + {0xc0d0e, 0xc0d10}, {0xc0d12, 0xc0d3a}, {0xc0d54, 0xc0d56}, {0xc0d5f, 0xc0d61}, + {0xc0d7a, 0xc0d7f}, {0xc0d85, 0xc0d96}, {0xc0d9a, 0xc0db1}, {0xc0db3, 0xc0dbb}, + {0xc0dc0, 0xc0dc6}, {0xc0e01, 0xc0e30}, {0xc0e40, 0xc0e46}, {0xc0e94, 0xc0e97}, + {0xc0e99, 0xc0e9f}, {0xc0ea1, 0xc0ea3}, {0xc0ead, 0xc0eb0}, {0xc0ec0, 0xc0ec4}, + {0xc0edc, 0xc0edf}, {0xc0f40, 0xc0f47}, {0xc0f49, 0xc0f6c}, {0xc0f88, 0xc0f8c}, + {0xc1000, 0xc102a}, {0xc1050, 0xc1055}, {0xc105a, 0xc105d}, {0xc106e, 0xc1070}, + {0xc1075, 0xc1081}, {0xc10a0, 0xc10c5}, {0xc10d0, 0xc10fa}, {0xc10fc, 0xc1248}, + {0xc124a, 0xc124d}, {0xc1250, 0xc1256}, {0xc125a, 0xc125d}, {0xc1260, 0xc1288}, + {0xc128a, 0xc128d}, {0xc1290, 0xc12b0}, {0xc12b2, 0xc12b5}, {0xc12b8, 0xc12be}, + {0xc12c2, 0xc12c5}, {0xc12c8, 0xc12d6}, {0xc12d8, 0xc1310}, {0xc1312, 0xc1315}, + {0xc1318, 0xc135a}, {0xc1380, 0xc138f}, {0xc13a0, 0xc13f5}, {0xc13f8, 0xc13fd}, + {0xc1401, 0xc166c}, {0xc166f, 0xc167f}, {0xc1681, 0xc169a}, {0xc16a0, 0xc16ea}, + {0xc16f1, 0xc16f8}, {0xc1700, 0xc170c}, {0xc170e, 0xc1711}, {0xc1720, 0xc1731}, + {0xc1740, 0xc1751}, {0xc1760, 0xc176c}, {0xc176e, 0xc1770}, {0xc1780, 0xc17b3}, + {0xc1820, 0xc1877}, {0xc1880, 0xc1884}, {0xc1887, 0xc18a8}, {0xc18b0, 0xc18f5}, + {0xc1900, 0xc191e}, {0xc1950, 0xc196d}, {0xc1970, 0xc1974}, {0xc1980, 0xc19ab}, + {0xc19b0, 0xc19c9}, {0xc1a00, 0xc1a16}, {0xc1a20, 0xc1a54}, {0xc1b05, 0xc1b33}, + {0xc1b45, 0xc1b4b}, {0xc1b83, 0xc1ba0}, {0xc1bba, 0xc1be5}, {0xc1c00, 0xc1c23}, + {0xc1c4d, 0xc1c4f}, {0xc1c5a, 0xc1c7d}, {0xc1c80, 0xc1c88}, {0xc1ce9, 0xc1cec}, + {0xc1cee, 0xc1cf1}, {0xc1d00, 0xc1dbf}, {0xc1e00, 0xc1f15}, {0xc1f18, 0xc1f1d}, + {0xc1f20, 0xc1f45}, {0xc1f48, 0xc1f4d}, {0xc1f50, 0xc1f57}, {0xc1f5f, 0xc1f7d}, + {0xc1f80, 0xc1fb4}, {0xc1fb6, 0xc1fbc}, {0xc1fc2, 0xc1fc4}, {0xc1fc6, 0xc1fcc}, + {0xc1fd0, 0xc1fd3}, {0xc1fd6, 0xc1fdb}, {0xc1fe0, 0xc1fec}, {0xc1ff2, 0xc1ff4}, + {0xc1ff6, 0xc1ffc}, {0xc2090, 0xc209c}, {0xc210a, 0xc2113}, {0xc2119, 0xc211d}, + {0xc212a, 0xc212d}, {0xc212f, 0xc2139}, {0xc213c, 0xc213f}, {0xc2145, 0xc2149}, + {0xc2c00, 0xc2c2e}, {0xc2c30, 0xc2c5e}, {0xc2c60, 0xc2ce4}, {0xc2ceb, 0xc2cee}, + {0xc2d00, 0xc2d25}, {0xc2d30, 0xc2d67}, {0xc2d80, 0xc2d96}, {0xc2da0, 0xc2da6}, + {0xc2da8, 0xc2dae}, {0xc2db0, 0xc2db6}, {0xc2db8, 0xc2dbe}, {0xc2dc0, 0xc2dc6}, + {0xc2dc8, 0xc2dce}, {0xc2dd0, 0xc2dd6}, {0xc2dd8, 0xc2dde}, {0xc3031, 0xc3035}, + {0xc3041, 0xc3096}, {0xc309d, 0xc309f}, {0xc30a1, 0xc30fa}, {0xc30fc, 0xc30ff}, + {0xc3105, 0xc312e}, {0xc3131, 0xc318e}, {0xc31a0, 0xc31ba}, {0xc31f0, 0xc31ff}, + {0xc3400, 0xc4db5}, {0xc4e00, 0xc9fea}, {0xca000, 0xca48c}, {0xca4d0, 0xca4fd}, + {0xca500, 0xca60c}, {0xca610, 0xca61f}, {0xca640, 0xca66e}, {0xca67f, 0xca69d}, + {0xca6a0, 0xca6e5}, {0xca717, 0xca71f}, {0xca722, 0xca788}, {0xca78b, 0xca7ae}, + {0xca7b0, 0xca7b7}, {0xca7f7, 0xca801}, {0xca803, 0xca805}, {0xca807, 0xca80a}, + {0xca80c, 0xca822}, {0xca840, 0xca873}, {0xca882, 0xca8b3}, {0xca8f2, 0xca8f7}, + {0xca90a, 0xca925}, {0xca930, 0xca946}, {0xca960, 0xca97c}, {0xca984, 0xca9b2}, + {0xca9e0, 0xca9e4}, {0xca9e6, 0xca9ef}, {0xca9fa, 0xca9fe}, {0xcaa00, 0xcaa28}, + {0xcaa40, 0xcaa42}, {0xcaa44, 0xcaa4b}, {0xcaa60, 0xcaa76}, {0xcaa7e, 0xcaaaf}, + {0xcaab9, 0xcaabd}, {0xcaadb, 0xcaadd}, {0xcaae0, 0xcaaea}, {0xcaaf2, 0xcaaf4}, + {0xcab01, 0xcab06}, {0xcab09, 0xcab0e}, {0xcab11, 0xcab16}, {0xcab20, 0xcab26}, + {0xcab28, 0xcab2e}, {0xcab30, 0xcab5a}, {0xcab5c, 0xcab65}, {0xcab70, 0xcabe2}, + {0xcac00, 0xcd7a3}, {0xcd7b0, 0xcd7c6}, {0xcd7cb, 0xcd7fb}, {0xcf900, 0xcfa6d}, + {0xcfa70, 0xcfad9}, {0xcfb00, 0xcfb06}, {0xcfb13, 0xcfb17}, {0xcfb1f, 0xcfb28}, + {0xcfb2a, 0xcfb36}, {0xcfb38, 0xcfb3c}, {0xcfb46, 0xcfbb1}, {0xcfbd3, 0xcfd3d}, + {0xcfd50, 0xcfd8f}, {0xcfd92, 0xcfdc7}, {0xcfdf0, 0xcfdfb}, {0xcfe70, 0xcfe74}, + {0xcfe76, 0xcfefc}, {0xcff21, 0xcff3a}, {0xcff41, 0xcff5a}, {0xcff66, 0xcffbe}, + {0xcffc2, 0xcffc7}, {0xcffca, 0xcffcf}, {0xcffd2, 0xcffd7}, {0xcffda, 0xcffdc}, + {0xd0041, 0xd005a}, {0xd0061, 0xd007a}, {0xd00c0, 0xd00d6}, {0xd00d8, 0xd00f6}, + {0xd00f8, 0xd02c1}, {0xd02c6, 0xd02d1}, {0xd02e0, 0xd02e4}, {0xd0370, 0xd0374}, + {0xd037a, 0xd037d}, {0xd0388, 0xd038a}, {0xd038e, 0xd03a1}, {0xd03a3, 0xd03f5}, + {0xd03f7, 0xd0481}, {0xd048a, 0xd052f}, {0xd0531, 0xd0556}, {0xd0561, 0xd0587}, + {0xd05d0, 0xd05ea}, {0xd05f0, 0xd05f2}, {0xd0620, 0xd064a}, {0xd0671, 0xd06d3}, + {0xd06fa, 0xd06fc}, {0xd0712, 0xd072f}, {0xd074d, 0xd07a5}, {0xd07ca, 0xd07ea}, + {0xd0800, 0xd0815}, {0xd0840, 0xd0858}, {0xd0860, 0xd086a}, {0xd08a0, 0xd08b4}, + {0xd08b6, 0xd08bd}, {0xd0904, 0xd0939}, {0xd0958, 0xd0961}, {0xd0971, 0xd0980}, + {0xd0985, 0xd098c}, {0xd0993, 0xd09a8}, {0xd09aa, 0xd09b0}, {0xd09b6, 0xd09b9}, + {0xd09df, 0xd09e1}, {0xd0a05, 0xd0a0a}, {0xd0a13, 0xd0a28}, {0xd0a2a, 0xd0a30}, + {0xd0a59, 0xd0a5c}, {0xd0a72, 0xd0a74}, {0xd0a85, 0xd0a8d}, {0xd0a8f, 0xd0a91}, + {0xd0a93, 0xd0aa8}, {0xd0aaa, 0xd0ab0}, {0xd0ab5, 0xd0ab9}, {0xd0b05, 0xd0b0c}, + {0xd0b13, 0xd0b28}, {0xd0b2a, 0xd0b30}, {0xd0b35, 0xd0b39}, {0xd0b5f, 0xd0b61}, + {0xd0b85, 0xd0b8a}, {0xd0b8e, 0xd0b90}, {0xd0b92, 0xd0b95}, {0xd0ba8, 0xd0baa}, + {0xd0bae, 0xd0bb9}, {0xd0c05, 0xd0c0c}, {0xd0c0e, 0xd0c10}, {0xd0c12, 0xd0c28}, + {0xd0c2a, 0xd0c39}, {0xd0c58, 0xd0c5a}, {0xd0c85, 0xd0c8c}, {0xd0c8e, 0xd0c90}, + {0xd0c92, 0xd0ca8}, {0xd0caa, 0xd0cb3}, {0xd0cb5, 0xd0cb9}, {0xd0d05, 0xd0d0c}, + {0xd0d0e, 0xd0d10}, {0xd0d12, 0xd0d3a}, {0xd0d54, 0xd0d56}, {0xd0d5f, 0xd0d61}, + {0xd0d7a, 0xd0d7f}, {0xd0d85, 0xd0d96}, {0xd0d9a, 0xd0db1}, {0xd0db3, 0xd0dbb}, + {0xd0dc0, 0xd0dc6}, {0xd0e01, 0xd0e30}, {0xd0e40, 0xd0e46}, {0xd0e94, 0xd0e97}, + {0xd0e99, 0xd0e9f}, {0xd0ea1, 0xd0ea3}, {0xd0ead, 0xd0eb0}, {0xd0ec0, 0xd0ec4}, + {0xd0edc, 0xd0edf}, {0xd0f40, 0xd0f47}, {0xd0f49, 0xd0f6c}, {0xd0f88, 0xd0f8c}, + {0xd1000, 0xd102a}, {0xd1050, 0xd1055}, {0xd105a, 0xd105d}, {0xd106e, 0xd1070}, + {0xd1075, 0xd1081}, {0xd10a0, 0xd10c5}, {0xd10d0, 0xd10fa}, {0xd10fc, 0xd1248}, + {0xd124a, 0xd124d}, {0xd1250, 0xd1256}, {0xd125a, 0xd125d}, {0xd1260, 0xd1288}, + {0xd128a, 0xd128d}, {0xd1290, 0xd12b0}, {0xd12b2, 0xd12b5}, {0xd12b8, 0xd12be}, + {0xd12c2, 0xd12c5}, {0xd12c8, 0xd12d6}, {0xd12d8, 0xd1310}, {0xd1312, 0xd1315}, + {0xd1318, 0xd135a}, {0xd1380, 0xd138f}, {0xd13a0, 0xd13f5}, {0xd13f8, 0xd13fd}, + {0xd1401, 0xd166c}, {0xd166f, 0xd167f}, {0xd1681, 0xd169a}, {0xd16a0, 0xd16ea}, + {0xd16f1, 0xd16f8}, {0xd1700, 0xd170c}, {0xd170e, 0xd1711}, {0xd1720, 0xd1731}, + {0xd1740, 0xd1751}, {0xd1760, 0xd176c}, {0xd176e, 0xd1770}, {0xd1780, 0xd17b3}, + {0xd1820, 0xd1877}, {0xd1880, 0xd1884}, {0xd1887, 0xd18a8}, {0xd18b0, 0xd18f5}, + {0xd1900, 0xd191e}, {0xd1950, 0xd196d}, {0xd1970, 0xd1974}, {0xd1980, 0xd19ab}, + {0xd19b0, 0xd19c9}, {0xd1a00, 0xd1a16}, {0xd1a20, 0xd1a54}, {0xd1b05, 0xd1b33}, + {0xd1b45, 0xd1b4b}, {0xd1b83, 0xd1ba0}, {0xd1bba, 0xd1be5}, {0xd1c00, 0xd1c23}, + {0xd1c4d, 0xd1c4f}, {0xd1c5a, 0xd1c7d}, {0xd1c80, 0xd1c88}, {0xd1ce9, 0xd1cec}, + {0xd1cee, 0xd1cf1}, {0xd1d00, 0xd1dbf}, {0xd1e00, 0xd1f15}, {0xd1f18, 0xd1f1d}, + {0xd1f20, 0xd1f45}, {0xd1f48, 0xd1f4d}, {0xd1f50, 0xd1f57}, {0xd1f5f, 0xd1f7d}, + {0xd1f80, 0xd1fb4}, {0xd1fb6, 0xd1fbc}, {0xd1fc2, 0xd1fc4}, {0xd1fc6, 0xd1fcc}, + {0xd1fd0, 0xd1fd3}, {0xd1fd6, 0xd1fdb}, {0xd1fe0, 0xd1fec}, {0xd1ff2, 0xd1ff4}, + {0xd1ff6, 0xd1ffc}, {0xd2090, 0xd209c}, {0xd210a, 0xd2113}, {0xd2119, 0xd211d}, + {0xd212a, 0xd212d}, {0xd212f, 0xd2139}, {0xd213c, 0xd213f}, {0xd2145, 0xd2149}, + {0xd2c00, 0xd2c2e}, {0xd2c30, 0xd2c5e}, {0xd2c60, 0xd2ce4}, {0xd2ceb, 0xd2cee}, + {0xd2d00, 0xd2d25}, {0xd2d30, 0xd2d67}, {0xd2d80, 0xd2d96}, {0xd2da0, 0xd2da6}, + {0xd2da8, 0xd2dae}, {0xd2db0, 0xd2db6}, {0xd2db8, 0xd2dbe}, {0xd2dc0, 0xd2dc6}, + {0xd2dc8, 0xd2dce}, {0xd2dd0, 0xd2dd6}, {0xd2dd8, 0xd2dde}, {0xd3031, 0xd3035}, + {0xd3041, 0xd3096}, {0xd309d, 0xd309f}, {0xd30a1, 0xd30fa}, {0xd30fc, 0xd30ff}, + {0xd3105, 0xd312e}, {0xd3131, 0xd318e}, {0xd31a0, 0xd31ba}, {0xd31f0, 0xd31ff}, + {0xd3400, 0xd4db5}, {0xd4e00, 0xd9fea}, {0xda000, 0xda48c}, {0xda4d0, 0xda4fd}, + {0xda500, 0xda60c}, {0xda610, 0xda61f}, {0xda640, 0xda66e}, {0xda67f, 0xda69d}, + {0xda6a0, 0xda6e5}, {0xda717, 0xda71f}, {0xda722, 0xda788}, {0xda78b, 0xda7ae}, + {0xda7b0, 0xda7b7}, {0xda7f7, 0xda801}, {0xda803, 0xda805}, {0xda807, 0xda80a}, + {0xda80c, 0xda822}, {0xda840, 0xda873}, {0xda882, 0xda8b3}, {0xda8f2, 0xda8f7}, + {0xda90a, 0xda925}, {0xda930, 0xda946}, {0xda960, 0xda97c}, {0xda984, 0xda9b2}, + {0xda9e0, 0xda9e4}, {0xda9e6, 0xda9ef}, {0xda9fa, 0xda9fe}, {0xdaa00, 0xdaa28}, + {0xdaa40, 0xdaa42}, {0xdaa44, 0xdaa4b}, {0xdaa60, 0xdaa76}, {0xdaa7e, 0xdaaaf}, + {0xdaab9, 0xdaabd}, {0xdaadb, 0xdaadd}, {0xdaae0, 0xdaaea}, {0xdaaf2, 0xdaaf4}, + {0xdab01, 0xdab06}, {0xdab09, 0xdab0e}, {0xdab11, 0xdab16}, {0xdab20, 0xdab26}, + {0xdab28, 0xdab2e}, {0xdab30, 0xdab5a}, {0xdab5c, 0xdab65}, {0xdab70, 0xdabe2}, + {0xdac00, 0xdd7a3}, {0xdd7b0, 0xdd7c6}, {0xdd7cb, 0xdd7fb}, {0xdf900, 0xdfa6d}, + {0xdfa70, 0xdfad9}, {0xdfb00, 0xdfb06}, {0xdfb13, 0xdfb17}, {0xdfb1f, 0xdfb28}, + {0xdfb2a, 0xdfb36}, {0xdfb38, 0xdfb3c}, {0xdfb46, 0xdfbb1}, {0xdfbd3, 0xdfd3d}, + {0xdfd50, 0xdfd8f}, {0xdfd92, 0xdfdc7}, {0xdfdf0, 0xdfdfb}, {0xdfe70, 0xdfe74}, + {0xdfe76, 0xdfefc}, {0xdff21, 0xdff3a}, {0xdff41, 0xdff5a}, {0xdff66, 0xdffbe}, + {0xdffc2, 0xdffc7}, {0xdffca, 0xdffcf}, {0xdffd2, 0xdffd7}, {0xdffda, 0xdffdc}, + {0xe0041, 0xe005a}, {0xe0061, 0xe007a}, {0xe00c0, 0xe00d6}, {0xe00d8, 0xe00f6}, + {0xe00f8, 0xe02c1}, {0xe02c6, 0xe02d1}, {0xe02e0, 0xe02e4}, {0xe0370, 0xe0374}, + {0xe037a, 0xe037d}, {0xe0388, 0xe038a}, {0xe038e, 0xe03a1}, {0xe03a3, 0xe03f5}, + {0xe03f7, 0xe0481}, {0xe048a, 0xe052f}, {0xe0531, 0xe0556}, {0xe0561, 0xe0587}, + {0xe05d0, 0xe05ea}, {0xe05f0, 0xe05f2}, {0xe0620, 0xe064a}, {0xe0671, 0xe06d3}, + {0xe06fa, 0xe06fc}, {0xe0712, 0xe072f}, {0xe074d, 0xe07a5}, {0xe07ca, 0xe07ea}, + {0xe0800, 0xe0815}, {0xe0840, 0xe0858}, {0xe0860, 0xe086a}, {0xe08a0, 0xe08b4}, + {0xe08b6, 0xe08bd}, {0xe0904, 0xe0939}, {0xe0958, 0xe0961}, {0xe0971, 0xe0980}, + {0xe0985, 0xe098c}, {0xe0993, 0xe09a8}, {0xe09aa, 0xe09b0}, {0xe09b6, 0xe09b9}, + {0xe09df, 0xe09e1}, {0xe0a05, 0xe0a0a}, {0xe0a13, 0xe0a28}, {0xe0a2a, 0xe0a30}, + {0xe0a59, 0xe0a5c}, {0xe0a72, 0xe0a74}, {0xe0a85, 0xe0a8d}, {0xe0a8f, 0xe0a91}, + {0xe0a93, 0xe0aa8}, {0xe0aaa, 0xe0ab0}, {0xe0ab5, 0xe0ab9}, {0xe0b05, 0xe0b0c}, + {0xe0b13, 0xe0b28}, {0xe0b2a, 0xe0b30}, {0xe0b35, 0xe0b39}, {0xe0b5f, 0xe0b61}, + {0xe0b85, 0xe0b8a}, {0xe0b8e, 0xe0b90}, {0xe0b92, 0xe0b95}, {0xe0ba8, 0xe0baa}, + {0xe0bae, 0xe0bb9}, {0xe0c05, 0xe0c0c}, {0xe0c0e, 0xe0c10}, {0xe0c12, 0xe0c28}, + {0xe0c2a, 0xe0c39}, {0xe0c58, 0xe0c5a}, {0xe0c85, 0xe0c8c}, {0xe0c8e, 0xe0c90}, + {0xe0c92, 0xe0ca8}, {0xe0caa, 0xe0cb3}, {0xe0cb5, 0xe0cb9}, {0xe0d05, 0xe0d0c}, + {0xe0d0e, 0xe0d10}, {0xe0d12, 0xe0d3a}, {0xe0d54, 0xe0d56}, {0xe0d5f, 0xe0d61}, + {0xe0d7a, 0xe0d7f}, {0xe0d85, 0xe0d96}, {0xe0d9a, 0xe0db1}, {0xe0db3, 0xe0dbb}, + {0xe0dc0, 0xe0dc6}, {0xe0e01, 0xe0e30}, {0xe0e40, 0xe0e46}, {0xe0e94, 0xe0e97}, + {0xe0e99, 0xe0e9f}, {0xe0ea1, 0xe0ea3}, {0xe0ead, 0xe0eb0}, {0xe0ec0, 0xe0ec4}, + {0xe0edc, 0xe0edf}, {0xe0f40, 0xe0f47}, {0xe0f49, 0xe0f6c}, {0xe0f88, 0xe0f8c}, + {0xe1000, 0xe102a}, {0xe1050, 0xe1055}, {0xe105a, 0xe105d}, {0xe106e, 0xe1070}, + {0xe1075, 0xe1081}, {0xe10a0, 0xe10c5}, {0xe10d0, 0xe10fa}, {0xe10fc, 0xe1248}, + {0xe124a, 0xe124d}, {0xe1250, 0xe1256}, {0xe125a, 0xe125d}, {0xe1260, 0xe1288}, + {0xe128a, 0xe128d}, {0xe1290, 0xe12b0}, {0xe12b2, 0xe12b5}, {0xe12b8, 0xe12be}, + {0xe12c2, 0xe12c5}, {0xe12c8, 0xe12d6}, {0xe12d8, 0xe1310}, {0xe1312, 0xe1315}, + {0xe1318, 0xe135a}, {0xe1380, 0xe138f}, {0xe13a0, 0xe13f5}, {0xe13f8, 0xe13fd}, + {0xe1401, 0xe166c}, {0xe166f, 0xe167f}, {0xe1681, 0xe169a}, {0xe16a0, 0xe16ea}, + {0xe16f1, 0xe16f8}, {0xe1700, 0xe170c}, {0xe170e, 0xe1711}, {0xe1720, 0xe1731}, + {0xe1740, 0xe1751}, {0xe1760, 0xe176c}, {0xe176e, 0xe1770}, {0xe1780, 0xe17b3}, + {0xe1820, 0xe1877}, {0xe1880, 0xe1884}, {0xe1887, 0xe18a8}, {0xe18b0, 0xe18f5}, + {0xe1900, 0xe191e}, {0xe1950, 0xe196d}, {0xe1970, 0xe1974}, {0xe1980, 0xe19ab}, + {0xe19b0, 0xe19c9}, {0xe1a00, 0xe1a16}, {0xe1a20, 0xe1a54}, {0xe1b05, 0xe1b33}, + {0xe1b45, 0xe1b4b}, {0xe1b83, 0xe1ba0}, {0xe1bba, 0xe1be5}, {0xe1c00, 0xe1c23}, + {0xe1c4d, 0xe1c4f}, {0xe1c5a, 0xe1c7d}, {0xe1c80, 0xe1c88}, {0xe1ce9, 0xe1cec}, + {0xe1cee, 0xe1cf1}, {0xe1d00, 0xe1dbf}, {0xe1e00, 0xe1f15}, {0xe1f18, 0xe1f1d}, + {0xe1f20, 0xe1f45}, {0xe1f48, 0xe1f4d}, {0xe1f50, 0xe1f57}, {0xe1f5f, 0xe1f7d}, + {0xe1f80, 0xe1fb4}, {0xe1fb6, 0xe1fbc}, {0xe1fc2, 0xe1fc4}, {0xe1fc6, 0xe1fcc}, + {0xe1fd0, 0xe1fd3}, {0xe1fd6, 0xe1fdb}, {0xe1fe0, 0xe1fec}, {0xe1ff2, 0xe1ff4}, + {0xe1ff6, 0xe1ffc}, {0xe2090, 0xe209c}, {0xe210a, 0xe2113}, {0xe2119, 0xe211d}, + {0xe212a, 0xe212d}, {0xe212f, 0xe2139}, {0xe213c, 0xe213f}, {0xe2145, 0xe2149}, + {0xe2c00, 0xe2c2e}, {0xe2c30, 0xe2c5e}, {0xe2c60, 0xe2ce4}, {0xe2ceb, 0xe2cee}, + {0xe2d00, 0xe2d25}, {0xe2d30, 0xe2d67}, {0xe2d80, 0xe2d96}, {0xe2da0, 0xe2da6}, + {0xe2da8, 0xe2dae}, {0xe2db0, 0xe2db6}, {0xe2db8, 0xe2dbe}, {0xe2dc0, 0xe2dc6}, + {0xe2dc8, 0xe2dce}, {0xe2dd0, 0xe2dd6}, {0xe2dd8, 0xe2dde}, {0xe3031, 0xe3035}, + {0xe3041, 0xe3096}, {0xe309d, 0xe309f}, {0xe30a1, 0xe30fa}, {0xe30fc, 0xe30ff}, + {0xe3105, 0xe312e}, {0xe3131, 0xe318e}, {0xe31a0, 0xe31ba}, {0xe31f0, 0xe31ff}, + {0xe3400, 0xe4db5}, {0xe4e00, 0xe9fea}, {0xea000, 0xea48c}, {0xea4d0, 0xea4fd}, + {0xea500, 0xea60c}, {0xea610, 0xea61f}, {0xea640, 0xea66e}, {0xea67f, 0xea69d}, + {0xea6a0, 0xea6e5}, {0xea717, 0xea71f}, {0xea722, 0xea788}, {0xea78b, 0xea7ae}, + {0xea7b0, 0xea7b7}, {0xea7f7, 0xea801}, {0xea803, 0xea805}, {0xea807, 0xea80a}, + {0xea80c, 0xea822}, {0xea840, 0xea873}, {0xea882, 0xea8b3}, {0xea8f2, 0xea8f7}, + {0xea90a, 0xea925}, {0xea930, 0xea946}, {0xea960, 0xea97c}, {0xea984, 0xea9b2}, + {0xea9e0, 0xea9e4}, {0xea9e6, 0xea9ef}, {0xea9fa, 0xea9fe}, {0xeaa00, 0xeaa28}, + {0xeaa40, 0xeaa42}, {0xeaa44, 0xeaa4b}, {0xeaa60, 0xeaa76}, {0xeaa7e, 0xeaaaf}, + {0xeaab9, 0xeaabd}, {0xeaadb, 0xeaadd}, {0xeaae0, 0xeaaea}, {0xeaaf2, 0xeaaf4}, + {0xeab01, 0xeab06}, {0xeab09, 0xeab0e}, {0xeab11, 0xeab16}, {0xeab20, 0xeab26}, + {0xeab28, 0xeab2e}, {0xeab30, 0xeab5a}, {0xeab5c, 0xeab65}, {0xeab70, 0xeabe2}, + {0xeac00, 0xed7a3}, {0xed7b0, 0xed7c6}, {0xed7cb, 0xed7fb}, {0xef900, 0xefa6d}, + {0xefa70, 0xefad9}, {0xefb00, 0xefb06}, {0xefb13, 0xefb17}, {0xefb1f, 0xefb28}, + {0xefb2a, 0xefb36}, {0xefb38, 0xefb3c}, {0xefb46, 0xefbb1}, {0xefbd3, 0xefd3d}, + {0xefd50, 0xefd8f}, {0xefd92, 0xefdc7}, {0xefdf0, 0xefdfb}, {0xefe70, 0xefe74}, + {0xefe76, 0xefefc}, {0xeff21, 0xeff3a}, {0xeff41, 0xeff5a}, {0xeff66, 0xeffbe}, + {0xeffc2, 0xeffc7}, {0xeffca, 0xeffcf}, {0xeffd2, 0xeffd7}, {0xeffda, 0xeffdc}, + {0xf0041, 0xf005a}, {0xf0061, 0xf007a}, {0xf00c0, 0xf00d6}, {0xf00d8, 0xf00f6}, + {0xf00f8, 0xf02c1}, {0xf02c6, 0xf02d1}, {0xf02e0, 0xf02e4}, {0xf0370, 0xf0374}, + {0xf037a, 0xf037d}, {0xf0388, 0xf038a}, {0xf038e, 0xf03a1}, {0xf03a3, 0xf03f5}, + {0xf03f7, 0xf0481}, {0xf048a, 0xf052f}, {0xf0531, 0xf0556}, {0xf0561, 0xf0587}, + {0xf05d0, 0xf05ea}, {0xf05f0, 0xf05f2}, {0xf0620, 0xf064a}, {0xf0671, 0xf06d3}, + {0xf06fa, 0xf06fc}, {0xf0712, 0xf072f}, {0xf074d, 0xf07a5}, {0xf07ca, 0xf07ea}, + {0xf0800, 0xf0815}, {0xf0840, 0xf0858}, {0xf0860, 0xf086a}, {0xf08a0, 0xf08b4}, + {0xf08b6, 0xf08bd}, {0xf0904, 0xf0939}, {0xf0958, 0xf0961}, {0xf0971, 0xf0980}, + {0xf0985, 0xf098c}, {0xf0993, 0xf09a8}, {0xf09aa, 0xf09b0}, {0xf09b6, 0xf09b9}, + {0xf09df, 0xf09e1}, {0xf0a05, 0xf0a0a}, {0xf0a13, 0xf0a28}, {0xf0a2a, 0xf0a30}, + {0xf0a59, 0xf0a5c}, {0xf0a72, 0xf0a74}, {0xf0a85, 0xf0a8d}, {0xf0a8f, 0xf0a91}, + {0xf0a93, 0xf0aa8}, {0xf0aaa, 0xf0ab0}, {0xf0ab5, 0xf0ab9}, {0xf0b05, 0xf0b0c}, + {0xf0b13, 0xf0b28}, {0xf0b2a, 0xf0b30}, {0xf0b35, 0xf0b39}, {0xf0b5f, 0xf0b61}, + {0xf0b85, 0xf0b8a}, {0xf0b8e, 0xf0b90}, {0xf0b92, 0xf0b95}, {0xf0ba8, 0xf0baa}, + {0xf0bae, 0xf0bb9}, {0xf0c05, 0xf0c0c}, {0xf0c0e, 0xf0c10}, {0xf0c12, 0xf0c28}, + {0xf0c2a, 0xf0c39}, {0xf0c58, 0xf0c5a}, {0xf0c85, 0xf0c8c}, {0xf0c8e, 0xf0c90}, + {0xf0c92, 0xf0ca8}, {0xf0caa, 0xf0cb3}, {0xf0cb5, 0xf0cb9}, {0xf0d05, 0xf0d0c}, + {0xf0d0e, 0xf0d10}, {0xf0d12, 0xf0d3a}, {0xf0d54, 0xf0d56}, {0xf0d5f, 0xf0d61}, + {0xf0d7a, 0xf0d7f}, {0xf0d85, 0xf0d96}, {0xf0d9a, 0xf0db1}, {0xf0db3, 0xf0dbb}, + {0xf0dc0, 0xf0dc6}, {0xf0e01, 0xf0e30}, {0xf0e40, 0xf0e46}, {0xf0e94, 0xf0e97}, + {0xf0e99, 0xf0e9f}, {0xf0ea1, 0xf0ea3}, {0xf0ead, 0xf0eb0}, {0xf0ec0, 0xf0ec4}, + {0xf0edc, 0xf0edf}, {0xf0f40, 0xf0f47}, {0xf0f49, 0xf0f6c}, {0xf0f88, 0xf0f8c}, + {0xf1000, 0xf102a}, {0xf1050, 0xf1055}, {0xf105a, 0xf105d}, {0xf106e, 0xf1070}, + {0xf1075, 0xf1081}, {0xf10a0, 0xf10c5}, {0xf10d0, 0xf10fa}, {0xf10fc, 0xf1248}, + {0xf124a, 0xf124d}, {0xf1250, 0xf1256}, {0xf125a, 0xf125d}, {0xf1260, 0xf1288}, + {0xf128a, 0xf128d}, {0xf1290, 0xf12b0}, {0xf12b2, 0xf12b5}, {0xf12b8, 0xf12be}, + {0xf12c2, 0xf12c5}, {0xf12c8, 0xf12d6}, {0xf12d8, 0xf1310}, {0xf1312, 0xf1315}, + {0xf1318, 0xf135a}, {0xf1380, 0xf138f}, {0xf13a0, 0xf13f5}, {0xf13f8, 0xf13fd}, + {0xf1401, 0xf166c}, {0xf166f, 0xf167f}, {0xf1681, 0xf169a}, {0xf16a0, 0xf16ea}, + {0xf16f1, 0xf16f8}, {0xf1700, 0xf170c}, {0xf170e, 0xf1711}, {0xf1720, 0xf1731}, + {0xf1740, 0xf1751}, {0xf1760, 0xf176c}, {0xf176e, 0xf1770}, {0xf1780, 0xf17b3}, + {0xf1820, 0xf1877}, {0xf1880, 0xf1884}, {0xf1887, 0xf18a8}, {0xf18b0, 0xf18f5}, + {0xf1900, 0xf191e}, {0xf1950, 0xf196d}, {0xf1970, 0xf1974}, {0xf1980, 0xf19ab}, + {0xf19b0, 0xf19c9}, {0xf1a00, 0xf1a16}, {0xf1a20, 0xf1a54}, {0xf1b05, 0xf1b33}, + {0xf1b45, 0xf1b4b}, {0xf1b83, 0xf1ba0}, {0xf1bba, 0xf1be5}, {0xf1c00, 0xf1c23}, + {0xf1c4d, 0xf1c4f}, {0xf1c5a, 0xf1c7d}, {0xf1c80, 0xf1c88}, {0xf1ce9, 0xf1cec}, + {0xf1cee, 0xf1cf1}, {0xf1d00, 0xf1dbf}, {0xf1e00, 0xf1f15}, {0xf1f18, 0xf1f1d}, + {0xf1f20, 0xf1f45}, {0xf1f48, 0xf1f4d}, {0xf1f50, 0xf1f57}, {0xf1f5f, 0xf1f7d}, + {0xf1f80, 0xf1fb4}, {0xf1fb6, 0xf1fbc}, {0xf1fc2, 0xf1fc4}, {0xf1fc6, 0xf1fcc}, + {0xf1fd0, 0xf1fd3}, {0xf1fd6, 0xf1fdb}, {0xf1fe0, 0xf1fec}, {0xf1ff2, 0xf1ff4}, + {0xf1ff6, 0xf1ffc}, {0xf2090, 0xf209c}, {0xf210a, 0xf2113}, {0xf2119, 0xf211d}, + {0xf212a, 0xf212d}, {0xf212f, 0xf2139}, {0xf213c, 0xf213f}, {0xf2145, 0xf2149}, + {0xf2c00, 0xf2c2e}, {0xf2c30, 0xf2c5e}, {0xf2c60, 0xf2ce4}, {0xf2ceb, 0xf2cee}, + {0xf2d00, 0xf2d25}, {0xf2d30, 0xf2d67}, {0xf2d80, 0xf2d96}, {0xf2da0, 0xf2da6}, + {0xf2da8, 0xf2dae}, {0xf2db0, 0xf2db6}, {0xf2db8, 0xf2dbe}, {0xf2dc0, 0xf2dc6}, + {0xf2dc8, 0xf2dce}, {0xf2dd0, 0xf2dd6}, {0xf2dd8, 0xf2dde}, {0xf3031, 0xf3035}, + {0xf3041, 0xf3096}, {0xf309d, 0xf309f}, {0xf30a1, 0xf30fa}, {0xf30fc, 0xf30ff}, + {0xf3105, 0xf312e}, {0xf3131, 0xf318e}, {0xf31a0, 0xf31ba}, {0xf31f0, 0xf31ff}, + {0xf3400, 0xf4db5}, {0xf4e00, 0xf9fea}, {0xfa000, 0xfa48c}, {0xfa4d0, 0xfa4fd}, + {0xfa500, 0xfa60c}, {0xfa610, 0xfa61f}, {0xfa640, 0xfa66e}, {0xfa67f, 0xfa69d}, + {0xfa6a0, 0xfa6e5}, {0xfa717, 0xfa71f}, {0xfa722, 0xfa788}, {0xfa78b, 0xfa7ae}, + {0xfa7b0, 0xfa7b7}, {0xfa7f7, 0xfa801}, {0xfa803, 0xfa805}, {0xfa807, 0xfa80a}, + {0xfa80c, 0xfa822}, {0xfa840, 0xfa873}, {0xfa882, 0xfa8b3}, {0xfa8f2, 0xfa8f7}, + {0xfa90a, 0xfa925}, {0xfa930, 0xfa946}, {0xfa960, 0xfa97c}, {0xfa984, 0xfa9b2}, + {0xfa9e0, 0xfa9e4}, {0xfa9e6, 0xfa9ef}, {0xfa9fa, 0xfa9fe}, {0xfaa00, 0xfaa28}, + {0xfaa40, 0xfaa42}, {0xfaa44, 0xfaa4b}, {0xfaa60, 0xfaa76}, {0xfaa7e, 0xfaaaf}, + {0xfaab9, 0xfaabd}, {0xfaadb, 0xfaadd}, {0xfaae0, 0xfaaea}, {0xfaaf2, 0xfaaf4}, + {0xfab01, 0xfab06}, {0xfab09, 0xfab0e}, {0xfab11, 0xfab16}, {0xfab20, 0xfab26}, + {0xfab28, 0xfab2e}, {0xfab30, 0xfab5a}, {0xfab5c, 0xfab65}, {0xfab70, 0xfabe2}, + {0xfac00, 0xfd7a3}, {0xfd7b0, 0xfd7c6}, {0xfd7cb, 0xfd7fb}, {0xff900, 0xffa6d}, + {0xffa70, 0xffad9}, {0xffb00, 0xffb06}, {0xffb13, 0xffb17}, {0xffb1f, 0xffb28}, + {0xffb2a, 0xffb36}, {0xffb38, 0xffb3c}, {0xffb46, 0xffbb1}, {0xffbd3, 0xffd3d}, + {0xffd50, 0xffd8f}, {0xffd92, 0xffdc7}, {0xffdf0, 0xffdfb}, {0xffe70, 0xffe74}, + {0xffe76, 0xffefc}, {0xfff21, 0xfff3a}, {0xfff41, 0xfff5a}, {0xfff66, 0xfffbe}, + {0xfffc2, 0xfffc7}, {0xfffca, 0xfffcf}, {0xfffd2, 0xfffd7}, {0xfffda, 0xfffdc}, + {0x100041, 0x10005a}, {0x100061, 0x10007a}, {0x1000c0, 0x1000d6}, {0x1000d8, 0x1000f6}, + {0x1000f8, 0x1002c1}, {0x1002c6, 0x1002d1}, {0x1002e0, 0x1002e4}, {0x100370, 0x100374}, + {0x10037a, 0x10037d}, {0x100388, 0x10038a}, {0x10038e, 0x1003a1}, {0x1003a3, 0x1003f5}, + {0x1003f7, 0x100481}, {0x10048a, 0x10052f}, {0x100531, 0x100556}, {0x100561, 0x100587}, + {0x1005d0, 0x1005ea}, {0x1005f0, 0x1005f2}, {0x100620, 0x10064a}, {0x100671, 0x1006d3}, + {0x1006fa, 0x1006fc}, {0x100712, 0x10072f}, {0x10074d, 0x1007a5}, {0x1007ca, 0x1007ea}, + {0x100800, 0x100815}, {0x100840, 0x100858}, {0x100860, 0x10086a}, {0x1008a0, 0x1008b4}, + {0x1008b6, 0x1008bd}, {0x100904, 0x100939}, {0x100958, 0x100961}, {0x100971, 0x100980}, + {0x100985, 0x10098c}, {0x100993, 0x1009a8}, {0x1009aa, 0x1009b0}, {0x1009b6, 0x1009b9}, + {0x1009df, 0x1009e1}, {0x100a05, 0x100a0a}, {0x100a13, 0x100a28}, {0x100a2a, 0x100a30}, + {0x100a59, 0x100a5c}, {0x100a72, 0x100a74}, {0x100a85, 0x100a8d}, {0x100a8f, 0x100a91}, + {0x100a93, 0x100aa8}, {0x100aaa, 0x100ab0}, {0x100ab5, 0x100ab9}, {0x100b05, 0x100b0c}, + {0x100b13, 0x100b28}, {0x100b2a, 0x100b30}, {0x100b35, 0x100b39}, {0x100b5f, 0x100b61}, + {0x100b85, 0x100b8a}, {0x100b8e, 0x100b90}, {0x100b92, 0x100b95}, {0x100ba8, 0x100baa}, + {0x100bae, 0x100bb9}, {0x100c05, 0x100c0c}, {0x100c0e, 0x100c10}, {0x100c12, 0x100c28}, + {0x100c2a, 0x100c39}, {0x100c58, 0x100c5a}, {0x100c85, 0x100c8c}, {0x100c8e, 0x100c90}, + {0x100c92, 0x100ca8}, {0x100caa, 0x100cb3}, {0x100cb5, 0x100cb9}, {0x100d05, 0x100d0c}, + {0x100d0e, 0x100d10}, {0x100d12, 0x100d3a}, {0x100d54, 0x100d56}, {0x100d5f, 0x100d61}, + {0x100d7a, 0x100d7f}, {0x100d85, 0x100d96}, {0x100d9a, 0x100db1}, {0x100db3, 0x100dbb}, + {0x100dc0, 0x100dc6}, {0x100e01, 0x100e30}, {0x100e40, 0x100e46}, {0x100e94, 0x100e97}, + {0x100e99, 0x100e9f}, {0x100ea1, 0x100ea3}, {0x100ead, 0x100eb0}, {0x100ec0, 0x100ec4}, + {0x100edc, 0x100edf}, {0x100f40, 0x100f47}, {0x100f49, 0x100f6c}, {0x100f88, 0x100f8c}, + {0x101000, 0x10102a}, {0x101050, 0x101055}, {0x10105a, 0x10105d}, {0x10106e, 0x101070}, + {0x101075, 0x101081}, {0x1010a0, 0x1010c5}, {0x1010d0, 0x1010fa}, {0x1010fc, 0x101248}, + {0x10124a, 0x10124d}, {0x101250, 0x101256}, {0x10125a, 0x10125d}, {0x101260, 0x101288}, + {0x10128a, 0x10128d}, {0x101290, 0x1012b0}, {0x1012b2, 0x1012b5}, {0x1012b8, 0x1012be}, + {0x1012c2, 0x1012c5}, {0x1012c8, 0x1012d6}, {0x1012d8, 0x101310}, {0x101312, 0x101315}, + {0x101318, 0x10135a}, {0x101380, 0x10138f}, {0x1013a0, 0x1013f5}, {0x1013f8, 0x1013fd}, + {0x101401, 0x10166c}, {0x10166f, 0x10167f}, {0x101681, 0x10169a}, {0x1016a0, 0x1016ea}, + {0x1016f1, 0x1016f8}, {0x101700, 0x10170c}, {0x10170e, 0x101711}, {0x101720, 0x101731}, + {0x101740, 0x101751}, {0x101760, 0x10176c}, {0x10176e, 0x101770}, {0x101780, 0x1017b3}, + {0x101820, 0x101877}, {0x101880, 0x101884}, {0x101887, 0x1018a8}, {0x1018b0, 0x1018f5}, + {0x101900, 0x10191e}, {0x101950, 0x10196d}, {0x101970, 0x101974}, {0x101980, 0x1019ab}, + {0x1019b0, 0x1019c9}, {0x101a00, 0x101a16}, {0x101a20, 0x101a54}, {0x101b05, 0x101b33}, + {0x101b45, 0x101b4b}, {0x101b83, 0x101ba0}, {0x101bba, 0x101be5}, {0x101c00, 0x101c23}, + {0x101c4d, 0x101c4f}, {0x101c5a, 0x101c7d}, {0x101c80, 0x101c88}, {0x101ce9, 0x101cec}, + {0x101cee, 0x101cf1}, {0x101d00, 0x101dbf}, {0x101e00, 0x101f15}, {0x101f18, 0x101f1d}, + {0x101f20, 0x101f45}, {0x101f48, 0x101f4d}, {0x101f50, 0x101f57}, {0x101f5f, 0x101f7d}, + {0x101f80, 0x101fb4}, {0x101fb6, 0x101fbc}, {0x101fc2, 0x101fc4}, {0x101fc6, 0x101fcc}, + {0x101fd0, 0x101fd3}, {0x101fd6, 0x101fdb}, {0x101fe0, 0x101fec}, {0x101ff2, 0x101ff4}, + {0x101ff6, 0x101ffc}, {0x102090, 0x10209c}, {0x10210a, 0x102113}, {0x102119, 0x10211d}, + {0x10212a, 0x10212d}, {0x10212f, 0x102139}, {0x10213c, 0x10213f}, {0x102145, 0x102149}, + {0x102c00, 0x102c2e}, {0x102c30, 0x102c5e}, {0x102c60, 0x102ce4}, {0x102ceb, 0x102cee}, + {0x102d00, 0x102d25}, {0x102d30, 0x102d67}, {0x102d80, 0x102d96}, {0x102da0, 0x102da6}, + {0x102da8, 0x102dae}, {0x102db0, 0x102db6}, {0x102db8, 0x102dbe}, {0x102dc0, 0x102dc6}, + {0x102dc8, 0x102dce}, {0x102dd0, 0x102dd6}, {0x102dd8, 0x102dde}, {0x103031, 0x103035}, + {0x103041, 0x103096}, {0x10309d, 0x10309f}, {0x1030a1, 0x1030fa}, {0x1030fc, 0x1030ff}, + {0x103105, 0x10312e}, {0x103131, 0x10318e}, {0x1031a0, 0x1031ba}, {0x1031f0, 0x1031ff}, + {0x103400, 0x104db5}, {0x104e00, 0x109fea}, {0x10a000, 0x10a48c}, {0x10a4d0, 0x10a4fd}, + {0x10a500, 0x10a60c}, {0x10a610, 0x10a61f}, {0x10a640, 0x10a66e}, {0x10a67f, 0x10a69d}, + {0x10a6a0, 0x10a6e5}, {0x10a717, 0x10a71f}, {0x10a722, 0x10a788}, {0x10a78b, 0x10a7ae}, + {0x10a7b0, 0x10a7b7}, {0x10a7f7, 0x10a801}, {0x10a803, 0x10a805}, {0x10a807, 0x10a80a}, + {0x10a80c, 0x10a822}, {0x10a840, 0x10a873}, {0x10a882, 0x10a8b3}, {0x10a8f2, 0x10a8f7}, + {0x10a90a, 0x10a925}, {0x10a930, 0x10a946}, {0x10a960, 0x10a97c}, {0x10a984, 0x10a9b2}, + {0x10a9e0, 0x10a9e4}, {0x10a9e6, 0x10a9ef}, {0x10a9fa, 0x10a9fe}, {0x10aa00, 0x10aa28}, + {0x10aa40, 0x10aa42}, {0x10aa44, 0x10aa4b}, {0x10aa60, 0x10aa76}, {0x10aa7e, 0x10aaaf}, + {0x10aab9, 0x10aabd}, {0x10aadb, 0x10aadd}, {0x10aae0, 0x10aaea}, {0x10aaf2, 0x10aaf4}, + {0x10ab01, 0x10ab06}, {0x10ab09, 0x10ab0e}, {0x10ab11, 0x10ab16}, {0x10ab20, 0x10ab26}, + {0x10ab28, 0x10ab2e}, {0x10ab30, 0x10ab5a}, {0x10ab5c, 0x10ab65}, {0x10ab70, 0x10abe2}, + {0x10ac00, 0x10d7a3}, {0x10d7b0, 0x10d7c6}, {0x10d7cb, 0x10d7fb}, {0x10f900, 0x10fa6d}, + {0x10fa70, 0x10fad9}, {0x10fb00, 0x10fb06}, {0x10fb13, 0x10fb17}, {0x10fb1f, 0x10fb28}, + {0x10fb2a, 0x10fb36}, {0x10fb38, 0x10fb3c}, {0x10fb46, 0x10fbb1}, {0x10fbd3, 0x10fd3d}, + {0x10fd50, 0x10fd8f}, {0x10fd92, 0x10fdc7}, {0x10fdf0, 0x10fdfb}, {0x10fe70, 0x10fe74}, + {0x10fe76, 0x10fefc}, {0x10ff21, 0x10ff3a}, {0x10ff41, 0x10ff5a}, {0x10ff66, 0x10ffbe}, + {0x10ffc2, 0x10ffc7}, {0x10ffca, 0x10ffcf}, {0x10ffd2, 0x10ffd7}, {0x10ffda, 0x10ffdc} #endif }; @@ -250,28 +1250,309 @@ static const chr alphaCharTable[] = { 0x38c, 0x559, 0x66e, 0x66f, 0x6d5, 0x6e5, 0x6e6, 0x6ee, 0x6ef, 0x6ff, 0x710, 0x7b1, 0x7f4, 0x7f5, 0x7fa, 0x81a, 0x824, 0x828, 0x93d, 0x950, 0x98f, 0x990, 0x9b2, 0x9bd, 0x9ce, 0x9dc, 0x9dd, - 0x9f0, 0x9f1, 0xa0f, 0xa10, 0xa32, 0xa33, 0xa35, 0xa36, 0xa38, - 0xa39, 0xa5e, 0xab2, 0xab3, 0xabd, 0xad0, 0xae0, 0xae1, 0xaf9, - 0xb0f, 0xb10, 0xb32, 0xb33, 0xb3d, 0xb5c, 0xb5d, 0xb71, 0xb83, - 0xb99, 0xb9a, 0xb9c, 0xb9e, 0xb9f, 0xba3, 0xba4, 0xbd0, 0xc3d, - 0xc60, 0xc61, 0xc80, 0xcbd, 0xcde, 0xce0, 0xce1, 0xcf1, 0xcf2, - 0xd3d, 0xd4e, 0xdbd, 0xe32, 0xe33, 0xe81, 0xe82, 0xe84, 0xe87, - 0xe88, 0xe8a, 0xe8d, 0xea5, 0xea7, 0xeaa, 0xeab, 0xeb2, 0xeb3, - 0xebd, 0xec6, 0xf00, 0x103f, 0x1061, 0x1065, 0x1066, 0x108e, 0x10c7, - 0x10cd, 0x1258, 0x12c0, 0x17d7, 0x17dc, 0x18aa, 0x1aa7, 0x1bae, 0x1baf, - 0x1cf5, 0x1cf6, 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe, 0x2071, 0x207f, 0x2102, - 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214e, 0x2183, 0x2184, 0x2cf2, - 0x2cf3, 0x2d27, 0x2d2d, 0x2d6f, 0x2e2f, 0x3005, 0x3006, 0x303b, 0x303c, - 0xa62a, 0xa62b, 0xa8fb, 0xa8fd, 0xa9cf, 0xaa7a, 0xaab1, 0xaab5, 0xaab6, - 0xaac0, 0xaac2, 0xfb1d, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44 + 0x9f0, 0x9f1, 0x9fc, 0xa0f, 0xa10, 0xa32, 0xa33, 0xa35, 0xa36, + 0xa38, 0xa39, 0xa5e, 0xab2, 0xab3, 0xabd, 0xad0, 0xae0, 0xae1, + 0xaf9, 0xb0f, 0xb10, 0xb32, 0xb33, 0xb3d, 0xb5c, 0xb5d, 0xb71, + 0xb83, 0xb99, 0xb9a, 0xb9c, 0xb9e, 0xb9f, 0xba3, 0xba4, 0xbd0, + 0xc3d, 0xc60, 0xc61, 0xc80, 0xcbd, 0xcde, 0xce0, 0xce1, 0xcf1, + 0xcf2, 0xd3d, 0xd4e, 0xdbd, 0xe32, 0xe33, 0xe81, 0xe82, 0xe84, + 0xe87, 0xe88, 0xe8a, 0xe8d, 0xea5, 0xea7, 0xeaa, 0xeab, 0xeb2, + 0xeb3, 0xebd, 0xec6, 0xf00, 0x103f, 0x1061, 0x1065, 0x1066, 0x108e, + 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x17d7, 0x17dc, 0x18aa, 0x1aa7, 0x1bae, + 0x1baf, 0x1cf5, 0x1cf6, 0x1f59, 0x1f5b, 0x1f5d, 0x1fbe, 0x2071, 0x207f, + 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214e, 0x2183, 0x2184, + 0x2cf2, 0x2cf3, 0x2d27, 0x2d2d, 0x2d6f, 0x2e2f, 0x3005, 0x3006, 0x303b, + 0x303c, 0xa62a, 0xa62b, 0xa8fb, 0xa8fd, 0xa9cf, 0xaa7a, 0xaab1, 0xaab5, + 0xaab6, 0xaac0, 0xaac2, 0xfb1d, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44 #if TCL_UTF_MAX > 4 - ,0x1003c, 0x1003d, 0x10808, 0x10837, 0x10838, 0x1083c, 0x108f4, 0x108f5, 0x109be, - 0x109bf, 0x10a00, 0x11176, 0x111da, 0x111dc, 0x11288, 0x1130f, 0x11310, 0x11332, - 0x11333, 0x1133d, 0x11350, 0x114c4, 0x114c5, 0x114c7, 0x11644, 0x118ff, 0x11c40, - 0x16f50, 0x16fe0, 0x1b000, 0x1b001, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a5, 0x1d4a6, - 0x1d4bb, 0x1d546, 0x1ee21, 0x1ee22, 0x1ee24, 0x1ee27, 0x1ee39, 0x1ee3b, 0x1ee42, - 0x1ee47, 0x1ee49, 0x1ee4b, 0x1ee51, 0x1ee52, 0x1ee54, 0x1ee57, 0x1ee59, 0x1ee5b, - 0x1ee5d, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee7e + ,0x100aa, 0x100b5, 0x100ba, 0x102ec, 0x102ee, 0x10376, 0x10377, 0x1037f, 0x10386, + 0x1038c, 0x10559, 0x1066e, 0x1066f, 0x106d5, 0x106e5, 0x106e6, 0x106ee, 0x106ef, + 0x106ff, 0x10710, 0x107b1, 0x107f4, 0x107f5, 0x107fa, 0x1081a, 0x10824, 0x10828, + 0x1093d, 0x10950, 0x1098f, 0x10990, 0x109b2, 0x109bd, 0x109ce, 0x109dc, 0x109dd, + 0x109f0, 0x109f1, 0x109fc, 0x10a0f, 0x10a10, 0x10a32, 0x10a33, 0x10a35, 0x10a36, + 0x10a38, 0x10a39, 0x10a5e, 0x10ab2, 0x10ab3, 0x10abd, 0x10ad0, 0x10ae0, 0x10ae1, + 0x10af9, 0x10b0f, 0x10b10, 0x10b32, 0x10b33, 0x10b3d, 0x10b5c, 0x10b5d, 0x10b71, + 0x10b83, 0x10b99, 0x10b9a, 0x10b9c, 0x10b9e, 0x10b9f, 0x10ba3, 0x10ba4, 0x10bd0, + 0x10c3d, 0x10c60, 0x10c61, 0x10c80, 0x10cbd, 0x10cde, 0x10ce0, 0x10ce1, 0x10cf1, + 0x10cf2, 0x10d3d, 0x10d4e, 0x10dbd, 0x10e32, 0x10e33, 0x10e81, 0x10e82, 0x10e84, + 0x10e87, 0x10e88, 0x10e8a, 0x10e8d, 0x10ea5, 0x10ea7, 0x10eaa, 0x10eab, 0x10eb2, + 0x10eb3, 0x10ebd, 0x10ec6, 0x10f00, 0x1103f, 0x11061, 0x11065, 0x11066, 0x1108e, + 0x110c7, 0x110cd, 0x11258, 0x112c0, 0x117d7, 0x117dc, 0x118aa, 0x11aa7, 0x11bae, + 0x11baf, 0x11cf5, 0x11cf6, 0x11f59, 0x11f5b, 0x11f5d, 0x11fbe, 0x12071, 0x1207f, + 0x12102, 0x12107, 0x12115, 0x12124, 0x12126, 0x12128, 0x1214e, 0x12183, 0x12184, + 0x12cf2, 0x12cf3, 0x12d27, 0x12d2d, 0x12d6f, 0x12e2f, 0x13005, 0x13006, 0x1303b, + 0x1303c, 0x1a62a, 0x1a62b, 0x1a8fb, 0x1a8fd, 0x1a9cf, 0x1aa7a, 0x1aab1, 0x1aab5, + 0x1aab6, 0x1aac0, 0x1aac2, 0x1fb1d, 0x1fb3e, 0x1fb40, 0x1fb41, 0x1fb43, 0x1fb44, + 0x200aa, 0x200b5, 0x200ba, 0x202ec, 0x202ee, 0x20376, 0x20377, 0x2037f, 0x20386, + 0x2038c, 0x20559, 0x2066e, 0x2066f, 0x206d5, 0x206e5, 0x206e6, 0x206ee, 0x206ef, + 0x206ff, 0x20710, 0x207b1, 0x207f4, 0x207f5, 0x207fa, 0x2081a, 0x20824, 0x20828, + 0x2093d, 0x20950, 0x2098f, 0x20990, 0x209b2, 0x209bd, 0x209ce, 0x209dc, 0x209dd, + 0x209f0, 0x209f1, 0x209fc, 0x20a0f, 0x20a10, 0x20a32, 0x20a33, 0x20a35, 0x20a36, + 0x20a38, 0x20a39, 0x20a5e, 0x20ab2, 0x20ab3, 0x20abd, 0x20ad0, 0x20ae0, 0x20ae1, + 0x20af9, 0x20b0f, 0x20b10, 0x20b32, 0x20b33, 0x20b3d, 0x20b5c, 0x20b5d, 0x20b71, + 0x20b83, 0x20b99, 0x20b9a, 0x20b9c, 0x20b9e, 0x20b9f, 0x20ba3, 0x20ba4, 0x20bd0, + 0x20c3d, 0x20c60, 0x20c61, 0x20c80, 0x20cbd, 0x20cde, 0x20ce0, 0x20ce1, 0x20cf1, + 0x20cf2, 0x20d3d, 0x20d4e, 0x20dbd, 0x20e32, 0x20e33, 0x20e81, 0x20e82, 0x20e84, + 0x20e87, 0x20e88, 0x20e8a, 0x20e8d, 0x20ea5, 0x20ea7, 0x20eaa, 0x20eab, 0x20eb2, + 0x20eb3, 0x20ebd, 0x20ec6, 0x20f00, 0x2103f, 0x21061, 0x21065, 0x21066, 0x2108e, + 0x210c7, 0x210cd, 0x21258, 0x212c0, 0x217d7, 0x217dc, 0x218aa, 0x21aa7, 0x21bae, + 0x21baf, 0x21cf5, 0x21cf6, 0x21f59, 0x21f5b, 0x21f5d, 0x21fbe, 0x22071, 0x2207f, + 0x22102, 0x22107, 0x22115, 0x22124, 0x22126, 0x22128, 0x2214e, 0x22183, 0x22184, + 0x22cf2, 0x22cf3, 0x22d27, 0x22d2d, 0x22d6f, 0x22e2f, 0x23005, 0x23006, 0x2303b, + 0x2303c, 0x2a62a, 0x2a62b, 0x2a8fb, 0x2a8fd, 0x2a9cf, 0x2aa7a, 0x2aab1, 0x2aab5, + 0x2aab6, 0x2aac0, 0x2aac2, 0x2fb1d, 0x2fb3e, 0x2fb40, 0x2fb41, 0x2fb43, 0x2fb44, + 0x300aa, 0x300b5, 0x300ba, 0x302ec, 0x302ee, 0x30376, 0x30377, 0x3037f, 0x30386, + 0x3038c, 0x30559, 0x3066e, 0x3066f, 0x306d5, 0x306e5, 0x306e6, 0x306ee, 0x306ef, + 0x306ff, 0x30710, 0x307b1, 0x307f4, 0x307f5, 0x307fa, 0x3081a, 0x30824, 0x30828, + 0x3093d, 0x30950, 0x3098f, 0x30990, 0x309b2, 0x309bd, 0x309ce, 0x309dc, 0x309dd, + 0x309f0, 0x309f1, 0x309fc, 0x30a0f, 0x30a10, 0x30a32, 0x30a33, 0x30a35, 0x30a36, + 0x30a38, 0x30a39, 0x30a5e, 0x30ab2, 0x30ab3, 0x30abd, 0x30ad0, 0x30ae0, 0x30ae1, + 0x30af9, 0x30b0f, 0x30b10, 0x30b32, 0x30b33, 0x30b3d, 0x30b5c, 0x30b5d, 0x30b71, + 0x30b83, 0x30b99, 0x30b9a, 0x30b9c, 0x30b9e, 0x30b9f, 0x30ba3, 0x30ba4, 0x30bd0, + 0x30c3d, 0x30c60, 0x30c61, 0x30c80, 0x30cbd, 0x30cde, 0x30ce0, 0x30ce1, 0x30cf1, + 0x30cf2, 0x30d3d, 0x30d4e, 0x30dbd, 0x30e32, 0x30e33, 0x30e81, 0x30e82, 0x30e84, + 0x30e87, 0x30e88, 0x30e8a, 0x30e8d, 0x30ea5, 0x30ea7, 0x30eaa, 0x30eab, 0x30eb2, + 0x30eb3, 0x30ebd, 0x30ec6, 0x30f00, 0x3103f, 0x31061, 0x31065, 0x31066, 0x3108e, + 0x310c7, 0x310cd, 0x31258, 0x312c0, 0x317d7, 0x317dc, 0x318aa, 0x31aa7, 0x31bae, + 0x31baf, 0x31cf5, 0x31cf6, 0x31f59, 0x31f5b, 0x31f5d, 0x31fbe, 0x32071, 0x3207f, + 0x32102, 0x32107, 0x32115, 0x32124, 0x32126, 0x32128, 0x3214e, 0x32183, 0x32184, + 0x32cf2, 0x32cf3, 0x32d27, 0x32d2d, 0x32d6f, 0x32e2f, 0x33005, 0x33006, 0x3303b, + 0x3303c, 0x3a62a, 0x3a62b, 0x3a8fb, 0x3a8fd, 0x3a9cf, 0x3aa7a, 0x3aab1, 0x3aab5, + 0x3aab6, 0x3aac0, 0x3aac2, 0x3fb1d, 0x3fb3e, 0x3fb40, 0x3fb41, 0x3fb43, 0x3fb44, + 0x400aa, 0x400b5, 0x400ba, 0x402ec, 0x402ee, 0x40376, 0x40377, 0x4037f, 0x40386, + 0x4038c, 0x40559, 0x4066e, 0x4066f, 0x406d5, 0x406e5, 0x406e6, 0x406ee, 0x406ef, + 0x406ff, 0x40710, 0x407b1, 0x407f4, 0x407f5, 0x407fa, 0x4081a, 0x40824, 0x40828, + 0x4093d, 0x40950, 0x4098f, 0x40990, 0x409b2, 0x409bd, 0x409ce, 0x409dc, 0x409dd, + 0x409f0, 0x409f1, 0x409fc, 0x40a0f, 0x40a10, 0x40a32, 0x40a33, 0x40a35, 0x40a36, + 0x40a38, 0x40a39, 0x40a5e, 0x40ab2, 0x40ab3, 0x40abd, 0x40ad0, 0x40ae0, 0x40ae1, + 0x40af9, 0x40b0f, 0x40b10, 0x40b32, 0x40b33, 0x40b3d, 0x40b5c, 0x40b5d, 0x40b71, + 0x40b83, 0x40b99, 0x40b9a, 0x40b9c, 0x40b9e, 0x40b9f, 0x40ba3, 0x40ba4, 0x40bd0, + 0x40c3d, 0x40c60, 0x40c61, 0x40c80, 0x40cbd, 0x40cde, 0x40ce0, 0x40ce1, 0x40cf1, + 0x40cf2, 0x40d3d, 0x40d4e, 0x40dbd, 0x40e32, 0x40e33, 0x40e81, 0x40e82, 0x40e84, + 0x40e87, 0x40e88, 0x40e8a, 0x40e8d, 0x40ea5, 0x40ea7, 0x40eaa, 0x40eab, 0x40eb2, + 0x40eb3, 0x40ebd, 0x40ec6, 0x40f00, 0x4103f, 0x41061, 0x41065, 0x41066, 0x4108e, + 0x410c7, 0x410cd, 0x41258, 0x412c0, 0x417d7, 0x417dc, 0x418aa, 0x41aa7, 0x41bae, + 0x41baf, 0x41cf5, 0x41cf6, 0x41f59, 0x41f5b, 0x41f5d, 0x41fbe, 0x42071, 0x4207f, + 0x42102, 0x42107, 0x42115, 0x42124, 0x42126, 0x42128, 0x4214e, 0x42183, 0x42184, + 0x42cf2, 0x42cf3, 0x42d27, 0x42d2d, 0x42d6f, 0x42e2f, 0x43005, 0x43006, 0x4303b, + 0x4303c, 0x4a62a, 0x4a62b, 0x4a8fb, 0x4a8fd, 0x4a9cf, 0x4aa7a, 0x4aab1, 0x4aab5, + 0x4aab6, 0x4aac0, 0x4aac2, 0x4fb1d, 0x4fb3e, 0x4fb40, 0x4fb41, 0x4fb43, 0x4fb44, + 0x500aa, 0x500b5, 0x500ba, 0x502ec, 0x502ee, 0x50376, 0x50377, 0x5037f, 0x50386, + 0x5038c, 0x50559, 0x5066e, 0x5066f, 0x506d5, 0x506e5, 0x506e6, 0x506ee, 0x506ef, + 0x506ff, 0x50710, 0x507b1, 0x507f4, 0x507f5, 0x507fa, 0x5081a, 0x50824, 0x50828, + 0x5093d, 0x50950, 0x5098f, 0x50990, 0x509b2, 0x509bd, 0x509ce, 0x509dc, 0x509dd, + 0x509f0, 0x509f1, 0x509fc, 0x50a0f, 0x50a10, 0x50a32, 0x50a33, 0x50a35, 0x50a36, + 0x50a38, 0x50a39, 0x50a5e, 0x50ab2, 0x50ab3, 0x50abd, 0x50ad0, 0x50ae0, 0x50ae1, + 0x50af9, 0x50b0f, 0x50b10, 0x50b32, 0x50b33, 0x50b3d, 0x50b5c, 0x50b5d, 0x50b71, + 0x50b83, 0x50b99, 0x50b9a, 0x50b9c, 0x50b9e, 0x50b9f, 0x50ba3, 0x50ba4, 0x50bd0, + 0x50c3d, 0x50c60, 0x50c61, 0x50c80, 0x50cbd, 0x50cde, 0x50ce0, 0x50ce1, 0x50cf1, + 0x50cf2, 0x50d3d, 0x50d4e, 0x50dbd, 0x50e32, 0x50e33, 0x50e81, 0x50e82, 0x50e84, + 0x50e87, 0x50e88, 0x50e8a, 0x50e8d, 0x50ea5, 0x50ea7, 0x50eaa, 0x50eab, 0x50eb2, + 0x50eb3, 0x50ebd, 0x50ec6, 0x50f00, 0x5103f, 0x51061, 0x51065, 0x51066, 0x5108e, + 0x510c7, 0x510cd, 0x51258, 0x512c0, 0x517d7, 0x517dc, 0x518aa, 0x51aa7, 0x51bae, + 0x51baf, 0x51cf5, 0x51cf6, 0x51f59, 0x51f5b, 0x51f5d, 0x51fbe, 0x52071, 0x5207f, + 0x52102, 0x52107, 0x52115, 0x52124, 0x52126, 0x52128, 0x5214e, 0x52183, 0x52184, + 0x52cf2, 0x52cf3, 0x52d27, 0x52d2d, 0x52d6f, 0x52e2f, 0x53005, 0x53006, 0x5303b, + 0x5303c, 0x5a62a, 0x5a62b, 0x5a8fb, 0x5a8fd, 0x5a9cf, 0x5aa7a, 0x5aab1, 0x5aab5, + 0x5aab6, 0x5aac0, 0x5aac2, 0x5fb1d, 0x5fb3e, 0x5fb40, 0x5fb41, 0x5fb43, 0x5fb44, + 0x600aa, 0x600b5, 0x600ba, 0x602ec, 0x602ee, 0x60376, 0x60377, 0x6037f, 0x60386, + 0x6038c, 0x60559, 0x6066e, 0x6066f, 0x606d5, 0x606e5, 0x606e6, 0x606ee, 0x606ef, + 0x606ff, 0x60710, 0x607b1, 0x607f4, 0x607f5, 0x607fa, 0x6081a, 0x60824, 0x60828, + 0x6093d, 0x60950, 0x6098f, 0x60990, 0x609b2, 0x609bd, 0x609ce, 0x609dc, 0x609dd, + 0x609f0, 0x609f1, 0x609fc, 0x60a0f, 0x60a10, 0x60a32, 0x60a33, 0x60a35, 0x60a36, + 0x60a38, 0x60a39, 0x60a5e, 0x60ab2, 0x60ab3, 0x60abd, 0x60ad0, 0x60ae0, 0x60ae1, + 0x60af9, 0x60b0f, 0x60b10, 0x60b32, 0x60b33, 0x60b3d, 0x60b5c, 0x60b5d, 0x60b71, + 0x60b83, 0x60b99, 0x60b9a, 0x60b9c, 0x60b9e, 0x60b9f, 0x60ba3, 0x60ba4, 0x60bd0, + 0x60c3d, 0x60c60, 0x60c61, 0x60c80, 0x60cbd, 0x60cde, 0x60ce0, 0x60ce1, 0x60cf1, + 0x60cf2, 0x60d3d, 0x60d4e, 0x60dbd, 0x60e32, 0x60e33, 0x60e81, 0x60e82, 0x60e84, + 0x60e87, 0x60e88, 0x60e8a, 0x60e8d, 0x60ea5, 0x60ea7, 0x60eaa, 0x60eab, 0x60eb2, + 0x60eb3, 0x60ebd, 0x60ec6, 0x60f00, 0x6103f, 0x61061, 0x61065, 0x61066, 0x6108e, + 0x610c7, 0x610cd, 0x61258, 0x612c0, 0x617d7, 0x617dc, 0x618aa, 0x61aa7, 0x61bae, + 0x61baf, 0x61cf5, 0x61cf6, 0x61f59, 0x61f5b, 0x61f5d, 0x61fbe, 0x62071, 0x6207f, + 0x62102, 0x62107, 0x62115, 0x62124, 0x62126, 0x62128, 0x6214e, 0x62183, 0x62184, + 0x62cf2, 0x62cf3, 0x62d27, 0x62d2d, 0x62d6f, 0x62e2f, 0x63005, 0x63006, 0x6303b, + 0x6303c, 0x6a62a, 0x6a62b, 0x6a8fb, 0x6a8fd, 0x6a9cf, 0x6aa7a, 0x6aab1, 0x6aab5, + 0x6aab6, 0x6aac0, 0x6aac2, 0x6fb1d, 0x6fb3e, 0x6fb40, 0x6fb41, 0x6fb43, 0x6fb44, + 0x700aa, 0x700b5, 0x700ba, 0x702ec, 0x702ee, 0x70376, 0x70377, 0x7037f, 0x70386, + 0x7038c, 0x70559, 0x7066e, 0x7066f, 0x706d5, 0x706e5, 0x706e6, 0x706ee, 0x706ef, + 0x706ff, 0x70710, 0x707b1, 0x707f4, 0x707f5, 0x707fa, 0x7081a, 0x70824, 0x70828, + 0x7093d, 0x70950, 0x7098f, 0x70990, 0x709b2, 0x709bd, 0x709ce, 0x709dc, 0x709dd, + 0x709f0, 0x709f1, 0x709fc, 0x70a0f, 0x70a10, 0x70a32, 0x70a33, 0x70a35, 0x70a36, + 0x70a38, 0x70a39, 0x70a5e, 0x70ab2, 0x70ab3, 0x70abd, 0x70ad0, 0x70ae0, 0x70ae1, + 0x70af9, 0x70b0f, 0x70b10, 0x70b32, 0x70b33, 0x70b3d, 0x70b5c, 0x70b5d, 0x70b71, + 0x70b83, 0x70b99, 0x70b9a, 0x70b9c, 0x70b9e, 0x70b9f, 0x70ba3, 0x70ba4, 0x70bd0, + 0x70c3d, 0x70c60, 0x70c61, 0x70c80, 0x70cbd, 0x70cde, 0x70ce0, 0x70ce1, 0x70cf1, + 0x70cf2, 0x70d3d, 0x70d4e, 0x70dbd, 0x70e32, 0x70e33, 0x70e81, 0x70e82, 0x70e84, + 0x70e87, 0x70e88, 0x70e8a, 0x70e8d, 0x70ea5, 0x70ea7, 0x70eaa, 0x70eab, 0x70eb2, + 0x70eb3, 0x70ebd, 0x70ec6, 0x70f00, 0x7103f, 0x71061, 0x71065, 0x71066, 0x7108e, + 0x710c7, 0x710cd, 0x71258, 0x712c0, 0x717d7, 0x717dc, 0x718aa, 0x71aa7, 0x71bae, + 0x71baf, 0x71cf5, 0x71cf6, 0x71f59, 0x71f5b, 0x71f5d, 0x71fbe, 0x72071, 0x7207f, + 0x72102, 0x72107, 0x72115, 0x72124, 0x72126, 0x72128, 0x7214e, 0x72183, 0x72184, + 0x72cf2, 0x72cf3, 0x72d27, 0x72d2d, 0x72d6f, 0x72e2f, 0x73005, 0x73006, 0x7303b, + 0x7303c, 0x7a62a, 0x7a62b, 0x7a8fb, 0x7a8fd, 0x7a9cf, 0x7aa7a, 0x7aab1, 0x7aab5, + 0x7aab6, 0x7aac0, 0x7aac2, 0x7fb1d, 0x7fb3e, 0x7fb40, 0x7fb41, 0x7fb43, 0x7fb44, + 0x800aa, 0x800b5, 0x800ba, 0x802ec, 0x802ee, 0x80376, 0x80377, 0x8037f, 0x80386, + 0x8038c, 0x80559, 0x8066e, 0x8066f, 0x806d5, 0x806e5, 0x806e6, 0x806ee, 0x806ef, + 0x806ff, 0x80710, 0x807b1, 0x807f4, 0x807f5, 0x807fa, 0x8081a, 0x80824, 0x80828, + 0x8093d, 0x80950, 0x8098f, 0x80990, 0x809b2, 0x809bd, 0x809ce, 0x809dc, 0x809dd, + 0x809f0, 0x809f1, 0x809fc, 0x80a0f, 0x80a10, 0x80a32, 0x80a33, 0x80a35, 0x80a36, + 0x80a38, 0x80a39, 0x80a5e, 0x80ab2, 0x80ab3, 0x80abd, 0x80ad0, 0x80ae0, 0x80ae1, + 0x80af9, 0x80b0f, 0x80b10, 0x80b32, 0x80b33, 0x80b3d, 0x80b5c, 0x80b5d, 0x80b71, + 0x80b83, 0x80b99, 0x80b9a, 0x80b9c, 0x80b9e, 0x80b9f, 0x80ba3, 0x80ba4, 0x80bd0, + 0x80c3d, 0x80c60, 0x80c61, 0x80c80, 0x80cbd, 0x80cde, 0x80ce0, 0x80ce1, 0x80cf1, + 0x80cf2, 0x80d3d, 0x80d4e, 0x80dbd, 0x80e32, 0x80e33, 0x80e81, 0x80e82, 0x80e84, + 0x80e87, 0x80e88, 0x80e8a, 0x80e8d, 0x80ea5, 0x80ea7, 0x80eaa, 0x80eab, 0x80eb2, + 0x80eb3, 0x80ebd, 0x80ec6, 0x80f00, 0x8103f, 0x81061, 0x81065, 0x81066, 0x8108e, + 0x810c7, 0x810cd, 0x81258, 0x812c0, 0x817d7, 0x817dc, 0x818aa, 0x81aa7, 0x81bae, + 0x81baf, 0x81cf5, 0x81cf6, 0x81f59, 0x81f5b, 0x81f5d, 0x81fbe, 0x82071, 0x8207f, + 0x82102, 0x82107, 0x82115, 0x82124, 0x82126, 0x82128, 0x8214e, 0x82183, 0x82184, + 0x82cf2, 0x82cf3, 0x82d27, 0x82d2d, 0x82d6f, 0x82e2f, 0x83005, 0x83006, 0x8303b, + 0x8303c, 0x8a62a, 0x8a62b, 0x8a8fb, 0x8a8fd, 0x8a9cf, 0x8aa7a, 0x8aab1, 0x8aab5, + 0x8aab6, 0x8aac0, 0x8aac2, 0x8fb1d, 0x8fb3e, 0x8fb40, 0x8fb41, 0x8fb43, 0x8fb44, + 0x900aa, 0x900b5, 0x900ba, 0x902ec, 0x902ee, 0x90376, 0x90377, 0x9037f, 0x90386, + 0x9038c, 0x90559, 0x9066e, 0x9066f, 0x906d5, 0x906e5, 0x906e6, 0x906ee, 0x906ef, + 0x906ff, 0x90710, 0x907b1, 0x907f4, 0x907f5, 0x907fa, 0x9081a, 0x90824, 0x90828, + 0x9093d, 0x90950, 0x9098f, 0x90990, 0x909b2, 0x909bd, 0x909ce, 0x909dc, 0x909dd, + 0x909f0, 0x909f1, 0x909fc, 0x90a0f, 0x90a10, 0x90a32, 0x90a33, 0x90a35, 0x90a36, + 0x90a38, 0x90a39, 0x90a5e, 0x90ab2, 0x90ab3, 0x90abd, 0x90ad0, 0x90ae0, 0x90ae1, + 0x90af9, 0x90b0f, 0x90b10, 0x90b32, 0x90b33, 0x90b3d, 0x90b5c, 0x90b5d, 0x90b71, + 0x90b83, 0x90b99, 0x90b9a, 0x90b9c, 0x90b9e, 0x90b9f, 0x90ba3, 0x90ba4, 0x90bd0, + 0x90c3d, 0x90c60, 0x90c61, 0x90c80, 0x90cbd, 0x90cde, 0x90ce0, 0x90ce1, 0x90cf1, + 0x90cf2, 0x90d3d, 0x90d4e, 0x90dbd, 0x90e32, 0x90e33, 0x90e81, 0x90e82, 0x90e84, + 0x90e87, 0x90e88, 0x90e8a, 0x90e8d, 0x90ea5, 0x90ea7, 0x90eaa, 0x90eab, 0x90eb2, + 0x90eb3, 0x90ebd, 0x90ec6, 0x90f00, 0x9103f, 0x91061, 0x91065, 0x91066, 0x9108e, + 0x910c7, 0x910cd, 0x91258, 0x912c0, 0x917d7, 0x917dc, 0x918aa, 0x91aa7, 0x91bae, + 0x91baf, 0x91cf5, 0x91cf6, 0x91f59, 0x91f5b, 0x91f5d, 0x91fbe, 0x92071, 0x9207f, + 0x92102, 0x92107, 0x92115, 0x92124, 0x92126, 0x92128, 0x9214e, 0x92183, 0x92184, + 0x92cf2, 0x92cf3, 0x92d27, 0x92d2d, 0x92d6f, 0x92e2f, 0x93005, 0x93006, 0x9303b, + 0x9303c, 0x9a62a, 0x9a62b, 0x9a8fb, 0x9a8fd, 0x9a9cf, 0x9aa7a, 0x9aab1, 0x9aab5, + 0x9aab6, 0x9aac0, 0x9aac2, 0x9fb1d, 0x9fb3e, 0x9fb40, 0x9fb41, 0x9fb43, 0x9fb44, + 0xa00aa, 0xa00b5, 0xa00ba, 0xa02ec, 0xa02ee, 0xa0376, 0xa0377, 0xa037f, 0xa0386, + 0xa038c, 0xa0559, 0xa066e, 0xa066f, 0xa06d5, 0xa06e5, 0xa06e6, 0xa06ee, 0xa06ef, + 0xa06ff, 0xa0710, 0xa07b1, 0xa07f4, 0xa07f5, 0xa07fa, 0xa081a, 0xa0824, 0xa0828, + 0xa093d, 0xa0950, 0xa098f, 0xa0990, 0xa09b2, 0xa09bd, 0xa09ce, 0xa09dc, 0xa09dd, + 0xa09f0, 0xa09f1, 0xa09fc, 0xa0a0f, 0xa0a10, 0xa0a32, 0xa0a33, 0xa0a35, 0xa0a36, + 0xa0a38, 0xa0a39, 0xa0a5e, 0xa0ab2, 0xa0ab3, 0xa0abd, 0xa0ad0, 0xa0ae0, 0xa0ae1, + 0xa0af9, 0xa0b0f, 0xa0b10, 0xa0b32, 0xa0b33, 0xa0b3d, 0xa0b5c, 0xa0b5d, 0xa0b71, + 0xa0b83, 0xa0b99, 0xa0b9a, 0xa0b9c, 0xa0b9e, 0xa0b9f, 0xa0ba3, 0xa0ba4, 0xa0bd0, + 0xa0c3d, 0xa0c60, 0xa0c61, 0xa0c80, 0xa0cbd, 0xa0cde, 0xa0ce0, 0xa0ce1, 0xa0cf1, + 0xa0cf2, 0xa0d3d, 0xa0d4e, 0xa0dbd, 0xa0e32, 0xa0e33, 0xa0e81, 0xa0e82, 0xa0e84, + 0xa0e87, 0xa0e88, 0xa0e8a, 0xa0e8d, 0xa0ea5, 0xa0ea7, 0xa0eaa, 0xa0eab, 0xa0eb2, + 0xa0eb3, 0xa0ebd, 0xa0ec6, 0xa0f00, 0xa103f, 0xa1061, 0xa1065, 0xa1066, 0xa108e, + 0xa10c7, 0xa10cd, 0xa1258, 0xa12c0, 0xa17d7, 0xa17dc, 0xa18aa, 0xa1aa7, 0xa1bae, + 0xa1baf, 0xa1cf5, 0xa1cf6, 0xa1f59, 0xa1f5b, 0xa1f5d, 0xa1fbe, 0xa2071, 0xa207f, + 0xa2102, 0xa2107, 0xa2115, 0xa2124, 0xa2126, 0xa2128, 0xa214e, 0xa2183, 0xa2184, + 0xa2cf2, 0xa2cf3, 0xa2d27, 0xa2d2d, 0xa2d6f, 0xa2e2f, 0xa3005, 0xa3006, 0xa303b, + 0xa303c, 0xaa62a, 0xaa62b, 0xaa8fb, 0xaa8fd, 0xaa9cf, 0xaaa7a, 0xaaab1, 0xaaab5, + 0xaaab6, 0xaaac0, 0xaaac2, 0xafb1d, 0xafb3e, 0xafb40, 0xafb41, 0xafb43, 0xafb44, + 0xb00aa, 0xb00b5, 0xb00ba, 0xb02ec, 0xb02ee, 0xb0376, 0xb0377, 0xb037f, 0xb0386, + 0xb038c, 0xb0559, 0xb066e, 0xb066f, 0xb06d5, 0xb06e5, 0xb06e6, 0xb06ee, 0xb06ef, + 0xb06ff, 0xb0710, 0xb07b1, 0xb07f4, 0xb07f5, 0xb07fa, 0xb081a, 0xb0824, 0xb0828, + 0xb093d, 0xb0950, 0xb098f, 0xb0990, 0xb09b2, 0xb09bd, 0xb09ce, 0xb09dc, 0xb09dd, + 0xb09f0, 0xb09f1, 0xb09fc, 0xb0a0f, 0xb0a10, 0xb0a32, 0xb0a33, 0xb0a35, 0xb0a36, + 0xb0a38, 0xb0a39, 0xb0a5e, 0xb0ab2, 0xb0ab3, 0xb0abd, 0xb0ad0, 0xb0ae0, 0xb0ae1, + 0xb0af9, 0xb0b0f, 0xb0b10, 0xb0b32, 0xb0b33, 0xb0b3d, 0xb0b5c, 0xb0b5d, 0xb0b71, + 0xb0b83, 0xb0b99, 0xb0b9a, 0xb0b9c, 0xb0b9e, 0xb0b9f, 0xb0ba3, 0xb0ba4, 0xb0bd0, + 0xb0c3d, 0xb0c60, 0xb0c61, 0xb0c80, 0xb0cbd, 0xb0cde, 0xb0ce0, 0xb0ce1, 0xb0cf1, + 0xb0cf2, 0xb0d3d, 0xb0d4e, 0xb0dbd, 0xb0e32, 0xb0e33, 0xb0e81, 0xb0e82, 0xb0e84, + 0xb0e87, 0xb0e88, 0xb0e8a, 0xb0e8d, 0xb0ea5, 0xb0ea7, 0xb0eaa, 0xb0eab, 0xb0eb2, + 0xb0eb3, 0xb0ebd, 0xb0ec6, 0xb0f00, 0xb103f, 0xb1061, 0xb1065, 0xb1066, 0xb108e, + 0xb10c7, 0xb10cd, 0xb1258, 0xb12c0, 0xb17d7, 0xb17dc, 0xb18aa, 0xb1aa7, 0xb1bae, + 0xb1baf, 0xb1cf5, 0xb1cf6, 0xb1f59, 0xb1f5b, 0xb1f5d, 0xb1fbe, 0xb2071, 0xb207f, + 0xb2102, 0xb2107, 0xb2115, 0xb2124, 0xb2126, 0xb2128, 0xb214e, 0xb2183, 0xb2184, + 0xb2cf2, 0xb2cf3, 0xb2d27, 0xb2d2d, 0xb2d6f, 0xb2e2f, 0xb3005, 0xb3006, 0xb303b, + 0xb303c, 0xba62a, 0xba62b, 0xba8fb, 0xba8fd, 0xba9cf, 0xbaa7a, 0xbaab1, 0xbaab5, + 0xbaab6, 0xbaac0, 0xbaac2, 0xbfb1d, 0xbfb3e, 0xbfb40, 0xbfb41, 0xbfb43, 0xbfb44, + 0xc00aa, 0xc00b5, 0xc00ba, 0xc02ec, 0xc02ee, 0xc0376, 0xc0377, 0xc037f, 0xc0386, + 0xc038c, 0xc0559, 0xc066e, 0xc066f, 0xc06d5, 0xc06e5, 0xc06e6, 0xc06ee, 0xc06ef, + 0xc06ff, 0xc0710, 0xc07b1, 0xc07f4, 0xc07f5, 0xc07fa, 0xc081a, 0xc0824, 0xc0828, + 0xc093d, 0xc0950, 0xc098f, 0xc0990, 0xc09b2, 0xc09bd, 0xc09ce, 0xc09dc, 0xc09dd, + 0xc09f0, 0xc09f1, 0xc09fc, 0xc0a0f, 0xc0a10, 0xc0a32, 0xc0a33, 0xc0a35, 0xc0a36, + 0xc0a38, 0xc0a39, 0xc0a5e, 0xc0ab2, 0xc0ab3, 0xc0abd, 0xc0ad0, 0xc0ae0, 0xc0ae1, + 0xc0af9, 0xc0b0f, 0xc0b10, 0xc0b32, 0xc0b33, 0xc0b3d, 0xc0b5c, 0xc0b5d, 0xc0b71, + 0xc0b83, 0xc0b99, 0xc0b9a, 0xc0b9c, 0xc0b9e, 0xc0b9f, 0xc0ba3, 0xc0ba4, 0xc0bd0, + 0xc0c3d, 0xc0c60, 0xc0c61, 0xc0c80, 0xc0cbd, 0xc0cde, 0xc0ce0, 0xc0ce1, 0xc0cf1, + 0xc0cf2, 0xc0d3d, 0xc0d4e, 0xc0dbd, 0xc0e32, 0xc0e33, 0xc0e81, 0xc0e82, 0xc0e84, + 0xc0e87, 0xc0e88, 0xc0e8a, 0xc0e8d, 0xc0ea5, 0xc0ea7, 0xc0eaa, 0xc0eab, 0xc0eb2, + 0xc0eb3, 0xc0ebd, 0xc0ec6, 0xc0f00, 0xc103f, 0xc1061, 0xc1065, 0xc1066, 0xc108e, + 0xc10c7, 0xc10cd, 0xc1258, 0xc12c0, 0xc17d7, 0xc17dc, 0xc18aa, 0xc1aa7, 0xc1bae, + 0xc1baf, 0xc1cf5, 0xc1cf6, 0xc1f59, 0xc1f5b, 0xc1f5d, 0xc1fbe, 0xc2071, 0xc207f, + 0xc2102, 0xc2107, 0xc2115, 0xc2124, 0xc2126, 0xc2128, 0xc214e, 0xc2183, 0xc2184, + 0xc2cf2, 0xc2cf3, 0xc2d27, 0xc2d2d, 0xc2d6f, 0xc2e2f, 0xc3005, 0xc3006, 0xc303b, + 0xc303c, 0xca62a, 0xca62b, 0xca8fb, 0xca8fd, 0xca9cf, 0xcaa7a, 0xcaab1, 0xcaab5, + 0xcaab6, 0xcaac0, 0xcaac2, 0xcfb1d, 0xcfb3e, 0xcfb40, 0xcfb41, 0xcfb43, 0xcfb44, + 0xd00aa, 0xd00b5, 0xd00ba, 0xd02ec, 0xd02ee, 0xd0376, 0xd0377, 0xd037f, 0xd0386, + 0xd038c, 0xd0559, 0xd066e, 0xd066f, 0xd06d5, 0xd06e5, 0xd06e6, 0xd06ee, 0xd06ef, + 0xd06ff, 0xd0710, 0xd07b1, 0xd07f4, 0xd07f5, 0xd07fa, 0xd081a, 0xd0824, 0xd0828, + 0xd093d, 0xd0950, 0xd098f, 0xd0990, 0xd09b2, 0xd09bd, 0xd09ce, 0xd09dc, 0xd09dd, + 0xd09f0, 0xd09f1, 0xd09fc, 0xd0a0f, 0xd0a10, 0xd0a32, 0xd0a33, 0xd0a35, 0xd0a36, + 0xd0a38, 0xd0a39, 0xd0a5e, 0xd0ab2, 0xd0ab3, 0xd0abd, 0xd0ad0, 0xd0ae0, 0xd0ae1, + 0xd0af9, 0xd0b0f, 0xd0b10, 0xd0b32, 0xd0b33, 0xd0b3d, 0xd0b5c, 0xd0b5d, 0xd0b71, + 0xd0b83, 0xd0b99, 0xd0b9a, 0xd0b9c, 0xd0b9e, 0xd0b9f, 0xd0ba3, 0xd0ba4, 0xd0bd0, + 0xd0c3d, 0xd0c60, 0xd0c61, 0xd0c80, 0xd0cbd, 0xd0cde, 0xd0ce0, 0xd0ce1, 0xd0cf1, + 0xd0cf2, 0xd0d3d, 0xd0d4e, 0xd0dbd, 0xd0e32, 0xd0e33, 0xd0e81, 0xd0e82, 0xd0e84, + 0xd0e87, 0xd0e88, 0xd0e8a, 0xd0e8d, 0xd0ea5, 0xd0ea7, 0xd0eaa, 0xd0eab, 0xd0eb2, + 0xd0eb3, 0xd0ebd, 0xd0ec6, 0xd0f00, 0xd103f, 0xd1061, 0xd1065, 0xd1066, 0xd108e, + 0xd10c7, 0xd10cd, 0xd1258, 0xd12c0, 0xd17d7, 0xd17dc, 0xd18aa, 0xd1aa7, 0xd1bae, + 0xd1baf, 0xd1cf5, 0xd1cf6, 0xd1f59, 0xd1f5b, 0xd1f5d, 0xd1fbe, 0xd2071, 0xd207f, + 0xd2102, 0xd2107, 0xd2115, 0xd2124, 0xd2126, 0xd2128, 0xd214e, 0xd2183, 0xd2184, + 0xd2cf2, 0xd2cf3, 0xd2d27, 0xd2d2d, 0xd2d6f, 0xd2e2f, 0xd3005, 0xd3006, 0xd303b, + 0xd303c, 0xda62a, 0xda62b, 0xda8fb, 0xda8fd, 0xda9cf, 0xdaa7a, 0xdaab1, 0xdaab5, + 0xdaab6, 0xdaac0, 0xdaac2, 0xdfb1d, 0xdfb3e, 0xdfb40, 0xdfb41, 0xdfb43, 0xdfb44, + 0xe00aa, 0xe00b5, 0xe00ba, 0xe02ec, 0xe02ee, 0xe0376, 0xe0377, 0xe037f, 0xe0386, + 0xe038c, 0xe0559, 0xe066e, 0xe066f, 0xe06d5, 0xe06e5, 0xe06e6, 0xe06ee, 0xe06ef, + 0xe06ff, 0xe0710, 0xe07b1, 0xe07f4, 0xe07f5, 0xe07fa, 0xe081a, 0xe0824, 0xe0828, + 0xe093d, 0xe0950, 0xe098f, 0xe0990, 0xe09b2, 0xe09bd, 0xe09ce, 0xe09dc, 0xe09dd, + 0xe09f0, 0xe09f1, 0xe09fc, 0xe0a0f, 0xe0a10, 0xe0a32, 0xe0a33, 0xe0a35, 0xe0a36, + 0xe0a38, 0xe0a39, 0xe0a5e, 0xe0ab2, 0xe0ab3, 0xe0abd, 0xe0ad0, 0xe0ae0, 0xe0ae1, + 0xe0af9, 0xe0b0f, 0xe0b10, 0xe0b32, 0xe0b33, 0xe0b3d, 0xe0b5c, 0xe0b5d, 0xe0b71, + 0xe0b83, 0xe0b99, 0xe0b9a, 0xe0b9c, 0xe0b9e, 0xe0b9f, 0xe0ba3, 0xe0ba4, 0xe0bd0, + 0xe0c3d, 0xe0c60, 0xe0c61, 0xe0c80, 0xe0cbd, 0xe0cde, 0xe0ce0, 0xe0ce1, 0xe0cf1, + 0xe0cf2, 0xe0d3d, 0xe0d4e, 0xe0dbd, 0xe0e32, 0xe0e33, 0xe0e81, 0xe0e82, 0xe0e84, + 0xe0e87, 0xe0e88, 0xe0e8a, 0xe0e8d, 0xe0ea5, 0xe0ea7, 0xe0eaa, 0xe0eab, 0xe0eb2, + 0xe0eb3, 0xe0ebd, 0xe0ec6, 0xe0f00, 0xe103f, 0xe1061, 0xe1065, 0xe1066, 0xe108e, + 0xe10c7, 0xe10cd, 0xe1258, 0xe12c0, 0xe17d7, 0xe17dc, 0xe18aa, 0xe1aa7, 0xe1bae, + 0xe1baf, 0xe1cf5, 0xe1cf6, 0xe1f59, 0xe1f5b, 0xe1f5d, 0xe1fbe, 0xe2071, 0xe207f, + 0xe2102, 0xe2107, 0xe2115, 0xe2124, 0xe2126, 0xe2128, 0xe214e, 0xe2183, 0xe2184, + 0xe2cf2, 0xe2cf3, 0xe2d27, 0xe2d2d, 0xe2d6f, 0xe2e2f, 0xe3005, 0xe3006, 0xe303b, + 0xe303c, 0xea62a, 0xea62b, 0xea8fb, 0xea8fd, 0xea9cf, 0xeaa7a, 0xeaab1, 0xeaab5, + 0xeaab6, 0xeaac0, 0xeaac2, 0xefb1d, 0xefb3e, 0xefb40, 0xefb41, 0xefb43, 0xefb44, + 0xf00aa, 0xf00b5, 0xf00ba, 0xf02ec, 0xf02ee, 0xf0376, 0xf0377, 0xf037f, 0xf0386, + 0xf038c, 0xf0559, 0xf066e, 0xf066f, 0xf06d5, 0xf06e5, 0xf06e6, 0xf06ee, 0xf06ef, + 0xf06ff, 0xf0710, 0xf07b1, 0xf07f4, 0xf07f5, 0xf07fa, 0xf081a, 0xf0824, 0xf0828, + 0xf093d, 0xf0950, 0xf098f, 0xf0990, 0xf09b2, 0xf09bd, 0xf09ce, 0xf09dc, 0xf09dd, + 0xf09f0, 0xf09f1, 0xf09fc, 0xf0a0f, 0xf0a10, 0xf0a32, 0xf0a33, 0xf0a35, 0xf0a36, + 0xf0a38, 0xf0a39, 0xf0a5e, 0xf0ab2, 0xf0ab3, 0xf0abd, 0xf0ad0, 0xf0ae0, 0xf0ae1, + 0xf0af9, 0xf0b0f, 0xf0b10, 0xf0b32, 0xf0b33, 0xf0b3d, 0xf0b5c, 0xf0b5d, 0xf0b71, + 0xf0b83, 0xf0b99, 0xf0b9a, 0xf0b9c, 0xf0b9e, 0xf0b9f, 0xf0ba3, 0xf0ba4, 0xf0bd0, + 0xf0c3d, 0xf0c60, 0xf0c61, 0xf0c80, 0xf0cbd, 0xf0cde, 0xf0ce0, 0xf0ce1, 0xf0cf1, + 0xf0cf2, 0xf0d3d, 0xf0d4e, 0xf0dbd, 0xf0e32, 0xf0e33, 0xf0e81, 0xf0e82, 0xf0e84, + 0xf0e87, 0xf0e88, 0xf0e8a, 0xf0e8d, 0xf0ea5, 0xf0ea7, 0xf0eaa, 0xf0eab, 0xf0eb2, + 0xf0eb3, 0xf0ebd, 0xf0ec6, 0xf0f00, 0xf103f, 0xf1061, 0xf1065, 0xf1066, 0xf108e, + 0xf10c7, 0xf10cd, 0xf1258, 0xf12c0, 0xf17d7, 0xf17dc, 0xf18aa, 0xf1aa7, 0xf1bae, + 0xf1baf, 0xf1cf5, 0xf1cf6, 0xf1f59, 0xf1f5b, 0xf1f5d, 0xf1fbe, 0xf2071, 0xf207f, + 0xf2102, 0xf2107, 0xf2115, 0xf2124, 0xf2126, 0xf2128, 0xf214e, 0xf2183, 0xf2184, + 0xf2cf2, 0xf2cf3, 0xf2d27, 0xf2d2d, 0xf2d6f, 0xf2e2f, 0xf3005, 0xf3006, 0xf303b, + 0xf303c, 0xfa62a, 0xfa62b, 0xfa8fb, 0xfa8fd, 0xfa9cf, 0xfaa7a, 0xfaab1, 0xfaab5, + 0xfaab6, 0xfaac0, 0xfaac2, 0xffb1d, 0xffb3e, 0xffb40, 0xffb41, 0xffb43, 0xffb44, + 0x1000aa, 0x1000b5, 0x1000ba, 0x1002ec, 0x1002ee, 0x100376, 0x100377, 0x10037f, 0x100386, + 0x10038c, 0x100559, 0x10066e, 0x10066f, 0x1006d5, 0x1006e5, 0x1006e6, 0x1006ee, 0x1006ef, + 0x1006ff, 0x100710, 0x1007b1, 0x1007f4, 0x1007f5, 0x1007fa, 0x10081a, 0x100824, 0x100828, + 0x10093d, 0x100950, 0x10098f, 0x100990, 0x1009b2, 0x1009bd, 0x1009ce, 0x1009dc, 0x1009dd, + 0x1009f0, 0x1009f1, 0x1009fc, 0x100a0f, 0x100a10, 0x100a32, 0x100a33, 0x100a35, 0x100a36, + 0x100a38, 0x100a39, 0x100a5e, 0x100ab2, 0x100ab3, 0x100abd, 0x100ad0, 0x100ae0, 0x100ae1, + 0x100af9, 0x100b0f, 0x100b10, 0x100b32, 0x100b33, 0x100b3d, 0x100b5c, 0x100b5d, 0x100b71, + 0x100b83, 0x100b99, 0x100b9a, 0x100b9c, 0x100b9e, 0x100b9f, 0x100ba3, 0x100ba4, 0x100bd0, + 0x100c3d, 0x100c60, 0x100c61, 0x100c80, 0x100cbd, 0x100cde, 0x100ce0, 0x100ce1, 0x100cf1, + 0x100cf2, 0x100d3d, 0x100d4e, 0x100dbd, 0x100e32, 0x100e33, 0x100e81, 0x100e82, 0x100e84, + 0x100e87, 0x100e88, 0x100e8a, 0x100e8d, 0x100ea5, 0x100ea7, 0x100eaa, 0x100eab, 0x100eb2, + 0x100eb3, 0x100ebd, 0x100ec6, 0x100f00, 0x10103f, 0x101061, 0x101065, 0x101066, 0x10108e, + 0x1010c7, 0x1010cd, 0x101258, 0x1012c0, 0x1017d7, 0x1017dc, 0x1018aa, 0x101aa7, 0x101bae, + 0x101baf, 0x101cf5, 0x101cf6, 0x101f59, 0x101f5b, 0x101f5d, 0x101fbe, 0x102071, 0x10207f, + 0x102102, 0x102107, 0x102115, 0x102124, 0x102126, 0x102128, 0x10214e, 0x102183, 0x102184, + 0x102cf2, 0x102cf3, 0x102d27, 0x102d2d, 0x102d6f, 0x102e2f, 0x103005, 0x103006, 0x10303b, + 0x10303c, 0x10a62a, 0x10a62b, 0x10a8fb, 0x10a8fd, 0x10a9cf, 0x10aa7a, 0x10aab1, 0x10aab5, + 0x10aab6, 0x10aac0, 0x10aac2, 0x10fb1d, 0x10fb3e, 0x10fb40, 0x10fb41, 0x10fb43, 0x10fb44 #endif }; @@ -286,8 +1567,42 @@ static const crange controlRangeTable[] = { {0x202a, 0x202e}, {0x2060, 0x2064}, {0x2066, 0x206f}, {0xe000, 0xf8ff}, {0xfff9, 0xfffb} #if TCL_UTF_MAX > 4 - ,{0x1bca0, 0x1bca3}, {0x1d173, 0x1d17a}, {0xe0020, 0xe007f}, {0xf0000, 0xffffd}, - {0x100000, 0x10fffd} + ,{0x10000, 0x1001f}, {0x1007f, 0x1009f}, {0x10600, 0x10605}, {0x1200b, 0x1200f}, + {0x1202a, 0x1202e}, {0x12060, 0x12064}, {0x12066, 0x1206f}, {0x1e000, 0x1f8ff}, + {0x1fff9, 0x1fffb}, {0x20000, 0x2001f}, {0x2007f, 0x2009f}, {0x20600, 0x20605}, + {0x2200b, 0x2200f}, {0x2202a, 0x2202e}, {0x22060, 0x22064}, {0x22066, 0x2206f}, + {0x2e000, 0x2f8ff}, {0x2fff9, 0x2fffb}, {0x30000, 0x3001f}, {0x3007f, 0x3009f}, + {0x30600, 0x30605}, {0x3200b, 0x3200f}, {0x3202a, 0x3202e}, {0x32060, 0x32064}, + {0x32066, 0x3206f}, {0x3e000, 0x3f8ff}, {0x3fff9, 0x3fffb}, {0x40000, 0x4001f}, + {0x4007f, 0x4009f}, {0x40600, 0x40605}, {0x4200b, 0x4200f}, {0x4202a, 0x4202e}, + {0x42060, 0x42064}, {0x42066, 0x4206f}, {0x4e000, 0x4f8ff}, {0x4fff9, 0x4fffb}, + {0x50000, 0x5001f}, {0x5007f, 0x5009f}, {0x50600, 0x50605}, {0x5200b, 0x5200f}, + {0x5202a, 0x5202e}, {0x52060, 0x52064}, {0x52066, 0x5206f}, {0x5e000, 0x5f8ff}, + {0x5fff9, 0x5fffb}, {0x60000, 0x6001f}, {0x6007f, 0x6009f}, {0x60600, 0x60605}, + {0x6200b, 0x6200f}, {0x6202a, 0x6202e}, {0x62060, 0x62064}, {0x62066, 0x6206f}, + {0x6e000, 0x6f8ff}, {0x6fff9, 0x6fffb}, {0x70000, 0x7001f}, {0x7007f, 0x7009f}, + {0x70600, 0x70605}, {0x7200b, 0x7200f}, {0x7202a, 0x7202e}, {0x72060, 0x72064}, + {0x72066, 0x7206f}, {0x7e000, 0x7f8ff}, {0x7fff9, 0x7fffb}, {0x80000, 0x8001f}, + {0x8007f, 0x8009f}, {0x80600, 0x80605}, {0x8200b, 0x8200f}, {0x8202a, 0x8202e}, + {0x82060, 0x82064}, {0x82066, 0x8206f}, {0x8e000, 0x8f8ff}, {0x8fff9, 0x8fffb}, + {0x90000, 0x9001f}, {0x9007f, 0x9009f}, {0x90600, 0x90605}, {0x9200b, 0x9200f}, + {0x9202a, 0x9202e}, {0x92060, 0x92064}, {0x92066, 0x9206f}, {0x9e000, 0x9f8ff}, + {0x9fff9, 0x9fffb}, {0xa0000, 0xa001f}, {0xa007f, 0xa009f}, {0xa0600, 0xa0605}, + {0xa200b, 0xa200f}, {0xa202a, 0xa202e}, {0xa2060, 0xa2064}, {0xa2066, 0xa206f}, + {0xae000, 0xaf8ff}, {0xafff9, 0xafffb}, {0xb0000, 0xb001f}, {0xb007f, 0xb009f}, + {0xb0600, 0xb0605}, {0xb200b, 0xb200f}, {0xb202a, 0xb202e}, {0xb2060, 0xb2064}, + {0xb2066, 0xb206f}, {0xbe000, 0xbf8ff}, {0xbfff9, 0xbfffb}, {0xc0000, 0xc001f}, + {0xc007f, 0xc009f}, {0xc0600, 0xc0605}, {0xc200b, 0xc200f}, {0xc202a, 0xc202e}, + {0xc2060, 0xc2064}, {0xc2066, 0xc206f}, {0xce000, 0xcf8ff}, {0xcfff9, 0xcfffb}, + {0xd0000, 0xd001f}, {0xd007f, 0xd009f}, {0xd0600, 0xd0605}, {0xd200b, 0xd200f}, + {0xd202a, 0xd202e}, {0xd2060, 0xd2064}, {0xd2066, 0xd206f}, {0xde000, 0xdf8ff}, + {0xdfff9, 0xdfffb}, {0xe0000, 0xe001f}, {0xe007f, 0xe009f}, {0xe0600, 0xe0605}, + {0xe200b, 0xe200f}, {0xe202a, 0xe202e}, {0xe2060, 0xe2064}, {0xe2066, 0xe206f}, + {0xee000, 0xef8ff}, {0xefff9, 0xefffb}, {0xf0000, 0xf001f}, {0xf007f, 0xf009f}, + {0xf0600, 0xf0605}, {0xf200b, 0xf200f}, {0xf202a, 0xf202e}, {0xf2060, 0xf2064}, + {0xf2066, 0xf206f}, {0xfe000, 0xff8ff}, {0xffff9, 0xffffb}, {0x100000, 0x10001f}, + {0x10007f, 0x10009f}, {0x100600, 0x100605}, {0x10200b, 0x10200f}, {0x10202a, 0x10202e}, + {0x102060, 0x102064}, {0x102066, 0x10206f}, {0x10e000, 0x10f8ff}, {0x10fff9, 0x10fffb} #endif }; @@ -296,7 +1611,19 @@ static const crange controlRangeTable[] = { static const chr controlCharTable[] = { 0xad, 0x61c, 0x6dd, 0x70f, 0x8e2, 0x180e, 0xfeff #if TCL_UTF_MAX > 4 - ,0x110bd, 0xe0001 + ,0x100ad, 0x1061c, 0x106dd, 0x1070f, 0x108e2, 0x1180e, 0x1feff, 0x200ad, 0x2061c, + 0x206dd, 0x2070f, 0x208e2, 0x2180e, 0x2feff, 0x300ad, 0x3061c, 0x306dd, 0x3070f, + 0x308e2, 0x3180e, 0x3feff, 0x400ad, 0x4061c, 0x406dd, 0x4070f, 0x408e2, 0x4180e, + 0x4feff, 0x500ad, 0x5061c, 0x506dd, 0x5070f, 0x508e2, 0x5180e, 0x5feff, 0x600ad, + 0x6061c, 0x606dd, 0x6070f, 0x608e2, 0x6180e, 0x6feff, 0x700ad, 0x7061c, 0x706dd, + 0x7070f, 0x708e2, 0x7180e, 0x7feff, 0x800ad, 0x8061c, 0x806dd, 0x8070f, 0x808e2, + 0x8180e, 0x8feff, 0x900ad, 0x9061c, 0x906dd, 0x9070f, 0x908e2, 0x9180e, 0x9feff, + 0xa00ad, 0xa061c, 0xa06dd, 0xa070f, 0xa08e2, 0xa180e, 0xafeff, 0xb00ad, 0xb061c, + 0xb06dd, 0xb070f, 0xb08e2, 0xb180e, 0xbfeff, 0xc00ad, 0xc061c, 0xc06dd, 0xc070f, + 0xc08e2, 0xc180e, 0xcfeff, 0xd00ad, 0xd061c, 0xd06dd, 0xd070f, 0xd08e2, 0xd180e, + 0xdfeff, 0xe00ad, 0xe061c, 0xe06dd, 0xe070f, 0xe08e2, 0xe180e, 0xefeff, 0xf00ad, + 0xf061c, 0xf06dd, 0xf070f, 0xf08e2, 0xf180e, 0xffeff, 0x1000ad, 0x10061c, 0x1006dd, + 0x10070f, 0x1008e2, 0x10180e, 0x10feff #endif }; @@ -318,11 +1645,154 @@ static const crange digitRangeTable[] = { {0xa9d0, 0xa9d9}, {0xa9f0, 0xa9f9}, {0xaa50, 0xaa59}, {0xabf0, 0xabf9}, {0xff10, 0xff19} #if TCL_UTF_MAX > 4 - ,{0x104a0, 0x104a9}, {0x11066, 0x1106f}, {0x110f0, 0x110f9}, {0x11136, 0x1113f}, - {0x111d0, 0x111d9}, {0x112f0, 0x112f9}, {0x11450, 0x11459}, {0x114d0, 0x114d9}, - {0x11650, 0x11659}, {0x116c0, 0x116c9}, {0x11730, 0x11739}, {0x118e0, 0x118e9}, - {0x11c50, 0x11c59}, {0x16a60, 0x16a69}, {0x16b50, 0x16b59}, {0x1d7ce, 0x1d7ff}, - {0x1e950, 0x1e959} + ,{0x10030, 0x10039}, {0x10660, 0x10669}, {0x106f0, 0x106f9}, {0x107c0, 0x107c9}, + {0x10966, 0x1096f}, {0x109e6, 0x109ef}, {0x10a66, 0x10a6f}, {0x10ae6, 0x10aef}, + {0x10b66, 0x10b6f}, {0x10be6, 0x10bef}, {0x10c66, 0x10c6f}, {0x10ce6, 0x10cef}, + {0x10d66, 0x10d6f}, {0x10de6, 0x10def}, {0x10e50, 0x10e59}, {0x10ed0, 0x10ed9}, + {0x10f20, 0x10f29}, {0x11040, 0x11049}, {0x11090, 0x11099}, {0x117e0, 0x117e9}, + {0x11810, 0x11819}, {0x11946, 0x1194f}, {0x119d0, 0x119d9}, {0x11a80, 0x11a89}, + {0x11a90, 0x11a99}, {0x11b50, 0x11b59}, {0x11bb0, 0x11bb9}, {0x11c40, 0x11c49}, + {0x11c50, 0x11c59}, {0x1a620, 0x1a629}, {0x1a8d0, 0x1a8d9}, {0x1a900, 0x1a909}, + {0x1a9d0, 0x1a9d9}, {0x1a9f0, 0x1a9f9}, {0x1aa50, 0x1aa59}, {0x1abf0, 0x1abf9}, + {0x1ff10, 0x1ff19}, {0x20030, 0x20039}, {0x20660, 0x20669}, {0x206f0, 0x206f9}, + {0x207c0, 0x207c9}, {0x20966, 0x2096f}, {0x209e6, 0x209ef}, {0x20a66, 0x20a6f}, + {0x20ae6, 0x20aef}, {0x20b66, 0x20b6f}, {0x20be6, 0x20bef}, {0x20c66, 0x20c6f}, + {0x20ce6, 0x20cef}, {0x20d66, 0x20d6f}, {0x20de6, 0x20def}, {0x20e50, 0x20e59}, + {0x20ed0, 0x20ed9}, {0x20f20, 0x20f29}, {0x21040, 0x21049}, {0x21090, 0x21099}, + {0x217e0, 0x217e9}, {0x21810, 0x21819}, {0x21946, 0x2194f}, {0x219d0, 0x219d9}, + {0x21a80, 0x21a89}, {0x21a90, 0x21a99}, {0x21b50, 0x21b59}, {0x21bb0, 0x21bb9}, + {0x21c40, 0x21c49}, {0x21c50, 0x21c59}, {0x2a620, 0x2a629}, {0x2a8d0, 0x2a8d9}, + {0x2a900, 0x2a909}, {0x2a9d0, 0x2a9d9}, {0x2a9f0, 0x2a9f9}, {0x2aa50, 0x2aa59}, + {0x2abf0, 0x2abf9}, {0x2ff10, 0x2ff19}, {0x30030, 0x30039}, {0x30660, 0x30669}, + {0x306f0, 0x306f9}, {0x307c0, 0x307c9}, {0x30966, 0x3096f}, {0x309e6, 0x309ef}, + {0x30a66, 0x30a6f}, {0x30ae6, 0x30aef}, {0x30b66, 0x30b6f}, {0x30be6, 0x30bef}, + {0x30c66, 0x30c6f}, {0x30ce6, 0x30cef}, {0x30d66, 0x30d6f}, {0x30de6, 0x30def}, + {0x30e50, 0x30e59}, {0x30ed0, 0x30ed9}, {0x30f20, 0x30f29}, {0x31040, 0x31049}, + {0x31090, 0x31099}, {0x317e0, 0x317e9}, {0x31810, 0x31819}, {0x31946, 0x3194f}, + {0x319d0, 0x319d9}, {0x31a80, 0x31a89}, {0x31a90, 0x31a99}, {0x31b50, 0x31b59}, + {0x31bb0, 0x31bb9}, {0x31c40, 0x31c49}, {0x31c50, 0x31c59}, {0x3a620, 0x3a629}, + {0x3a8d0, 0x3a8d9}, {0x3a900, 0x3a909}, {0x3a9d0, 0x3a9d9}, {0x3a9f0, 0x3a9f9}, + {0x3aa50, 0x3aa59}, {0x3abf0, 0x3abf9}, {0x3ff10, 0x3ff19}, {0x40030, 0x40039}, + {0x40660, 0x40669}, {0x406f0, 0x406f9}, {0x407c0, 0x407c9}, {0x40966, 0x4096f}, + {0x409e6, 0x409ef}, {0x40a66, 0x40a6f}, {0x40ae6, 0x40aef}, {0x40b66, 0x40b6f}, + {0x40be6, 0x40bef}, {0x40c66, 0x40c6f}, {0x40ce6, 0x40cef}, {0x40d66, 0x40d6f}, + {0x40de6, 0x40def}, {0x40e50, 0x40e59}, {0x40ed0, 0x40ed9}, {0x40f20, 0x40f29}, + {0x41040, 0x41049}, {0x41090, 0x41099}, {0x417e0, 0x417e9}, {0x41810, 0x41819}, + {0x41946, 0x4194f}, {0x419d0, 0x419d9}, {0x41a80, 0x41a89}, {0x41a90, 0x41a99}, + {0x41b50, 0x41b59}, {0x41bb0, 0x41bb9}, {0x41c40, 0x41c49}, {0x41c50, 0x41c59}, + {0x4a620, 0x4a629}, {0x4a8d0, 0x4a8d9}, {0x4a900, 0x4a909}, {0x4a9d0, 0x4a9d9}, + {0x4a9f0, 0x4a9f9}, {0x4aa50, 0x4aa59}, {0x4abf0, 0x4abf9}, {0x4ff10, 0x4ff19}, + {0x50030, 0x50039}, {0x50660, 0x50669}, {0x506f0, 0x506f9}, {0x507c0, 0x507c9}, + {0x50966, 0x5096f}, {0x509e6, 0x509ef}, {0x50a66, 0x50a6f}, {0x50ae6, 0x50aef}, + {0x50b66, 0x50b6f}, {0x50be6, 0x50bef}, {0x50c66, 0x50c6f}, {0x50ce6, 0x50cef}, + {0x50d66, 0x50d6f}, {0x50de6, 0x50def}, {0x50e50, 0x50e59}, {0x50ed0, 0x50ed9}, + {0x50f20, 0x50f29}, {0x51040, 0x51049}, {0x51090, 0x51099}, {0x517e0, 0x517e9}, + {0x51810, 0x51819}, {0x51946, 0x5194f}, {0x519d0, 0x519d9}, {0x51a80, 0x51a89}, + {0x51a90, 0x51a99}, {0x51b50, 0x51b59}, {0x51bb0, 0x51bb9}, {0x51c40, 0x51c49}, + {0x51c50, 0x51c59}, {0x5a620, 0x5a629}, {0x5a8d0, 0x5a8d9}, {0x5a900, 0x5a909}, + {0x5a9d0, 0x5a9d9}, {0x5a9f0, 0x5a9f9}, {0x5aa50, 0x5aa59}, {0x5abf0, 0x5abf9}, + {0x5ff10, 0x5ff19}, {0x60030, 0x60039}, {0x60660, 0x60669}, {0x606f0, 0x606f9}, + {0x607c0, 0x607c9}, {0x60966, 0x6096f}, {0x609e6, 0x609ef}, {0x60a66, 0x60a6f}, + {0x60ae6, 0x60aef}, {0x60b66, 0x60b6f}, {0x60be6, 0x60bef}, {0x60c66, 0x60c6f}, + {0x60ce6, 0x60cef}, {0x60d66, 0x60d6f}, {0x60de6, 0x60def}, {0x60e50, 0x60e59}, + {0x60ed0, 0x60ed9}, {0x60f20, 0x60f29}, {0x61040, 0x61049}, {0x61090, 0x61099}, + {0x617e0, 0x617e9}, {0x61810, 0x61819}, {0x61946, 0x6194f}, {0x619d0, 0x619d9}, + {0x61a80, 0x61a89}, {0x61a90, 0x61a99}, {0x61b50, 0x61b59}, {0x61bb0, 0x61bb9}, + {0x61c40, 0x61c49}, {0x61c50, 0x61c59}, {0x6a620, 0x6a629}, {0x6a8d0, 0x6a8d9}, + {0x6a900, 0x6a909}, {0x6a9d0, 0x6a9d9}, {0x6a9f0, 0x6a9f9}, {0x6aa50, 0x6aa59}, + {0x6abf0, 0x6abf9}, {0x6ff10, 0x6ff19}, {0x70030, 0x70039}, {0x70660, 0x70669}, + {0x706f0, 0x706f9}, {0x707c0, 0x707c9}, {0x70966, 0x7096f}, {0x709e6, 0x709ef}, + {0x70a66, 0x70a6f}, {0x70ae6, 0x70aef}, {0x70b66, 0x70b6f}, {0x70be6, 0x70bef}, + {0x70c66, 0x70c6f}, {0x70ce6, 0x70cef}, {0x70d66, 0x70d6f}, {0x70de6, 0x70def}, + {0x70e50, 0x70e59}, {0x70ed0, 0x70ed9}, {0x70f20, 0x70f29}, {0x71040, 0x71049}, + {0x71090, 0x71099}, {0x717e0, 0x717e9}, {0x71810, 0x71819}, {0x71946, 0x7194f}, + {0x719d0, 0x719d9}, {0x71a80, 0x71a89}, {0x71a90, 0x71a99}, {0x71b50, 0x71b59}, + {0x71bb0, 0x71bb9}, {0x71c40, 0x71c49}, {0x71c50, 0x71c59}, {0x7a620, 0x7a629}, + {0x7a8d0, 0x7a8d9}, {0x7a900, 0x7a909}, {0x7a9d0, 0x7a9d9}, {0x7a9f0, 0x7a9f9}, + {0x7aa50, 0x7aa59}, {0x7abf0, 0x7abf9}, {0x7ff10, 0x7ff19}, {0x80030, 0x80039}, + {0x80660, 0x80669}, {0x806f0, 0x806f9}, {0x807c0, 0x807c9}, {0x80966, 0x8096f}, + {0x809e6, 0x809ef}, {0x80a66, 0x80a6f}, {0x80ae6, 0x80aef}, {0x80b66, 0x80b6f}, + {0x80be6, 0x80bef}, {0x80c66, 0x80c6f}, {0x80ce6, 0x80cef}, {0x80d66, 0x80d6f}, + {0x80de6, 0x80def}, {0x80e50, 0x80e59}, {0x80ed0, 0x80ed9}, {0x80f20, 0x80f29}, + {0x81040, 0x81049}, {0x81090, 0x81099}, {0x817e0, 0x817e9}, {0x81810, 0x81819}, + {0x81946, 0x8194f}, {0x819d0, 0x819d9}, {0x81a80, 0x81a89}, {0x81a90, 0x81a99}, + {0x81b50, 0x81b59}, {0x81bb0, 0x81bb9}, {0x81c40, 0x81c49}, {0x81c50, 0x81c59}, + {0x8a620, 0x8a629}, {0x8a8d0, 0x8a8d9}, {0x8a900, 0x8a909}, {0x8a9d0, 0x8a9d9}, + {0x8a9f0, 0x8a9f9}, {0x8aa50, 0x8aa59}, {0x8abf0, 0x8abf9}, {0x8ff10, 0x8ff19}, + {0x90030, 0x90039}, {0x90660, 0x90669}, {0x906f0, 0x906f9}, {0x907c0, 0x907c9}, + {0x90966, 0x9096f}, {0x909e6, 0x909ef}, {0x90a66, 0x90a6f}, {0x90ae6, 0x90aef}, + {0x90b66, 0x90b6f}, {0x90be6, 0x90bef}, {0x90c66, 0x90c6f}, {0x90ce6, 0x90cef}, + {0x90d66, 0x90d6f}, {0x90de6, 0x90def}, {0x90e50, 0x90e59}, {0x90ed0, 0x90ed9}, + {0x90f20, 0x90f29}, {0x91040, 0x91049}, {0x91090, 0x91099}, {0x917e0, 0x917e9}, + {0x91810, 0x91819}, {0x91946, 0x9194f}, {0x919d0, 0x919d9}, {0x91a80, 0x91a89}, + {0x91a90, 0x91a99}, {0x91b50, 0x91b59}, {0x91bb0, 0x91bb9}, {0x91c40, 0x91c49}, + {0x91c50, 0x91c59}, {0x9a620, 0x9a629}, {0x9a8d0, 0x9a8d9}, {0x9a900, 0x9a909}, + {0x9a9d0, 0x9a9d9}, {0x9a9f0, 0x9a9f9}, {0x9aa50, 0x9aa59}, {0x9abf0, 0x9abf9}, + {0x9ff10, 0x9ff19}, {0xa0030, 0xa0039}, {0xa0660, 0xa0669}, {0xa06f0, 0xa06f9}, + {0xa07c0, 0xa07c9}, {0xa0966, 0xa096f}, {0xa09e6, 0xa09ef}, {0xa0a66, 0xa0a6f}, + {0xa0ae6, 0xa0aef}, {0xa0b66, 0xa0b6f}, {0xa0be6, 0xa0bef}, {0xa0c66, 0xa0c6f}, + {0xa0ce6, 0xa0cef}, {0xa0d66, 0xa0d6f}, {0xa0de6, 0xa0def}, {0xa0e50, 0xa0e59}, + {0xa0ed0, 0xa0ed9}, {0xa0f20, 0xa0f29}, {0xa1040, 0xa1049}, {0xa1090, 0xa1099}, + {0xa17e0, 0xa17e9}, {0xa1810, 0xa1819}, {0xa1946, 0xa194f}, {0xa19d0, 0xa19d9}, + {0xa1a80, 0xa1a89}, {0xa1a90, 0xa1a99}, {0xa1b50, 0xa1b59}, {0xa1bb0, 0xa1bb9}, + {0xa1c40, 0xa1c49}, {0xa1c50, 0xa1c59}, {0xaa620, 0xaa629}, {0xaa8d0, 0xaa8d9}, + {0xaa900, 0xaa909}, {0xaa9d0, 0xaa9d9}, {0xaa9f0, 0xaa9f9}, {0xaaa50, 0xaaa59}, + {0xaabf0, 0xaabf9}, {0xaff10, 0xaff19}, {0xb0030, 0xb0039}, {0xb0660, 0xb0669}, + {0xb06f0, 0xb06f9}, {0xb07c0, 0xb07c9}, {0xb0966, 0xb096f}, {0xb09e6, 0xb09ef}, + {0xb0a66, 0xb0a6f}, {0xb0ae6, 0xb0aef}, {0xb0b66, 0xb0b6f}, {0xb0be6, 0xb0bef}, + {0xb0c66, 0xb0c6f}, {0xb0ce6, 0xb0cef}, {0xb0d66, 0xb0d6f}, {0xb0de6, 0xb0def}, + {0xb0e50, 0xb0e59}, {0xb0ed0, 0xb0ed9}, {0xb0f20, 0xb0f29}, {0xb1040, 0xb1049}, + {0xb1090, 0xb1099}, {0xb17e0, 0xb17e9}, {0xb1810, 0xb1819}, {0xb1946, 0xb194f}, + {0xb19d0, 0xb19d9}, {0xb1a80, 0xb1a89}, {0xb1a90, 0xb1a99}, {0xb1b50, 0xb1b59}, + {0xb1bb0, 0xb1bb9}, {0xb1c40, 0xb1c49}, {0xb1c50, 0xb1c59}, {0xba620, 0xba629}, + {0xba8d0, 0xba8d9}, {0xba900, 0xba909}, {0xba9d0, 0xba9d9}, {0xba9f0, 0xba9f9}, + {0xbaa50, 0xbaa59}, {0xbabf0, 0xbabf9}, {0xbff10, 0xbff19}, {0xc0030, 0xc0039}, + {0xc0660, 0xc0669}, {0xc06f0, 0xc06f9}, {0xc07c0, 0xc07c9}, {0xc0966, 0xc096f}, + {0xc09e6, 0xc09ef}, {0xc0a66, 0xc0a6f}, {0xc0ae6, 0xc0aef}, {0xc0b66, 0xc0b6f}, + {0xc0be6, 0xc0bef}, {0xc0c66, 0xc0c6f}, {0xc0ce6, 0xc0cef}, {0xc0d66, 0xc0d6f}, + {0xc0de6, 0xc0def}, {0xc0e50, 0xc0e59}, {0xc0ed0, 0xc0ed9}, {0xc0f20, 0xc0f29}, + {0xc1040, 0xc1049}, {0xc1090, 0xc1099}, {0xc17e0, 0xc17e9}, {0xc1810, 0xc1819}, + {0xc1946, 0xc194f}, {0xc19d0, 0xc19d9}, {0xc1a80, 0xc1a89}, {0xc1a90, 0xc1a99}, + {0xc1b50, 0xc1b59}, {0xc1bb0, 0xc1bb9}, {0xc1c40, 0xc1c49}, {0xc1c50, 0xc1c59}, + {0xca620, 0xca629}, {0xca8d0, 0xca8d9}, {0xca900, 0xca909}, {0xca9d0, 0xca9d9}, + {0xca9f0, 0xca9f9}, {0xcaa50, 0xcaa59}, {0xcabf0, 0xcabf9}, {0xcff10, 0xcff19}, + {0xd0030, 0xd0039}, {0xd0660, 0xd0669}, {0xd06f0, 0xd06f9}, {0xd07c0, 0xd07c9}, + {0xd0966, 0xd096f}, {0xd09e6, 0xd09ef}, {0xd0a66, 0xd0a6f}, {0xd0ae6, 0xd0aef}, + {0xd0b66, 0xd0b6f}, {0xd0be6, 0xd0bef}, {0xd0c66, 0xd0c6f}, {0xd0ce6, 0xd0cef}, + {0xd0d66, 0xd0d6f}, {0xd0de6, 0xd0def}, {0xd0e50, 0xd0e59}, {0xd0ed0, 0xd0ed9}, + {0xd0f20, 0xd0f29}, {0xd1040, 0xd1049}, {0xd1090, 0xd1099}, {0xd17e0, 0xd17e9}, + {0xd1810, 0xd1819}, {0xd1946, 0xd194f}, {0xd19d0, 0xd19d9}, {0xd1a80, 0xd1a89}, + {0xd1a90, 0xd1a99}, {0xd1b50, 0xd1b59}, {0xd1bb0, 0xd1bb9}, {0xd1c40, 0xd1c49}, + {0xd1c50, 0xd1c59}, {0xda620, 0xda629}, {0xda8d0, 0xda8d9}, {0xda900, 0xda909}, + {0xda9d0, 0xda9d9}, {0xda9f0, 0xda9f9}, {0xdaa50, 0xdaa59}, {0xdabf0, 0xdabf9}, + {0xdff10, 0xdff19}, {0xe0030, 0xe0039}, {0xe0660, 0xe0669}, {0xe06f0, 0xe06f9}, + {0xe07c0, 0xe07c9}, {0xe0966, 0xe096f}, {0xe09e6, 0xe09ef}, {0xe0a66, 0xe0a6f}, + {0xe0ae6, 0xe0aef}, {0xe0b66, 0xe0b6f}, {0xe0be6, 0xe0bef}, {0xe0c66, 0xe0c6f}, + {0xe0ce6, 0xe0cef}, {0xe0d66, 0xe0d6f}, {0xe0de6, 0xe0def}, {0xe0e50, 0xe0e59}, + {0xe0ed0, 0xe0ed9}, {0xe0f20, 0xe0f29}, {0xe1040, 0xe1049}, {0xe1090, 0xe1099}, + {0xe17e0, 0xe17e9}, {0xe1810, 0xe1819}, {0xe1946, 0xe194f}, {0xe19d0, 0xe19d9}, + {0xe1a80, 0xe1a89}, {0xe1a90, 0xe1a99}, {0xe1b50, 0xe1b59}, {0xe1bb0, 0xe1bb9}, + {0xe1c40, 0xe1c49}, {0xe1c50, 0xe1c59}, {0xea620, 0xea629}, {0xea8d0, 0xea8d9}, + {0xea900, 0xea909}, {0xea9d0, 0xea9d9}, {0xea9f0, 0xea9f9}, {0xeaa50, 0xeaa59}, + {0xeabf0, 0xeabf9}, {0xeff10, 0xeff19}, {0xf0030, 0xf0039}, {0xf0660, 0xf0669}, + {0xf06f0, 0xf06f9}, {0xf07c0, 0xf07c9}, {0xf0966, 0xf096f}, {0xf09e6, 0xf09ef}, + {0xf0a66, 0xf0a6f}, {0xf0ae6, 0xf0aef}, {0xf0b66, 0xf0b6f}, {0xf0be6, 0xf0bef}, + {0xf0c66, 0xf0c6f}, {0xf0ce6, 0xf0cef}, {0xf0d66, 0xf0d6f}, {0xf0de6, 0xf0def}, + {0xf0e50, 0xf0e59}, {0xf0ed0, 0xf0ed9}, {0xf0f20, 0xf0f29}, {0xf1040, 0xf1049}, + {0xf1090, 0xf1099}, {0xf17e0, 0xf17e9}, {0xf1810, 0xf1819}, {0xf1946, 0xf194f}, + {0xf19d0, 0xf19d9}, {0xf1a80, 0xf1a89}, {0xf1a90, 0xf1a99}, {0xf1b50, 0xf1b59}, + {0xf1bb0, 0xf1bb9}, {0xf1c40, 0xf1c49}, {0xf1c50, 0xf1c59}, {0xfa620, 0xfa629}, + {0xfa8d0, 0xfa8d9}, {0xfa900, 0xfa909}, {0xfa9d0, 0xfa9d9}, {0xfa9f0, 0xfa9f9}, + {0xfaa50, 0xfaa59}, {0xfabf0, 0xfabf9}, {0xfff10, 0xfff19}, {0x100030, 0x100039}, + {0x100660, 0x100669}, {0x1006f0, 0x1006f9}, {0x1007c0, 0x1007c9}, {0x100966, 0x10096f}, + {0x1009e6, 0x1009ef}, {0x100a66, 0x100a6f}, {0x100ae6, 0x100aef}, {0x100b66, 0x100b6f}, + {0x100be6, 0x100bef}, {0x100c66, 0x100c6f}, {0x100ce6, 0x100cef}, {0x100d66, 0x100d6f}, + {0x100de6, 0x100def}, {0x100e50, 0x100e59}, {0x100ed0, 0x100ed9}, {0x100f20, 0x100f29}, + {0x101040, 0x101049}, {0x101090, 0x101099}, {0x1017e0, 0x1017e9}, {0x101810, 0x101819}, + {0x101946, 0x10194f}, {0x1019d0, 0x1019d9}, {0x101a80, 0x101a89}, {0x101a90, 0x101a99}, + {0x101b50, 0x101b59}, {0x101bb0, 0x101bb9}, {0x101c40, 0x101c49}, {0x101c50, 0x101c59}, + {0x10a620, 0x10a629}, {0x10a8d0, 0x10a8d9}, {0x10a900, 0x10a909}, {0x10a9d0, 0x10a9d9}, + {0x10a9f0, 0x10a9f9}, {0x10aa50, 0x10aa59}, {0x10abf0, 0x10abf9}, {0x10ff10, 0x10ff19} #endif }; @@ -345,18 +1815,225 @@ static const crange punctRangeTable[] = { {0x1b5a, 0x1b60}, {0x1bfc, 0x1bff}, {0x1c3b, 0x1c3f}, {0x1cc0, 0x1cc7}, {0x2010, 0x2027}, {0x2030, 0x2043}, {0x2045, 0x2051}, {0x2053, 0x205e}, {0x2308, 0x230b}, {0x2768, 0x2775}, {0x27e6, 0x27ef}, {0x2983, 0x2998}, - {0x29d8, 0x29db}, {0x2cf9, 0x2cfc}, {0x2e00, 0x2e2e}, {0x2e30, 0x2e44}, + {0x29d8, 0x29db}, {0x2cf9, 0x2cfc}, {0x2e00, 0x2e2e}, {0x2e30, 0x2e49}, {0x3001, 0x3003}, {0x3008, 0x3011}, {0x3014, 0x301f}, {0xa60d, 0xa60f}, {0xa6f2, 0xa6f7}, {0xa874, 0xa877}, {0xa8f8, 0xa8fa}, {0xa9c1, 0xa9cd}, {0xaa5c, 0xaa5f}, {0xfe10, 0xfe19}, {0xfe30, 0xfe52}, {0xfe54, 0xfe61}, {0xff01, 0xff03}, {0xff05, 0xff0a}, {0xff0c, 0xff0f}, {0xff3b, 0xff3d}, {0xff5f, 0xff65} #if TCL_UTF_MAX > 4 - ,{0x10100, 0x10102}, {0x10a50, 0x10a58}, {0x10af0, 0x10af6}, {0x10b39, 0x10b3f}, - {0x10b99, 0x10b9c}, {0x11047, 0x1104d}, {0x110be, 0x110c1}, {0x11140, 0x11143}, - {0x111c5, 0x111c9}, {0x111dd, 0x111df}, {0x11238, 0x1123d}, {0x1144b, 0x1144f}, - {0x115c1, 0x115d7}, {0x11641, 0x11643}, {0x11660, 0x1166c}, {0x1173c, 0x1173e}, - {0x11c41, 0x11c45}, {0x12470, 0x12474}, {0x16b37, 0x16b3b}, {0x1da87, 0x1da8b} + ,{0x10021, 0x10023}, {0x10025, 0x1002a}, {0x1002c, 0x1002f}, {0x1005b, 0x1005d}, + {0x1055a, 0x1055f}, {0x1066a, 0x1066d}, {0x10700, 0x1070d}, {0x107f7, 0x107f9}, + {0x10830, 0x1083e}, {0x10f04, 0x10f12}, {0x10f3a, 0x10f3d}, {0x10fd0, 0x10fd4}, + {0x1104a, 0x1104f}, {0x11360, 0x11368}, {0x116eb, 0x116ed}, {0x117d4, 0x117d6}, + {0x117d8, 0x117da}, {0x11800, 0x1180a}, {0x11aa0, 0x11aa6}, {0x11aa8, 0x11aad}, + {0x11b5a, 0x11b60}, {0x11bfc, 0x11bff}, {0x11c3b, 0x11c3f}, {0x11cc0, 0x11cc7}, + {0x12010, 0x12027}, {0x12030, 0x12043}, {0x12045, 0x12051}, {0x12053, 0x1205e}, + {0x12308, 0x1230b}, {0x12768, 0x12775}, {0x127e6, 0x127ef}, {0x12983, 0x12998}, + {0x129d8, 0x129db}, {0x12cf9, 0x12cfc}, {0x12e00, 0x12e2e}, {0x12e30, 0x12e49}, + {0x13001, 0x13003}, {0x13008, 0x13011}, {0x13014, 0x1301f}, {0x1a60d, 0x1a60f}, + {0x1a6f2, 0x1a6f7}, {0x1a874, 0x1a877}, {0x1a8f8, 0x1a8fa}, {0x1a9c1, 0x1a9cd}, + {0x1aa5c, 0x1aa5f}, {0x1fe10, 0x1fe19}, {0x1fe30, 0x1fe52}, {0x1fe54, 0x1fe61}, + {0x1ff01, 0x1ff03}, {0x1ff05, 0x1ff0a}, {0x1ff0c, 0x1ff0f}, {0x1ff3b, 0x1ff3d}, + {0x1ff5f, 0x1ff65}, {0x20021, 0x20023}, {0x20025, 0x2002a}, {0x2002c, 0x2002f}, + {0x2005b, 0x2005d}, {0x2055a, 0x2055f}, {0x2066a, 0x2066d}, {0x20700, 0x2070d}, + {0x207f7, 0x207f9}, {0x20830, 0x2083e}, {0x20f04, 0x20f12}, {0x20f3a, 0x20f3d}, + {0x20fd0, 0x20fd4}, {0x2104a, 0x2104f}, {0x21360, 0x21368}, {0x216eb, 0x216ed}, + {0x217d4, 0x217d6}, {0x217d8, 0x217da}, {0x21800, 0x2180a}, {0x21aa0, 0x21aa6}, + {0x21aa8, 0x21aad}, {0x21b5a, 0x21b60}, {0x21bfc, 0x21bff}, {0x21c3b, 0x21c3f}, + {0x21cc0, 0x21cc7}, {0x22010, 0x22027}, {0x22030, 0x22043}, {0x22045, 0x22051}, + {0x22053, 0x2205e}, {0x22308, 0x2230b}, {0x22768, 0x22775}, {0x227e6, 0x227ef}, + {0x22983, 0x22998}, {0x229d8, 0x229db}, {0x22cf9, 0x22cfc}, {0x22e00, 0x22e2e}, + {0x22e30, 0x22e49}, {0x23001, 0x23003}, {0x23008, 0x23011}, {0x23014, 0x2301f}, + {0x2a60d, 0x2a60f}, {0x2a6f2, 0x2a6f7}, {0x2a874, 0x2a877}, {0x2a8f8, 0x2a8fa}, + {0x2a9c1, 0x2a9cd}, {0x2aa5c, 0x2aa5f}, {0x2fe10, 0x2fe19}, {0x2fe30, 0x2fe52}, + {0x2fe54, 0x2fe61}, {0x2ff01, 0x2ff03}, {0x2ff05, 0x2ff0a}, {0x2ff0c, 0x2ff0f}, + {0x2ff3b, 0x2ff3d}, {0x2ff5f, 0x2ff65}, {0x30021, 0x30023}, {0x30025, 0x3002a}, + {0x3002c, 0x3002f}, {0x3005b, 0x3005d}, {0x3055a, 0x3055f}, {0x3066a, 0x3066d}, + {0x30700, 0x3070d}, {0x307f7, 0x307f9}, {0x30830, 0x3083e}, {0x30f04, 0x30f12}, + {0x30f3a, 0x30f3d}, {0x30fd0, 0x30fd4}, {0x3104a, 0x3104f}, {0x31360, 0x31368}, + {0x316eb, 0x316ed}, {0x317d4, 0x317d6}, {0x317d8, 0x317da}, {0x31800, 0x3180a}, + {0x31aa0, 0x31aa6}, {0x31aa8, 0x31aad}, {0x31b5a, 0x31b60}, {0x31bfc, 0x31bff}, + {0x31c3b, 0x31c3f}, {0x31cc0, 0x31cc7}, {0x32010, 0x32027}, {0x32030, 0x32043}, + {0x32045, 0x32051}, {0x32053, 0x3205e}, {0x32308, 0x3230b}, {0x32768, 0x32775}, + {0x327e6, 0x327ef}, {0x32983, 0x32998}, {0x329d8, 0x329db}, {0x32cf9, 0x32cfc}, + {0x32e00, 0x32e2e}, {0x32e30, 0x32e49}, {0x33001, 0x33003}, {0x33008, 0x33011}, + {0x33014, 0x3301f}, {0x3a60d, 0x3a60f}, {0x3a6f2, 0x3a6f7}, {0x3a874, 0x3a877}, + {0x3a8f8, 0x3a8fa}, {0x3a9c1, 0x3a9cd}, {0x3aa5c, 0x3aa5f}, {0x3fe10, 0x3fe19}, + {0x3fe30, 0x3fe52}, {0x3fe54, 0x3fe61}, {0x3ff01, 0x3ff03}, {0x3ff05, 0x3ff0a}, + {0x3ff0c, 0x3ff0f}, {0x3ff3b, 0x3ff3d}, {0x3ff5f, 0x3ff65}, {0x40021, 0x40023}, + {0x40025, 0x4002a}, {0x4002c, 0x4002f}, {0x4005b, 0x4005d}, {0x4055a, 0x4055f}, + {0x4066a, 0x4066d}, {0x40700, 0x4070d}, {0x407f7, 0x407f9}, {0x40830, 0x4083e}, + {0x40f04, 0x40f12}, {0x40f3a, 0x40f3d}, {0x40fd0, 0x40fd4}, {0x4104a, 0x4104f}, + {0x41360, 0x41368}, {0x416eb, 0x416ed}, {0x417d4, 0x417d6}, {0x417d8, 0x417da}, + {0x41800, 0x4180a}, {0x41aa0, 0x41aa6}, {0x41aa8, 0x41aad}, {0x41b5a, 0x41b60}, + {0x41bfc, 0x41bff}, {0x41c3b, 0x41c3f}, {0x41cc0, 0x41cc7}, {0x42010, 0x42027}, + {0x42030, 0x42043}, {0x42045, 0x42051}, {0x42053, 0x4205e}, {0x42308, 0x4230b}, + {0x42768, 0x42775}, {0x427e6, 0x427ef}, {0x42983, 0x42998}, {0x429d8, 0x429db}, + {0x42cf9, 0x42cfc}, {0x42e00, 0x42e2e}, {0x42e30, 0x42e49}, {0x43001, 0x43003}, + {0x43008, 0x43011}, {0x43014, 0x4301f}, {0x4a60d, 0x4a60f}, {0x4a6f2, 0x4a6f7}, + {0x4a874, 0x4a877}, {0x4a8f8, 0x4a8fa}, {0x4a9c1, 0x4a9cd}, {0x4aa5c, 0x4aa5f}, + {0x4fe10, 0x4fe19}, {0x4fe30, 0x4fe52}, {0x4fe54, 0x4fe61}, {0x4ff01, 0x4ff03}, + {0x4ff05, 0x4ff0a}, {0x4ff0c, 0x4ff0f}, {0x4ff3b, 0x4ff3d}, {0x4ff5f, 0x4ff65}, + {0x50021, 0x50023}, {0x50025, 0x5002a}, {0x5002c, 0x5002f}, {0x5005b, 0x5005d}, + {0x5055a, 0x5055f}, {0x5066a, 0x5066d}, {0x50700, 0x5070d}, {0x507f7, 0x507f9}, + {0x50830, 0x5083e}, {0x50f04, 0x50f12}, {0x50f3a, 0x50f3d}, {0x50fd0, 0x50fd4}, + {0x5104a, 0x5104f}, {0x51360, 0x51368}, {0x516eb, 0x516ed}, {0x517d4, 0x517d6}, + {0x517d8, 0x517da}, {0x51800, 0x5180a}, {0x51aa0, 0x51aa6}, {0x51aa8, 0x51aad}, + {0x51b5a, 0x51b60}, {0x51bfc, 0x51bff}, {0x51c3b, 0x51c3f}, {0x51cc0, 0x51cc7}, + {0x52010, 0x52027}, {0x52030, 0x52043}, {0x52045, 0x52051}, {0x52053, 0x5205e}, + {0x52308, 0x5230b}, {0x52768, 0x52775}, {0x527e6, 0x527ef}, {0x52983, 0x52998}, + {0x529d8, 0x529db}, {0x52cf9, 0x52cfc}, {0x52e00, 0x52e2e}, {0x52e30, 0x52e49}, + {0x53001, 0x53003}, {0x53008, 0x53011}, {0x53014, 0x5301f}, {0x5a60d, 0x5a60f}, + {0x5a6f2, 0x5a6f7}, {0x5a874, 0x5a877}, {0x5a8f8, 0x5a8fa}, {0x5a9c1, 0x5a9cd}, + {0x5aa5c, 0x5aa5f}, {0x5fe10, 0x5fe19}, {0x5fe30, 0x5fe52}, {0x5fe54, 0x5fe61}, + {0x5ff01, 0x5ff03}, {0x5ff05, 0x5ff0a}, {0x5ff0c, 0x5ff0f}, {0x5ff3b, 0x5ff3d}, + {0x5ff5f, 0x5ff65}, {0x60021, 0x60023}, {0x60025, 0x6002a}, {0x6002c, 0x6002f}, + {0x6005b, 0x6005d}, {0x6055a, 0x6055f}, {0x6066a, 0x6066d}, {0x60700, 0x6070d}, + {0x607f7, 0x607f9}, {0x60830, 0x6083e}, {0x60f04, 0x60f12}, {0x60f3a, 0x60f3d}, + {0x60fd0, 0x60fd4}, {0x6104a, 0x6104f}, {0x61360, 0x61368}, {0x616eb, 0x616ed}, + {0x617d4, 0x617d6}, {0x617d8, 0x617da}, {0x61800, 0x6180a}, {0x61aa0, 0x61aa6}, + {0x61aa8, 0x61aad}, {0x61b5a, 0x61b60}, {0x61bfc, 0x61bff}, {0x61c3b, 0x61c3f}, + {0x61cc0, 0x61cc7}, {0x62010, 0x62027}, {0x62030, 0x62043}, {0x62045, 0x62051}, + {0x62053, 0x6205e}, {0x62308, 0x6230b}, {0x62768, 0x62775}, {0x627e6, 0x627ef}, + {0x62983, 0x62998}, {0x629d8, 0x629db}, {0x62cf9, 0x62cfc}, {0x62e00, 0x62e2e}, + {0x62e30, 0x62e49}, {0x63001, 0x63003}, {0x63008, 0x63011}, {0x63014, 0x6301f}, + {0x6a60d, 0x6a60f}, {0x6a6f2, 0x6a6f7}, {0x6a874, 0x6a877}, {0x6a8f8, 0x6a8fa}, + {0x6a9c1, 0x6a9cd}, {0x6aa5c, 0x6aa5f}, {0x6fe10, 0x6fe19}, {0x6fe30, 0x6fe52}, + {0x6fe54, 0x6fe61}, {0x6ff01, 0x6ff03}, {0x6ff05, 0x6ff0a}, {0x6ff0c, 0x6ff0f}, + {0x6ff3b, 0x6ff3d}, {0x6ff5f, 0x6ff65}, {0x70021, 0x70023}, {0x70025, 0x7002a}, + {0x7002c, 0x7002f}, {0x7005b, 0x7005d}, {0x7055a, 0x7055f}, {0x7066a, 0x7066d}, + {0x70700, 0x7070d}, {0x707f7, 0x707f9}, {0x70830, 0x7083e}, {0x70f04, 0x70f12}, + {0x70f3a, 0x70f3d}, {0x70fd0, 0x70fd4}, {0x7104a, 0x7104f}, {0x71360, 0x71368}, + {0x716eb, 0x716ed}, {0x717d4, 0x717d6}, {0x717d8, 0x717da}, {0x71800, 0x7180a}, + {0x71aa0, 0x71aa6}, {0x71aa8, 0x71aad}, {0x71b5a, 0x71b60}, {0x71bfc, 0x71bff}, + {0x71c3b, 0x71c3f}, {0x71cc0, 0x71cc7}, {0x72010, 0x72027}, {0x72030, 0x72043}, + {0x72045, 0x72051}, {0x72053, 0x7205e}, {0x72308, 0x7230b}, {0x72768, 0x72775}, + {0x727e6, 0x727ef}, {0x72983, 0x72998}, {0x729d8, 0x729db}, {0x72cf9, 0x72cfc}, + {0x72e00, 0x72e2e}, {0x72e30, 0x72e49}, {0x73001, 0x73003}, {0x73008, 0x73011}, + {0x73014, 0x7301f}, {0x7a60d, 0x7a60f}, {0x7a6f2, 0x7a6f7}, {0x7a874, 0x7a877}, + {0x7a8f8, 0x7a8fa}, {0x7a9c1, 0x7a9cd}, {0x7aa5c, 0x7aa5f}, {0x7fe10, 0x7fe19}, + {0x7fe30, 0x7fe52}, {0x7fe54, 0x7fe61}, {0x7ff01, 0x7ff03}, {0x7ff05, 0x7ff0a}, + {0x7ff0c, 0x7ff0f}, {0x7ff3b, 0x7ff3d}, {0x7ff5f, 0x7ff65}, {0x80021, 0x80023}, + {0x80025, 0x8002a}, {0x8002c, 0x8002f}, {0x8005b, 0x8005d}, {0x8055a, 0x8055f}, + {0x8066a, 0x8066d}, {0x80700, 0x8070d}, {0x807f7, 0x807f9}, {0x80830, 0x8083e}, + {0x80f04, 0x80f12}, {0x80f3a, 0x80f3d}, {0x80fd0, 0x80fd4}, {0x8104a, 0x8104f}, + {0x81360, 0x81368}, {0x816eb, 0x816ed}, {0x817d4, 0x817d6}, {0x817d8, 0x817da}, + {0x81800, 0x8180a}, {0x81aa0, 0x81aa6}, {0x81aa8, 0x81aad}, {0x81b5a, 0x81b60}, + {0x81bfc, 0x81bff}, {0x81c3b, 0x81c3f}, {0x81cc0, 0x81cc7}, {0x82010, 0x82027}, + {0x82030, 0x82043}, {0x82045, 0x82051}, {0x82053, 0x8205e}, {0x82308, 0x8230b}, + {0x82768, 0x82775}, {0x827e6, 0x827ef}, {0x82983, 0x82998}, {0x829d8, 0x829db}, + {0x82cf9, 0x82cfc}, {0x82e00, 0x82e2e}, {0x82e30, 0x82e49}, {0x83001, 0x83003}, + {0x83008, 0x83011}, {0x83014, 0x8301f}, {0x8a60d, 0x8a60f}, {0x8a6f2, 0x8a6f7}, + {0x8a874, 0x8a877}, {0x8a8f8, 0x8a8fa}, {0x8a9c1, 0x8a9cd}, {0x8aa5c, 0x8aa5f}, + {0x8fe10, 0x8fe19}, {0x8fe30, 0x8fe52}, {0x8fe54, 0x8fe61}, {0x8ff01, 0x8ff03}, + {0x8ff05, 0x8ff0a}, {0x8ff0c, 0x8ff0f}, {0x8ff3b, 0x8ff3d}, {0x8ff5f, 0x8ff65}, + {0x90021, 0x90023}, {0x90025, 0x9002a}, {0x9002c, 0x9002f}, {0x9005b, 0x9005d}, + {0x9055a, 0x9055f}, {0x9066a, 0x9066d}, {0x90700, 0x9070d}, {0x907f7, 0x907f9}, + {0x90830, 0x9083e}, {0x90f04, 0x90f12}, {0x90f3a, 0x90f3d}, {0x90fd0, 0x90fd4}, + {0x9104a, 0x9104f}, {0x91360, 0x91368}, {0x916eb, 0x916ed}, {0x917d4, 0x917d6}, + {0x917d8, 0x917da}, {0x91800, 0x9180a}, {0x91aa0, 0x91aa6}, {0x91aa8, 0x91aad}, + {0x91b5a, 0x91b60}, {0x91bfc, 0x91bff}, {0x91c3b, 0x91c3f}, {0x91cc0, 0x91cc7}, + {0x92010, 0x92027}, {0x92030, 0x92043}, {0x92045, 0x92051}, {0x92053, 0x9205e}, + {0x92308, 0x9230b}, {0x92768, 0x92775}, {0x927e6, 0x927ef}, {0x92983, 0x92998}, + {0x929d8, 0x929db}, {0x92cf9, 0x92cfc}, {0x92e00, 0x92e2e}, {0x92e30, 0x92e49}, + {0x93001, 0x93003}, {0x93008, 0x93011}, {0x93014, 0x9301f}, {0x9a60d, 0x9a60f}, + {0x9a6f2, 0x9a6f7}, {0x9a874, 0x9a877}, {0x9a8f8, 0x9a8fa}, {0x9a9c1, 0x9a9cd}, + {0x9aa5c, 0x9aa5f}, {0x9fe10, 0x9fe19}, {0x9fe30, 0x9fe52}, {0x9fe54, 0x9fe61}, + {0x9ff01, 0x9ff03}, {0x9ff05, 0x9ff0a}, {0x9ff0c, 0x9ff0f}, {0x9ff3b, 0x9ff3d}, + {0x9ff5f, 0x9ff65}, {0xa0021, 0xa0023}, {0xa0025, 0xa002a}, {0xa002c, 0xa002f}, + {0xa005b, 0xa005d}, {0xa055a, 0xa055f}, {0xa066a, 0xa066d}, {0xa0700, 0xa070d}, + {0xa07f7, 0xa07f9}, {0xa0830, 0xa083e}, {0xa0f04, 0xa0f12}, {0xa0f3a, 0xa0f3d}, + {0xa0fd0, 0xa0fd4}, {0xa104a, 0xa104f}, {0xa1360, 0xa1368}, {0xa16eb, 0xa16ed}, + {0xa17d4, 0xa17d6}, {0xa17d8, 0xa17da}, {0xa1800, 0xa180a}, {0xa1aa0, 0xa1aa6}, + {0xa1aa8, 0xa1aad}, {0xa1b5a, 0xa1b60}, {0xa1bfc, 0xa1bff}, {0xa1c3b, 0xa1c3f}, + {0xa1cc0, 0xa1cc7}, {0xa2010, 0xa2027}, {0xa2030, 0xa2043}, {0xa2045, 0xa2051}, + {0xa2053, 0xa205e}, {0xa2308, 0xa230b}, {0xa2768, 0xa2775}, {0xa27e6, 0xa27ef}, + {0xa2983, 0xa2998}, {0xa29d8, 0xa29db}, {0xa2cf9, 0xa2cfc}, {0xa2e00, 0xa2e2e}, + {0xa2e30, 0xa2e49}, {0xa3001, 0xa3003}, {0xa3008, 0xa3011}, {0xa3014, 0xa301f}, + {0xaa60d, 0xaa60f}, {0xaa6f2, 0xaa6f7}, {0xaa874, 0xaa877}, {0xaa8f8, 0xaa8fa}, + {0xaa9c1, 0xaa9cd}, {0xaaa5c, 0xaaa5f}, {0xafe10, 0xafe19}, {0xafe30, 0xafe52}, + {0xafe54, 0xafe61}, {0xaff01, 0xaff03}, {0xaff05, 0xaff0a}, {0xaff0c, 0xaff0f}, + {0xaff3b, 0xaff3d}, {0xaff5f, 0xaff65}, {0xb0021, 0xb0023}, {0xb0025, 0xb002a}, + {0xb002c, 0xb002f}, {0xb005b, 0xb005d}, {0xb055a, 0xb055f}, {0xb066a, 0xb066d}, + {0xb0700, 0xb070d}, {0xb07f7, 0xb07f9}, {0xb0830, 0xb083e}, {0xb0f04, 0xb0f12}, + {0xb0f3a, 0xb0f3d}, {0xb0fd0, 0xb0fd4}, {0xb104a, 0xb104f}, {0xb1360, 0xb1368}, + {0xb16eb, 0xb16ed}, {0xb17d4, 0xb17d6}, {0xb17d8, 0xb17da}, {0xb1800, 0xb180a}, + {0xb1aa0, 0xb1aa6}, {0xb1aa8, 0xb1aad}, {0xb1b5a, 0xb1b60}, {0xb1bfc, 0xb1bff}, + {0xb1c3b, 0xb1c3f}, {0xb1cc0, 0xb1cc7}, {0xb2010, 0xb2027}, {0xb2030, 0xb2043}, + {0xb2045, 0xb2051}, {0xb2053, 0xb205e}, {0xb2308, 0xb230b}, {0xb2768, 0xb2775}, + {0xb27e6, 0xb27ef}, {0xb2983, 0xb2998}, {0xb29d8, 0xb29db}, {0xb2cf9, 0xb2cfc}, + {0xb2e00, 0xb2e2e}, {0xb2e30, 0xb2e49}, {0xb3001, 0xb3003}, {0xb3008, 0xb3011}, + {0xb3014, 0xb301f}, {0xba60d, 0xba60f}, {0xba6f2, 0xba6f7}, {0xba874, 0xba877}, + {0xba8f8, 0xba8fa}, {0xba9c1, 0xba9cd}, {0xbaa5c, 0xbaa5f}, {0xbfe10, 0xbfe19}, + {0xbfe30, 0xbfe52}, {0xbfe54, 0xbfe61}, {0xbff01, 0xbff03}, {0xbff05, 0xbff0a}, + {0xbff0c, 0xbff0f}, {0xbff3b, 0xbff3d}, {0xbff5f, 0xbff65}, {0xc0021, 0xc0023}, + {0xc0025, 0xc002a}, {0xc002c, 0xc002f}, {0xc005b, 0xc005d}, {0xc055a, 0xc055f}, + {0xc066a, 0xc066d}, {0xc0700, 0xc070d}, {0xc07f7, 0xc07f9}, {0xc0830, 0xc083e}, + {0xc0f04, 0xc0f12}, {0xc0f3a, 0xc0f3d}, {0xc0fd0, 0xc0fd4}, {0xc104a, 0xc104f}, + {0xc1360, 0xc1368}, {0xc16eb, 0xc16ed}, {0xc17d4, 0xc17d6}, {0xc17d8, 0xc17da}, + {0xc1800, 0xc180a}, {0xc1aa0, 0xc1aa6}, {0xc1aa8, 0xc1aad}, {0xc1b5a, 0xc1b60}, + {0xc1bfc, 0xc1bff}, {0xc1c3b, 0xc1c3f}, {0xc1cc0, 0xc1cc7}, {0xc2010, 0xc2027}, + {0xc2030, 0xc2043}, {0xc2045, 0xc2051}, {0xc2053, 0xc205e}, {0xc2308, 0xc230b}, + {0xc2768, 0xc2775}, {0xc27e6, 0xc27ef}, {0xc2983, 0xc2998}, {0xc29d8, 0xc29db}, + {0xc2cf9, 0xc2cfc}, {0xc2e00, 0xc2e2e}, {0xc2e30, 0xc2e49}, {0xc3001, 0xc3003}, + {0xc3008, 0xc3011}, {0xc3014, 0xc301f}, {0xca60d, 0xca60f}, {0xca6f2, 0xca6f7}, + {0xca874, 0xca877}, {0xca8f8, 0xca8fa}, {0xca9c1, 0xca9cd}, {0xcaa5c, 0xcaa5f}, + {0xcfe10, 0xcfe19}, {0xcfe30, 0xcfe52}, {0xcfe54, 0xcfe61}, {0xcff01, 0xcff03}, + {0xcff05, 0xcff0a}, {0xcff0c, 0xcff0f}, {0xcff3b, 0xcff3d}, {0xcff5f, 0xcff65}, + {0xd0021, 0xd0023}, {0xd0025, 0xd002a}, {0xd002c, 0xd002f}, {0xd005b, 0xd005d}, + {0xd055a, 0xd055f}, {0xd066a, 0xd066d}, {0xd0700, 0xd070d}, {0xd07f7, 0xd07f9}, + {0xd0830, 0xd083e}, {0xd0f04, 0xd0f12}, {0xd0f3a, 0xd0f3d}, {0xd0fd0, 0xd0fd4}, + {0xd104a, 0xd104f}, {0xd1360, 0xd1368}, {0xd16eb, 0xd16ed}, {0xd17d4, 0xd17d6}, + {0xd17d8, 0xd17da}, {0xd1800, 0xd180a}, {0xd1aa0, 0xd1aa6}, {0xd1aa8, 0xd1aad}, + {0xd1b5a, 0xd1b60}, {0xd1bfc, 0xd1bff}, {0xd1c3b, 0xd1c3f}, {0xd1cc0, 0xd1cc7}, + {0xd2010, 0xd2027}, {0xd2030, 0xd2043}, {0xd2045, 0xd2051}, {0xd2053, 0xd205e}, + {0xd2308, 0xd230b}, {0xd2768, 0xd2775}, {0xd27e6, 0xd27ef}, {0xd2983, 0xd2998}, + {0xd29d8, 0xd29db}, {0xd2cf9, 0xd2cfc}, {0xd2e00, 0xd2e2e}, {0xd2e30, 0xd2e49}, + {0xd3001, 0xd3003}, {0xd3008, 0xd3011}, {0xd3014, 0xd301f}, {0xda60d, 0xda60f}, + {0xda6f2, 0xda6f7}, {0xda874, 0xda877}, {0xda8f8, 0xda8fa}, {0xda9c1, 0xda9cd}, + {0xdaa5c, 0xdaa5f}, {0xdfe10, 0xdfe19}, {0xdfe30, 0xdfe52}, {0xdfe54, 0xdfe61}, + {0xdff01, 0xdff03}, {0xdff05, 0xdff0a}, {0xdff0c, 0xdff0f}, {0xdff3b, 0xdff3d}, + {0xdff5f, 0xdff65}, {0xe0021, 0xe0023}, {0xe0025, 0xe002a}, {0xe002c, 0xe002f}, + {0xe005b, 0xe005d}, {0xe055a, 0xe055f}, {0xe066a, 0xe066d}, {0xe0700, 0xe070d}, + {0xe07f7, 0xe07f9}, {0xe0830, 0xe083e}, {0xe0f04, 0xe0f12}, {0xe0f3a, 0xe0f3d}, + {0xe0fd0, 0xe0fd4}, {0xe104a, 0xe104f}, {0xe1360, 0xe1368}, {0xe16eb, 0xe16ed}, + {0xe17d4, 0xe17d6}, {0xe17d8, 0xe17da}, {0xe1800, 0xe180a}, {0xe1aa0, 0xe1aa6}, + {0xe1aa8, 0xe1aad}, {0xe1b5a, 0xe1b60}, {0xe1bfc, 0xe1bff}, {0xe1c3b, 0xe1c3f}, + {0xe1cc0, 0xe1cc7}, {0xe2010, 0xe2027}, {0xe2030, 0xe2043}, {0xe2045, 0xe2051}, + {0xe2053, 0xe205e}, {0xe2308, 0xe230b}, {0xe2768, 0xe2775}, {0xe27e6, 0xe27ef}, + {0xe2983, 0xe2998}, {0xe29d8, 0xe29db}, {0xe2cf9, 0xe2cfc}, {0xe2e00, 0xe2e2e}, + {0xe2e30, 0xe2e49}, {0xe3001, 0xe3003}, {0xe3008, 0xe3011}, {0xe3014, 0xe301f}, + {0xea60d, 0xea60f}, {0xea6f2, 0xea6f7}, {0xea874, 0xea877}, {0xea8f8, 0xea8fa}, + {0xea9c1, 0xea9cd}, {0xeaa5c, 0xeaa5f}, {0xefe10, 0xefe19}, {0xefe30, 0xefe52}, + {0xefe54, 0xefe61}, {0xeff01, 0xeff03}, {0xeff05, 0xeff0a}, {0xeff0c, 0xeff0f}, + {0xeff3b, 0xeff3d}, {0xeff5f, 0xeff65}, {0xf0021, 0xf0023}, {0xf0025, 0xf002a}, + {0xf002c, 0xf002f}, {0xf005b, 0xf005d}, {0xf055a, 0xf055f}, {0xf066a, 0xf066d}, + {0xf0700, 0xf070d}, {0xf07f7, 0xf07f9}, {0xf0830, 0xf083e}, {0xf0f04, 0xf0f12}, + {0xf0f3a, 0xf0f3d}, {0xf0fd0, 0xf0fd4}, {0xf104a, 0xf104f}, {0xf1360, 0xf1368}, + {0xf16eb, 0xf16ed}, {0xf17d4, 0xf17d6}, {0xf17d8, 0xf17da}, {0xf1800, 0xf180a}, + {0xf1aa0, 0xf1aa6}, {0xf1aa8, 0xf1aad}, {0xf1b5a, 0xf1b60}, {0xf1bfc, 0xf1bff}, + {0xf1c3b, 0xf1c3f}, {0xf1cc0, 0xf1cc7}, {0xf2010, 0xf2027}, {0xf2030, 0xf2043}, + {0xf2045, 0xf2051}, {0xf2053, 0xf205e}, {0xf2308, 0xf230b}, {0xf2768, 0xf2775}, + {0xf27e6, 0xf27ef}, {0xf2983, 0xf2998}, {0xf29d8, 0xf29db}, {0xf2cf9, 0xf2cfc}, + {0xf2e00, 0xf2e2e}, {0xf2e30, 0xf2e49}, {0xf3001, 0xf3003}, {0xf3008, 0xf3011}, + {0xf3014, 0xf301f}, {0xfa60d, 0xfa60f}, {0xfa6f2, 0xfa6f7}, {0xfa874, 0xfa877}, + {0xfa8f8, 0xfa8fa}, {0xfa9c1, 0xfa9cd}, {0xfaa5c, 0xfaa5f}, {0xffe10, 0xffe19}, + {0xffe30, 0xffe52}, {0xffe54, 0xffe61}, {0xfff01, 0xfff03}, {0xfff05, 0xfff0a}, + {0xfff0c, 0xfff0f}, {0xfff3b, 0xfff3d}, {0xfff5f, 0xfff65}, {0x100021, 0x100023}, + {0x100025, 0x10002a}, {0x10002c, 0x10002f}, {0x10005b, 0x10005d}, {0x10055a, 0x10055f}, + {0x10066a, 0x10066d}, {0x100700, 0x10070d}, {0x1007f7, 0x1007f9}, {0x100830, 0x10083e}, + {0x100f04, 0x100f12}, {0x100f3a, 0x100f3d}, {0x100fd0, 0x100fd4}, {0x10104a, 0x10104f}, + {0x101360, 0x101368}, {0x1016eb, 0x1016ed}, {0x1017d4, 0x1017d6}, {0x1017d8, 0x1017da}, + {0x101800, 0x10180a}, {0x101aa0, 0x101aa6}, {0x101aa8, 0x101aad}, {0x101b5a, 0x101b60}, + {0x101bfc, 0x101bff}, {0x101c3b, 0x101c3f}, {0x101cc0, 0x101cc7}, {0x102010, 0x102027}, + {0x102030, 0x102043}, {0x102045, 0x102051}, {0x102053, 0x10205e}, {0x102308, 0x10230b}, + {0x102768, 0x102775}, {0x1027e6, 0x1027ef}, {0x102983, 0x102998}, {0x1029d8, 0x1029db}, + {0x102cf9, 0x102cfc}, {0x102e00, 0x102e2e}, {0x102e30, 0x102e49}, {0x103001, 0x103003}, + {0x103008, 0x103011}, {0x103014, 0x10301f}, {0x10a60d, 0x10a60f}, {0x10a6f2, 0x10a6f7}, + {0x10a874, 0x10a877}, {0x10a8f8, 0x10a8fa}, {0x10a9c1, 0x10a9cd}, {0x10aa5c, 0x10aa5f}, + {0x10fe10, 0x10fe19}, {0x10fe30, 0x10fe52}, {0x10fe54, 0x10fe61}, {0x10ff01, 0x10ff03}, + {0x10ff05, 0x10ff0a}, {0x10ff0c, 0x10ff0f}, {0x10ff3b, 0x10ff3d}, {0x10ff5f, 0x10ff65} #endif }; @@ -367,18 +2044,207 @@ static const chr punctCharTable[] = { 0xab, 0xb6, 0xb7, 0xbb, 0xbf, 0x37e, 0x387, 0x589, 0x58a, 0x5be, 0x5c0, 0x5c3, 0x5c6, 0x5f3, 0x5f4, 0x609, 0x60a, 0x60c, 0x60d, 0x61b, 0x61e, 0x61f, 0x6d4, 0x85e, 0x964, 0x965, 0x970, - 0xaf0, 0xdf4, 0xe4f, 0xe5a, 0xe5b, 0xf14, 0xf85, 0xfd9, 0xfda, - 0x10fb, 0x1400, 0x166d, 0x166e, 0x169b, 0x169c, 0x1735, 0x1736, 0x1944, - 0x1945, 0x1a1e, 0x1a1f, 0x1c7e, 0x1c7f, 0x1cd3, 0x207d, 0x207e, 0x208d, - 0x208e, 0x2329, 0x232a, 0x27c5, 0x27c6, 0x29fc, 0x29fd, 0x2cfe, 0x2cff, - 0x2d70, 0x3030, 0x303d, 0x30a0, 0x30fb, 0xa4fe, 0xa4ff, 0xa673, 0xa67e, - 0xa8ce, 0xa8cf, 0xa8fc, 0xa92e, 0xa92f, 0xa95f, 0xa9de, 0xa9df, 0xaade, - 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xfd3e, 0xfd3f, 0xfe63, 0xfe68, 0xfe6a, - 0xfe6b, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3f, 0xff5b, 0xff5d + 0x9fd, 0xaf0, 0xdf4, 0xe4f, 0xe5a, 0xe5b, 0xf14, 0xf85, 0xfd9, + 0xfda, 0x10fb, 0x1400, 0x166d, 0x166e, 0x169b, 0x169c, 0x1735, 0x1736, + 0x1944, 0x1945, 0x1a1e, 0x1a1f, 0x1c7e, 0x1c7f, 0x1cd3, 0x207d, 0x207e, + 0x208d, 0x208e, 0x2329, 0x232a, 0x27c5, 0x27c6, 0x29fc, 0x29fd, 0x2cfe, + 0x2cff, 0x2d70, 0x3030, 0x303d, 0x30a0, 0x30fb, 0xa4fe, 0xa4ff, 0xa673, + 0xa67e, 0xa8ce, 0xa8cf, 0xa8fc, 0xa92e, 0xa92f, 0xa95f, 0xa9de, 0xa9df, + 0xaade, 0xaadf, 0xaaf0, 0xaaf1, 0xabeb, 0xfd3e, 0xfd3f, 0xfe63, 0xfe68, + 0xfe6a, 0xfe6b, 0xff1a, 0xff1b, 0xff1f, 0xff20, 0xff3f, 0xff5b, 0xff5d #if TCL_UTF_MAX > 4 - ,0x1039f, 0x103d0, 0x1056f, 0x10857, 0x1091f, 0x1093f, 0x10a7f, 0x110bb, 0x110bc, - 0x11174, 0x11175, 0x111cd, 0x111db, 0x112a9, 0x1145b, 0x1145d, 0x114c6, 0x11c70, - 0x11c71, 0x16a6e, 0x16a6f, 0x16af5, 0x16b44, 0x1bc9f, 0x1e95e, 0x1e95f + ,0x1003a, 0x1003b, 0x1003f, 0x10040, 0x1005f, 0x1007b, 0x1007d, 0x100a1, 0x100a7, + 0x100ab, 0x100b6, 0x100b7, 0x100bb, 0x100bf, 0x1037e, 0x10387, 0x10589, 0x1058a, + 0x105be, 0x105c0, 0x105c3, 0x105c6, 0x105f3, 0x105f4, 0x10609, 0x1060a, 0x1060c, + 0x1060d, 0x1061b, 0x1061e, 0x1061f, 0x106d4, 0x1085e, 0x10964, 0x10965, 0x10970, + 0x109fd, 0x10af0, 0x10df4, 0x10e4f, 0x10e5a, 0x10e5b, 0x10f14, 0x10f85, 0x10fd9, + 0x10fda, 0x110fb, 0x11400, 0x1166d, 0x1166e, 0x1169b, 0x1169c, 0x11735, 0x11736, + 0x11944, 0x11945, 0x11a1e, 0x11a1f, 0x11c7e, 0x11c7f, 0x11cd3, 0x1207d, 0x1207e, + 0x1208d, 0x1208e, 0x12329, 0x1232a, 0x127c5, 0x127c6, 0x129fc, 0x129fd, 0x12cfe, + 0x12cff, 0x12d70, 0x13030, 0x1303d, 0x130a0, 0x130fb, 0x1a4fe, 0x1a4ff, 0x1a673, + 0x1a67e, 0x1a8ce, 0x1a8cf, 0x1a8fc, 0x1a92e, 0x1a92f, 0x1a95f, 0x1a9de, 0x1a9df, + 0x1aade, 0x1aadf, 0x1aaf0, 0x1aaf1, 0x1abeb, 0x1fd3e, 0x1fd3f, 0x1fe63, 0x1fe68, + 0x1fe6a, 0x1fe6b, 0x1ff1a, 0x1ff1b, 0x1ff1f, 0x1ff20, 0x1ff3f, 0x1ff5b, 0x1ff5d, + 0x2003a, 0x2003b, 0x2003f, 0x20040, 0x2005f, 0x2007b, 0x2007d, 0x200a1, 0x200a7, + 0x200ab, 0x200b6, 0x200b7, 0x200bb, 0x200bf, 0x2037e, 0x20387, 0x20589, 0x2058a, + 0x205be, 0x205c0, 0x205c3, 0x205c6, 0x205f3, 0x205f4, 0x20609, 0x2060a, 0x2060c, + 0x2060d, 0x2061b, 0x2061e, 0x2061f, 0x206d4, 0x2085e, 0x20964, 0x20965, 0x20970, + 0x209fd, 0x20af0, 0x20df4, 0x20e4f, 0x20e5a, 0x20e5b, 0x20f14, 0x20f85, 0x20fd9, + 0x20fda, 0x210fb, 0x21400, 0x2166d, 0x2166e, 0x2169b, 0x2169c, 0x21735, 0x21736, + 0x21944, 0x21945, 0x21a1e, 0x21a1f, 0x21c7e, 0x21c7f, 0x21cd3, 0x2207d, 0x2207e, + 0x2208d, 0x2208e, 0x22329, 0x2232a, 0x227c5, 0x227c6, 0x229fc, 0x229fd, 0x22cfe, + 0x22cff, 0x22d70, 0x23030, 0x2303d, 0x230a0, 0x230fb, 0x2a4fe, 0x2a4ff, 0x2a673, + 0x2a67e, 0x2a8ce, 0x2a8cf, 0x2a8fc, 0x2a92e, 0x2a92f, 0x2a95f, 0x2a9de, 0x2a9df, + 0x2aade, 0x2aadf, 0x2aaf0, 0x2aaf1, 0x2abeb, 0x2fd3e, 0x2fd3f, 0x2fe63, 0x2fe68, + 0x2fe6a, 0x2fe6b, 0x2ff1a, 0x2ff1b, 0x2ff1f, 0x2ff20, 0x2ff3f, 0x2ff5b, 0x2ff5d, + 0x3003a, 0x3003b, 0x3003f, 0x30040, 0x3005f, 0x3007b, 0x3007d, 0x300a1, 0x300a7, + 0x300ab, 0x300b6, 0x300b7, 0x300bb, 0x300bf, 0x3037e, 0x30387, 0x30589, 0x3058a, + 0x305be, 0x305c0, 0x305c3, 0x305c6, 0x305f3, 0x305f4, 0x30609, 0x3060a, 0x3060c, + 0x3060d, 0x3061b, 0x3061e, 0x3061f, 0x306d4, 0x3085e, 0x30964, 0x30965, 0x30970, + 0x309fd, 0x30af0, 0x30df4, 0x30e4f, 0x30e5a, 0x30e5b, 0x30f14, 0x30f85, 0x30fd9, + 0x30fda, 0x310fb, 0x31400, 0x3166d, 0x3166e, 0x3169b, 0x3169c, 0x31735, 0x31736, + 0x31944, 0x31945, 0x31a1e, 0x31a1f, 0x31c7e, 0x31c7f, 0x31cd3, 0x3207d, 0x3207e, + 0x3208d, 0x3208e, 0x32329, 0x3232a, 0x327c5, 0x327c6, 0x329fc, 0x329fd, 0x32cfe, + 0x32cff, 0x32d70, 0x33030, 0x3303d, 0x330a0, 0x330fb, 0x3a4fe, 0x3a4ff, 0x3a673, + 0x3a67e, 0x3a8ce, 0x3a8cf, 0x3a8fc, 0x3a92e, 0x3a92f, 0x3a95f, 0x3a9de, 0x3a9df, + 0x3aade, 0x3aadf, 0x3aaf0, 0x3aaf1, 0x3abeb, 0x3fd3e, 0x3fd3f, 0x3fe63, 0x3fe68, + 0x3fe6a, 0x3fe6b, 0x3ff1a, 0x3ff1b, 0x3ff1f, 0x3ff20, 0x3ff3f, 0x3ff5b, 0x3ff5d, + 0x4003a, 0x4003b, 0x4003f, 0x40040, 0x4005f, 0x4007b, 0x4007d, 0x400a1, 0x400a7, + 0x400ab, 0x400b6, 0x400b7, 0x400bb, 0x400bf, 0x4037e, 0x40387, 0x40589, 0x4058a, + 0x405be, 0x405c0, 0x405c3, 0x405c6, 0x405f3, 0x405f4, 0x40609, 0x4060a, 0x4060c, + 0x4060d, 0x4061b, 0x4061e, 0x4061f, 0x406d4, 0x4085e, 0x40964, 0x40965, 0x40970, + 0x409fd, 0x40af0, 0x40df4, 0x40e4f, 0x40e5a, 0x40e5b, 0x40f14, 0x40f85, 0x40fd9, + 0x40fda, 0x410fb, 0x41400, 0x4166d, 0x4166e, 0x4169b, 0x4169c, 0x41735, 0x41736, + 0x41944, 0x41945, 0x41a1e, 0x41a1f, 0x41c7e, 0x41c7f, 0x41cd3, 0x4207d, 0x4207e, + 0x4208d, 0x4208e, 0x42329, 0x4232a, 0x427c5, 0x427c6, 0x429fc, 0x429fd, 0x42cfe, + 0x42cff, 0x42d70, 0x43030, 0x4303d, 0x430a0, 0x430fb, 0x4a4fe, 0x4a4ff, 0x4a673, + 0x4a67e, 0x4a8ce, 0x4a8cf, 0x4a8fc, 0x4a92e, 0x4a92f, 0x4a95f, 0x4a9de, 0x4a9df, + 0x4aade, 0x4aadf, 0x4aaf0, 0x4aaf1, 0x4abeb, 0x4fd3e, 0x4fd3f, 0x4fe63, 0x4fe68, + 0x4fe6a, 0x4fe6b, 0x4ff1a, 0x4ff1b, 0x4ff1f, 0x4ff20, 0x4ff3f, 0x4ff5b, 0x4ff5d, + 0x5003a, 0x5003b, 0x5003f, 0x50040, 0x5005f, 0x5007b, 0x5007d, 0x500a1, 0x500a7, + 0x500ab, 0x500b6, 0x500b7, 0x500bb, 0x500bf, 0x5037e, 0x50387, 0x50589, 0x5058a, + 0x505be, 0x505c0, 0x505c3, 0x505c6, 0x505f3, 0x505f4, 0x50609, 0x5060a, 0x5060c, + 0x5060d, 0x5061b, 0x5061e, 0x5061f, 0x506d4, 0x5085e, 0x50964, 0x50965, 0x50970, + 0x509fd, 0x50af0, 0x50df4, 0x50e4f, 0x50e5a, 0x50e5b, 0x50f14, 0x50f85, 0x50fd9, + 0x50fda, 0x510fb, 0x51400, 0x5166d, 0x5166e, 0x5169b, 0x5169c, 0x51735, 0x51736, + 0x51944, 0x51945, 0x51a1e, 0x51a1f, 0x51c7e, 0x51c7f, 0x51cd3, 0x5207d, 0x5207e, + 0x5208d, 0x5208e, 0x52329, 0x5232a, 0x527c5, 0x527c6, 0x529fc, 0x529fd, 0x52cfe, + 0x52cff, 0x52d70, 0x53030, 0x5303d, 0x530a0, 0x530fb, 0x5a4fe, 0x5a4ff, 0x5a673, + 0x5a67e, 0x5a8ce, 0x5a8cf, 0x5a8fc, 0x5a92e, 0x5a92f, 0x5a95f, 0x5a9de, 0x5a9df, + 0x5aade, 0x5aadf, 0x5aaf0, 0x5aaf1, 0x5abeb, 0x5fd3e, 0x5fd3f, 0x5fe63, 0x5fe68, + 0x5fe6a, 0x5fe6b, 0x5ff1a, 0x5ff1b, 0x5ff1f, 0x5ff20, 0x5ff3f, 0x5ff5b, 0x5ff5d, + 0x6003a, 0x6003b, 0x6003f, 0x60040, 0x6005f, 0x6007b, 0x6007d, 0x600a1, 0x600a7, + 0x600ab, 0x600b6, 0x600b7, 0x600bb, 0x600bf, 0x6037e, 0x60387, 0x60589, 0x6058a, + 0x605be, 0x605c0, 0x605c3, 0x605c6, 0x605f3, 0x605f4, 0x60609, 0x6060a, 0x6060c, + 0x6060d, 0x6061b, 0x6061e, 0x6061f, 0x606d4, 0x6085e, 0x60964, 0x60965, 0x60970, + 0x609fd, 0x60af0, 0x60df4, 0x60e4f, 0x60e5a, 0x60e5b, 0x60f14, 0x60f85, 0x60fd9, + 0x60fda, 0x610fb, 0x61400, 0x6166d, 0x6166e, 0x6169b, 0x6169c, 0x61735, 0x61736, + 0x61944, 0x61945, 0x61a1e, 0x61a1f, 0x61c7e, 0x61c7f, 0x61cd3, 0x6207d, 0x6207e, + 0x6208d, 0x6208e, 0x62329, 0x6232a, 0x627c5, 0x627c6, 0x629fc, 0x629fd, 0x62cfe, + 0x62cff, 0x62d70, 0x63030, 0x6303d, 0x630a0, 0x630fb, 0x6a4fe, 0x6a4ff, 0x6a673, + 0x6a67e, 0x6a8ce, 0x6a8cf, 0x6a8fc, 0x6a92e, 0x6a92f, 0x6a95f, 0x6a9de, 0x6a9df, + 0x6aade, 0x6aadf, 0x6aaf0, 0x6aaf1, 0x6abeb, 0x6fd3e, 0x6fd3f, 0x6fe63, 0x6fe68, + 0x6fe6a, 0x6fe6b, 0x6ff1a, 0x6ff1b, 0x6ff1f, 0x6ff20, 0x6ff3f, 0x6ff5b, 0x6ff5d, + 0x7003a, 0x7003b, 0x7003f, 0x70040, 0x7005f, 0x7007b, 0x7007d, 0x700a1, 0x700a7, + 0x700ab, 0x700b6, 0x700b7, 0x700bb, 0x700bf, 0x7037e, 0x70387, 0x70589, 0x7058a, + 0x705be, 0x705c0, 0x705c3, 0x705c6, 0x705f3, 0x705f4, 0x70609, 0x7060a, 0x7060c, + 0x7060d, 0x7061b, 0x7061e, 0x7061f, 0x706d4, 0x7085e, 0x70964, 0x70965, 0x70970, + 0x709fd, 0x70af0, 0x70df4, 0x70e4f, 0x70e5a, 0x70e5b, 0x70f14, 0x70f85, 0x70fd9, + 0x70fda, 0x710fb, 0x71400, 0x7166d, 0x7166e, 0x7169b, 0x7169c, 0x71735, 0x71736, + 0x71944, 0x71945, 0x71a1e, 0x71a1f, 0x71c7e, 0x71c7f, 0x71cd3, 0x7207d, 0x7207e, + 0x7208d, 0x7208e, 0x72329, 0x7232a, 0x727c5, 0x727c6, 0x729fc, 0x729fd, 0x72cfe, + 0x72cff, 0x72d70, 0x73030, 0x7303d, 0x730a0, 0x730fb, 0x7a4fe, 0x7a4ff, 0x7a673, + 0x7a67e, 0x7a8ce, 0x7a8cf, 0x7a8fc, 0x7a92e, 0x7a92f, 0x7a95f, 0x7a9de, 0x7a9df, + 0x7aade, 0x7aadf, 0x7aaf0, 0x7aaf1, 0x7abeb, 0x7fd3e, 0x7fd3f, 0x7fe63, 0x7fe68, + 0x7fe6a, 0x7fe6b, 0x7ff1a, 0x7ff1b, 0x7ff1f, 0x7ff20, 0x7ff3f, 0x7ff5b, 0x7ff5d, + 0x8003a, 0x8003b, 0x8003f, 0x80040, 0x8005f, 0x8007b, 0x8007d, 0x800a1, 0x800a7, + 0x800ab, 0x800b6, 0x800b7, 0x800bb, 0x800bf, 0x8037e, 0x80387, 0x80589, 0x8058a, + 0x805be, 0x805c0, 0x805c3, 0x805c6, 0x805f3, 0x805f4, 0x80609, 0x8060a, 0x8060c, + 0x8060d, 0x8061b, 0x8061e, 0x8061f, 0x806d4, 0x8085e, 0x80964, 0x80965, 0x80970, + 0x809fd, 0x80af0, 0x80df4, 0x80e4f, 0x80e5a, 0x80e5b, 0x80f14, 0x80f85, 0x80fd9, + 0x80fda, 0x810fb, 0x81400, 0x8166d, 0x8166e, 0x8169b, 0x8169c, 0x81735, 0x81736, + 0x81944, 0x81945, 0x81a1e, 0x81a1f, 0x81c7e, 0x81c7f, 0x81cd3, 0x8207d, 0x8207e, + 0x8208d, 0x8208e, 0x82329, 0x8232a, 0x827c5, 0x827c6, 0x829fc, 0x829fd, 0x82cfe, + 0x82cff, 0x82d70, 0x83030, 0x8303d, 0x830a0, 0x830fb, 0x8a4fe, 0x8a4ff, 0x8a673, + 0x8a67e, 0x8a8ce, 0x8a8cf, 0x8a8fc, 0x8a92e, 0x8a92f, 0x8a95f, 0x8a9de, 0x8a9df, + 0x8aade, 0x8aadf, 0x8aaf0, 0x8aaf1, 0x8abeb, 0x8fd3e, 0x8fd3f, 0x8fe63, 0x8fe68, + 0x8fe6a, 0x8fe6b, 0x8ff1a, 0x8ff1b, 0x8ff1f, 0x8ff20, 0x8ff3f, 0x8ff5b, 0x8ff5d, + 0x9003a, 0x9003b, 0x9003f, 0x90040, 0x9005f, 0x9007b, 0x9007d, 0x900a1, 0x900a7, + 0x900ab, 0x900b6, 0x900b7, 0x900bb, 0x900bf, 0x9037e, 0x90387, 0x90589, 0x9058a, + 0x905be, 0x905c0, 0x905c3, 0x905c6, 0x905f3, 0x905f4, 0x90609, 0x9060a, 0x9060c, + 0x9060d, 0x9061b, 0x9061e, 0x9061f, 0x906d4, 0x9085e, 0x90964, 0x90965, 0x90970, + 0x909fd, 0x90af0, 0x90df4, 0x90e4f, 0x90e5a, 0x90e5b, 0x90f14, 0x90f85, 0x90fd9, + 0x90fda, 0x910fb, 0x91400, 0x9166d, 0x9166e, 0x9169b, 0x9169c, 0x91735, 0x91736, + 0x91944, 0x91945, 0x91a1e, 0x91a1f, 0x91c7e, 0x91c7f, 0x91cd3, 0x9207d, 0x9207e, + 0x9208d, 0x9208e, 0x92329, 0x9232a, 0x927c5, 0x927c6, 0x929fc, 0x929fd, 0x92cfe, + 0x92cff, 0x92d70, 0x93030, 0x9303d, 0x930a0, 0x930fb, 0x9a4fe, 0x9a4ff, 0x9a673, + 0x9a67e, 0x9a8ce, 0x9a8cf, 0x9a8fc, 0x9a92e, 0x9a92f, 0x9a95f, 0x9a9de, 0x9a9df, + 0x9aade, 0x9aadf, 0x9aaf0, 0x9aaf1, 0x9abeb, 0x9fd3e, 0x9fd3f, 0x9fe63, 0x9fe68, + 0x9fe6a, 0x9fe6b, 0x9ff1a, 0x9ff1b, 0x9ff1f, 0x9ff20, 0x9ff3f, 0x9ff5b, 0x9ff5d, + 0xa003a, 0xa003b, 0xa003f, 0xa0040, 0xa005f, 0xa007b, 0xa007d, 0xa00a1, 0xa00a7, + 0xa00ab, 0xa00b6, 0xa00b7, 0xa00bb, 0xa00bf, 0xa037e, 0xa0387, 0xa0589, 0xa058a, + 0xa05be, 0xa05c0, 0xa05c3, 0xa05c6, 0xa05f3, 0xa05f4, 0xa0609, 0xa060a, 0xa060c, + 0xa060d, 0xa061b, 0xa061e, 0xa061f, 0xa06d4, 0xa085e, 0xa0964, 0xa0965, 0xa0970, + 0xa09fd, 0xa0af0, 0xa0df4, 0xa0e4f, 0xa0e5a, 0xa0e5b, 0xa0f14, 0xa0f85, 0xa0fd9, + 0xa0fda, 0xa10fb, 0xa1400, 0xa166d, 0xa166e, 0xa169b, 0xa169c, 0xa1735, 0xa1736, + 0xa1944, 0xa1945, 0xa1a1e, 0xa1a1f, 0xa1c7e, 0xa1c7f, 0xa1cd3, 0xa207d, 0xa207e, + 0xa208d, 0xa208e, 0xa2329, 0xa232a, 0xa27c5, 0xa27c6, 0xa29fc, 0xa29fd, 0xa2cfe, + 0xa2cff, 0xa2d70, 0xa3030, 0xa303d, 0xa30a0, 0xa30fb, 0xaa4fe, 0xaa4ff, 0xaa673, + 0xaa67e, 0xaa8ce, 0xaa8cf, 0xaa8fc, 0xaa92e, 0xaa92f, 0xaa95f, 0xaa9de, 0xaa9df, + 0xaaade, 0xaaadf, 0xaaaf0, 0xaaaf1, 0xaabeb, 0xafd3e, 0xafd3f, 0xafe63, 0xafe68, + 0xafe6a, 0xafe6b, 0xaff1a, 0xaff1b, 0xaff1f, 0xaff20, 0xaff3f, 0xaff5b, 0xaff5d, + 0xb003a, 0xb003b, 0xb003f, 0xb0040, 0xb005f, 0xb007b, 0xb007d, 0xb00a1, 0xb00a7, + 0xb00ab, 0xb00b6, 0xb00b7, 0xb00bb, 0xb00bf, 0xb037e, 0xb0387, 0xb0589, 0xb058a, + 0xb05be, 0xb05c0, 0xb05c3, 0xb05c6, 0xb05f3, 0xb05f4, 0xb0609, 0xb060a, 0xb060c, + 0xb060d, 0xb061b, 0xb061e, 0xb061f, 0xb06d4, 0xb085e, 0xb0964, 0xb0965, 0xb0970, + 0xb09fd, 0xb0af0, 0xb0df4, 0xb0e4f, 0xb0e5a, 0xb0e5b, 0xb0f14, 0xb0f85, 0xb0fd9, + 0xb0fda, 0xb10fb, 0xb1400, 0xb166d, 0xb166e, 0xb169b, 0xb169c, 0xb1735, 0xb1736, + 0xb1944, 0xb1945, 0xb1a1e, 0xb1a1f, 0xb1c7e, 0xb1c7f, 0xb1cd3, 0xb207d, 0xb207e, + 0xb208d, 0xb208e, 0xb2329, 0xb232a, 0xb27c5, 0xb27c6, 0xb29fc, 0xb29fd, 0xb2cfe, + 0xb2cff, 0xb2d70, 0xb3030, 0xb303d, 0xb30a0, 0xb30fb, 0xba4fe, 0xba4ff, 0xba673, + 0xba67e, 0xba8ce, 0xba8cf, 0xba8fc, 0xba92e, 0xba92f, 0xba95f, 0xba9de, 0xba9df, + 0xbaade, 0xbaadf, 0xbaaf0, 0xbaaf1, 0xbabeb, 0xbfd3e, 0xbfd3f, 0xbfe63, 0xbfe68, + 0xbfe6a, 0xbfe6b, 0xbff1a, 0xbff1b, 0xbff1f, 0xbff20, 0xbff3f, 0xbff5b, 0xbff5d, + 0xc003a, 0xc003b, 0xc003f, 0xc0040, 0xc005f, 0xc007b, 0xc007d, 0xc00a1, 0xc00a7, + 0xc00ab, 0xc00b6, 0xc00b7, 0xc00bb, 0xc00bf, 0xc037e, 0xc0387, 0xc0589, 0xc058a, + 0xc05be, 0xc05c0, 0xc05c3, 0xc05c6, 0xc05f3, 0xc05f4, 0xc0609, 0xc060a, 0xc060c, + 0xc060d, 0xc061b, 0xc061e, 0xc061f, 0xc06d4, 0xc085e, 0xc0964, 0xc0965, 0xc0970, + 0xc09fd, 0xc0af0, 0xc0df4, 0xc0e4f, 0xc0e5a, 0xc0e5b, 0xc0f14, 0xc0f85, 0xc0fd9, + 0xc0fda, 0xc10fb, 0xc1400, 0xc166d, 0xc166e, 0xc169b, 0xc169c, 0xc1735, 0xc1736, + 0xc1944, 0xc1945, 0xc1a1e, 0xc1a1f, 0xc1c7e, 0xc1c7f, 0xc1cd3, 0xc207d, 0xc207e, + 0xc208d, 0xc208e, 0xc2329, 0xc232a, 0xc27c5, 0xc27c6, 0xc29fc, 0xc29fd, 0xc2cfe, + 0xc2cff, 0xc2d70, 0xc3030, 0xc303d, 0xc30a0, 0xc30fb, 0xca4fe, 0xca4ff, 0xca673, + 0xca67e, 0xca8ce, 0xca8cf, 0xca8fc, 0xca92e, 0xca92f, 0xca95f, 0xca9de, 0xca9df, + 0xcaade, 0xcaadf, 0xcaaf0, 0xcaaf1, 0xcabeb, 0xcfd3e, 0xcfd3f, 0xcfe63, 0xcfe68, + 0xcfe6a, 0xcfe6b, 0xcff1a, 0xcff1b, 0xcff1f, 0xcff20, 0xcff3f, 0xcff5b, 0xcff5d, + 0xd003a, 0xd003b, 0xd003f, 0xd0040, 0xd005f, 0xd007b, 0xd007d, 0xd00a1, 0xd00a7, + 0xd00ab, 0xd00b6, 0xd00b7, 0xd00bb, 0xd00bf, 0xd037e, 0xd0387, 0xd0589, 0xd058a, + 0xd05be, 0xd05c0, 0xd05c3, 0xd05c6, 0xd05f3, 0xd05f4, 0xd0609, 0xd060a, 0xd060c, + 0xd060d, 0xd061b, 0xd061e, 0xd061f, 0xd06d4, 0xd085e, 0xd0964, 0xd0965, 0xd0970, + 0xd09fd, 0xd0af0, 0xd0df4, 0xd0e4f, 0xd0e5a, 0xd0e5b, 0xd0f14, 0xd0f85, 0xd0fd9, + 0xd0fda, 0xd10fb, 0xd1400, 0xd166d, 0xd166e, 0xd169b, 0xd169c, 0xd1735, 0xd1736, + 0xd1944, 0xd1945, 0xd1a1e, 0xd1a1f, 0xd1c7e, 0xd1c7f, 0xd1cd3, 0xd207d, 0xd207e, + 0xd208d, 0xd208e, 0xd2329, 0xd232a, 0xd27c5, 0xd27c6, 0xd29fc, 0xd29fd, 0xd2cfe, + 0xd2cff, 0xd2d70, 0xd3030, 0xd303d, 0xd30a0, 0xd30fb, 0xda4fe, 0xda4ff, 0xda673, + 0xda67e, 0xda8ce, 0xda8cf, 0xda8fc, 0xda92e, 0xda92f, 0xda95f, 0xda9de, 0xda9df, + 0xdaade, 0xdaadf, 0xdaaf0, 0xdaaf1, 0xdabeb, 0xdfd3e, 0xdfd3f, 0xdfe63, 0xdfe68, + 0xdfe6a, 0xdfe6b, 0xdff1a, 0xdff1b, 0xdff1f, 0xdff20, 0xdff3f, 0xdff5b, 0xdff5d, + 0xe003a, 0xe003b, 0xe003f, 0xe0040, 0xe005f, 0xe007b, 0xe007d, 0xe00a1, 0xe00a7, + 0xe00ab, 0xe00b6, 0xe00b7, 0xe00bb, 0xe00bf, 0xe037e, 0xe0387, 0xe0589, 0xe058a, + 0xe05be, 0xe05c0, 0xe05c3, 0xe05c6, 0xe05f3, 0xe05f4, 0xe0609, 0xe060a, 0xe060c, + 0xe060d, 0xe061b, 0xe061e, 0xe061f, 0xe06d4, 0xe085e, 0xe0964, 0xe0965, 0xe0970, + 0xe09fd, 0xe0af0, 0xe0df4, 0xe0e4f, 0xe0e5a, 0xe0e5b, 0xe0f14, 0xe0f85, 0xe0fd9, + 0xe0fda, 0xe10fb, 0xe1400, 0xe166d, 0xe166e, 0xe169b, 0xe169c, 0xe1735, 0xe1736, + 0xe1944, 0xe1945, 0xe1a1e, 0xe1a1f, 0xe1c7e, 0xe1c7f, 0xe1cd3, 0xe207d, 0xe207e, + 0xe208d, 0xe208e, 0xe2329, 0xe232a, 0xe27c5, 0xe27c6, 0xe29fc, 0xe29fd, 0xe2cfe, + 0xe2cff, 0xe2d70, 0xe3030, 0xe303d, 0xe30a0, 0xe30fb, 0xea4fe, 0xea4ff, 0xea673, + 0xea67e, 0xea8ce, 0xea8cf, 0xea8fc, 0xea92e, 0xea92f, 0xea95f, 0xea9de, 0xea9df, + 0xeaade, 0xeaadf, 0xeaaf0, 0xeaaf1, 0xeabeb, 0xefd3e, 0xefd3f, 0xefe63, 0xefe68, + 0xefe6a, 0xefe6b, 0xeff1a, 0xeff1b, 0xeff1f, 0xeff20, 0xeff3f, 0xeff5b, 0xeff5d, + 0xf003a, 0xf003b, 0xf003f, 0xf0040, 0xf005f, 0xf007b, 0xf007d, 0xf00a1, 0xf00a7, + 0xf00ab, 0xf00b6, 0xf00b7, 0xf00bb, 0xf00bf, 0xf037e, 0xf0387, 0xf0589, 0xf058a, + 0xf05be, 0xf05c0, 0xf05c3, 0xf05c6, 0xf05f3, 0xf05f4, 0xf0609, 0xf060a, 0xf060c, + 0xf060d, 0xf061b, 0xf061e, 0xf061f, 0xf06d4, 0xf085e, 0xf0964, 0xf0965, 0xf0970, + 0xf09fd, 0xf0af0, 0xf0df4, 0xf0e4f, 0xf0e5a, 0xf0e5b, 0xf0f14, 0xf0f85, 0xf0fd9, + 0xf0fda, 0xf10fb, 0xf1400, 0xf166d, 0xf166e, 0xf169b, 0xf169c, 0xf1735, 0xf1736, + 0xf1944, 0xf1945, 0xf1a1e, 0xf1a1f, 0xf1c7e, 0xf1c7f, 0xf1cd3, 0xf207d, 0xf207e, + 0xf208d, 0xf208e, 0xf2329, 0xf232a, 0xf27c5, 0xf27c6, 0xf29fc, 0xf29fd, 0xf2cfe, + 0xf2cff, 0xf2d70, 0xf3030, 0xf303d, 0xf30a0, 0xf30fb, 0xfa4fe, 0xfa4ff, 0xfa673, + 0xfa67e, 0xfa8ce, 0xfa8cf, 0xfa8fc, 0xfa92e, 0xfa92f, 0xfa95f, 0xfa9de, 0xfa9df, + 0xfaade, 0xfaadf, 0xfaaf0, 0xfaaf1, 0xfabeb, 0xffd3e, 0xffd3f, 0xffe63, 0xffe68, + 0xffe6a, 0xffe6b, 0xfff1a, 0xfff1b, 0xfff1f, 0xfff20, 0xfff3f, 0xfff5b, 0xfff5d, + 0x10003a, 0x10003b, 0x10003f, 0x100040, 0x10005f, 0x10007b, 0x10007d, 0x1000a1, 0x1000a7, + 0x1000ab, 0x1000b6, 0x1000b7, 0x1000bb, 0x1000bf, 0x10037e, 0x100387, 0x100589, 0x10058a, + 0x1005be, 0x1005c0, 0x1005c3, 0x1005c6, 0x1005f3, 0x1005f4, 0x100609, 0x10060a, 0x10060c, + 0x10060d, 0x10061b, 0x10061e, 0x10061f, 0x1006d4, 0x10085e, 0x100964, 0x100965, 0x100970, + 0x1009fd, 0x100af0, 0x100df4, 0x100e4f, 0x100e5a, 0x100e5b, 0x100f14, 0x100f85, 0x100fd9, + 0x100fda, 0x1010fb, 0x101400, 0x10166d, 0x10166e, 0x10169b, 0x10169c, 0x101735, 0x101736, + 0x101944, 0x101945, 0x101a1e, 0x101a1f, 0x101c7e, 0x101c7f, 0x101cd3, 0x10207d, 0x10207e, + 0x10208d, 0x10208e, 0x102329, 0x10232a, 0x1027c5, 0x1027c6, 0x1029fc, 0x1029fd, 0x102cfe, + 0x102cff, 0x102d70, 0x103030, 0x10303d, 0x1030a0, 0x1030fb, 0x10a4fe, 0x10a4ff, 0x10a673, + 0x10a67e, 0x10a8ce, 0x10a8cf, 0x10a8fc, 0x10a92e, 0x10a92f, 0x10a95f, 0x10a9de, 0x10a9df, + 0x10aade, 0x10aadf, 0x10aaf0, 0x10aaf1, 0x10abeb, 0x10fd3e, 0x10fd3f, 0x10fe63, 0x10fe68, + 0x10fe6a, 0x10fe6b, 0x10ff1a, 0x10ff1b, 0x10ff1f, 0x10ff20, 0x10ff3f, 0x10ff5b, 0x10ff5d #endif }; @@ -390,6 +2256,16 @@ static const chr punctCharTable[] = { static const crange spaceRangeTable[] = { {0x9, 0xd}, {0x2000, 0x200b} +#if TCL_UTF_MAX > 4 + ,{0x10009, 0x1000d}, {0x12000, 0x1200b}, {0x20009, 0x2000d}, {0x22000, 0x2200b}, + {0x30009, 0x3000d}, {0x32000, 0x3200b}, {0x40009, 0x4000d}, {0x42000, 0x4200b}, + {0x50009, 0x5000d}, {0x52000, 0x5200b}, {0x60009, 0x6000d}, {0x62000, 0x6200b}, + {0x70009, 0x7000d}, {0x72000, 0x7200b}, {0x80009, 0x8000d}, {0x82000, 0x8200b}, + {0x90009, 0x9000d}, {0x92000, 0x9200b}, {0xa0009, 0xa000d}, {0xa2000, 0xa200b}, + {0xb0009, 0xb000d}, {0xb2000, 0xb200b}, {0xc0009, 0xc000d}, {0xc2000, 0xc200b}, + {0xd0009, 0xd000d}, {0xd2000, 0xd200b}, {0xe0009, 0xe000d}, {0xe2000, 0xe200b}, + {0xf0009, 0xf000d}, {0xf2000, 0xf200b}, {0x100009, 0x10000d}, {0x102000, 0x10200b} +#endif }; #define NUM_SPACE_RANGE (sizeof(spaceRangeTable)/sizeof(crange)) @@ -397,6 +2273,30 @@ static const crange spaceRangeTable[] = { static const chr spaceCharTable[] = { 0x20, 0x85, 0xa0, 0x1680, 0x180e, 0x2028, 0x2029, 0x202f, 0x205f, 0x2060, 0x3000, 0xfeff +#if TCL_UTF_MAX > 4 + ,0x10020, 0x10085, 0x100a0, 0x11680, 0x1180e, 0x12028, 0x12029, 0x1202f, 0x1205f, + 0x12060, 0x13000, 0x1feff, 0x20020, 0x20085, 0x200a0, 0x21680, 0x2180e, 0x22028, + 0x22029, 0x2202f, 0x2205f, 0x22060, 0x23000, 0x2feff, 0x30020, 0x30085, 0x300a0, + 0x31680, 0x3180e, 0x32028, 0x32029, 0x3202f, 0x3205f, 0x32060, 0x33000, 0x3feff, + 0x40020, 0x40085, 0x400a0, 0x41680, 0x4180e, 0x42028, 0x42029, 0x4202f, 0x4205f, + 0x42060, 0x43000, 0x4feff, 0x50020, 0x50085, 0x500a0, 0x51680, 0x5180e, 0x52028, + 0x52029, 0x5202f, 0x5205f, 0x52060, 0x53000, 0x5feff, 0x60020, 0x60085, 0x600a0, + 0x61680, 0x6180e, 0x62028, 0x62029, 0x6202f, 0x6205f, 0x62060, 0x63000, 0x6feff, + 0x70020, 0x70085, 0x700a0, 0x71680, 0x7180e, 0x72028, 0x72029, 0x7202f, 0x7205f, + 0x72060, 0x73000, 0x7feff, 0x80020, 0x80085, 0x800a0, 0x81680, 0x8180e, 0x82028, + 0x82029, 0x8202f, 0x8205f, 0x82060, 0x83000, 0x8feff, 0x90020, 0x90085, 0x900a0, + 0x91680, 0x9180e, 0x92028, 0x92029, 0x9202f, 0x9205f, 0x92060, 0x93000, 0x9feff, + 0xa0020, 0xa0085, 0xa00a0, 0xa1680, 0xa180e, 0xa2028, 0xa2029, 0xa202f, 0xa205f, + 0xa2060, 0xa3000, 0xafeff, 0xb0020, 0xb0085, 0xb00a0, 0xb1680, 0xb180e, 0xb2028, + 0xb2029, 0xb202f, 0xb205f, 0xb2060, 0xb3000, 0xbfeff, 0xc0020, 0xc0085, 0xc00a0, + 0xc1680, 0xc180e, 0xc2028, 0xc2029, 0xc202f, 0xc205f, 0xc2060, 0xc3000, 0xcfeff, + 0xd0020, 0xd0085, 0xd00a0, 0xd1680, 0xd180e, 0xd2028, 0xd2029, 0xd202f, 0xd205f, + 0xd2060, 0xd3000, 0xdfeff, 0xe0020, 0xe0085, 0xe00a0, 0xe1680, 0xe180e, 0xe2028, + 0xe2029, 0xe202f, 0xe205f, 0xe2060, 0xe3000, 0xefeff, 0xf0020, 0xf0085, 0xf00a0, + 0xf1680, 0xf180e, 0xf2028, 0xf2029, 0xf202f, 0xf205f, 0xf2060, 0xf3000, 0xffeff, + 0x100020, 0x100085, 0x1000a0, 0x101680, 0x10180e, 0x102028, 0x102029, 0x10202f, 0x10205f, + 0x102060, 0x103000, 0x10feff +#endif }; #define NUM_SPACE_CHAR (sizeof(spaceCharTable)/sizeof(chr)) @@ -420,14 +2320,206 @@ static const crange lowerRangeTable[] = { {0xab30, 0xab5a}, {0xab60, 0xab65}, {0xab70, 0xabbf}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xff41, 0xff5a} #if TCL_UTF_MAX > 4 - ,{0x10428, 0x1044f}, {0x104d8, 0x104fb}, {0x10cc0, 0x10cf2}, {0x118c0, 0x118df}, - {0x1d41a, 0x1d433}, {0x1d44e, 0x1d454}, {0x1d456, 0x1d467}, {0x1d482, 0x1d49b}, - {0x1d4b6, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d4cf}, {0x1d4ea, 0x1d503}, - {0x1d51e, 0x1d537}, {0x1d552, 0x1d56b}, {0x1d586, 0x1d59f}, {0x1d5ba, 0x1d5d3}, - {0x1d5ee, 0x1d607}, {0x1d622, 0x1d63b}, {0x1d656, 0x1d66f}, {0x1d68a, 0x1d6a5}, - {0x1d6c2, 0x1d6da}, {0x1d6dc, 0x1d6e1}, {0x1d6fc, 0x1d714}, {0x1d716, 0x1d71b}, - {0x1d736, 0x1d74e}, {0x1d750, 0x1d755}, {0x1d770, 0x1d788}, {0x1d78a, 0x1d78f}, - {0x1d7aa, 0x1d7c2}, {0x1d7c4, 0x1d7c9}, {0x1e922, 0x1e943} + ,{0x10061, 0x1007a}, {0x100df, 0x100f6}, {0x100f8, 0x100ff}, {0x1017e, 0x10180}, + {0x10199, 0x1019b}, {0x101bd, 0x101bf}, {0x10233, 0x10239}, {0x1024f, 0x10293}, + {0x10295, 0x102af}, {0x1037b, 0x1037d}, {0x103ac, 0x103ce}, {0x103d5, 0x103d7}, + {0x103ef, 0x103f3}, {0x10430, 0x1045f}, {0x10561, 0x10587}, {0x113f8, 0x113fd}, + {0x11c80, 0x11c88}, {0x11d00, 0x11d2b}, {0x11d6b, 0x11d77}, {0x11d79, 0x11d9a}, + {0x11e95, 0x11e9d}, {0x11eff, 0x11f07}, {0x11f10, 0x11f15}, {0x11f20, 0x11f27}, + {0x11f30, 0x11f37}, {0x11f40, 0x11f45}, {0x11f50, 0x11f57}, {0x11f60, 0x11f67}, + {0x11f70, 0x11f7d}, {0x11f80, 0x11f87}, {0x11f90, 0x11f97}, {0x11fa0, 0x11fa7}, + {0x11fb0, 0x11fb4}, {0x11fc2, 0x11fc4}, {0x11fd0, 0x11fd3}, {0x11fe0, 0x11fe7}, + {0x11ff2, 0x11ff4}, {0x12146, 0x12149}, {0x12c30, 0x12c5e}, {0x12c76, 0x12c7b}, + {0x12d00, 0x12d25}, {0x1a72f, 0x1a731}, {0x1a771, 0x1a778}, {0x1a793, 0x1a795}, + {0x1ab30, 0x1ab5a}, {0x1ab60, 0x1ab65}, {0x1ab70, 0x1abbf}, {0x1fb00, 0x1fb06}, + {0x1fb13, 0x1fb17}, {0x1ff41, 0x1ff5a}, {0x20061, 0x2007a}, {0x200df, 0x200f6}, + {0x200f8, 0x200ff}, {0x2017e, 0x20180}, {0x20199, 0x2019b}, {0x201bd, 0x201bf}, + {0x20233, 0x20239}, {0x2024f, 0x20293}, {0x20295, 0x202af}, {0x2037b, 0x2037d}, + {0x203ac, 0x203ce}, {0x203d5, 0x203d7}, {0x203ef, 0x203f3}, {0x20430, 0x2045f}, + {0x20561, 0x20587}, {0x213f8, 0x213fd}, {0x21c80, 0x21c88}, {0x21d00, 0x21d2b}, + {0x21d6b, 0x21d77}, {0x21d79, 0x21d9a}, {0x21e95, 0x21e9d}, {0x21eff, 0x21f07}, + {0x21f10, 0x21f15}, {0x21f20, 0x21f27}, {0x21f30, 0x21f37}, {0x21f40, 0x21f45}, + {0x21f50, 0x21f57}, {0x21f60, 0x21f67}, {0x21f70, 0x21f7d}, {0x21f80, 0x21f87}, + {0x21f90, 0x21f97}, {0x21fa0, 0x21fa7}, {0x21fb0, 0x21fb4}, {0x21fc2, 0x21fc4}, + {0x21fd0, 0x21fd3}, {0x21fe0, 0x21fe7}, {0x21ff2, 0x21ff4}, {0x22146, 0x22149}, + {0x22c30, 0x22c5e}, {0x22c76, 0x22c7b}, {0x22d00, 0x22d25}, {0x2a72f, 0x2a731}, + {0x2a771, 0x2a778}, {0x2a793, 0x2a795}, {0x2ab30, 0x2ab5a}, {0x2ab60, 0x2ab65}, + {0x2ab70, 0x2abbf}, {0x2fb00, 0x2fb06}, {0x2fb13, 0x2fb17}, {0x2ff41, 0x2ff5a}, + {0x30061, 0x3007a}, {0x300df, 0x300f6}, {0x300f8, 0x300ff}, {0x3017e, 0x30180}, + {0x30199, 0x3019b}, {0x301bd, 0x301bf}, {0x30233, 0x30239}, {0x3024f, 0x30293}, + {0x30295, 0x302af}, {0x3037b, 0x3037d}, {0x303ac, 0x303ce}, {0x303d5, 0x303d7}, + {0x303ef, 0x303f3}, {0x30430, 0x3045f}, {0x30561, 0x30587}, {0x313f8, 0x313fd}, + {0x31c80, 0x31c88}, {0x31d00, 0x31d2b}, {0x31d6b, 0x31d77}, {0x31d79, 0x31d9a}, + {0x31e95, 0x31e9d}, {0x31eff, 0x31f07}, {0x31f10, 0x31f15}, {0x31f20, 0x31f27}, + {0x31f30, 0x31f37}, {0x31f40, 0x31f45}, {0x31f50, 0x31f57}, {0x31f60, 0x31f67}, + {0x31f70, 0x31f7d}, {0x31f80, 0x31f87}, {0x31f90, 0x31f97}, {0x31fa0, 0x31fa7}, + {0x31fb0, 0x31fb4}, {0x31fc2, 0x31fc4}, {0x31fd0, 0x31fd3}, {0x31fe0, 0x31fe7}, + {0x31ff2, 0x31ff4}, {0x32146, 0x32149}, {0x32c30, 0x32c5e}, {0x32c76, 0x32c7b}, + {0x32d00, 0x32d25}, {0x3a72f, 0x3a731}, {0x3a771, 0x3a778}, {0x3a793, 0x3a795}, + {0x3ab30, 0x3ab5a}, {0x3ab60, 0x3ab65}, {0x3ab70, 0x3abbf}, {0x3fb00, 0x3fb06}, + {0x3fb13, 0x3fb17}, {0x3ff41, 0x3ff5a}, {0x40061, 0x4007a}, {0x400df, 0x400f6}, + {0x400f8, 0x400ff}, {0x4017e, 0x40180}, {0x40199, 0x4019b}, {0x401bd, 0x401bf}, + {0x40233, 0x40239}, {0x4024f, 0x40293}, {0x40295, 0x402af}, {0x4037b, 0x4037d}, + {0x403ac, 0x403ce}, {0x403d5, 0x403d7}, {0x403ef, 0x403f3}, {0x40430, 0x4045f}, + {0x40561, 0x40587}, {0x413f8, 0x413fd}, {0x41c80, 0x41c88}, {0x41d00, 0x41d2b}, + {0x41d6b, 0x41d77}, {0x41d79, 0x41d9a}, {0x41e95, 0x41e9d}, {0x41eff, 0x41f07}, + {0x41f10, 0x41f15}, {0x41f20, 0x41f27}, {0x41f30, 0x41f37}, {0x41f40, 0x41f45}, + {0x41f50, 0x41f57}, {0x41f60, 0x41f67}, {0x41f70, 0x41f7d}, {0x41f80, 0x41f87}, + {0x41f90, 0x41f97}, {0x41fa0, 0x41fa7}, {0x41fb0, 0x41fb4}, {0x41fc2, 0x41fc4}, + {0x41fd0, 0x41fd3}, {0x41fe0, 0x41fe7}, {0x41ff2, 0x41ff4}, {0x42146, 0x42149}, + {0x42c30, 0x42c5e}, {0x42c76, 0x42c7b}, {0x42d00, 0x42d25}, {0x4a72f, 0x4a731}, + {0x4a771, 0x4a778}, {0x4a793, 0x4a795}, {0x4ab30, 0x4ab5a}, {0x4ab60, 0x4ab65}, + {0x4ab70, 0x4abbf}, {0x4fb00, 0x4fb06}, {0x4fb13, 0x4fb17}, {0x4ff41, 0x4ff5a}, + {0x50061, 0x5007a}, {0x500df, 0x500f6}, {0x500f8, 0x500ff}, {0x5017e, 0x50180}, + {0x50199, 0x5019b}, {0x501bd, 0x501bf}, {0x50233, 0x50239}, {0x5024f, 0x50293}, + {0x50295, 0x502af}, {0x5037b, 0x5037d}, {0x503ac, 0x503ce}, {0x503d5, 0x503d7}, + {0x503ef, 0x503f3}, {0x50430, 0x5045f}, {0x50561, 0x50587}, {0x513f8, 0x513fd}, + {0x51c80, 0x51c88}, {0x51d00, 0x51d2b}, {0x51d6b, 0x51d77}, {0x51d79, 0x51d9a}, + {0x51e95, 0x51e9d}, {0x51eff, 0x51f07}, {0x51f10, 0x51f15}, {0x51f20, 0x51f27}, + {0x51f30, 0x51f37}, {0x51f40, 0x51f45}, {0x51f50, 0x51f57}, {0x51f60, 0x51f67}, + {0x51f70, 0x51f7d}, {0x51f80, 0x51f87}, {0x51f90, 0x51f97}, {0x51fa0, 0x51fa7}, + {0x51fb0, 0x51fb4}, {0x51fc2, 0x51fc4}, {0x51fd0, 0x51fd3}, {0x51fe0, 0x51fe7}, + {0x51ff2, 0x51ff4}, {0x52146, 0x52149}, {0x52c30, 0x52c5e}, {0x52c76, 0x52c7b}, + {0x52d00, 0x52d25}, {0x5a72f, 0x5a731}, {0x5a771, 0x5a778}, {0x5a793, 0x5a795}, + {0x5ab30, 0x5ab5a}, {0x5ab60, 0x5ab65}, {0x5ab70, 0x5abbf}, {0x5fb00, 0x5fb06}, + {0x5fb13, 0x5fb17}, {0x5ff41, 0x5ff5a}, {0x60061, 0x6007a}, {0x600df, 0x600f6}, + {0x600f8, 0x600ff}, {0x6017e, 0x60180}, {0x60199, 0x6019b}, {0x601bd, 0x601bf}, + {0x60233, 0x60239}, {0x6024f, 0x60293}, {0x60295, 0x602af}, {0x6037b, 0x6037d}, + {0x603ac, 0x603ce}, {0x603d5, 0x603d7}, {0x603ef, 0x603f3}, {0x60430, 0x6045f}, + {0x60561, 0x60587}, {0x613f8, 0x613fd}, {0x61c80, 0x61c88}, {0x61d00, 0x61d2b}, + {0x61d6b, 0x61d77}, {0x61d79, 0x61d9a}, {0x61e95, 0x61e9d}, {0x61eff, 0x61f07}, + {0x61f10, 0x61f15}, {0x61f20, 0x61f27}, {0x61f30, 0x61f37}, {0x61f40, 0x61f45}, + {0x61f50, 0x61f57}, {0x61f60, 0x61f67}, {0x61f70, 0x61f7d}, {0x61f80, 0x61f87}, + {0x61f90, 0x61f97}, {0x61fa0, 0x61fa7}, {0x61fb0, 0x61fb4}, {0x61fc2, 0x61fc4}, + {0x61fd0, 0x61fd3}, {0x61fe0, 0x61fe7}, {0x61ff2, 0x61ff4}, {0x62146, 0x62149}, + {0x62c30, 0x62c5e}, {0x62c76, 0x62c7b}, {0x62d00, 0x62d25}, {0x6a72f, 0x6a731}, + {0x6a771, 0x6a778}, {0x6a793, 0x6a795}, {0x6ab30, 0x6ab5a}, {0x6ab60, 0x6ab65}, + {0x6ab70, 0x6abbf}, {0x6fb00, 0x6fb06}, {0x6fb13, 0x6fb17}, {0x6ff41, 0x6ff5a}, + {0x70061, 0x7007a}, {0x700df, 0x700f6}, {0x700f8, 0x700ff}, {0x7017e, 0x70180}, + {0x70199, 0x7019b}, {0x701bd, 0x701bf}, {0x70233, 0x70239}, {0x7024f, 0x70293}, + {0x70295, 0x702af}, {0x7037b, 0x7037d}, {0x703ac, 0x703ce}, {0x703d5, 0x703d7}, + {0x703ef, 0x703f3}, {0x70430, 0x7045f}, {0x70561, 0x70587}, {0x713f8, 0x713fd}, + {0x71c80, 0x71c88}, {0x71d00, 0x71d2b}, {0x71d6b, 0x71d77}, {0x71d79, 0x71d9a}, + {0x71e95, 0x71e9d}, {0x71eff, 0x71f07}, {0x71f10, 0x71f15}, {0x71f20, 0x71f27}, + {0x71f30, 0x71f37}, {0x71f40, 0x71f45}, {0x71f50, 0x71f57}, {0x71f60, 0x71f67}, + {0x71f70, 0x71f7d}, {0x71f80, 0x71f87}, {0x71f90, 0x71f97}, {0x71fa0, 0x71fa7}, + {0x71fb0, 0x71fb4}, {0x71fc2, 0x71fc4}, {0x71fd0, 0x71fd3}, {0x71fe0, 0x71fe7}, + {0x71ff2, 0x71ff4}, {0x72146, 0x72149}, {0x72c30, 0x72c5e}, {0x72c76, 0x72c7b}, + {0x72d00, 0x72d25}, {0x7a72f, 0x7a731}, {0x7a771, 0x7a778}, {0x7a793, 0x7a795}, + {0x7ab30, 0x7ab5a}, {0x7ab60, 0x7ab65}, {0x7ab70, 0x7abbf}, {0x7fb00, 0x7fb06}, + {0x7fb13, 0x7fb17}, {0x7ff41, 0x7ff5a}, {0x80061, 0x8007a}, {0x800df, 0x800f6}, + {0x800f8, 0x800ff}, {0x8017e, 0x80180}, {0x80199, 0x8019b}, {0x801bd, 0x801bf}, + {0x80233, 0x80239}, {0x8024f, 0x80293}, {0x80295, 0x802af}, {0x8037b, 0x8037d}, + {0x803ac, 0x803ce}, {0x803d5, 0x803d7}, {0x803ef, 0x803f3}, {0x80430, 0x8045f}, + {0x80561, 0x80587}, {0x813f8, 0x813fd}, {0x81c80, 0x81c88}, {0x81d00, 0x81d2b}, + {0x81d6b, 0x81d77}, {0x81d79, 0x81d9a}, {0x81e95, 0x81e9d}, {0x81eff, 0x81f07}, + {0x81f10, 0x81f15}, {0x81f20, 0x81f27}, {0x81f30, 0x81f37}, {0x81f40, 0x81f45}, + {0x81f50, 0x81f57}, {0x81f60, 0x81f67}, {0x81f70, 0x81f7d}, {0x81f80, 0x81f87}, + {0x81f90, 0x81f97}, {0x81fa0, 0x81fa7}, {0x81fb0, 0x81fb4}, {0x81fc2, 0x81fc4}, + {0x81fd0, 0x81fd3}, {0x81fe0, 0x81fe7}, {0x81ff2, 0x81ff4}, {0x82146, 0x82149}, + {0x82c30, 0x82c5e}, {0x82c76, 0x82c7b}, {0x82d00, 0x82d25}, {0x8a72f, 0x8a731}, + {0x8a771, 0x8a778}, {0x8a793, 0x8a795}, {0x8ab30, 0x8ab5a}, {0x8ab60, 0x8ab65}, + {0x8ab70, 0x8abbf}, {0x8fb00, 0x8fb06}, {0x8fb13, 0x8fb17}, {0x8ff41, 0x8ff5a}, + {0x90061, 0x9007a}, {0x900df, 0x900f6}, {0x900f8, 0x900ff}, {0x9017e, 0x90180}, + {0x90199, 0x9019b}, {0x901bd, 0x901bf}, {0x90233, 0x90239}, {0x9024f, 0x90293}, + {0x90295, 0x902af}, {0x9037b, 0x9037d}, {0x903ac, 0x903ce}, {0x903d5, 0x903d7}, + {0x903ef, 0x903f3}, {0x90430, 0x9045f}, {0x90561, 0x90587}, {0x913f8, 0x913fd}, + {0x91c80, 0x91c88}, {0x91d00, 0x91d2b}, {0x91d6b, 0x91d77}, {0x91d79, 0x91d9a}, + {0x91e95, 0x91e9d}, {0x91eff, 0x91f07}, {0x91f10, 0x91f15}, {0x91f20, 0x91f27}, + {0x91f30, 0x91f37}, {0x91f40, 0x91f45}, {0x91f50, 0x91f57}, {0x91f60, 0x91f67}, + {0x91f70, 0x91f7d}, {0x91f80, 0x91f87}, {0x91f90, 0x91f97}, {0x91fa0, 0x91fa7}, + {0x91fb0, 0x91fb4}, {0x91fc2, 0x91fc4}, {0x91fd0, 0x91fd3}, {0x91fe0, 0x91fe7}, + {0x91ff2, 0x91ff4}, {0x92146, 0x92149}, {0x92c30, 0x92c5e}, {0x92c76, 0x92c7b}, + {0x92d00, 0x92d25}, {0x9a72f, 0x9a731}, {0x9a771, 0x9a778}, {0x9a793, 0x9a795}, + {0x9ab30, 0x9ab5a}, {0x9ab60, 0x9ab65}, {0x9ab70, 0x9abbf}, {0x9fb00, 0x9fb06}, + {0x9fb13, 0x9fb17}, {0x9ff41, 0x9ff5a}, {0xa0061, 0xa007a}, {0xa00df, 0xa00f6}, + {0xa00f8, 0xa00ff}, {0xa017e, 0xa0180}, {0xa0199, 0xa019b}, {0xa01bd, 0xa01bf}, + {0xa0233, 0xa0239}, {0xa024f, 0xa0293}, {0xa0295, 0xa02af}, {0xa037b, 0xa037d}, + {0xa03ac, 0xa03ce}, {0xa03d5, 0xa03d7}, {0xa03ef, 0xa03f3}, {0xa0430, 0xa045f}, + {0xa0561, 0xa0587}, {0xa13f8, 0xa13fd}, {0xa1c80, 0xa1c88}, {0xa1d00, 0xa1d2b}, + {0xa1d6b, 0xa1d77}, {0xa1d79, 0xa1d9a}, {0xa1e95, 0xa1e9d}, {0xa1eff, 0xa1f07}, + {0xa1f10, 0xa1f15}, {0xa1f20, 0xa1f27}, {0xa1f30, 0xa1f37}, {0xa1f40, 0xa1f45}, + {0xa1f50, 0xa1f57}, {0xa1f60, 0xa1f67}, {0xa1f70, 0xa1f7d}, {0xa1f80, 0xa1f87}, + {0xa1f90, 0xa1f97}, {0xa1fa0, 0xa1fa7}, {0xa1fb0, 0xa1fb4}, {0xa1fc2, 0xa1fc4}, + {0xa1fd0, 0xa1fd3}, {0xa1fe0, 0xa1fe7}, {0xa1ff2, 0xa1ff4}, {0xa2146, 0xa2149}, + {0xa2c30, 0xa2c5e}, {0xa2c76, 0xa2c7b}, {0xa2d00, 0xa2d25}, {0xaa72f, 0xaa731}, + {0xaa771, 0xaa778}, {0xaa793, 0xaa795}, {0xaab30, 0xaab5a}, {0xaab60, 0xaab65}, + {0xaab70, 0xaabbf}, {0xafb00, 0xafb06}, {0xafb13, 0xafb17}, {0xaff41, 0xaff5a}, + {0xb0061, 0xb007a}, {0xb00df, 0xb00f6}, {0xb00f8, 0xb00ff}, {0xb017e, 0xb0180}, + {0xb0199, 0xb019b}, {0xb01bd, 0xb01bf}, {0xb0233, 0xb0239}, {0xb024f, 0xb0293}, + {0xb0295, 0xb02af}, {0xb037b, 0xb037d}, {0xb03ac, 0xb03ce}, {0xb03d5, 0xb03d7}, + {0xb03ef, 0xb03f3}, {0xb0430, 0xb045f}, {0xb0561, 0xb0587}, {0xb13f8, 0xb13fd}, + {0xb1c80, 0xb1c88}, {0xb1d00, 0xb1d2b}, {0xb1d6b, 0xb1d77}, {0xb1d79, 0xb1d9a}, + {0xb1e95, 0xb1e9d}, {0xb1eff, 0xb1f07}, {0xb1f10, 0xb1f15}, {0xb1f20, 0xb1f27}, + {0xb1f30, 0xb1f37}, {0xb1f40, 0xb1f45}, {0xb1f50, 0xb1f57}, {0xb1f60, 0xb1f67}, + {0xb1f70, 0xb1f7d}, {0xb1f80, 0xb1f87}, {0xb1f90, 0xb1f97}, {0xb1fa0, 0xb1fa7}, + {0xb1fb0, 0xb1fb4}, {0xb1fc2, 0xb1fc4}, {0xb1fd0, 0xb1fd3}, {0xb1fe0, 0xb1fe7}, + {0xb1ff2, 0xb1ff4}, {0xb2146, 0xb2149}, {0xb2c30, 0xb2c5e}, {0xb2c76, 0xb2c7b}, + {0xb2d00, 0xb2d25}, {0xba72f, 0xba731}, {0xba771, 0xba778}, {0xba793, 0xba795}, + {0xbab30, 0xbab5a}, {0xbab60, 0xbab65}, {0xbab70, 0xbabbf}, {0xbfb00, 0xbfb06}, + {0xbfb13, 0xbfb17}, {0xbff41, 0xbff5a}, {0xc0061, 0xc007a}, {0xc00df, 0xc00f6}, + {0xc00f8, 0xc00ff}, {0xc017e, 0xc0180}, {0xc0199, 0xc019b}, {0xc01bd, 0xc01bf}, + {0xc0233, 0xc0239}, {0xc024f, 0xc0293}, {0xc0295, 0xc02af}, {0xc037b, 0xc037d}, + {0xc03ac, 0xc03ce}, {0xc03d5, 0xc03d7}, {0xc03ef, 0xc03f3}, {0xc0430, 0xc045f}, + {0xc0561, 0xc0587}, {0xc13f8, 0xc13fd}, {0xc1c80, 0xc1c88}, {0xc1d00, 0xc1d2b}, + {0xc1d6b, 0xc1d77}, {0xc1d79, 0xc1d9a}, {0xc1e95, 0xc1e9d}, {0xc1eff, 0xc1f07}, + {0xc1f10, 0xc1f15}, {0xc1f20, 0xc1f27}, {0xc1f30, 0xc1f37}, {0xc1f40, 0xc1f45}, + {0xc1f50, 0xc1f57}, {0xc1f60, 0xc1f67}, {0xc1f70, 0xc1f7d}, {0xc1f80, 0xc1f87}, + {0xc1f90, 0xc1f97}, {0xc1fa0, 0xc1fa7}, {0xc1fb0, 0xc1fb4}, {0xc1fc2, 0xc1fc4}, + {0xc1fd0, 0xc1fd3}, {0xc1fe0, 0xc1fe7}, {0xc1ff2, 0xc1ff4}, {0xc2146, 0xc2149}, + {0xc2c30, 0xc2c5e}, {0xc2c76, 0xc2c7b}, {0xc2d00, 0xc2d25}, {0xca72f, 0xca731}, + {0xca771, 0xca778}, {0xca793, 0xca795}, {0xcab30, 0xcab5a}, {0xcab60, 0xcab65}, + {0xcab70, 0xcabbf}, {0xcfb00, 0xcfb06}, {0xcfb13, 0xcfb17}, {0xcff41, 0xcff5a}, + {0xd0061, 0xd007a}, {0xd00df, 0xd00f6}, {0xd00f8, 0xd00ff}, {0xd017e, 0xd0180}, + {0xd0199, 0xd019b}, {0xd01bd, 0xd01bf}, {0xd0233, 0xd0239}, {0xd024f, 0xd0293}, + {0xd0295, 0xd02af}, {0xd037b, 0xd037d}, {0xd03ac, 0xd03ce}, {0xd03d5, 0xd03d7}, + {0xd03ef, 0xd03f3}, {0xd0430, 0xd045f}, {0xd0561, 0xd0587}, {0xd13f8, 0xd13fd}, + {0xd1c80, 0xd1c88}, {0xd1d00, 0xd1d2b}, {0xd1d6b, 0xd1d77}, {0xd1d79, 0xd1d9a}, + {0xd1e95, 0xd1e9d}, {0xd1eff, 0xd1f07}, {0xd1f10, 0xd1f15}, {0xd1f20, 0xd1f27}, + {0xd1f30, 0xd1f37}, {0xd1f40, 0xd1f45}, {0xd1f50, 0xd1f57}, {0xd1f60, 0xd1f67}, + {0xd1f70, 0xd1f7d}, {0xd1f80, 0xd1f87}, {0xd1f90, 0xd1f97}, {0xd1fa0, 0xd1fa7}, + {0xd1fb0, 0xd1fb4}, {0xd1fc2, 0xd1fc4}, {0xd1fd0, 0xd1fd3}, {0xd1fe0, 0xd1fe7}, + {0xd1ff2, 0xd1ff4}, {0xd2146, 0xd2149}, {0xd2c30, 0xd2c5e}, {0xd2c76, 0xd2c7b}, + {0xd2d00, 0xd2d25}, {0xda72f, 0xda731}, {0xda771, 0xda778}, {0xda793, 0xda795}, + {0xdab30, 0xdab5a}, {0xdab60, 0xdab65}, {0xdab70, 0xdabbf}, {0xdfb00, 0xdfb06}, + {0xdfb13, 0xdfb17}, {0xdff41, 0xdff5a}, {0xe0061, 0xe007a}, {0xe00df, 0xe00f6}, + {0xe00f8, 0xe00ff}, {0xe017e, 0xe0180}, {0xe0199, 0xe019b}, {0xe01bd, 0xe01bf}, + {0xe0233, 0xe0239}, {0xe024f, 0xe0293}, {0xe0295, 0xe02af}, {0xe037b, 0xe037d}, + {0xe03ac, 0xe03ce}, {0xe03d5, 0xe03d7}, {0xe03ef, 0xe03f3}, {0xe0430, 0xe045f}, + {0xe0561, 0xe0587}, {0xe13f8, 0xe13fd}, {0xe1c80, 0xe1c88}, {0xe1d00, 0xe1d2b}, + {0xe1d6b, 0xe1d77}, {0xe1d79, 0xe1d9a}, {0xe1e95, 0xe1e9d}, {0xe1eff, 0xe1f07}, + {0xe1f10, 0xe1f15}, {0xe1f20, 0xe1f27}, {0xe1f30, 0xe1f37}, {0xe1f40, 0xe1f45}, + {0xe1f50, 0xe1f57}, {0xe1f60, 0xe1f67}, {0xe1f70, 0xe1f7d}, {0xe1f80, 0xe1f87}, + {0xe1f90, 0xe1f97}, {0xe1fa0, 0xe1fa7}, {0xe1fb0, 0xe1fb4}, {0xe1fc2, 0xe1fc4}, + {0xe1fd0, 0xe1fd3}, {0xe1fe0, 0xe1fe7}, {0xe1ff2, 0xe1ff4}, {0xe2146, 0xe2149}, + {0xe2c30, 0xe2c5e}, {0xe2c76, 0xe2c7b}, {0xe2d00, 0xe2d25}, {0xea72f, 0xea731}, + {0xea771, 0xea778}, {0xea793, 0xea795}, {0xeab30, 0xeab5a}, {0xeab60, 0xeab65}, + {0xeab70, 0xeabbf}, {0xefb00, 0xefb06}, {0xefb13, 0xefb17}, {0xeff41, 0xeff5a}, + {0xf0061, 0xf007a}, {0xf00df, 0xf00f6}, {0xf00f8, 0xf00ff}, {0xf017e, 0xf0180}, + {0xf0199, 0xf019b}, {0xf01bd, 0xf01bf}, {0xf0233, 0xf0239}, {0xf024f, 0xf0293}, + {0xf0295, 0xf02af}, {0xf037b, 0xf037d}, {0xf03ac, 0xf03ce}, {0xf03d5, 0xf03d7}, + {0xf03ef, 0xf03f3}, {0xf0430, 0xf045f}, {0xf0561, 0xf0587}, {0xf13f8, 0xf13fd}, + {0xf1c80, 0xf1c88}, {0xf1d00, 0xf1d2b}, {0xf1d6b, 0xf1d77}, {0xf1d79, 0xf1d9a}, + {0xf1e95, 0xf1e9d}, {0xf1eff, 0xf1f07}, {0xf1f10, 0xf1f15}, {0xf1f20, 0xf1f27}, + {0xf1f30, 0xf1f37}, {0xf1f40, 0xf1f45}, {0xf1f50, 0xf1f57}, {0xf1f60, 0xf1f67}, + {0xf1f70, 0xf1f7d}, {0xf1f80, 0xf1f87}, {0xf1f90, 0xf1f97}, {0xf1fa0, 0xf1fa7}, + {0xf1fb0, 0xf1fb4}, {0xf1fc2, 0xf1fc4}, {0xf1fd0, 0xf1fd3}, {0xf1fe0, 0xf1fe7}, + {0xf1ff2, 0xf1ff4}, {0xf2146, 0xf2149}, {0xf2c30, 0xf2c5e}, {0xf2c76, 0xf2c7b}, + {0xf2d00, 0xf2d25}, {0xfa72f, 0xfa731}, {0xfa771, 0xfa778}, {0xfa793, 0xfa795}, + {0xfab30, 0xfab5a}, {0xfab60, 0xfab65}, {0xfab70, 0xfabbf}, {0xffb00, 0xffb06}, + {0xffb13, 0xffb17}, {0xfff41, 0xfff5a}, {0x100061, 0x10007a}, {0x1000df, 0x1000f6}, + {0x1000f8, 0x1000ff}, {0x10017e, 0x100180}, {0x100199, 0x10019b}, {0x1001bd, 0x1001bf}, + {0x100233, 0x100239}, {0x10024f, 0x100293}, {0x100295, 0x1002af}, {0x10037b, 0x10037d}, + {0x1003ac, 0x1003ce}, {0x1003d5, 0x1003d7}, {0x1003ef, 0x1003f3}, {0x100430, 0x10045f}, + {0x100561, 0x100587}, {0x1013f8, 0x1013fd}, {0x101c80, 0x101c88}, {0x101d00, 0x101d2b}, + {0x101d6b, 0x101d77}, {0x101d79, 0x101d9a}, {0x101e95, 0x101e9d}, {0x101eff, 0x101f07}, + {0x101f10, 0x101f15}, {0x101f20, 0x101f27}, {0x101f30, 0x101f37}, {0x101f40, 0x101f45}, + {0x101f50, 0x101f57}, {0x101f60, 0x101f67}, {0x101f70, 0x101f7d}, {0x101f80, 0x101f87}, + {0x101f90, 0x101f97}, {0x101fa0, 0x101fa7}, {0x101fb0, 0x101fb4}, {0x101fc2, 0x101fc4}, + {0x101fd0, 0x101fd3}, {0x101fe0, 0x101fe7}, {0x101ff2, 0x101ff4}, {0x102146, 0x102149}, + {0x102c30, 0x102c5e}, {0x102c76, 0x102c7b}, {0x102d00, 0x102d25}, {0x10a72f, 0x10a731}, + {0x10a771, 0x10a778}, {0x10a793, 0x10a795}, {0x10ab30, 0x10ab5a}, {0x10ab60, 0x10ab65}, + {0x10ab70, 0x10abbf}, {0x10fb00, 0x10fb06}, {0x10fb13, 0x10fb17}, {0x10ff41, 0x10ff5a} #endif }; @@ -499,7 +2591,1020 @@ static const chr lowerCharTable[] = { 0xa799, 0xa79b, 0xa79d, 0xa79f, 0xa7a1, 0xa7a3, 0xa7a5, 0xa7a7, 0xa7a9, 0xa7b5, 0xa7b7, 0xa7fa #if TCL_UTF_MAX > 4 - ,0x1d4bb, 0x1d7cb + ,0x100b5, 0x10101, 0x10103, 0x10105, 0x10107, 0x10109, 0x1010b, 0x1010d, 0x1010f, + 0x10111, 0x10113, 0x10115, 0x10117, 0x10119, 0x1011b, 0x1011d, 0x1011f, 0x10121, + 0x10123, 0x10125, 0x10127, 0x10129, 0x1012b, 0x1012d, 0x1012f, 0x10131, 0x10133, + 0x10135, 0x10137, 0x10138, 0x1013a, 0x1013c, 0x1013e, 0x10140, 0x10142, 0x10144, + 0x10146, 0x10148, 0x10149, 0x1014b, 0x1014d, 0x1014f, 0x10151, 0x10153, 0x10155, + 0x10157, 0x10159, 0x1015b, 0x1015d, 0x1015f, 0x10161, 0x10163, 0x10165, 0x10167, + 0x10169, 0x1016b, 0x1016d, 0x1016f, 0x10171, 0x10173, 0x10175, 0x10177, 0x1017a, + 0x1017c, 0x10183, 0x10185, 0x10188, 0x1018c, 0x1018d, 0x10192, 0x10195, 0x1019e, + 0x101a1, 0x101a3, 0x101a5, 0x101a8, 0x101aa, 0x101ab, 0x101ad, 0x101b0, 0x101b4, + 0x101b6, 0x101b9, 0x101ba, 0x101c6, 0x101c9, 0x101cc, 0x101ce, 0x101d0, 0x101d2, + 0x101d4, 0x101d6, 0x101d8, 0x101da, 0x101dc, 0x101dd, 0x101df, 0x101e1, 0x101e3, + 0x101e5, 0x101e7, 0x101e9, 0x101eb, 0x101ed, 0x101ef, 0x101f0, 0x101f3, 0x101f5, + 0x101f9, 0x101fb, 0x101fd, 0x101ff, 0x10201, 0x10203, 0x10205, 0x10207, 0x10209, + 0x1020b, 0x1020d, 0x1020f, 0x10211, 0x10213, 0x10215, 0x10217, 0x10219, 0x1021b, + 0x1021d, 0x1021f, 0x10221, 0x10223, 0x10225, 0x10227, 0x10229, 0x1022b, 0x1022d, + 0x1022f, 0x10231, 0x1023c, 0x1023f, 0x10240, 0x10242, 0x10247, 0x10249, 0x1024b, + 0x1024d, 0x10371, 0x10373, 0x10377, 0x10390, 0x103d0, 0x103d1, 0x103d9, 0x103db, + 0x103dd, 0x103df, 0x103e1, 0x103e3, 0x103e5, 0x103e7, 0x103e9, 0x103eb, 0x103ed, + 0x103f5, 0x103f8, 0x103fb, 0x103fc, 0x10461, 0x10463, 0x10465, 0x10467, 0x10469, + 0x1046b, 0x1046d, 0x1046f, 0x10471, 0x10473, 0x10475, 0x10477, 0x10479, 0x1047b, + 0x1047d, 0x1047f, 0x10481, 0x1048b, 0x1048d, 0x1048f, 0x10491, 0x10493, 0x10495, + 0x10497, 0x10499, 0x1049b, 0x1049d, 0x1049f, 0x104a1, 0x104a3, 0x104a5, 0x104a7, + 0x104a9, 0x104ab, 0x104ad, 0x104af, 0x104b1, 0x104b3, 0x104b5, 0x104b7, 0x104b9, + 0x104bb, 0x104bd, 0x104bf, 0x104c2, 0x104c4, 0x104c6, 0x104c8, 0x104ca, 0x104cc, + 0x104ce, 0x104cf, 0x104d1, 0x104d3, 0x104d5, 0x104d7, 0x104d9, 0x104db, 0x104dd, + 0x104df, 0x104e1, 0x104e3, 0x104e5, 0x104e7, 0x104e9, 0x104eb, 0x104ed, 0x104ef, + 0x104f1, 0x104f3, 0x104f5, 0x104f7, 0x104f9, 0x104fb, 0x104fd, 0x104ff, 0x10501, + 0x10503, 0x10505, 0x10507, 0x10509, 0x1050b, 0x1050d, 0x1050f, 0x10511, 0x10513, + 0x10515, 0x10517, 0x10519, 0x1051b, 0x1051d, 0x1051f, 0x10521, 0x10523, 0x10525, + 0x10527, 0x10529, 0x1052b, 0x1052d, 0x1052f, 0x11e01, 0x11e03, 0x11e05, 0x11e07, + 0x11e09, 0x11e0b, 0x11e0d, 0x11e0f, 0x11e11, 0x11e13, 0x11e15, 0x11e17, 0x11e19, + 0x11e1b, 0x11e1d, 0x11e1f, 0x11e21, 0x11e23, 0x11e25, 0x11e27, 0x11e29, 0x11e2b, + 0x11e2d, 0x11e2f, 0x11e31, 0x11e33, 0x11e35, 0x11e37, 0x11e39, 0x11e3b, 0x11e3d, + 0x11e3f, 0x11e41, 0x11e43, 0x11e45, 0x11e47, 0x11e49, 0x11e4b, 0x11e4d, 0x11e4f, + 0x11e51, 0x11e53, 0x11e55, 0x11e57, 0x11e59, 0x11e5b, 0x11e5d, 0x11e5f, 0x11e61, + 0x11e63, 0x11e65, 0x11e67, 0x11e69, 0x11e6b, 0x11e6d, 0x11e6f, 0x11e71, 0x11e73, + 0x11e75, 0x11e77, 0x11e79, 0x11e7b, 0x11e7d, 0x11e7f, 0x11e81, 0x11e83, 0x11e85, + 0x11e87, 0x11e89, 0x11e8b, 0x11e8d, 0x11e8f, 0x11e91, 0x11e93, 0x11e9f, 0x11ea1, + 0x11ea3, 0x11ea5, 0x11ea7, 0x11ea9, 0x11eab, 0x11ead, 0x11eaf, 0x11eb1, 0x11eb3, + 0x11eb5, 0x11eb7, 0x11eb9, 0x11ebb, 0x11ebd, 0x11ebf, 0x11ec1, 0x11ec3, 0x11ec5, + 0x11ec7, 0x11ec9, 0x11ecb, 0x11ecd, 0x11ecf, 0x11ed1, 0x11ed3, 0x11ed5, 0x11ed7, + 0x11ed9, 0x11edb, 0x11edd, 0x11edf, 0x11ee1, 0x11ee3, 0x11ee5, 0x11ee7, 0x11ee9, + 0x11eeb, 0x11eed, 0x11eef, 0x11ef1, 0x11ef3, 0x11ef5, 0x11ef7, 0x11ef9, 0x11efb, + 0x11efd, 0x11fb6, 0x11fb7, 0x11fbe, 0x11fc6, 0x11fc7, 0x11fd6, 0x11fd7, 0x11ff6, + 0x11ff7, 0x1210a, 0x1210e, 0x1210f, 0x12113, 0x1212f, 0x12134, 0x12139, 0x1213c, + 0x1213d, 0x1214e, 0x12184, 0x12c61, 0x12c65, 0x12c66, 0x12c68, 0x12c6a, 0x12c6c, + 0x12c71, 0x12c73, 0x12c74, 0x12c81, 0x12c83, 0x12c85, 0x12c87, 0x12c89, 0x12c8b, + 0x12c8d, 0x12c8f, 0x12c91, 0x12c93, 0x12c95, 0x12c97, 0x12c99, 0x12c9b, 0x12c9d, + 0x12c9f, 0x12ca1, 0x12ca3, 0x12ca5, 0x12ca7, 0x12ca9, 0x12cab, 0x12cad, 0x12caf, + 0x12cb1, 0x12cb3, 0x12cb5, 0x12cb7, 0x12cb9, 0x12cbb, 0x12cbd, 0x12cbf, 0x12cc1, + 0x12cc3, 0x12cc5, 0x12cc7, 0x12cc9, 0x12ccb, 0x12ccd, 0x12ccf, 0x12cd1, 0x12cd3, + 0x12cd5, 0x12cd7, 0x12cd9, 0x12cdb, 0x12cdd, 0x12cdf, 0x12ce1, 0x12ce3, 0x12ce4, + 0x12cec, 0x12cee, 0x12cf3, 0x12d27, 0x12d2d, 0x1a641, 0x1a643, 0x1a645, 0x1a647, + 0x1a649, 0x1a64b, 0x1a64d, 0x1a64f, 0x1a651, 0x1a653, 0x1a655, 0x1a657, 0x1a659, + 0x1a65b, 0x1a65d, 0x1a65f, 0x1a661, 0x1a663, 0x1a665, 0x1a667, 0x1a669, 0x1a66b, + 0x1a66d, 0x1a681, 0x1a683, 0x1a685, 0x1a687, 0x1a689, 0x1a68b, 0x1a68d, 0x1a68f, + 0x1a691, 0x1a693, 0x1a695, 0x1a697, 0x1a699, 0x1a69b, 0x1a723, 0x1a725, 0x1a727, + 0x1a729, 0x1a72b, 0x1a72d, 0x1a733, 0x1a735, 0x1a737, 0x1a739, 0x1a73b, 0x1a73d, + 0x1a73f, 0x1a741, 0x1a743, 0x1a745, 0x1a747, 0x1a749, 0x1a74b, 0x1a74d, 0x1a74f, + 0x1a751, 0x1a753, 0x1a755, 0x1a757, 0x1a759, 0x1a75b, 0x1a75d, 0x1a75f, 0x1a761, + 0x1a763, 0x1a765, 0x1a767, 0x1a769, 0x1a76b, 0x1a76d, 0x1a76f, 0x1a77a, 0x1a77c, + 0x1a77f, 0x1a781, 0x1a783, 0x1a785, 0x1a787, 0x1a78c, 0x1a78e, 0x1a791, 0x1a797, + 0x1a799, 0x1a79b, 0x1a79d, 0x1a79f, 0x1a7a1, 0x1a7a3, 0x1a7a5, 0x1a7a7, 0x1a7a9, + 0x1a7b5, 0x1a7b7, 0x1a7fa, 0x200b5, 0x20101, 0x20103, 0x20105, 0x20107, 0x20109, + 0x2010b, 0x2010d, 0x2010f, 0x20111, 0x20113, 0x20115, 0x20117, 0x20119, 0x2011b, + 0x2011d, 0x2011f, 0x20121, 0x20123, 0x20125, 0x20127, 0x20129, 0x2012b, 0x2012d, + 0x2012f, 0x20131, 0x20133, 0x20135, 0x20137, 0x20138, 0x2013a, 0x2013c, 0x2013e, + 0x20140, 0x20142, 0x20144, 0x20146, 0x20148, 0x20149, 0x2014b, 0x2014d, 0x2014f, + 0x20151, 0x20153, 0x20155, 0x20157, 0x20159, 0x2015b, 0x2015d, 0x2015f, 0x20161, + 0x20163, 0x20165, 0x20167, 0x20169, 0x2016b, 0x2016d, 0x2016f, 0x20171, 0x20173, + 0x20175, 0x20177, 0x2017a, 0x2017c, 0x20183, 0x20185, 0x20188, 0x2018c, 0x2018d, + 0x20192, 0x20195, 0x2019e, 0x201a1, 0x201a3, 0x201a5, 0x201a8, 0x201aa, 0x201ab, + 0x201ad, 0x201b0, 0x201b4, 0x201b6, 0x201b9, 0x201ba, 0x201c6, 0x201c9, 0x201cc, + 0x201ce, 0x201d0, 0x201d2, 0x201d4, 0x201d6, 0x201d8, 0x201da, 0x201dc, 0x201dd, + 0x201df, 0x201e1, 0x201e3, 0x201e5, 0x201e7, 0x201e9, 0x201eb, 0x201ed, 0x201ef, + 0x201f0, 0x201f3, 0x201f5, 0x201f9, 0x201fb, 0x201fd, 0x201ff, 0x20201, 0x20203, + 0x20205, 0x20207, 0x20209, 0x2020b, 0x2020d, 0x2020f, 0x20211, 0x20213, 0x20215, + 0x20217, 0x20219, 0x2021b, 0x2021d, 0x2021f, 0x20221, 0x20223, 0x20225, 0x20227, + 0x20229, 0x2022b, 0x2022d, 0x2022f, 0x20231, 0x2023c, 0x2023f, 0x20240, 0x20242, + 0x20247, 0x20249, 0x2024b, 0x2024d, 0x20371, 0x20373, 0x20377, 0x20390, 0x203d0, + 0x203d1, 0x203d9, 0x203db, 0x203dd, 0x203df, 0x203e1, 0x203e3, 0x203e5, 0x203e7, + 0x203e9, 0x203eb, 0x203ed, 0x203f5, 0x203f8, 0x203fb, 0x203fc, 0x20461, 0x20463, + 0x20465, 0x20467, 0x20469, 0x2046b, 0x2046d, 0x2046f, 0x20471, 0x20473, 0x20475, + 0x20477, 0x20479, 0x2047b, 0x2047d, 0x2047f, 0x20481, 0x2048b, 0x2048d, 0x2048f, + 0x20491, 0x20493, 0x20495, 0x20497, 0x20499, 0x2049b, 0x2049d, 0x2049f, 0x204a1, + 0x204a3, 0x204a5, 0x204a7, 0x204a9, 0x204ab, 0x204ad, 0x204af, 0x204b1, 0x204b3, + 0x204b5, 0x204b7, 0x204b9, 0x204bb, 0x204bd, 0x204bf, 0x204c2, 0x204c4, 0x204c6, + 0x204c8, 0x204ca, 0x204cc, 0x204ce, 0x204cf, 0x204d1, 0x204d3, 0x204d5, 0x204d7, + 0x204d9, 0x204db, 0x204dd, 0x204df, 0x204e1, 0x204e3, 0x204e5, 0x204e7, 0x204e9, + 0x204eb, 0x204ed, 0x204ef, 0x204f1, 0x204f3, 0x204f5, 0x204f7, 0x204f9, 0x204fb, + 0x204fd, 0x204ff, 0x20501, 0x20503, 0x20505, 0x20507, 0x20509, 0x2050b, 0x2050d, + 0x2050f, 0x20511, 0x20513, 0x20515, 0x20517, 0x20519, 0x2051b, 0x2051d, 0x2051f, + 0x20521, 0x20523, 0x20525, 0x20527, 0x20529, 0x2052b, 0x2052d, 0x2052f, 0x21e01, + 0x21e03, 0x21e05, 0x21e07, 0x21e09, 0x21e0b, 0x21e0d, 0x21e0f, 0x21e11, 0x21e13, + 0x21e15, 0x21e17, 0x21e19, 0x21e1b, 0x21e1d, 0x21e1f, 0x21e21, 0x21e23, 0x21e25, + 0x21e27, 0x21e29, 0x21e2b, 0x21e2d, 0x21e2f, 0x21e31, 0x21e33, 0x21e35, 0x21e37, + 0x21e39, 0x21e3b, 0x21e3d, 0x21e3f, 0x21e41, 0x21e43, 0x21e45, 0x21e47, 0x21e49, + 0x21e4b, 0x21e4d, 0x21e4f, 0x21e51, 0x21e53, 0x21e55, 0x21e57, 0x21e59, 0x21e5b, + 0x21e5d, 0x21e5f, 0x21e61, 0x21e63, 0x21e65, 0x21e67, 0x21e69, 0x21e6b, 0x21e6d, + 0x21e6f, 0x21e71, 0x21e73, 0x21e75, 0x21e77, 0x21e79, 0x21e7b, 0x21e7d, 0x21e7f, + 0x21e81, 0x21e83, 0x21e85, 0x21e87, 0x21e89, 0x21e8b, 0x21e8d, 0x21e8f, 0x21e91, + 0x21e93, 0x21e9f, 0x21ea1, 0x21ea3, 0x21ea5, 0x21ea7, 0x21ea9, 0x21eab, 0x21ead, + 0x21eaf, 0x21eb1, 0x21eb3, 0x21eb5, 0x21eb7, 0x21eb9, 0x21ebb, 0x21ebd, 0x21ebf, + 0x21ec1, 0x21ec3, 0x21ec5, 0x21ec7, 0x21ec9, 0x21ecb, 0x21ecd, 0x21ecf, 0x21ed1, + 0x21ed3, 0x21ed5, 0x21ed7, 0x21ed9, 0x21edb, 0x21edd, 0x21edf, 0x21ee1, 0x21ee3, + 0x21ee5, 0x21ee7, 0x21ee9, 0x21eeb, 0x21eed, 0x21eef, 0x21ef1, 0x21ef3, 0x21ef5, + 0x21ef7, 0x21ef9, 0x21efb, 0x21efd, 0x21fb6, 0x21fb7, 0x21fbe, 0x21fc6, 0x21fc7, + 0x21fd6, 0x21fd7, 0x21ff6, 0x21ff7, 0x2210a, 0x2210e, 0x2210f, 0x22113, 0x2212f, + 0x22134, 0x22139, 0x2213c, 0x2213d, 0x2214e, 0x22184, 0x22c61, 0x22c65, 0x22c66, + 0x22c68, 0x22c6a, 0x22c6c, 0x22c71, 0x22c73, 0x22c74, 0x22c81, 0x22c83, 0x22c85, + 0x22c87, 0x22c89, 0x22c8b, 0x22c8d, 0x22c8f, 0x22c91, 0x22c93, 0x22c95, 0x22c97, + 0x22c99, 0x22c9b, 0x22c9d, 0x22c9f, 0x22ca1, 0x22ca3, 0x22ca5, 0x22ca7, 0x22ca9, + 0x22cab, 0x22cad, 0x22caf, 0x22cb1, 0x22cb3, 0x22cb5, 0x22cb7, 0x22cb9, 0x22cbb, + 0x22cbd, 0x22cbf, 0x22cc1, 0x22cc3, 0x22cc5, 0x22cc7, 0x22cc9, 0x22ccb, 0x22ccd, + 0x22ccf, 0x22cd1, 0x22cd3, 0x22cd5, 0x22cd7, 0x22cd9, 0x22cdb, 0x22cdd, 0x22cdf, + 0x22ce1, 0x22ce3, 0x22ce4, 0x22cec, 0x22cee, 0x22cf3, 0x22d27, 0x22d2d, 0x2a641, + 0x2a643, 0x2a645, 0x2a647, 0x2a649, 0x2a64b, 0x2a64d, 0x2a64f, 0x2a651, 0x2a653, + 0x2a655, 0x2a657, 0x2a659, 0x2a65b, 0x2a65d, 0x2a65f, 0x2a661, 0x2a663, 0x2a665, + 0x2a667, 0x2a669, 0x2a66b, 0x2a66d, 0x2a681, 0x2a683, 0x2a685, 0x2a687, 0x2a689, + 0x2a68b, 0x2a68d, 0x2a68f, 0x2a691, 0x2a693, 0x2a695, 0x2a697, 0x2a699, 0x2a69b, + 0x2a723, 0x2a725, 0x2a727, 0x2a729, 0x2a72b, 0x2a72d, 0x2a733, 0x2a735, 0x2a737, + 0x2a739, 0x2a73b, 0x2a73d, 0x2a73f, 0x2a741, 0x2a743, 0x2a745, 0x2a747, 0x2a749, + 0x2a74b, 0x2a74d, 0x2a74f, 0x2a751, 0x2a753, 0x2a755, 0x2a757, 0x2a759, 0x2a75b, + 0x2a75d, 0x2a75f, 0x2a761, 0x2a763, 0x2a765, 0x2a767, 0x2a769, 0x2a76b, 0x2a76d, + 0x2a76f, 0x2a77a, 0x2a77c, 0x2a77f, 0x2a781, 0x2a783, 0x2a785, 0x2a787, 0x2a78c, + 0x2a78e, 0x2a791, 0x2a797, 0x2a799, 0x2a79b, 0x2a79d, 0x2a79f, 0x2a7a1, 0x2a7a3, + 0x2a7a5, 0x2a7a7, 0x2a7a9, 0x2a7b5, 0x2a7b7, 0x2a7fa, 0x300b5, 0x30101, 0x30103, + 0x30105, 0x30107, 0x30109, 0x3010b, 0x3010d, 0x3010f, 0x30111, 0x30113, 0x30115, + 0x30117, 0x30119, 0x3011b, 0x3011d, 0x3011f, 0x30121, 0x30123, 0x30125, 0x30127, + 0x30129, 0x3012b, 0x3012d, 0x3012f, 0x30131, 0x30133, 0x30135, 0x30137, 0x30138, + 0x3013a, 0x3013c, 0x3013e, 0x30140, 0x30142, 0x30144, 0x30146, 0x30148, 0x30149, + 0x3014b, 0x3014d, 0x3014f, 0x30151, 0x30153, 0x30155, 0x30157, 0x30159, 0x3015b, + 0x3015d, 0x3015f, 0x30161, 0x30163, 0x30165, 0x30167, 0x30169, 0x3016b, 0x3016d, + 0x3016f, 0x30171, 0x30173, 0x30175, 0x30177, 0x3017a, 0x3017c, 0x30183, 0x30185, + 0x30188, 0x3018c, 0x3018d, 0x30192, 0x30195, 0x3019e, 0x301a1, 0x301a3, 0x301a5, + 0x301a8, 0x301aa, 0x301ab, 0x301ad, 0x301b0, 0x301b4, 0x301b6, 0x301b9, 0x301ba, + 0x301c6, 0x301c9, 0x301cc, 0x301ce, 0x301d0, 0x301d2, 0x301d4, 0x301d6, 0x301d8, + 0x301da, 0x301dc, 0x301dd, 0x301df, 0x301e1, 0x301e3, 0x301e5, 0x301e7, 0x301e9, + 0x301eb, 0x301ed, 0x301ef, 0x301f0, 0x301f3, 0x301f5, 0x301f9, 0x301fb, 0x301fd, + 0x301ff, 0x30201, 0x30203, 0x30205, 0x30207, 0x30209, 0x3020b, 0x3020d, 0x3020f, + 0x30211, 0x30213, 0x30215, 0x30217, 0x30219, 0x3021b, 0x3021d, 0x3021f, 0x30221, + 0x30223, 0x30225, 0x30227, 0x30229, 0x3022b, 0x3022d, 0x3022f, 0x30231, 0x3023c, + 0x3023f, 0x30240, 0x30242, 0x30247, 0x30249, 0x3024b, 0x3024d, 0x30371, 0x30373, + 0x30377, 0x30390, 0x303d0, 0x303d1, 0x303d9, 0x303db, 0x303dd, 0x303df, 0x303e1, + 0x303e3, 0x303e5, 0x303e7, 0x303e9, 0x303eb, 0x303ed, 0x303f5, 0x303f8, 0x303fb, + 0x303fc, 0x30461, 0x30463, 0x30465, 0x30467, 0x30469, 0x3046b, 0x3046d, 0x3046f, + 0x30471, 0x30473, 0x30475, 0x30477, 0x30479, 0x3047b, 0x3047d, 0x3047f, 0x30481, + 0x3048b, 0x3048d, 0x3048f, 0x30491, 0x30493, 0x30495, 0x30497, 0x30499, 0x3049b, + 0x3049d, 0x3049f, 0x304a1, 0x304a3, 0x304a5, 0x304a7, 0x304a9, 0x304ab, 0x304ad, + 0x304af, 0x304b1, 0x304b3, 0x304b5, 0x304b7, 0x304b9, 0x304bb, 0x304bd, 0x304bf, + 0x304c2, 0x304c4, 0x304c6, 0x304c8, 0x304ca, 0x304cc, 0x304ce, 0x304cf, 0x304d1, + 0x304d3, 0x304d5, 0x304d7, 0x304d9, 0x304db, 0x304dd, 0x304df, 0x304e1, 0x304e3, + 0x304e5, 0x304e7, 0x304e9, 0x304eb, 0x304ed, 0x304ef, 0x304f1, 0x304f3, 0x304f5, + 0x304f7, 0x304f9, 0x304fb, 0x304fd, 0x304ff, 0x30501, 0x30503, 0x30505, 0x30507, + 0x30509, 0x3050b, 0x3050d, 0x3050f, 0x30511, 0x30513, 0x30515, 0x30517, 0x30519, + 0x3051b, 0x3051d, 0x3051f, 0x30521, 0x30523, 0x30525, 0x30527, 0x30529, 0x3052b, + 0x3052d, 0x3052f, 0x31e01, 0x31e03, 0x31e05, 0x31e07, 0x31e09, 0x31e0b, 0x31e0d, + 0x31e0f, 0x31e11, 0x31e13, 0x31e15, 0x31e17, 0x31e19, 0x31e1b, 0x31e1d, 0x31e1f, + 0x31e21, 0x31e23, 0x31e25, 0x31e27, 0x31e29, 0x31e2b, 0x31e2d, 0x31e2f, 0x31e31, + 0x31e33, 0x31e35, 0x31e37, 0x31e39, 0x31e3b, 0x31e3d, 0x31e3f, 0x31e41, 0x31e43, + 0x31e45, 0x31e47, 0x31e49, 0x31e4b, 0x31e4d, 0x31e4f, 0x31e51, 0x31e53, 0x31e55, + 0x31e57, 0x31e59, 0x31e5b, 0x31e5d, 0x31e5f, 0x31e61, 0x31e63, 0x31e65, 0x31e67, + 0x31e69, 0x31e6b, 0x31e6d, 0x31e6f, 0x31e71, 0x31e73, 0x31e75, 0x31e77, 0x31e79, + 0x31e7b, 0x31e7d, 0x31e7f, 0x31e81, 0x31e83, 0x31e85, 0x31e87, 0x31e89, 0x31e8b, + 0x31e8d, 0x31e8f, 0x31e91, 0x31e93, 0x31e9f, 0x31ea1, 0x31ea3, 0x31ea5, 0x31ea7, + 0x31ea9, 0x31eab, 0x31ead, 0x31eaf, 0x31eb1, 0x31eb3, 0x31eb5, 0x31eb7, 0x31eb9, + 0x31ebb, 0x31ebd, 0x31ebf, 0x31ec1, 0x31ec3, 0x31ec5, 0x31ec7, 0x31ec9, 0x31ecb, + 0x31ecd, 0x31ecf, 0x31ed1, 0x31ed3, 0x31ed5, 0x31ed7, 0x31ed9, 0x31edb, 0x31edd, + 0x31edf, 0x31ee1, 0x31ee3, 0x31ee5, 0x31ee7, 0x31ee9, 0x31eeb, 0x31eed, 0x31eef, + 0x31ef1, 0x31ef3, 0x31ef5, 0x31ef7, 0x31ef9, 0x31efb, 0x31efd, 0x31fb6, 0x31fb7, + 0x31fbe, 0x31fc6, 0x31fc7, 0x31fd6, 0x31fd7, 0x31ff6, 0x31ff7, 0x3210a, 0x3210e, + 0x3210f, 0x32113, 0x3212f, 0x32134, 0x32139, 0x3213c, 0x3213d, 0x3214e, 0x32184, + 0x32c61, 0x32c65, 0x32c66, 0x32c68, 0x32c6a, 0x32c6c, 0x32c71, 0x32c73, 0x32c74, + 0x32c81, 0x32c83, 0x32c85, 0x32c87, 0x32c89, 0x32c8b, 0x32c8d, 0x32c8f, 0x32c91, + 0x32c93, 0x32c95, 0x32c97, 0x32c99, 0x32c9b, 0x32c9d, 0x32c9f, 0x32ca1, 0x32ca3, + 0x32ca5, 0x32ca7, 0x32ca9, 0x32cab, 0x32cad, 0x32caf, 0x32cb1, 0x32cb3, 0x32cb5, + 0x32cb7, 0x32cb9, 0x32cbb, 0x32cbd, 0x32cbf, 0x32cc1, 0x32cc3, 0x32cc5, 0x32cc7, + 0x32cc9, 0x32ccb, 0x32ccd, 0x32ccf, 0x32cd1, 0x32cd3, 0x32cd5, 0x32cd7, 0x32cd9, + 0x32cdb, 0x32cdd, 0x32cdf, 0x32ce1, 0x32ce3, 0x32ce4, 0x32cec, 0x32cee, 0x32cf3, + 0x32d27, 0x32d2d, 0x3a641, 0x3a643, 0x3a645, 0x3a647, 0x3a649, 0x3a64b, 0x3a64d, + 0x3a64f, 0x3a651, 0x3a653, 0x3a655, 0x3a657, 0x3a659, 0x3a65b, 0x3a65d, 0x3a65f, + 0x3a661, 0x3a663, 0x3a665, 0x3a667, 0x3a669, 0x3a66b, 0x3a66d, 0x3a681, 0x3a683, + 0x3a685, 0x3a687, 0x3a689, 0x3a68b, 0x3a68d, 0x3a68f, 0x3a691, 0x3a693, 0x3a695, + 0x3a697, 0x3a699, 0x3a69b, 0x3a723, 0x3a725, 0x3a727, 0x3a729, 0x3a72b, 0x3a72d, + 0x3a733, 0x3a735, 0x3a737, 0x3a739, 0x3a73b, 0x3a73d, 0x3a73f, 0x3a741, 0x3a743, + 0x3a745, 0x3a747, 0x3a749, 0x3a74b, 0x3a74d, 0x3a74f, 0x3a751, 0x3a753, 0x3a755, + 0x3a757, 0x3a759, 0x3a75b, 0x3a75d, 0x3a75f, 0x3a761, 0x3a763, 0x3a765, 0x3a767, + 0x3a769, 0x3a76b, 0x3a76d, 0x3a76f, 0x3a77a, 0x3a77c, 0x3a77f, 0x3a781, 0x3a783, + 0x3a785, 0x3a787, 0x3a78c, 0x3a78e, 0x3a791, 0x3a797, 0x3a799, 0x3a79b, 0x3a79d, + 0x3a79f, 0x3a7a1, 0x3a7a3, 0x3a7a5, 0x3a7a7, 0x3a7a9, 0x3a7b5, 0x3a7b7, 0x3a7fa, + 0x400b5, 0x40101, 0x40103, 0x40105, 0x40107, 0x40109, 0x4010b, 0x4010d, 0x4010f, + 0x40111, 0x40113, 0x40115, 0x40117, 0x40119, 0x4011b, 0x4011d, 0x4011f, 0x40121, + 0x40123, 0x40125, 0x40127, 0x40129, 0x4012b, 0x4012d, 0x4012f, 0x40131, 0x40133, + 0x40135, 0x40137, 0x40138, 0x4013a, 0x4013c, 0x4013e, 0x40140, 0x40142, 0x40144, + 0x40146, 0x40148, 0x40149, 0x4014b, 0x4014d, 0x4014f, 0x40151, 0x40153, 0x40155, + 0x40157, 0x40159, 0x4015b, 0x4015d, 0x4015f, 0x40161, 0x40163, 0x40165, 0x40167, + 0x40169, 0x4016b, 0x4016d, 0x4016f, 0x40171, 0x40173, 0x40175, 0x40177, 0x4017a, + 0x4017c, 0x40183, 0x40185, 0x40188, 0x4018c, 0x4018d, 0x40192, 0x40195, 0x4019e, + 0x401a1, 0x401a3, 0x401a5, 0x401a8, 0x401aa, 0x401ab, 0x401ad, 0x401b0, 0x401b4, + 0x401b6, 0x401b9, 0x401ba, 0x401c6, 0x401c9, 0x401cc, 0x401ce, 0x401d0, 0x401d2, + 0x401d4, 0x401d6, 0x401d8, 0x401da, 0x401dc, 0x401dd, 0x401df, 0x401e1, 0x401e3, + 0x401e5, 0x401e7, 0x401e9, 0x401eb, 0x401ed, 0x401ef, 0x401f0, 0x401f3, 0x401f5, + 0x401f9, 0x401fb, 0x401fd, 0x401ff, 0x40201, 0x40203, 0x40205, 0x40207, 0x40209, + 0x4020b, 0x4020d, 0x4020f, 0x40211, 0x40213, 0x40215, 0x40217, 0x40219, 0x4021b, + 0x4021d, 0x4021f, 0x40221, 0x40223, 0x40225, 0x40227, 0x40229, 0x4022b, 0x4022d, + 0x4022f, 0x40231, 0x4023c, 0x4023f, 0x40240, 0x40242, 0x40247, 0x40249, 0x4024b, + 0x4024d, 0x40371, 0x40373, 0x40377, 0x40390, 0x403d0, 0x403d1, 0x403d9, 0x403db, + 0x403dd, 0x403df, 0x403e1, 0x403e3, 0x403e5, 0x403e7, 0x403e9, 0x403eb, 0x403ed, + 0x403f5, 0x403f8, 0x403fb, 0x403fc, 0x40461, 0x40463, 0x40465, 0x40467, 0x40469, + 0x4046b, 0x4046d, 0x4046f, 0x40471, 0x40473, 0x40475, 0x40477, 0x40479, 0x4047b, + 0x4047d, 0x4047f, 0x40481, 0x4048b, 0x4048d, 0x4048f, 0x40491, 0x40493, 0x40495, + 0x40497, 0x40499, 0x4049b, 0x4049d, 0x4049f, 0x404a1, 0x404a3, 0x404a5, 0x404a7, + 0x404a9, 0x404ab, 0x404ad, 0x404af, 0x404b1, 0x404b3, 0x404b5, 0x404b7, 0x404b9, + 0x404bb, 0x404bd, 0x404bf, 0x404c2, 0x404c4, 0x404c6, 0x404c8, 0x404ca, 0x404cc, + 0x404ce, 0x404cf, 0x404d1, 0x404d3, 0x404d5, 0x404d7, 0x404d9, 0x404db, 0x404dd, + 0x404df, 0x404e1, 0x404e3, 0x404e5, 0x404e7, 0x404e9, 0x404eb, 0x404ed, 0x404ef, + 0x404f1, 0x404f3, 0x404f5, 0x404f7, 0x404f9, 0x404fb, 0x404fd, 0x404ff, 0x40501, + 0x40503, 0x40505, 0x40507, 0x40509, 0x4050b, 0x4050d, 0x4050f, 0x40511, 0x40513, + 0x40515, 0x40517, 0x40519, 0x4051b, 0x4051d, 0x4051f, 0x40521, 0x40523, 0x40525, + 0x40527, 0x40529, 0x4052b, 0x4052d, 0x4052f, 0x41e01, 0x41e03, 0x41e05, 0x41e07, + 0x41e09, 0x41e0b, 0x41e0d, 0x41e0f, 0x41e11, 0x41e13, 0x41e15, 0x41e17, 0x41e19, + 0x41e1b, 0x41e1d, 0x41e1f, 0x41e21, 0x41e23, 0x41e25, 0x41e27, 0x41e29, 0x41e2b, + 0x41e2d, 0x41e2f, 0x41e31, 0x41e33, 0x41e35, 0x41e37, 0x41e39, 0x41e3b, 0x41e3d, + 0x41e3f, 0x41e41, 0x41e43, 0x41e45, 0x41e47, 0x41e49, 0x41e4b, 0x41e4d, 0x41e4f, + 0x41e51, 0x41e53, 0x41e55, 0x41e57, 0x41e59, 0x41e5b, 0x41e5d, 0x41e5f, 0x41e61, + 0x41e63, 0x41e65, 0x41e67, 0x41e69, 0x41e6b, 0x41e6d, 0x41e6f, 0x41e71, 0x41e73, + 0x41e75, 0x41e77, 0x41e79, 0x41e7b, 0x41e7d, 0x41e7f, 0x41e81, 0x41e83, 0x41e85, + 0x41e87, 0x41e89, 0x41e8b, 0x41e8d, 0x41e8f, 0x41e91, 0x41e93, 0x41e9f, 0x41ea1, + 0x41ea3, 0x41ea5, 0x41ea7, 0x41ea9, 0x41eab, 0x41ead, 0x41eaf, 0x41eb1, 0x41eb3, + 0x41eb5, 0x41eb7, 0x41eb9, 0x41ebb, 0x41ebd, 0x41ebf, 0x41ec1, 0x41ec3, 0x41ec5, + 0x41ec7, 0x41ec9, 0x41ecb, 0x41ecd, 0x41ecf, 0x41ed1, 0x41ed3, 0x41ed5, 0x41ed7, + 0x41ed9, 0x41edb, 0x41edd, 0x41edf, 0x41ee1, 0x41ee3, 0x41ee5, 0x41ee7, 0x41ee9, + 0x41eeb, 0x41eed, 0x41eef, 0x41ef1, 0x41ef3, 0x41ef5, 0x41ef7, 0x41ef9, 0x41efb, + 0x41efd, 0x41fb6, 0x41fb7, 0x41fbe, 0x41fc6, 0x41fc7, 0x41fd6, 0x41fd7, 0x41ff6, + 0x41ff7, 0x4210a, 0x4210e, 0x4210f, 0x42113, 0x4212f, 0x42134, 0x42139, 0x4213c, + 0x4213d, 0x4214e, 0x42184, 0x42c61, 0x42c65, 0x42c66, 0x42c68, 0x42c6a, 0x42c6c, + 0x42c71, 0x42c73, 0x42c74, 0x42c81, 0x42c83, 0x42c85, 0x42c87, 0x42c89, 0x42c8b, + 0x42c8d, 0x42c8f, 0x42c91, 0x42c93, 0x42c95, 0x42c97, 0x42c99, 0x42c9b, 0x42c9d, + 0x42c9f, 0x42ca1, 0x42ca3, 0x42ca5, 0x42ca7, 0x42ca9, 0x42cab, 0x42cad, 0x42caf, + 0x42cb1, 0x42cb3, 0x42cb5, 0x42cb7, 0x42cb9, 0x42cbb, 0x42cbd, 0x42cbf, 0x42cc1, + 0x42cc3, 0x42cc5, 0x42cc7, 0x42cc9, 0x42ccb, 0x42ccd, 0x42ccf, 0x42cd1, 0x42cd3, + 0x42cd5, 0x42cd7, 0x42cd9, 0x42cdb, 0x42cdd, 0x42cdf, 0x42ce1, 0x42ce3, 0x42ce4, + 0x42cec, 0x42cee, 0x42cf3, 0x42d27, 0x42d2d, 0x4a641, 0x4a643, 0x4a645, 0x4a647, + 0x4a649, 0x4a64b, 0x4a64d, 0x4a64f, 0x4a651, 0x4a653, 0x4a655, 0x4a657, 0x4a659, + 0x4a65b, 0x4a65d, 0x4a65f, 0x4a661, 0x4a663, 0x4a665, 0x4a667, 0x4a669, 0x4a66b, + 0x4a66d, 0x4a681, 0x4a683, 0x4a685, 0x4a687, 0x4a689, 0x4a68b, 0x4a68d, 0x4a68f, + 0x4a691, 0x4a693, 0x4a695, 0x4a697, 0x4a699, 0x4a69b, 0x4a723, 0x4a725, 0x4a727, + 0x4a729, 0x4a72b, 0x4a72d, 0x4a733, 0x4a735, 0x4a737, 0x4a739, 0x4a73b, 0x4a73d, + 0x4a73f, 0x4a741, 0x4a743, 0x4a745, 0x4a747, 0x4a749, 0x4a74b, 0x4a74d, 0x4a74f, + 0x4a751, 0x4a753, 0x4a755, 0x4a757, 0x4a759, 0x4a75b, 0x4a75d, 0x4a75f, 0x4a761, + 0x4a763, 0x4a765, 0x4a767, 0x4a769, 0x4a76b, 0x4a76d, 0x4a76f, 0x4a77a, 0x4a77c, + 0x4a77f, 0x4a781, 0x4a783, 0x4a785, 0x4a787, 0x4a78c, 0x4a78e, 0x4a791, 0x4a797, + 0x4a799, 0x4a79b, 0x4a79d, 0x4a79f, 0x4a7a1, 0x4a7a3, 0x4a7a5, 0x4a7a7, 0x4a7a9, + 0x4a7b5, 0x4a7b7, 0x4a7fa, 0x500b5, 0x50101, 0x50103, 0x50105, 0x50107, 0x50109, + 0x5010b, 0x5010d, 0x5010f, 0x50111, 0x50113, 0x50115, 0x50117, 0x50119, 0x5011b, + 0x5011d, 0x5011f, 0x50121, 0x50123, 0x50125, 0x50127, 0x50129, 0x5012b, 0x5012d, + 0x5012f, 0x50131, 0x50133, 0x50135, 0x50137, 0x50138, 0x5013a, 0x5013c, 0x5013e, + 0x50140, 0x50142, 0x50144, 0x50146, 0x50148, 0x50149, 0x5014b, 0x5014d, 0x5014f, + 0x50151, 0x50153, 0x50155, 0x50157, 0x50159, 0x5015b, 0x5015d, 0x5015f, 0x50161, + 0x50163, 0x50165, 0x50167, 0x50169, 0x5016b, 0x5016d, 0x5016f, 0x50171, 0x50173, + 0x50175, 0x50177, 0x5017a, 0x5017c, 0x50183, 0x50185, 0x50188, 0x5018c, 0x5018d, + 0x50192, 0x50195, 0x5019e, 0x501a1, 0x501a3, 0x501a5, 0x501a8, 0x501aa, 0x501ab, + 0x501ad, 0x501b0, 0x501b4, 0x501b6, 0x501b9, 0x501ba, 0x501c6, 0x501c9, 0x501cc, + 0x501ce, 0x501d0, 0x501d2, 0x501d4, 0x501d6, 0x501d8, 0x501da, 0x501dc, 0x501dd, + 0x501df, 0x501e1, 0x501e3, 0x501e5, 0x501e7, 0x501e9, 0x501eb, 0x501ed, 0x501ef, + 0x501f0, 0x501f3, 0x501f5, 0x501f9, 0x501fb, 0x501fd, 0x501ff, 0x50201, 0x50203, + 0x50205, 0x50207, 0x50209, 0x5020b, 0x5020d, 0x5020f, 0x50211, 0x50213, 0x50215, + 0x50217, 0x50219, 0x5021b, 0x5021d, 0x5021f, 0x50221, 0x50223, 0x50225, 0x50227, + 0x50229, 0x5022b, 0x5022d, 0x5022f, 0x50231, 0x5023c, 0x5023f, 0x50240, 0x50242, + 0x50247, 0x50249, 0x5024b, 0x5024d, 0x50371, 0x50373, 0x50377, 0x50390, 0x503d0, + 0x503d1, 0x503d9, 0x503db, 0x503dd, 0x503df, 0x503e1, 0x503e3, 0x503e5, 0x503e7, + 0x503e9, 0x503eb, 0x503ed, 0x503f5, 0x503f8, 0x503fb, 0x503fc, 0x50461, 0x50463, + 0x50465, 0x50467, 0x50469, 0x5046b, 0x5046d, 0x5046f, 0x50471, 0x50473, 0x50475, + 0x50477, 0x50479, 0x5047b, 0x5047d, 0x5047f, 0x50481, 0x5048b, 0x5048d, 0x5048f, + 0x50491, 0x50493, 0x50495, 0x50497, 0x50499, 0x5049b, 0x5049d, 0x5049f, 0x504a1, + 0x504a3, 0x504a5, 0x504a7, 0x504a9, 0x504ab, 0x504ad, 0x504af, 0x504b1, 0x504b3, + 0x504b5, 0x504b7, 0x504b9, 0x504bb, 0x504bd, 0x504bf, 0x504c2, 0x504c4, 0x504c6, + 0x504c8, 0x504ca, 0x504cc, 0x504ce, 0x504cf, 0x504d1, 0x504d3, 0x504d5, 0x504d7, + 0x504d9, 0x504db, 0x504dd, 0x504df, 0x504e1, 0x504e3, 0x504e5, 0x504e7, 0x504e9, + 0x504eb, 0x504ed, 0x504ef, 0x504f1, 0x504f3, 0x504f5, 0x504f7, 0x504f9, 0x504fb, + 0x504fd, 0x504ff, 0x50501, 0x50503, 0x50505, 0x50507, 0x50509, 0x5050b, 0x5050d, + 0x5050f, 0x50511, 0x50513, 0x50515, 0x50517, 0x50519, 0x5051b, 0x5051d, 0x5051f, + 0x50521, 0x50523, 0x50525, 0x50527, 0x50529, 0x5052b, 0x5052d, 0x5052f, 0x51e01, + 0x51e03, 0x51e05, 0x51e07, 0x51e09, 0x51e0b, 0x51e0d, 0x51e0f, 0x51e11, 0x51e13, + 0x51e15, 0x51e17, 0x51e19, 0x51e1b, 0x51e1d, 0x51e1f, 0x51e21, 0x51e23, 0x51e25, + 0x51e27, 0x51e29, 0x51e2b, 0x51e2d, 0x51e2f, 0x51e31, 0x51e33, 0x51e35, 0x51e37, + 0x51e39, 0x51e3b, 0x51e3d, 0x51e3f, 0x51e41, 0x51e43, 0x51e45, 0x51e47, 0x51e49, + 0x51e4b, 0x51e4d, 0x51e4f, 0x51e51, 0x51e53, 0x51e55, 0x51e57, 0x51e59, 0x51e5b, + 0x51e5d, 0x51e5f, 0x51e61, 0x51e63, 0x51e65, 0x51e67, 0x51e69, 0x51e6b, 0x51e6d, + 0x51e6f, 0x51e71, 0x51e73, 0x51e75, 0x51e77, 0x51e79, 0x51e7b, 0x51e7d, 0x51e7f, + 0x51e81, 0x51e83, 0x51e85, 0x51e87, 0x51e89, 0x51e8b, 0x51e8d, 0x51e8f, 0x51e91, + 0x51e93, 0x51e9f, 0x51ea1, 0x51ea3, 0x51ea5, 0x51ea7, 0x51ea9, 0x51eab, 0x51ead, + 0x51eaf, 0x51eb1, 0x51eb3, 0x51eb5, 0x51eb7, 0x51eb9, 0x51ebb, 0x51ebd, 0x51ebf, + 0x51ec1, 0x51ec3, 0x51ec5, 0x51ec7, 0x51ec9, 0x51ecb, 0x51ecd, 0x51ecf, 0x51ed1, + 0x51ed3, 0x51ed5, 0x51ed7, 0x51ed9, 0x51edb, 0x51edd, 0x51edf, 0x51ee1, 0x51ee3, + 0x51ee5, 0x51ee7, 0x51ee9, 0x51eeb, 0x51eed, 0x51eef, 0x51ef1, 0x51ef3, 0x51ef5, + 0x51ef7, 0x51ef9, 0x51efb, 0x51efd, 0x51fb6, 0x51fb7, 0x51fbe, 0x51fc6, 0x51fc7, + 0x51fd6, 0x51fd7, 0x51ff6, 0x51ff7, 0x5210a, 0x5210e, 0x5210f, 0x52113, 0x5212f, + 0x52134, 0x52139, 0x5213c, 0x5213d, 0x5214e, 0x52184, 0x52c61, 0x52c65, 0x52c66, + 0x52c68, 0x52c6a, 0x52c6c, 0x52c71, 0x52c73, 0x52c74, 0x52c81, 0x52c83, 0x52c85, + 0x52c87, 0x52c89, 0x52c8b, 0x52c8d, 0x52c8f, 0x52c91, 0x52c93, 0x52c95, 0x52c97, + 0x52c99, 0x52c9b, 0x52c9d, 0x52c9f, 0x52ca1, 0x52ca3, 0x52ca5, 0x52ca7, 0x52ca9, + 0x52cab, 0x52cad, 0x52caf, 0x52cb1, 0x52cb3, 0x52cb5, 0x52cb7, 0x52cb9, 0x52cbb, + 0x52cbd, 0x52cbf, 0x52cc1, 0x52cc3, 0x52cc5, 0x52cc7, 0x52cc9, 0x52ccb, 0x52ccd, + 0x52ccf, 0x52cd1, 0x52cd3, 0x52cd5, 0x52cd7, 0x52cd9, 0x52cdb, 0x52cdd, 0x52cdf, + 0x52ce1, 0x52ce3, 0x52ce4, 0x52cec, 0x52cee, 0x52cf3, 0x52d27, 0x52d2d, 0x5a641, + 0x5a643, 0x5a645, 0x5a647, 0x5a649, 0x5a64b, 0x5a64d, 0x5a64f, 0x5a651, 0x5a653, + 0x5a655, 0x5a657, 0x5a659, 0x5a65b, 0x5a65d, 0x5a65f, 0x5a661, 0x5a663, 0x5a665, + 0x5a667, 0x5a669, 0x5a66b, 0x5a66d, 0x5a681, 0x5a683, 0x5a685, 0x5a687, 0x5a689, + 0x5a68b, 0x5a68d, 0x5a68f, 0x5a691, 0x5a693, 0x5a695, 0x5a697, 0x5a699, 0x5a69b, + 0x5a723, 0x5a725, 0x5a727, 0x5a729, 0x5a72b, 0x5a72d, 0x5a733, 0x5a735, 0x5a737, + 0x5a739, 0x5a73b, 0x5a73d, 0x5a73f, 0x5a741, 0x5a743, 0x5a745, 0x5a747, 0x5a749, + 0x5a74b, 0x5a74d, 0x5a74f, 0x5a751, 0x5a753, 0x5a755, 0x5a757, 0x5a759, 0x5a75b, + 0x5a75d, 0x5a75f, 0x5a761, 0x5a763, 0x5a765, 0x5a767, 0x5a769, 0x5a76b, 0x5a76d, + 0x5a76f, 0x5a77a, 0x5a77c, 0x5a77f, 0x5a781, 0x5a783, 0x5a785, 0x5a787, 0x5a78c, + 0x5a78e, 0x5a791, 0x5a797, 0x5a799, 0x5a79b, 0x5a79d, 0x5a79f, 0x5a7a1, 0x5a7a3, + 0x5a7a5, 0x5a7a7, 0x5a7a9, 0x5a7b5, 0x5a7b7, 0x5a7fa, 0x600b5, 0x60101, 0x60103, + 0x60105, 0x60107, 0x60109, 0x6010b, 0x6010d, 0x6010f, 0x60111, 0x60113, 0x60115, + 0x60117, 0x60119, 0x6011b, 0x6011d, 0x6011f, 0x60121, 0x60123, 0x60125, 0x60127, + 0x60129, 0x6012b, 0x6012d, 0x6012f, 0x60131, 0x60133, 0x60135, 0x60137, 0x60138, + 0x6013a, 0x6013c, 0x6013e, 0x60140, 0x60142, 0x60144, 0x60146, 0x60148, 0x60149, + 0x6014b, 0x6014d, 0x6014f, 0x60151, 0x60153, 0x60155, 0x60157, 0x60159, 0x6015b, + 0x6015d, 0x6015f, 0x60161, 0x60163, 0x60165, 0x60167, 0x60169, 0x6016b, 0x6016d, + 0x6016f, 0x60171, 0x60173, 0x60175, 0x60177, 0x6017a, 0x6017c, 0x60183, 0x60185, + 0x60188, 0x6018c, 0x6018d, 0x60192, 0x60195, 0x6019e, 0x601a1, 0x601a3, 0x601a5, + 0x601a8, 0x601aa, 0x601ab, 0x601ad, 0x601b0, 0x601b4, 0x601b6, 0x601b9, 0x601ba, + 0x601c6, 0x601c9, 0x601cc, 0x601ce, 0x601d0, 0x601d2, 0x601d4, 0x601d6, 0x601d8, + 0x601da, 0x601dc, 0x601dd, 0x601df, 0x601e1, 0x601e3, 0x601e5, 0x601e7, 0x601e9, + 0x601eb, 0x601ed, 0x601ef, 0x601f0, 0x601f3, 0x601f5, 0x601f9, 0x601fb, 0x601fd, + 0x601ff, 0x60201, 0x60203, 0x60205, 0x60207, 0x60209, 0x6020b, 0x6020d, 0x6020f, + 0x60211, 0x60213, 0x60215, 0x60217, 0x60219, 0x6021b, 0x6021d, 0x6021f, 0x60221, + 0x60223, 0x60225, 0x60227, 0x60229, 0x6022b, 0x6022d, 0x6022f, 0x60231, 0x6023c, + 0x6023f, 0x60240, 0x60242, 0x60247, 0x60249, 0x6024b, 0x6024d, 0x60371, 0x60373, + 0x60377, 0x60390, 0x603d0, 0x603d1, 0x603d9, 0x603db, 0x603dd, 0x603df, 0x603e1, + 0x603e3, 0x603e5, 0x603e7, 0x603e9, 0x603eb, 0x603ed, 0x603f5, 0x603f8, 0x603fb, + 0x603fc, 0x60461, 0x60463, 0x60465, 0x60467, 0x60469, 0x6046b, 0x6046d, 0x6046f, + 0x60471, 0x60473, 0x60475, 0x60477, 0x60479, 0x6047b, 0x6047d, 0x6047f, 0x60481, + 0x6048b, 0x6048d, 0x6048f, 0x60491, 0x60493, 0x60495, 0x60497, 0x60499, 0x6049b, + 0x6049d, 0x6049f, 0x604a1, 0x604a3, 0x604a5, 0x604a7, 0x604a9, 0x604ab, 0x604ad, + 0x604af, 0x604b1, 0x604b3, 0x604b5, 0x604b7, 0x604b9, 0x604bb, 0x604bd, 0x604bf, + 0x604c2, 0x604c4, 0x604c6, 0x604c8, 0x604ca, 0x604cc, 0x604ce, 0x604cf, 0x604d1, + 0x604d3, 0x604d5, 0x604d7, 0x604d9, 0x604db, 0x604dd, 0x604df, 0x604e1, 0x604e3, + 0x604e5, 0x604e7, 0x604e9, 0x604eb, 0x604ed, 0x604ef, 0x604f1, 0x604f3, 0x604f5, + 0x604f7, 0x604f9, 0x604fb, 0x604fd, 0x604ff, 0x60501, 0x60503, 0x60505, 0x60507, + 0x60509, 0x6050b, 0x6050d, 0x6050f, 0x60511, 0x60513, 0x60515, 0x60517, 0x60519, + 0x6051b, 0x6051d, 0x6051f, 0x60521, 0x60523, 0x60525, 0x60527, 0x60529, 0x6052b, + 0x6052d, 0x6052f, 0x61e01, 0x61e03, 0x61e05, 0x61e07, 0x61e09, 0x61e0b, 0x61e0d, + 0x61e0f, 0x61e11, 0x61e13, 0x61e15, 0x61e17, 0x61e19, 0x61e1b, 0x61e1d, 0x61e1f, + 0x61e21, 0x61e23, 0x61e25, 0x61e27, 0x61e29, 0x61e2b, 0x61e2d, 0x61e2f, 0x61e31, + 0x61e33, 0x61e35, 0x61e37, 0x61e39, 0x61e3b, 0x61e3d, 0x61e3f, 0x61e41, 0x61e43, + 0x61e45, 0x61e47, 0x61e49, 0x61e4b, 0x61e4d, 0x61e4f, 0x61e51, 0x61e53, 0x61e55, + 0x61e57, 0x61e59, 0x61e5b, 0x61e5d, 0x61e5f, 0x61e61, 0x61e63, 0x61e65, 0x61e67, + 0x61e69, 0x61e6b, 0x61e6d, 0x61e6f, 0x61e71, 0x61e73, 0x61e75, 0x61e77, 0x61e79, + 0x61e7b, 0x61e7d, 0x61e7f, 0x61e81, 0x61e83, 0x61e85, 0x61e87, 0x61e89, 0x61e8b, + 0x61e8d, 0x61e8f, 0x61e91, 0x61e93, 0x61e9f, 0x61ea1, 0x61ea3, 0x61ea5, 0x61ea7, + 0x61ea9, 0x61eab, 0x61ead, 0x61eaf, 0x61eb1, 0x61eb3, 0x61eb5, 0x61eb7, 0x61eb9, + 0x61ebb, 0x61ebd, 0x61ebf, 0x61ec1, 0x61ec3, 0x61ec5, 0x61ec7, 0x61ec9, 0x61ecb, + 0x61ecd, 0x61ecf, 0x61ed1, 0x61ed3, 0x61ed5, 0x61ed7, 0x61ed9, 0x61edb, 0x61edd, + 0x61edf, 0x61ee1, 0x61ee3, 0x61ee5, 0x61ee7, 0x61ee9, 0x61eeb, 0x61eed, 0x61eef, + 0x61ef1, 0x61ef3, 0x61ef5, 0x61ef7, 0x61ef9, 0x61efb, 0x61efd, 0x61fb6, 0x61fb7, + 0x61fbe, 0x61fc6, 0x61fc7, 0x61fd6, 0x61fd7, 0x61ff6, 0x61ff7, 0x6210a, 0x6210e, + 0x6210f, 0x62113, 0x6212f, 0x62134, 0x62139, 0x6213c, 0x6213d, 0x6214e, 0x62184, + 0x62c61, 0x62c65, 0x62c66, 0x62c68, 0x62c6a, 0x62c6c, 0x62c71, 0x62c73, 0x62c74, + 0x62c81, 0x62c83, 0x62c85, 0x62c87, 0x62c89, 0x62c8b, 0x62c8d, 0x62c8f, 0x62c91, + 0x62c93, 0x62c95, 0x62c97, 0x62c99, 0x62c9b, 0x62c9d, 0x62c9f, 0x62ca1, 0x62ca3, + 0x62ca5, 0x62ca7, 0x62ca9, 0x62cab, 0x62cad, 0x62caf, 0x62cb1, 0x62cb3, 0x62cb5, + 0x62cb7, 0x62cb9, 0x62cbb, 0x62cbd, 0x62cbf, 0x62cc1, 0x62cc3, 0x62cc5, 0x62cc7, + 0x62cc9, 0x62ccb, 0x62ccd, 0x62ccf, 0x62cd1, 0x62cd3, 0x62cd5, 0x62cd7, 0x62cd9, + 0x62cdb, 0x62cdd, 0x62cdf, 0x62ce1, 0x62ce3, 0x62ce4, 0x62cec, 0x62cee, 0x62cf3, + 0x62d27, 0x62d2d, 0x6a641, 0x6a643, 0x6a645, 0x6a647, 0x6a649, 0x6a64b, 0x6a64d, + 0x6a64f, 0x6a651, 0x6a653, 0x6a655, 0x6a657, 0x6a659, 0x6a65b, 0x6a65d, 0x6a65f, + 0x6a661, 0x6a663, 0x6a665, 0x6a667, 0x6a669, 0x6a66b, 0x6a66d, 0x6a681, 0x6a683, + 0x6a685, 0x6a687, 0x6a689, 0x6a68b, 0x6a68d, 0x6a68f, 0x6a691, 0x6a693, 0x6a695, + 0x6a697, 0x6a699, 0x6a69b, 0x6a723, 0x6a725, 0x6a727, 0x6a729, 0x6a72b, 0x6a72d, + 0x6a733, 0x6a735, 0x6a737, 0x6a739, 0x6a73b, 0x6a73d, 0x6a73f, 0x6a741, 0x6a743, + 0x6a745, 0x6a747, 0x6a749, 0x6a74b, 0x6a74d, 0x6a74f, 0x6a751, 0x6a753, 0x6a755, + 0x6a757, 0x6a759, 0x6a75b, 0x6a75d, 0x6a75f, 0x6a761, 0x6a763, 0x6a765, 0x6a767, + 0x6a769, 0x6a76b, 0x6a76d, 0x6a76f, 0x6a77a, 0x6a77c, 0x6a77f, 0x6a781, 0x6a783, + 0x6a785, 0x6a787, 0x6a78c, 0x6a78e, 0x6a791, 0x6a797, 0x6a799, 0x6a79b, 0x6a79d, + 0x6a79f, 0x6a7a1, 0x6a7a3, 0x6a7a5, 0x6a7a7, 0x6a7a9, 0x6a7b5, 0x6a7b7, 0x6a7fa, + 0x700b5, 0x70101, 0x70103, 0x70105, 0x70107, 0x70109, 0x7010b, 0x7010d, 0x7010f, + 0x70111, 0x70113, 0x70115, 0x70117, 0x70119, 0x7011b, 0x7011d, 0x7011f, 0x70121, + 0x70123, 0x70125, 0x70127, 0x70129, 0x7012b, 0x7012d, 0x7012f, 0x70131, 0x70133, + 0x70135, 0x70137, 0x70138, 0x7013a, 0x7013c, 0x7013e, 0x70140, 0x70142, 0x70144, + 0x70146, 0x70148, 0x70149, 0x7014b, 0x7014d, 0x7014f, 0x70151, 0x70153, 0x70155, + 0x70157, 0x70159, 0x7015b, 0x7015d, 0x7015f, 0x70161, 0x70163, 0x70165, 0x70167, + 0x70169, 0x7016b, 0x7016d, 0x7016f, 0x70171, 0x70173, 0x70175, 0x70177, 0x7017a, + 0x7017c, 0x70183, 0x70185, 0x70188, 0x7018c, 0x7018d, 0x70192, 0x70195, 0x7019e, + 0x701a1, 0x701a3, 0x701a5, 0x701a8, 0x701aa, 0x701ab, 0x701ad, 0x701b0, 0x701b4, + 0x701b6, 0x701b9, 0x701ba, 0x701c6, 0x701c9, 0x701cc, 0x701ce, 0x701d0, 0x701d2, + 0x701d4, 0x701d6, 0x701d8, 0x701da, 0x701dc, 0x701dd, 0x701df, 0x701e1, 0x701e3, + 0x701e5, 0x701e7, 0x701e9, 0x701eb, 0x701ed, 0x701ef, 0x701f0, 0x701f3, 0x701f5, + 0x701f9, 0x701fb, 0x701fd, 0x701ff, 0x70201, 0x70203, 0x70205, 0x70207, 0x70209, + 0x7020b, 0x7020d, 0x7020f, 0x70211, 0x70213, 0x70215, 0x70217, 0x70219, 0x7021b, + 0x7021d, 0x7021f, 0x70221, 0x70223, 0x70225, 0x70227, 0x70229, 0x7022b, 0x7022d, + 0x7022f, 0x70231, 0x7023c, 0x7023f, 0x70240, 0x70242, 0x70247, 0x70249, 0x7024b, + 0x7024d, 0x70371, 0x70373, 0x70377, 0x70390, 0x703d0, 0x703d1, 0x703d9, 0x703db, + 0x703dd, 0x703df, 0x703e1, 0x703e3, 0x703e5, 0x703e7, 0x703e9, 0x703eb, 0x703ed, + 0x703f5, 0x703f8, 0x703fb, 0x703fc, 0x70461, 0x70463, 0x70465, 0x70467, 0x70469, + 0x7046b, 0x7046d, 0x7046f, 0x70471, 0x70473, 0x70475, 0x70477, 0x70479, 0x7047b, + 0x7047d, 0x7047f, 0x70481, 0x7048b, 0x7048d, 0x7048f, 0x70491, 0x70493, 0x70495, + 0x70497, 0x70499, 0x7049b, 0x7049d, 0x7049f, 0x704a1, 0x704a3, 0x704a5, 0x704a7, + 0x704a9, 0x704ab, 0x704ad, 0x704af, 0x704b1, 0x704b3, 0x704b5, 0x704b7, 0x704b9, + 0x704bb, 0x704bd, 0x704bf, 0x704c2, 0x704c4, 0x704c6, 0x704c8, 0x704ca, 0x704cc, + 0x704ce, 0x704cf, 0x704d1, 0x704d3, 0x704d5, 0x704d7, 0x704d9, 0x704db, 0x704dd, + 0x704df, 0x704e1, 0x704e3, 0x704e5, 0x704e7, 0x704e9, 0x704eb, 0x704ed, 0x704ef, + 0x704f1, 0x704f3, 0x704f5, 0x704f7, 0x704f9, 0x704fb, 0x704fd, 0x704ff, 0x70501, + 0x70503, 0x70505, 0x70507, 0x70509, 0x7050b, 0x7050d, 0x7050f, 0x70511, 0x70513, + 0x70515, 0x70517, 0x70519, 0x7051b, 0x7051d, 0x7051f, 0x70521, 0x70523, 0x70525, + 0x70527, 0x70529, 0x7052b, 0x7052d, 0x7052f, 0x71e01, 0x71e03, 0x71e05, 0x71e07, + 0x71e09, 0x71e0b, 0x71e0d, 0x71e0f, 0x71e11, 0x71e13, 0x71e15, 0x71e17, 0x71e19, + 0x71e1b, 0x71e1d, 0x71e1f, 0x71e21, 0x71e23, 0x71e25, 0x71e27, 0x71e29, 0x71e2b, + 0x71e2d, 0x71e2f, 0x71e31, 0x71e33, 0x71e35, 0x71e37, 0x71e39, 0x71e3b, 0x71e3d, + 0x71e3f, 0x71e41, 0x71e43, 0x71e45, 0x71e47, 0x71e49, 0x71e4b, 0x71e4d, 0x71e4f, + 0x71e51, 0x71e53, 0x71e55, 0x71e57, 0x71e59, 0x71e5b, 0x71e5d, 0x71e5f, 0x71e61, + 0x71e63, 0x71e65, 0x71e67, 0x71e69, 0x71e6b, 0x71e6d, 0x71e6f, 0x71e71, 0x71e73, + 0x71e75, 0x71e77, 0x71e79, 0x71e7b, 0x71e7d, 0x71e7f, 0x71e81, 0x71e83, 0x71e85, + 0x71e87, 0x71e89, 0x71e8b, 0x71e8d, 0x71e8f, 0x71e91, 0x71e93, 0x71e9f, 0x71ea1, + 0x71ea3, 0x71ea5, 0x71ea7, 0x71ea9, 0x71eab, 0x71ead, 0x71eaf, 0x71eb1, 0x71eb3, + 0x71eb5, 0x71eb7, 0x71eb9, 0x71ebb, 0x71ebd, 0x71ebf, 0x71ec1, 0x71ec3, 0x71ec5, + 0x71ec7, 0x71ec9, 0x71ecb, 0x71ecd, 0x71ecf, 0x71ed1, 0x71ed3, 0x71ed5, 0x71ed7, + 0x71ed9, 0x71edb, 0x71edd, 0x71edf, 0x71ee1, 0x71ee3, 0x71ee5, 0x71ee7, 0x71ee9, + 0x71eeb, 0x71eed, 0x71eef, 0x71ef1, 0x71ef3, 0x71ef5, 0x71ef7, 0x71ef9, 0x71efb, + 0x71efd, 0x71fb6, 0x71fb7, 0x71fbe, 0x71fc6, 0x71fc7, 0x71fd6, 0x71fd7, 0x71ff6, + 0x71ff7, 0x7210a, 0x7210e, 0x7210f, 0x72113, 0x7212f, 0x72134, 0x72139, 0x7213c, + 0x7213d, 0x7214e, 0x72184, 0x72c61, 0x72c65, 0x72c66, 0x72c68, 0x72c6a, 0x72c6c, + 0x72c71, 0x72c73, 0x72c74, 0x72c81, 0x72c83, 0x72c85, 0x72c87, 0x72c89, 0x72c8b, + 0x72c8d, 0x72c8f, 0x72c91, 0x72c93, 0x72c95, 0x72c97, 0x72c99, 0x72c9b, 0x72c9d, + 0x72c9f, 0x72ca1, 0x72ca3, 0x72ca5, 0x72ca7, 0x72ca9, 0x72cab, 0x72cad, 0x72caf, + 0x72cb1, 0x72cb3, 0x72cb5, 0x72cb7, 0x72cb9, 0x72cbb, 0x72cbd, 0x72cbf, 0x72cc1, + 0x72cc3, 0x72cc5, 0x72cc7, 0x72cc9, 0x72ccb, 0x72ccd, 0x72ccf, 0x72cd1, 0x72cd3, + 0x72cd5, 0x72cd7, 0x72cd9, 0x72cdb, 0x72cdd, 0x72cdf, 0x72ce1, 0x72ce3, 0x72ce4, + 0x72cec, 0x72cee, 0x72cf3, 0x72d27, 0x72d2d, 0x7a641, 0x7a643, 0x7a645, 0x7a647, + 0x7a649, 0x7a64b, 0x7a64d, 0x7a64f, 0x7a651, 0x7a653, 0x7a655, 0x7a657, 0x7a659, + 0x7a65b, 0x7a65d, 0x7a65f, 0x7a661, 0x7a663, 0x7a665, 0x7a667, 0x7a669, 0x7a66b, + 0x7a66d, 0x7a681, 0x7a683, 0x7a685, 0x7a687, 0x7a689, 0x7a68b, 0x7a68d, 0x7a68f, + 0x7a691, 0x7a693, 0x7a695, 0x7a697, 0x7a699, 0x7a69b, 0x7a723, 0x7a725, 0x7a727, + 0x7a729, 0x7a72b, 0x7a72d, 0x7a733, 0x7a735, 0x7a737, 0x7a739, 0x7a73b, 0x7a73d, + 0x7a73f, 0x7a741, 0x7a743, 0x7a745, 0x7a747, 0x7a749, 0x7a74b, 0x7a74d, 0x7a74f, + 0x7a751, 0x7a753, 0x7a755, 0x7a757, 0x7a759, 0x7a75b, 0x7a75d, 0x7a75f, 0x7a761, + 0x7a763, 0x7a765, 0x7a767, 0x7a769, 0x7a76b, 0x7a76d, 0x7a76f, 0x7a77a, 0x7a77c, + 0x7a77f, 0x7a781, 0x7a783, 0x7a785, 0x7a787, 0x7a78c, 0x7a78e, 0x7a791, 0x7a797, + 0x7a799, 0x7a79b, 0x7a79d, 0x7a79f, 0x7a7a1, 0x7a7a3, 0x7a7a5, 0x7a7a7, 0x7a7a9, + 0x7a7b5, 0x7a7b7, 0x7a7fa, 0x800b5, 0x80101, 0x80103, 0x80105, 0x80107, 0x80109, + 0x8010b, 0x8010d, 0x8010f, 0x80111, 0x80113, 0x80115, 0x80117, 0x80119, 0x8011b, + 0x8011d, 0x8011f, 0x80121, 0x80123, 0x80125, 0x80127, 0x80129, 0x8012b, 0x8012d, + 0x8012f, 0x80131, 0x80133, 0x80135, 0x80137, 0x80138, 0x8013a, 0x8013c, 0x8013e, + 0x80140, 0x80142, 0x80144, 0x80146, 0x80148, 0x80149, 0x8014b, 0x8014d, 0x8014f, + 0x80151, 0x80153, 0x80155, 0x80157, 0x80159, 0x8015b, 0x8015d, 0x8015f, 0x80161, + 0x80163, 0x80165, 0x80167, 0x80169, 0x8016b, 0x8016d, 0x8016f, 0x80171, 0x80173, + 0x80175, 0x80177, 0x8017a, 0x8017c, 0x80183, 0x80185, 0x80188, 0x8018c, 0x8018d, + 0x80192, 0x80195, 0x8019e, 0x801a1, 0x801a3, 0x801a5, 0x801a8, 0x801aa, 0x801ab, + 0x801ad, 0x801b0, 0x801b4, 0x801b6, 0x801b9, 0x801ba, 0x801c6, 0x801c9, 0x801cc, + 0x801ce, 0x801d0, 0x801d2, 0x801d4, 0x801d6, 0x801d8, 0x801da, 0x801dc, 0x801dd, + 0x801df, 0x801e1, 0x801e3, 0x801e5, 0x801e7, 0x801e9, 0x801eb, 0x801ed, 0x801ef, + 0x801f0, 0x801f3, 0x801f5, 0x801f9, 0x801fb, 0x801fd, 0x801ff, 0x80201, 0x80203, + 0x80205, 0x80207, 0x80209, 0x8020b, 0x8020d, 0x8020f, 0x80211, 0x80213, 0x80215, + 0x80217, 0x80219, 0x8021b, 0x8021d, 0x8021f, 0x80221, 0x80223, 0x80225, 0x80227, + 0x80229, 0x8022b, 0x8022d, 0x8022f, 0x80231, 0x8023c, 0x8023f, 0x80240, 0x80242, + 0x80247, 0x80249, 0x8024b, 0x8024d, 0x80371, 0x80373, 0x80377, 0x80390, 0x803d0, + 0x803d1, 0x803d9, 0x803db, 0x803dd, 0x803df, 0x803e1, 0x803e3, 0x803e5, 0x803e7, + 0x803e9, 0x803eb, 0x803ed, 0x803f5, 0x803f8, 0x803fb, 0x803fc, 0x80461, 0x80463, + 0x80465, 0x80467, 0x80469, 0x8046b, 0x8046d, 0x8046f, 0x80471, 0x80473, 0x80475, + 0x80477, 0x80479, 0x8047b, 0x8047d, 0x8047f, 0x80481, 0x8048b, 0x8048d, 0x8048f, + 0x80491, 0x80493, 0x80495, 0x80497, 0x80499, 0x8049b, 0x8049d, 0x8049f, 0x804a1, + 0x804a3, 0x804a5, 0x804a7, 0x804a9, 0x804ab, 0x804ad, 0x804af, 0x804b1, 0x804b3, + 0x804b5, 0x804b7, 0x804b9, 0x804bb, 0x804bd, 0x804bf, 0x804c2, 0x804c4, 0x804c6, + 0x804c8, 0x804ca, 0x804cc, 0x804ce, 0x804cf, 0x804d1, 0x804d3, 0x804d5, 0x804d7, + 0x804d9, 0x804db, 0x804dd, 0x804df, 0x804e1, 0x804e3, 0x804e5, 0x804e7, 0x804e9, + 0x804eb, 0x804ed, 0x804ef, 0x804f1, 0x804f3, 0x804f5, 0x804f7, 0x804f9, 0x804fb, + 0x804fd, 0x804ff, 0x80501, 0x80503, 0x80505, 0x80507, 0x80509, 0x8050b, 0x8050d, + 0x8050f, 0x80511, 0x80513, 0x80515, 0x80517, 0x80519, 0x8051b, 0x8051d, 0x8051f, + 0x80521, 0x80523, 0x80525, 0x80527, 0x80529, 0x8052b, 0x8052d, 0x8052f, 0x81e01, + 0x81e03, 0x81e05, 0x81e07, 0x81e09, 0x81e0b, 0x81e0d, 0x81e0f, 0x81e11, 0x81e13, + 0x81e15, 0x81e17, 0x81e19, 0x81e1b, 0x81e1d, 0x81e1f, 0x81e21, 0x81e23, 0x81e25, + 0x81e27, 0x81e29, 0x81e2b, 0x81e2d, 0x81e2f, 0x81e31, 0x81e33, 0x81e35, 0x81e37, + 0x81e39, 0x81e3b, 0x81e3d, 0x81e3f, 0x81e41, 0x81e43, 0x81e45, 0x81e47, 0x81e49, + 0x81e4b, 0x81e4d, 0x81e4f, 0x81e51, 0x81e53, 0x81e55, 0x81e57, 0x81e59, 0x81e5b, + 0x81e5d, 0x81e5f, 0x81e61, 0x81e63, 0x81e65, 0x81e67, 0x81e69, 0x81e6b, 0x81e6d, + 0x81e6f, 0x81e71, 0x81e73, 0x81e75, 0x81e77, 0x81e79, 0x81e7b, 0x81e7d, 0x81e7f, + 0x81e81, 0x81e83, 0x81e85, 0x81e87, 0x81e89, 0x81e8b, 0x81e8d, 0x81e8f, 0x81e91, + 0x81e93, 0x81e9f, 0x81ea1, 0x81ea3, 0x81ea5, 0x81ea7, 0x81ea9, 0x81eab, 0x81ead, + 0x81eaf, 0x81eb1, 0x81eb3, 0x81eb5, 0x81eb7, 0x81eb9, 0x81ebb, 0x81ebd, 0x81ebf, + 0x81ec1, 0x81ec3, 0x81ec5, 0x81ec7, 0x81ec9, 0x81ecb, 0x81ecd, 0x81ecf, 0x81ed1, + 0x81ed3, 0x81ed5, 0x81ed7, 0x81ed9, 0x81edb, 0x81edd, 0x81edf, 0x81ee1, 0x81ee3, + 0x81ee5, 0x81ee7, 0x81ee9, 0x81eeb, 0x81eed, 0x81eef, 0x81ef1, 0x81ef3, 0x81ef5, + 0x81ef7, 0x81ef9, 0x81efb, 0x81efd, 0x81fb6, 0x81fb7, 0x81fbe, 0x81fc6, 0x81fc7, + 0x81fd6, 0x81fd7, 0x81ff6, 0x81ff7, 0x8210a, 0x8210e, 0x8210f, 0x82113, 0x8212f, + 0x82134, 0x82139, 0x8213c, 0x8213d, 0x8214e, 0x82184, 0x82c61, 0x82c65, 0x82c66, + 0x82c68, 0x82c6a, 0x82c6c, 0x82c71, 0x82c73, 0x82c74, 0x82c81, 0x82c83, 0x82c85, + 0x82c87, 0x82c89, 0x82c8b, 0x82c8d, 0x82c8f, 0x82c91, 0x82c93, 0x82c95, 0x82c97, + 0x82c99, 0x82c9b, 0x82c9d, 0x82c9f, 0x82ca1, 0x82ca3, 0x82ca5, 0x82ca7, 0x82ca9, + 0x82cab, 0x82cad, 0x82caf, 0x82cb1, 0x82cb3, 0x82cb5, 0x82cb7, 0x82cb9, 0x82cbb, + 0x82cbd, 0x82cbf, 0x82cc1, 0x82cc3, 0x82cc5, 0x82cc7, 0x82cc9, 0x82ccb, 0x82ccd, + 0x82ccf, 0x82cd1, 0x82cd3, 0x82cd5, 0x82cd7, 0x82cd9, 0x82cdb, 0x82cdd, 0x82cdf, + 0x82ce1, 0x82ce3, 0x82ce4, 0x82cec, 0x82cee, 0x82cf3, 0x82d27, 0x82d2d, 0x8a641, + 0x8a643, 0x8a645, 0x8a647, 0x8a649, 0x8a64b, 0x8a64d, 0x8a64f, 0x8a651, 0x8a653, + 0x8a655, 0x8a657, 0x8a659, 0x8a65b, 0x8a65d, 0x8a65f, 0x8a661, 0x8a663, 0x8a665, + 0x8a667, 0x8a669, 0x8a66b, 0x8a66d, 0x8a681, 0x8a683, 0x8a685, 0x8a687, 0x8a689, + 0x8a68b, 0x8a68d, 0x8a68f, 0x8a691, 0x8a693, 0x8a695, 0x8a697, 0x8a699, 0x8a69b, + 0x8a723, 0x8a725, 0x8a727, 0x8a729, 0x8a72b, 0x8a72d, 0x8a733, 0x8a735, 0x8a737, + 0x8a739, 0x8a73b, 0x8a73d, 0x8a73f, 0x8a741, 0x8a743, 0x8a745, 0x8a747, 0x8a749, + 0x8a74b, 0x8a74d, 0x8a74f, 0x8a751, 0x8a753, 0x8a755, 0x8a757, 0x8a759, 0x8a75b, + 0x8a75d, 0x8a75f, 0x8a761, 0x8a763, 0x8a765, 0x8a767, 0x8a769, 0x8a76b, 0x8a76d, + 0x8a76f, 0x8a77a, 0x8a77c, 0x8a77f, 0x8a781, 0x8a783, 0x8a785, 0x8a787, 0x8a78c, + 0x8a78e, 0x8a791, 0x8a797, 0x8a799, 0x8a79b, 0x8a79d, 0x8a79f, 0x8a7a1, 0x8a7a3, + 0x8a7a5, 0x8a7a7, 0x8a7a9, 0x8a7b5, 0x8a7b7, 0x8a7fa, 0x900b5, 0x90101, 0x90103, + 0x90105, 0x90107, 0x90109, 0x9010b, 0x9010d, 0x9010f, 0x90111, 0x90113, 0x90115, + 0x90117, 0x90119, 0x9011b, 0x9011d, 0x9011f, 0x90121, 0x90123, 0x90125, 0x90127, + 0x90129, 0x9012b, 0x9012d, 0x9012f, 0x90131, 0x90133, 0x90135, 0x90137, 0x90138, + 0x9013a, 0x9013c, 0x9013e, 0x90140, 0x90142, 0x90144, 0x90146, 0x90148, 0x90149, + 0x9014b, 0x9014d, 0x9014f, 0x90151, 0x90153, 0x90155, 0x90157, 0x90159, 0x9015b, + 0x9015d, 0x9015f, 0x90161, 0x90163, 0x90165, 0x90167, 0x90169, 0x9016b, 0x9016d, + 0x9016f, 0x90171, 0x90173, 0x90175, 0x90177, 0x9017a, 0x9017c, 0x90183, 0x90185, + 0x90188, 0x9018c, 0x9018d, 0x90192, 0x90195, 0x9019e, 0x901a1, 0x901a3, 0x901a5, + 0x901a8, 0x901aa, 0x901ab, 0x901ad, 0x901b0, 0x901b4, 0x901b6, 0x901b9, 0x901ba, + 0x901c6, 0x901c9, 0x901cc, 0x901ce, 0x901d0, 0x901d2, 0x901d4, 0x901d6, 0x901d8, + 0x901da, 0x901dc, 0x901dd, 0x901df, 0x901e1, 0x901e3, 0x901e5, 0x901e7, 0x901e9, + 0x901eb, 0x901ed, 0x901ef, 0x901f0, 0x901f3, 0x901f5, 0x901f9, 0x901fb, 0x901fd, + 0x901ff, 0x90201, 0x90203, 0x90205, 0x90207, 0x90209, 0x9020b, 0x9020d, 0x9020f, + 0x90211, 0x90213, 0x90215, 0x90217, 0x90219, 0x9021b, 0x9021d, 0x9021f, 0x90221, + 0x90223, 0x90225, 0x90227, 0x90229, 0x9022b, 0x9022d, 0x9022f, 0x90231, 0x9023c, + 0x9023f, 0x90240, 0x90242, 0x90247, 0x90249, 0x9024b, 0x9024d, 0x90371, 0x90373, + 0x90377, 0x90390, 0x903d0, 0x903d1, 0x903d9, 0x903db, 0x903dd, 0x903df, 0x903e1, + 0x903e3, 0x903e5, 0x903e7, 0x903e9, 0x903eb, 0x903ed, 0x903f5, 0x903f8, 0x903fb, + 0x903fc, 0x90461, 0x90463, 0x90465, 0x90467, 0x90469, 0x9046b, 0x9046d, 0x9046f, + 0x90471, 0x90473, 0x90475, 0x90477, 0x90479, 0x9047b, 0x9047d, 0x9047f, 0x90481, + 0x9048b, 0x9048d, 0x9048f, 0x90491, 0x90493, 0x90495, 0x90497, 0x90499, 0x9049b, + 0x9049d, 0x9049f, 0x904a1, 0x904a3, 0x904a5, 0x904a7, 0x904a9, 0x904ab, 0x904ad, + 0x904af, 0x904b1, 0x904b3, 0x904b5, 0x904b7, 0x904b9, 0x904bb, 0x904bd, 0x904bf, + 0x904c2, 0x904c4, 0x904c6, 0x904c8, 0x904ca, 0x904cc, 0x904ce, 0x904cf, 0x904d1, + 0x904d3, 0x904d5, 0x904d7, 0x904d9, 0x904db, 0x904dd, 0x904df, 0x904e1, 0x904e3, + 0x904e5, 0x904e7, 0x904e9, 0x904eb, 0x904ed, 0x904ef, 0x904f1, 0x904f3, 0x904f5, + 0x904f7, 0x904f9, 0x904fb, 0x904fd, 0x904ff, 0x90501, 0x90503, 0x90505, 0x90507, + 0x90509, 0x9050b, 0x9050d, 0x9050f, 0x90511, 0x90513, 0x90515, 0x90517, 0x90519, + 0x9051b, 0x9051d, 0x9051f, 0x90521, 0x90523, 0x90525, 0x90527, 0x90529, 0x9052b, + 0x9052d, 0x9052f, 0x91e01, 0x91e03, 0x91e05, 0x91e07, 0x91e09, 0x91e0b, 0x91e0d, + 0x91e0f, 0x91e11, 0x91e13, 0x91e15, 0x91e17, 0x91e19, 0x91e1b, 0x91e1d, 0x91e1f, + 0x91e21, 0x91e23, 0x91e25, 0x91e27, 0x91e29, 0x91e2b, 0x91e2d, 0x91e2f, 0x91e31, + 0x91e33, 0x91e35, 0x91e37, 0x91e39, 0x91e3b, 0x91e3d, 0x91e3f, 0x91e41, 0x91e43, + 0x91e45, 0x91e47, 0x91e49, 0x91e4b, 0x91e4d, 0x91e4f, 0x91e51, 0x91e53, 0x91e55, + 0x91e57, 0x91e59, 0x91e5b, 0x91e5d, 0x91e5f, 0x91e61, 0x91e63, 0x91e65, 0x91e67, + 0x91e69, 0x91e6b, 0x91e6d, 0x91e6f, 0x91e71, 0x91e73, 0x91e75, 0x91e77, 0x91e79, + 0x91e7b, 0x91e7d, 0x91e7f, 0x91e81, 0x91e83, 0x91e85, 0x91e87, 0x91e89, 0x91e8b, + 0x91e8d, 0x91e8f, 0x91e91, 0x91e93, 0x91e9f, 0x91ea1, 0x91ea3, 0x91ea5, 0x91ea7, + 0x91ea9, 0x91eab, 0x91ead, 0x91eaf, 0x91eb1, 0x91eb3, 0x91eb5, 0x91eb7, 0x91eb9, + 0x91ebb, 0x91ebd, 0x91ebf, 0x91ec1, 0x91ec3, 0x91ec5, 0x91ec7, 0x91ec9, 0x91ecb, + 0x91ecd, 0x91ecf, 0x91ed1, 0x91ed3, 0x91ed5, 0x91ed7, 0x91ed9, 0x91edb, 0x91edd, + 0x91edf, 0x91ee1, 0x91ee3, 0x91ee5, 0x91ee7, 0x91ee9, 0x91eeb, 0x91eed, 0x91eef, + 0x91ef1, 0x91ef3, 0x91ef5, 0x91ef7, 0x91ef9, 0x91efb, 0x91efd, 0x91fb6, 0x91fb7, + 0x91fbe, 0x91fc6, 0x91fc7, 0x91fd6, 0x91fd7, 0x91ff6, 0x91ff7, 0x9210a, 0x9210e, + 0x9210f, 0x92113, 0x9212f, 0x92134, 0x92139, 0x9213c, 0x9213d, 0x9214e, 0x92184, + 0x92c61, 0x92c65, 0x92c66, 0x92c68, 0x92c6a, 0x92c6c, 0x92c71, 0x92c73, 0x92c74, + 0x92c81, 0x92c83, 0x92c85, 0x92c87, 0x92c89, 0x92c8b, 0x92c8d, 0x92c8f, 0x92c91, + 0x92c93, 0x92c95, 0x92c97, 0x92c99, 0x92c9b, 0x92c9d, 0x92c9f, 0x92ca1, 0x92ca3, + 0x92ca5, 0x92ca7, 0x92ca9, 0x92cab, 0x92cad, 0x92caf, 0x92cb1, 0x92cb3, 0x92cb5, + 0x92cb7, 0x92cb9, 0x92cbb, 0x92cbd, 0x92cbf, 0x92cc1, 0x92cc3, 0x92cc5, 0x92cc7, + 0x92cc9, 0x92ccb, 0x92ccd, 0x92ccf, 0x92cd1, 0x92cd3, 0x92cd5, 0x92cd7, 0x92cd9, + 0x92cdb, 0x92cdd, 0x92cdf, 0x92ce1, 0x92ce3, 0x92ce4, 0x92cec, 0x92cee, 0x92cf3, + 0x92d27, 0x92d2d, 0x9a641, 0x9a643, 0x9a645, 0x9a647, 0x9a649, 0x9a64b, 0x9a64d, + 0x9a64f, 0x9a651, 0x9a653, 0x9a655, 0x9a657, 0x9a659, 0x9a65b, 0x9a65d, 0x9a65f, + 0x9a661, 0x9a663, 0x9a665, 0x9a667, 0x9a669, 0x9a66b, 0x9a66d, 0x9a681, 0x9a683, + 0x9a685, 0x9a687, 0x9a689, 0x9a68b, 0x9a68d, 0x9a68f, 0x9a691, 0x9a693, 0x9a695, + 0x9a697, 0x9a699, 0x9a69b, 0x9a723, 0x9a725, 0x9a727, 0x9a729, 0x9a72b, 0x9a72d, + 0x9a733, 0x9a735, 0x9a737, 0x9a739, 0x9a73b, 0x9a73d, 0x9a73f, 0x9a741, 0x9a743, + 0x9a745, 0x9a747, 0x9a749, 0x9a74b, 0x9a74d, 0x9a74f, 0x9a751, 0x9a753, 0x9a755, + 0x9a757, 0x9a759, 0x9a75b, 0x9a75d, 0x9a75f, 0x9a761, 0x9a763, 0x9a765, 0x9a767, + 0x9a769, 0x9a76b, 0x9a76d, 0x9a76f, 0x9a77a, 0x9a77c, 0x9a77f, 0x9a781, 0x9a783, + 0x9a785, 0x9a787, 0x9a78c, 0x9a78e, 0x9a791, 0x9a797, 0x9a799, 0x9a79b, 0x9a79d, + 0x9a79f, 0x9a7a1, 0x9a7a3, 0x9a7a5, 0x9a7a7, 0x9a7a9, 0x9a7b5, 0x9a7b7, 0x9a7fa, + 0xa00b5, 0xa0101, 0xa0103, 0xa0105, 0xa0107, 0xa0109, 0xa010b, 0xa010d, 0xa010f, + 0xa0111, 0xa0113, 0xa0115, 0xa0117, 0xa0119, 0xa011b, 0xa011d, 0xa011f, 0xa0121, + 0xa0123, 0xa0125, 0xa0127, 0xa0129, 0xa012b, 0xa012d, 0xa012f, 0xa0131, 0xa0133, + 0xa0135, 0xa0137, 0xa0138, 0xa013a, 0xa013c, 0xa013e, 0xa0140, 0xa0142, 0xa0144, + 0xa0146, 0xa0148, 0xa0149, 0xa014b, 0xa014d, 0xa014f, 0xa0151, 0xa0153, 0xa0155, + 0xa0157, 0xa0159, 0xa015b, 0xa015d, 0xa015f, 0xa0161, 0xa0163, 0xa0165, 0xa0167, + 0xa0169, 0xa016b, 0xa016d, 0xa016f, 0xa0171, 0xa0173, 0xa0175, 0xa0177, 0xa017a, + 0xa017c, 0xa0183, 0xa0185, 0xa0188, 0xa018c, 0xa018d, 0xa0192, 0xa0195, 0xa019e, + 0xa01a1, 0xa01a3, 0xa01a5, 0xa01a8, 0xa01aa, 0xa01ab, 0xa01ad, 0xa01b0, 0xa01b4, + 0xa01b6, 0xa01b9, 0xa01ba, 0xa01c6, 0xa01c9, 0xa01cc, 0xa01ce, 0xa01d0, 0xa01d2, + 0xa01d4, 0xa01d6, 0xa01d8, 0xa01da, 0xa01dc, 0xa01dd, 0xa01df, 0xa01e1, 0xa01e3, + 0xa01e5, 0xa01e7, 0xa01e9, 0xa01eb, 0xa01ed, 0xa01ef, 0xa01f0, 0xa01f3, 0xa01f5, + 0xa01f9, 0xa01fb, 0xa01fd, 0xa01ff, 0xa0201, 0xa0203, 0xa0205, 0xa0207, 0xa0209, + 0xa020b, 0xa020d, 0xa020f, 0xa0211, 0xa0213, 0xa0215, 0xa0217, 0xa0219, 0xa021b, + 0xa021d, 0xa021f, 0xa0221, 0xa0223, 0xa0225, 0xa0227, 0xa0229, 0xa022b, 0xa022d, + 0xa022f, 0xa0231, 0xa023c, 0xa023f, 0xa0240, 0xa0242, 0xa0247, 0xa0249, 0xa024b, + 0xa024d, 0xa0371, 0xa0373, 0xa0377, 0xa0390, 0xa03d0, 0xa03d1, 0xa03d9, 0xa03db, + 0xa03dd, 0xa03df, 0xa03e1, 0xa03e3, 0xa03e5, 0xa03e7, 0xa03e9, 0xa03eb, 0xa03ed, + 0xa03f5, 0xa03f8, 0xa03fb, 0xa03fc, 0xa0461, 0xa0463, 0xa0465, 0xa0467, 0xa0469, + 0xa046b, 0xa046d, 0xa046f, 0xa0471, 0xa0473, 0xa0475, 0xa0477, 0xa0479, 0xa047b, + 0xa047d, 0xa047f, 0xa0481, 0xa048b, 0xa048d, 0xa048f, 0xa0491, 0xa0493, 0xa0495, + 0xa0497, 0xa0499, 0xa049b, 0xa049d, 0xa049f, 0xa04a1, 0xa04a3, 0xa04a5, 0xa04a7, + 0xa04a9, 0xa04ab, 0xa04ad, 0xa04af, 0xa04b1, 0xa04b3, 0xa04b5, 0xa04b7, 0xa04b9, + 0xa04bb, 0xa04bd, 0xa04bf, 0xa04c2, 0xa04c4, 0xa04c6, 0xa04c8, 0xa04ca, 0xa04cc, + 0xa04ce, 0xa04cf, 0xa04d1, 0xa04d3, 0xa04d5, 0xa04d7, 0xa04d9, 0xa04db, 0xa04dd, + 0xa04df, 0xa04e1, 0xa04e3, 0xa04e5, 0xa04e7, 0xa04e9, 0xa04eb, 0xa04ed, 0xa04ef, + 0xa04f1, 0xa04f3, 0xa04f5, 0xa04f7, 0xa04f9, 0xa04fb, 0xa04fd, 0xa04ff, 0xa0501, + 0xa0503, 0xa0505, 0xa0507, 0xa0509, 0xa050b, 0xa050d, 0xa050f, 0xa0511, 0xa0513, + 0xa0515, 0xa0517, 0xa0519, 0xa051b, 0xa051d, 0xa051f, 0xa0521, 0xa0523, 0xa0525, + 0xa0527, 0xa0529, 0xa052b, 0xa052d, 0xa052f, 0xa1e01, 0xa1e03, 0xa1e05, 0xa1e07, + 0xa1e09, 0xa1e0b, 0xa1e0d, 0xa1e0f, 0xa1e11, 0xa1e13, 0xa1e15, 0xa1e17, 0xa1e19, + 0xa1e1b, 0xa1e1d, 0xa1e1f, 0xa1e21, 0xa1e23, 0xa1e25, 0xa1e27, 0xa1e29, 0xa1e2b, + 0xa1e2d, 0xa1e2f, 0xa1e31, 0xa1e33, 0xa1e35, 0xa1e37, 0xa1e39, 0xa1e3b, 0xa1e3d, + 0xa1e3f, 0xa1e41, 0xa1e43, 0xa1e45, 0xa1e47, 0xa1e49, 0xa1e4b, 0xa1e4d, 0xa1e4f, + 0xa1e51, 0xa1e53, 0xa1e55, 0xa1e57, 0xa1e59, 0xa1e5b, 0xa1e5d, 0xa1e5f, 0xa1e61, + 0xa1e63, 0xa1e65, 0xa1e67, 0xa1e69, 0xa1e6b, 0xa1e6d, 0xa1e6f, 0xa1e71, 0xa1e73, + 0xa1e75, 0xa1e77, 0xa1e79, 0xa1e7b, 0xa1e7d, 0xa1e7f, 0xa1e81, 0xa1e83, 0xa1e85, + 0xa1e87, 0xa1e89, 0xa1e8b, 0xa1e8d, 0xa1e8f, 0xa1e91, 0xa1e93, 0xa1e9f, 0xa1ea1, + 0xa1ea3, 0xa1ea5, 0xa1ea7, 0xa1ea9, 0xa1eab, 0xa1ead, 0xa1eaf, 0xa1eb1, 0xa1eb3, + 0xa1eb5, 0xa1eb7, 0xa1eb9, 0xa1ebb, 0xa1ebd, 0xa1ebf, 0xa1ec1, 0xa1ec3, 0xa1ec5, + 0xa1ec7, 0xa1ec9, 0xa1ecb, 0xa1ecd, 0xa1ecf, 0xa1ed1, 0xa1ed3, 0xa1ed5, 0xa1ed7, + 0xa1ed9, 0xa1edb, 0xa1edd, 0xa1edf, 0xa1ee1, 0xa1ee3, 0xa1ee5, 0xa1ee7, 0xa1ee9, + 0xa1eeb, 0xa1eed, 0xa1eef, 0xa1ef1, 0xa1ef3, 0xa1ef5, 0xa1ef7, 0xa1ef9, 0xa1efb, + 0xa1efd, 0xa1fb6, 0xa1fb7, 0xa1fbe, 0xa1fc6, 0xa1fc7, 0xa1fd6, 0xa1fd7, 0xa1ff6, + 0xa1ff7, 0xa210a, 0xa210e, 0xa210f, 0xa2113, 0xa212f, 0xa2134, 0xa2139, 0xa213c, + 0xa213d, 0xa214e, 0xa2184, 0xa2c61, 0xa2c65, 0xa2c66, 0xa2c68, 0xa2c6a, 0xa2c6c, + 0xa2c71, 0xa2c73, 0xa2c74, 0xa2c81, 0xa2c83, 0xa2c85, 0xa2c87, 0xa2c89, 0xa2c8b, + 0xa2c8d, 0xa2c8f, 0xa2c91, 0xa2c93, 0xa2c95, 0xa2c97, 0xa2c99, 0xa2c9b, 0xa2c9d, + 0xa2c9f, 0xa2ca1, 0xa2ca3, 0xa2ca5, 0xa2ca7, 0xa2ca9, 0xa2cab, 0xa2cad, 0xa2caf, + 0xa2cb1, 0xa2cb3, 0xa2cb5, 0xa2cb7, 0xa2cb9, 0xa2cbb, 0xa2cbd, 0xa2cbf, 0xa2cc1, + 0xa2cc3, 0xa2cc5, 0xa2cc7, 0xa2cc9, 0xa2ccb, 0xa2ccd, 0xa2ccf, 0xa2cd1, 0xa2cd3, + 0xa2cd5, 0xa2cd7, 0xa2cd9, 0xa2cdb, 0xa2cdd, 0xa2cdf, 0xa2ce1, 0xa2ce3, 0xa2ce4, + 0xa2cec, 0xa2cee, 0xa2cf3, 0xa2d27, 0xa2d2d, 0xaa641, 0xaa643, 0xaa645, 0xaa647, + 0xaa649, 0xaa64b, 0xaa64d, 0xaa64f, 0xaa651, 0xaa653, 0xaa655, 0xaa657, 0xaa659, + 0xaa65b, 0xaa65d, 0xaa65f, 0xaa661, 0xaa663, 0xaa665, 0xaa667, 0xaa669, 0xaa66b, + 0xaa66d, 0xaa681, 0xaa683, 0xaa685, 0xaa687, 0xaa689, 0xaa68b, 0xaa68d, 0xaa68f, + 0xaa691, 0xaa693, 0xaa695, 0xaa697, 0xaa699, 0xaa69b, 0xaa723, 0xaa725, 0xaa727, + 0xaa729, 0xaa72b, 0xaa72d, 0xaa733, 0xaa735, 0xaa737, 0xaa739, 0xaa73b, 0xaa73d, + 0xaa73f, 0xaa741, 0xaa743, 0xaa745, 0xaa747, 0xaa749, 0xaa74b, 0xaa74d, 0xaa74f, + 0xaa751, 0xaa753, 0xaa755, 0xaa757, 0xaa759, 0xaa75b, 0xaa75d, 0xaa75f, 0xaa761, + 0xaa763, 0xaa765, 0xaa767, 0xaa769, 0xaa76b, 0xaa76d, 0xaa76f, 0xaa77a, 0xaa77c, + 0xaa77f, 0xaa781, 0xaa783, 0xaa785, 0xaa787, 0xaa78c, 0xaa78e, 0xaa791, 0xaa797, + 0xaa799, 0xaa79b, 0xaa79d, 0xaa79f, 0xaa7a1, 0xaa7a3, 0xaa7a5, 0xaa7a7, 0xaa7a9, + 0xaa7b5, 0xaa7b7, 0xaa7fa, 0xb00b5, 0xb0101, 0xb0103, 0xb0105, 0xb0107, 0xb0109, + 0xb010b, 0xb010d, 0xb010f, 0xb0111, 0xb0113, 0xb0115, 0xb0117, 0xb0119, 0xb011b, + 0xb011d, 0xb011f, 0xb0121, 0xb0123, 0xb0125, 0xb0127, 0xb0129, 0xb012b, 0xb012d, + 0xb012f, 0xb0131, 0xb0133, 0xb0135, 0xb0137, 0xb0138, 0xb013a, 0xb013c, 0xb013e, + 0xb0140, 0xb0142, 0xb0144, 0xb0146, 0xb0148, 0xb0149, 0xb014b, 0xb014d, 0xb014f, + 0xb0151, 0xb0153, 0xb0155, 0xb0157, 0xb0159, 0xb015b, 0xb015d, 0xb015f, 0xb0161, + 0xb0163, 0xb0165, 0xb0167, 0xb0169, 0xb016b, 0xb016d, 0xb016f, 0xb0171, 0xb0173, + 0xb0175, 0xb0177, 0xb017a, 0xb017c, 0xb0183, 0xb0185, 0xb0188, 0xb018c, 0xb018d, + 0xb0192, 0xb0195, 0xb019e, 0xb01a1, 0xb01a3, 0xb01a5, 0xb01a8, 0xb01aa, 0xb01ab, + 0xb01ad, 0xb01b0, 0xb01b4, 0xb01b6, 0xb01b9, 0xb01ba, 0xb01c6, 0xb01c9, 0xb01cc, + 0xb01ce, 0xb01d0, 0xb01d2, 0xb01d4, 0xb01d6, 0xb01d8, 0xb01da, 0xb01dc, 0xb01dd, + 0xb01df, 0xb01e1, 0xb01e3, 0xb01e5, 0xb01e7, 0xb01e9, 0xb01eb, 0xb01ed, 0xb01ef, + 0xb01f0, 0xb01f3, 0xb01f5, 0xb01f9, 0xb01fb, 0xb01fd, 0xb01ff, 0xb0201, 0xb0203, + 0xb0205, 0xb0207, 0xb0209, 0xb020b, 0xb020d, 0xb020f, 0xb0211, 0xb0213, 0xb0215, + 0xb0217, 0xb0219, 0xb021b, 0xb021d, 0xb021f, 0xb0221, 0xb0223, 0xb0225, 0xb0227, + 0xb0229, 0xb022b, 0xb022d, 0xb022f, 0xb0231, 0xb023c, 0xb023f, 0xb0240, 0xb0242, + 0xb0247, 0xb0249, 0xb024b, 0xb024d, 0xb0371, 0xb0373, 0xb0377, 0xb0390, 0xb03d0, + 0xb03d1, 0xb03d9, 0xb03db, 0xb03dd, 0xb03df, 0xb03e1, 0xb03e3, 0xb03e5, 0xb03e7, + 0xb03e9, 0xb03eb, 0xb03ed, 0xb03f5, 0xb03f8, 0xb03fb, 0xb03fc, 0xb0461, 0xb0463, + 0xb0465, 0xb0467, 0xb0469, 0xb046b, 0xb046d, 0xb046f, 0xb0471, 0xb0473, 0xb0475, + 0xb0477, 0xb0479, 0xb047b, 0xb047d, 0xb047f, 0xb0481, 0xb048b, 0xb048d, 0xb048f, + 0xb0491, 0xb0493, 0xb0495, 0xb0497, 0xb0499, 0xb049b, 0xb049d, 0xb049f, 0xb04a1, + 0xb04a3, 0xb04a5, 0xb04a7, 0xb04a9, 0xb04ab, 0xb04ad, 0xb04af, 0xb04b1, 0xb04b3, + 0xb04b5, 0xb04b7, 0xb04b9, 0xb04bb, 0xb04bd, 0xb04bf, 0xb04c2, 0xb04c4, 0xb04c6, + 0xb04c8, 0xb04ca, 0xb04cc, 0xb04ce, 0xb04cf, 0xb04d1, 0xb04d3, 0xb04d5, 0xb04d7, + 0xb04d9, 0xb04db, 0xb04dd, 0xb04df, 0xb04e1, 0xb04e3, 0xb04e5, 0xb04e7, 0xb04e9, + 0xb04eb, 0xb04ed, 0xb04ef, 0xb04f1, 0xb04f3, 0xb04f5, 0xb04f7, 0xb04f9, 0xb04fb, + 0xb04fd, 0xb04ff, 0xb0501, 0xb0503, 0xb0505, 0xb0507, 0xb0509, 0xb050b, 0xb050d, + 0xb050f, 0xb0511, 0xb0513, 0xb0515, 0xb0517, 0xb0519, 0xb051b, 0xb051d, 0xb051f, + 0xb0521, 0xb0523, 0xb0525, 0xb0527, 0xb0529, 0xb052b, 0xb052d, 0xb052f, 0xb1e01, + 0xb1e03, 0xb1e05, 0xb1e07, 0xb1e09, 0xb1e0b, 0xb1e0d, 0xb1e0f, 0xb1e11, 0xb1e13, + 0xb1e15, 0xb1e17, 0xb1e19, 0xb1e1b, 0xb1e1d, 0xb1e1f, 0xb1e21, 0xb1e23, 0xb1e25, + 0xb1e27, 0xb1e29, 0xb1e2b, 0xb1e2d, 0xb1e2f, 0xb1e31, 0xb1e33, 0xb1e35, 0xb1e37, + 0xb1e39, 0xb1e3b, 0xb1e3d, 0xb1e3f, 0xb1e41, 0xb1e43, 0xb1e45, 0xb1e47, 0xb1e49, + 0xb1e4b, 0xb1e4d, 0xb1e4f, 0xb1e51, 0xb1e53, 0xb1e55, 0xb1e57, 0xb1e59, 0xb1e5b, + 0xb1e5d, 0xb1e5f, 0xb1e61, 0xb1e63, 0xb1e65, 0xb1e67, 0xb1e69, 0xb1e6b, 0xb1e6d, + 0xb1e6f, 0xb1e71, 0xb1e73, 0xb1e75, 0xb1e77, 0xb1e79, 0xb1e7b, 0xb1e7d, 0xb1e7f, + 0xb1e81, 0xb1e83, 0xb1e85, 0xb1e87, 0xb1e89, 0xb1e8b, 0xb1e8d, 0xb1e8f, 0xb1e91, + 0xb1e93, 0xb1e9f, 0xb1ea1, 0xb1ea3, 0xb1ea5, 0xb1ea7, 0xb1ea9, 0xb1eab, 0xb1ead, + 0xb1eaf, 0xb1eb1, 0xb1eb3, 0xb1eb5, 0xb1eb7, 0xb1eb9, 0xb1ebb, 0xb1ebd, 0xb1ebf, + 0xb1ec1, 0xb1ec3, 0xb1ec5, 0xb1ec7, 0xb1ec9, 0xb1ecb, 0xb1ecd, 0xb1ecf, 0xb1ed1, + 0xb1ed3, 0xb1ed5, 0xb1ed7, 0xb1ed9, 0xb1edb, 0xb1edd, 0xb1edf, 0xb1ee1, 0xb1ee3, + 0xb1ee5, 0xb1ee7, 0xb1ee9, 0xb1eeb, 0xb1eed, 0xb1eef, 0xb1ef1, 0xb1ef3, 0xb1ef5, + 0xb1ef7, 0xb1ef9, 0xb1efb, 0xb1efd, 0xb1fb6, 0xb1fb7, 0xb1fbe, 0xb1fc6, 0xb1fc7, + 0xb1fd6, 0xb1fd7, 0xb1ff6, 0xb1ff7, 0xb210a, 0xb210e, 0xb210f, 0xb2113, 0xb212f, + 0xb2134, 0xb2139, 0xb213c, 0xb213d, 0xb214e, 0xb2184, 0xb2c61, 0xb2c65, 0xb2c66, + 0xb2c68, 0xb2c6a, 0xb2c6c, 0xb2c71, 0xb2c73, 0xb2c74, 0xb2c81, 0xb2c83, 0xb2c85, + 0xb2c87, 0xb2c89, 0xb2c8b, 0xb2c8d, 0xb2c8f, 0xb2c91, 0xb2c93, 0xb2c95, 0xb2c97, + 0xb2c99, 0xb2c9b, 0xb2c9d, 0xb2c9f, 0xb2ca1, 0xb2ca3, 0xb2ca5, 0xb2ca7, 0xb2ca9, + 0xb2cab, 0xb2cad, 0xb2caf, 0xb2cb1, 0xb2cb3, 0xb2cb5, 0xb2cb7, 0xb2cb9, 0xb2cbb, + 0xb2cbd, 0xb2cbf, 0xb2cc1, 0xb2cc3, 0xb2cc5, 0xb2cc7, 0xb2cc9, 0xb2ccb, 0xb2ccd, + 0xb2ccf, 0xb2cd1, 0xb2cd3, 0xb2cd5, 0xb2cd7, 0xb2cd9, 0xb2cdb, 0xb2cdd, 0xb2cdf, + 0xb2ce1, 0xb2ce3, 0xb2ce4, 0xb2cec, 0xb2cee, 0xb2cf3, 0xb2d27, 0xb2d2d, 0xba641, + 0xba643, 0xba645, 0xba647, 0xba649, 0xba64b, 0xba64d, 0xba64f, 0xba651, 0xba653, + 0xba655, 0xba657, 0xba659, 0xba65b, 0xba65d, 0xba65f, 0xba661, 0xba663, 0xba665, + 0xba667, 0xba669, 0xba66b, 0xba66d, 0xba681, 0xba683, 0xba685, 0xba687, 0xba689, + 0xba68b, 0xba68d, 0xba68f, 0xba691, 0xba693, 0xba695, 0xba697, 0xba699, 0xba69b, + 0xba723, 0xba725, 0xba727, 0xba729, 0xba72b, 0xba72d, 0xba733, 0xba735, 0xba737, + 0xba739, 0xba73b, 0xba73d, 0xba73f, 0xba741, 0xba743, 0xba745, 0xba747, 0xba749, + 0xba74b, 0xba74d, 0xba74f, 0xba751, 0xba753, 0xba755, 0xba757, 0xba759, 0xba75b, + 0xba75d, 0xba75f, 0xba761, 0xba763, 0xba765, 0xba767, 0xba769, 0xba76b, 0xba76d, + 0xba76f, 0xba77a, 0xba77c, 0xba77f, 0xba781, 0xba783, 0xba785, 0xba787, 0xba78c, + 0xba78e, 0xba791, 0xba797, 0xba799, 0xba79b, 0xba79d, 0xba79f, 0xba7a1, 0xba7a3, + 0xba7a5, 0xba7a7, 0xba7a9, 0xba7b5, 0xba7b7, 0xba7fa, 0xc00b5, 0xc0101, 0xc0103, + 0xc0105, 0xc0107, 0xc0109, 0xc010b, 0xc010d, 0xc010f, 0xc0111, 0xc0113, 0xc0115, + 0xc0117, 0xc0119, 0xc011b, 0xc011d, 0xc011f, 0xc0121, 0xc0123, 0xc0125, 0xc0127, + 0xc0129, 0xc012b, 0xc012d, 0xc012f, 0xc0131, 0xc0133, 0xc0135, 0xc0137, 0xc0138, + 0xc013a, 0xc013c, 0xc013e, 0xc0140, 0xc0142, 0xc0144, 0xc0146, 0xc0148, 0xc0149, + 0xc014b, 0xc014d, 0xc014f, 0xc0151, 0xc0153, 0xc0155, 0xc0157, 0xc0159, 0xc015b, + 0xc015d, 0xc015f, 0xc0161, 0xc0163, 0xc0165, 0xc0167, 0xc0169, 0xc016b, 0xc016d, + 0xc016f, 0xc0171, 0xc0173, 0xc0175, 0xc0177, 0xc017a, 0xc017c, 0xc0183, 0xc0185, + 0xc0188, 0xc018c, 0xc018d, 0xc0192, 0xc0195, 0xc019e, 0xc01a1, 0xc01a3, 0xc01a5, + 0xc01a8, 0xc01aa, 0xc01ab, 0xc01ad, 0xc01b0, 0xc01b4, 0xc01b6, 0xc01b9, 0xc01ba, + 0xc01c6, 0xc01c9, 0xc01cc, 0xc01ce, 0xc01d0, 0xc01d2, 0xc01d4, 0xc01d6, 0xc01d8, + 0xc01da, 0xc01dc, 0xc01dd, 0xc01df, 0xc01e1, 0xc01e3, 0xc01e5, 0xc01e7, 0xc01e9, + 0xc01eb, 0xc01ed, 0xc01ef, 0xc01f0, 0xc01f3, 0xc01f5, 0xc01f9, 0xc01fb, 0xc01fd, + 0xc01ff, 0xc0201, 0xc0203, 0xc0205, 0xc0207, 0xc0209, 0xc020b, 0xc020d, 0xc020f, + 0xc0211, 0xc0213, 0xc0215, 0xc0217, 0xc0219, 0xc021b, 0xc021d, 0xc021f, 0xc0221, + 0xc0223, 0xc0225, 0xc0227, 0xc0229, 0xc022b, 0xc022d, 0xc022f, 0xc0231, 0xc023c, + 0xc023f, 0xc0240, 0xc0242, 0xc0247, 0xc0249, 0xc024b, 0xc024d, 0xc0371, 0xc0373, + 0xc0377, 0xc0390, 0xc03d0, 0xc03d1, 0xc03d9, 0xc03db, 0xc03dd, 0xc03df, 0xc03e1, + 0xc03e3, 0xc03e5, 0xc03e7, 0xc03e9, 0xc03eb, 0xc03ed, 0xc03f5, 0xc03f8, 0xc03fb, + 0xc03fc, 0xc0461, 0xc0463, 0xc0465, 0xc0467, 0xc0469, 0xc046b, 0xc046d, 0xc046f, + 0xc0471, 0xc0473, 0xc0475, 0xc0477, 0xc0479, 0xc047b, 0xc047d, 0xc047f, 0xc0481, + 0xc048b, 0xc048d, 0xc048f, 0xc0491, 0xc0493, 0xc0495, 0xc0497, 0xc0499, 0xc049b, + 0xc049d, 0xc049f, 0xc04a1, 0xc04a3, 0xc04a5, 0xc04a7, 0xc04a9, 0xc04ab, 0xc04ad, + 0xc04af, 0xc04b1, 0xc04b3, 0xc04b5, 0xc04b7, 0xc04b9, 0xc04bb, 0xc04bd, 0xc04bf, + 0xc04c2, 0xc04c4, 0xc04c6, 0xc04c8, 0xc04ca, 0xc04cc, 0xc04ce, 0xc04cf, 0xc04d1, + 0xc04d3, 0xc04d5, 0xc04d7, 0xc04d9, 0xc04db, 0xc04dd, 0xc04df, 0xc04e1, 0xc04e3, + 0xc04e5, 0xc04e7, 0xc04e9, 0xc04eb, 0xc04ed, 0xc04ef, 0xc04f1, 0xc04f3, 0xc04f5, + 0xc04f7, 0xc04f9, 0xc04fb, 0xc04fd, 0xc04ff, 0xc0501, 0xc0503, 0xc0505, 0xc0507, + 0xc0509, 0xc050b, 0xc050d, 0xc050f, 0xc0511, 0xc0513, 0xc0515, 0xc0517, 0xc0519, + 0xc051b, 0xc051d, 0xc051f, 0xc0521, 0xc0523, 0xc0525, 0xc0527, 0xc0529, 0xc052b, + 0xc052d, 0xc052f, 0xc1e01, 0xc1e03, 0xc1e05, 0xc1e07, 0xc1e09, 0xc1e0b, 0xc1e0d, + 0xc1e0f, 0xc1e11, 0xc1e13, 0xc1e15, 0xc1e17, 0xc1e19, 0xc1e1b, 0xc1e1d, 0xc1e1f, + 0xc1e21, 0xc1e23, 0xc1e25, 0xc1e27, 0xc1e29, 0xc1e2b, 0xc1e2d, 0xc1e2f, 0xc1e31, + 0xc1e33, 0xc1e35, 0xc1e37, 0xc1e39, 0xc1e3b, 0xc1e3d, 0xc1e3f, 0xc1e41, 0xc1e43, + 0xc1e45, 0xc1e47, 0xc1e49, 0xc1e4b, 0xc1e4d, 0xc1e4f, 0xc1e51, 0xc1e53, 0xc1e55, + 0xc1e57, 0xc1e59, 0xc1e5b, 0xc1e5d, 0xc1e5f, 0xc1e61, 0xc1e63, 0xc1e65, 0xc1e67, + 0xc1e69, 0xc1e6b, 0xc1e6d, 0xc1e6f, 0xc1e71, 0xc1e73, 0xc1e75, 0xc1e77, 0xc1e79, + 0xc1e7b, 0xc1e7d, 0xc1e7f, 0xc1e81, 0xc1e83, 0xc1e85, 0xc1e87, 0xc1e89, 0xc1e8b, + 0xc1e8d, 0xc1e8f, 0xc1e91, 0xc1e93, 0xc1e9f, 0xc1ea1, 0xc1ea3, 0xc1ea5, 0xc1ea7, + 0xc1ea9, 0xc1eab, 0xc1ead, 0xc1eaf, 0xc1eb1, 0xc1eb3, 0xc1eb5, 0xc1eb7, 0xc1eb9, + 0xc1ebb, 0xc1ebd, 0xc1ebf, 0xc1ec1, 0xc1ec3, 0xc1ec5, 0xc1ec7, 0xc1ec9, 0xc1ecb, + 0xc1ecd, 0xc1ecf, 0xc1ed1, 0xc1ed3, 0xc1ed5, 0xc1ed7, 0xc1ed9, 0xc1edb, 0xc1edd, + 0xc1edf, 0xc1ee1, 0xc1ee3, 0xc1ee5, 0xc1ee7, 0xc1ee9, 0xc1eeb, 0xc1eed, 0xc1eef, + 0xc1ef1, 0xc1ef3, 0xc1ef5, 0xc1ef7, 0xc1ef9, 0xc1efb, 0xc1efd, 0xc1fb6, 0xc1fb7, + 0xc1fbe, 0xc1fc6, 0xc1fc7, 0xc1fd6, 0xc1fd7, 0xc1ff6, 0xc1ff7, 0xc210a, 0xc210e, + 0xc210f, 0xc2113, 0xc212f, 0xc2134, 0xc2139, 0xc213c, 0xc213d, 0xc214e, 0xc2184, + 0xc2c61, 0xc2c65, 0xc2c66, 0xc2c68, 0xc2c6a, 0xc2c6c, 0xc2c71, 0xc2c73, 0xc2c74, + 0xc2c81, 0xc2c83, 0xc2c85, 0xc2c87, 0xc2c89, 0xc2c8b, 0xc2c8d, 0xc2c8f, 0xc2c91, + 0xc2c93, 0xc2c95, 0xc2c97, 0xc2c99, 0xc2c9b, 0xc2c9d, 0xc2c9f, 0xc2ca1, 0xc2ca3, + 0xc2ca5, 0xc2ca7, 0xc2ca9, 0xc2cab, 0xc2cad, 0xc2caf, 0xc2cb1, 0xc2cb3, 0xc2cb5, + 0xc2cb7, 0xc2cb9, 0xc2cbb, 0xc2cbd, 0xc2cbf, 0xc2cc1, 0xc2cc3, 0xc2cc5, 0xc2cc7, + 0xc2cc9, 0xc2ccb, 0xc2ccd, 0xc2ccf, 0xc2cd1, 0xc2cd3, 0xc2cd5, 0xc2cd7, 0xc2cd9, + 0xc2cdb, 0xc2cdd, 0xc2cdf, 0xc2ce1, 0xc2ce3, 0xc2ce4, 0xc2cec, 0xc2cee, 0xc2cf3, + 0xc2d27, 0xc2d2d, 0xca641, 0xca643, 0xca645, 0xca647, 0xca649, 0xca64b, 0xca64d, + 0xca64f, 0xca651, 0xca653, 0xca655, 0xca657, 0xca659, 0xca65b, 0xca65d, 0xca65f, + 0xca661, 0xca663, 0xca665, 0xca667, 0xca669, 0xca66b, 0xca66d, 0xca681, 0xca683, + 0xca685, 0xca687, 0xca689, 0xca68b, 0xca68d, 0xca68f, 0xca691, 0xca693, 0xca695, + 0xca697, 0xca699, 0xca69b, 0xca723, 0xca725, 0xca727, 0xca729, 0xca72b, 0xca72d, + 0xca733, 0xca735, 0xca737, 0xca739, 0xca73b, 0xca73d, 0xca73f, 0xca741, 0xca743, + 0xca745, 0xca747, 0xca749, 0xca74b, 0xca74d, 0xca74f, 0xca751, 0xca753, 0xca755, + 0xca757, 0xca759, 0xca75b, 0xca75d, 0xca75f, 0xca761, 0xca763, 0xca765, 0xca767, + 0xca769, 0xca76b, 0xca76d, 0xca76f, 0xca77a, 0xca77c, 0xca77f, 0xca781, 0xca783, + 0xca785, 0xca787, 0xca78c, 0xca78e, 0xca791, 0xca797, 0xca799, 0xca79b, 0xca79d, + 0xca79f, 0xca7a1, 0xca7a3, 0xca7a5, 0xca7a7, 0xca7a9, 0xca7b5, 0xca7b7, 0xca7fa, + 0xd00b5, 0xd0101, 0xd0103, 0xd0105, 0xd0107, 0xd0109, 0xd010b, 0xd010d, 0xd010f, + 0xd0111, 0xd0113, 0xd0115, 0xd0117, 0xd0119, 0xd011b, 0xd011d, 0xd011f, 0xd0121, + 0xd0123, 0xd0125, 0xd0127, 0xd0129, 0xd012b, 0xd012d, 0xd012f, 0xd0131, 0xd0133, + 0xd0135, 0xd0137, 0xd0138, 0xd013a, 0xd013c, 0xd013e, 0xd0140, 0xd0142, 0xd0144, + 0xd0146, 0xd0148, 0xd0149, 0xd014b, 0xd014d, 0xd014f, 0xd0151, 0xd0153, 0xd0155, + 0xd0157, 0xd0159, 0xd015b, 0xd015d, 0xd015f, 0xd0161, 0xd0163, 0xd0165, 0xd0167, + 0xd0169, 0xd016b, 0xd016d, 0xd016f, 0xd0171, 0xd0173, 0xd0175, 0xd0177, 0xd017a, + 0xd017c, 0xd0183, 0xd0185, 0xd0188, 0xd018c, 0xd018d, 0xd0192, 0xd0195, 0xd019e, + 0xd01a1, 0xd01a3, 0xd01a5, 0xd01a8, 0xd01aa, 0xd01ab, 0xd01ad, 0xd01b0, 0xd01b4, + 0xd01b6, 0xd01b9, 0xd01ba, 0xd01c6, 0xd01c9, 0xd01cc, 0xd01ce, 0xd01d0, 0xd01d2, + 0xd01d4, 0xd01d6, 0xd01d8, 0xd01da, 0xd01dc, 0xd01dd, 0xd01df, 0xd01e1, 0xd01e3, + 0xd01e5, 0xd01e7, 0xd01e9, 0xd01eb, 0xd01ed, 0xd01ef, 0xd01f0, 0xd01f3, 0xd01f5, + 0xd01f9, 0xd01fb, 0xd01fd, 0xd01ff, 0xd0201, 0xd0203, 0xd0205, 0xd0207, 0xd0209, + 0xd020b, 0xd020d, 0xd020f, 0xd0211, 0xd0213, 0xd0215, 0xd0217, 0xd0219, 0xd021b, + 0xd021d, 0xd021f, 0xd0221, 0xd0223, 0xd0225, 0xd0227, 0xd0229, 0xd022b, 0xd022d, + 0xd022f, 0xd0231, 0xd023c, 0xd023f, 0xd0240, 0xd0242, 0xd0247, 0xd0249, 0xd024b, + 0xd024d, 0xd0371, 0xd0373, 0xd0377, 0xd0390, 0xd03d0, 0xd03d1, 0xd03d9, 0xd03db, + 0xd03dd, 0xd03df, 0xd03e1, 0xd03e3, 0xd03e5, 0xd03e7, 0xd03e9, 0xd03eb, 0xd03ed, + 0xd03f5, 0xd03f8, 0xd03fb, 0xd03fc, 0xd0461, 0xd0463, 0xd0465, 0xd0467, 0xd0469, + 0xd046b, 0xd046d, 0xd046f, 0xd0471, 0xd0473, 0xd0475, 0xd0477, 0xd0479, 0xd047b, + 0xd047d, 0xd047f, 0xd0481, 0xd048b, 0xd048d, 0xd048f, 0xd0491, 0xd0493, 0xd0495, + 0xd0497, 0xd0499, 0xd049b, 0xd049d, 0xd049f, 0xd04a1, 0xd04a3, 0xd04a5, 0xd04a7, + 0xd04a9, 0xd04ab, 0xd04ad, 0xd04af, 0xd04b1, 0xd04b3, 0xd04b5, 0xd04b7, 0xd04b9, + 0xd04bb, 0xd04bd, 0xd04bf, 0xd04c2, 0xd04c4, 0xd04c6, 0xd04c8, 0xd04ca, 0xd04cc, + 0xd04ce, 0xd04cf, 0xd04d1, 0xd04d3, 0xd04d5, 0xd04d7, 0xd04d9, 0xd04db, 0xd04dd, + 0xd04df, 0xd04e1, 0xd04e3, 0xd04e5, 0xd04e7, 0xd04e9, 0xd04eb, 0xd04ed, 0xd04ef, + 0xd04f1, 0xd04f3, 0xd04f5, 0xd04f7, 0xd04f9, 0xd04fb, 0xd04fd, 0xd04ff, 0xd0501, + 0xd0503, 0xd0505, 0xd0507, 0xd0509, 0xd050b, 0xd050d, 0xd050f, 0xd0511, 0xd0513, + 0xd0515, 0xd0517, 0xd0519, 0xd051b, 0xd051d, 0xd051f, 0xd0521, 0xd0523, 0xd0525, + 0xd0527, 0xd0529, 0xd052b, 0xd052d, 0xd052f, 0xd1e01, 0xd1e03, 0xd1e05, 0xd1e07, + 0xd1e09, 0xd1e0b, 0xd1e0d, 0xd1e0f, 0xd1e11, 0xd1e13, 0xd1e15, 0xd1e17, 0xd1e19, + 0xd1e1b, 0xd1e1d, 0xd1e1f, 0xd1e21, 0xd1e23, 0xd1e25, 0xd1e27, 0xd1e29, 0xd1e2b, + 0xd1e2d, 0xd1e2f, 0xd1e31, 0xd1e33, 0xd1e35, 0xd1e37, 0xd1e39, 0xd1e3b, 0xd1e3d, + 0xd1e3f, 0xd1e41, 0xd1e43, 0xd1e45, 0xd1e47, 0xd1e49, 0xd1e4b, 0xd1e4d, 0xd1e4f, + 0xd1e51, 0xd1e53, 0xd1e55, 0xd1e57, 0xd1e59, 0xd1e5b, 0xd1e5d, 0xd1e5f, 0xd1e61, + 0xd1e63, 0xd1e65, 0xd1e67, 0xd1e69, 0xd1e6b, 0xd1e6d, 0xd1e6f, 0xd1e71, 0xd1e73, + 0xd1e75, 0xd1e77, 0xd1e79, 0xd1e7b, 0xd1e7d, 0xd1e7f, 0xd1e81, 0xd1e83, 0xd1e85, + 0xd1e87, 0xd1e89, 0xd1e8b, 0xd1e8d, 0xd1e8f, 0xd1e91, 0xd1e93, 0xd1e9f, 0xd1ea1, + 0xd1ea3, 0xd1ea5, 0xd1ea7, 0xd1ea9, 0xd1eab, 0xd1ead, 0xd1eaf, 0xd1eb1, 0xd1eb3, + 0xd1eb5, 0xd1eb7, 0xd1eb9, 0xd1ebb, 0xd1ebd, 0xd1ebf, 0xd1ec1, 0xd1ec3, 0xd1ec5, + 0xd1ec7, 0xd1ec9, 0xd1ecb, 0xd1ecd, 0xd1ecf, 0xd1ed1, 0xd1ed3, 0xd1ed5, 0xd1ed7, + 0xd1ed9, 0xd1edb, 0xd1edd, 0xd1edf, 0xd1ee1, 0xd1ee3, 0xd1ee5, 0xd1ee7, 0xd1ee9, + 0xd1eeb, 0xd1eed, 0xd1eef, 0xd1ef1, 0xd1ef3, 0xd1ef5, 0xd1ef7, 0xd1ef9, 0xd1efb, + 0xd1efd, 0xd1fb6, 0xd1fb7, 0xd1fbe, 0xd1fc6, 0xd1fc7, 0xd1fd6, 0xd1fd7, 0xd1ff6, + 0xd1ff7, 0xd210a, 0xd210e, 0xd210f, 0xd2113, 0xd212f, 0xd2134, 0xd2139, 0xd213c, + 0xd213d, 0xd214e, 0xd2184, 0xd2c61, 0xd2c65, 0xd2c66, 0xd2c68, 0xd2c6a, 0xd2c6c, + 0xd2c71, 0xd2c73, 0xd2c74, 0xd2c81, 0xd2c83, 0xd2c85, 0xd2c87, 0xd2c89, 0xd2c8b, + 0xd2c8d, 0xd2c8f, 0xd2c91, 0xd2c93, 0xd2c95, 0xd2c97, 0xd2c99, 0xd2c9b, 0xd2c9d, + 0xd2c9f, 0xd2ca1, 0xd2ca3, 0xd2ca5, 0xd2ca7, 0xd2ca9, 0xd2cab, 0xd2cad, 0xd2caf, + 0xd2cb1, 0xd2cb3, 0xd2cb5, 0xd2cb7, 0xd2cb9, 0xd2cbb, 0xd2cbd, 0xd2cbf, 0xd2cc1, + 0xd2cc3, 0xd2cc5, 0xd2cc7, 0xd2cc9, 0xd2ccb, 0xd2ccd, 0xd2ccf, 0xd2cd1, 0xd2cd3, + 0xd2cd5, 0xd2cd7, 0xd2cd9, 0xd2cdb, 0xd2cdd, 0xd2cdf, 0xd2ce1, 0xd2ce3, 0xd2ce4, + 0xd2cec, 0xd2cee, 0xd2cf3, 0xd2d27, 0xd2d2d, 0xda641, 0xda643, 0xda645, 0xda647, + 0xda649, 0xda64b, 0xda64d, 0xda64f, 0xda651, 0xda653, 0xda655, 0xda657, 0xda659, + 0xda65b, 0xda65d, 0xda65f, 0xda661, 0xda663, 0xda665, 0xda667, 0xda669, 0xda66b, + 0xda66d, 0xda681, 0xda683, 0xda685, 0xda687, 0xda689, 0xda68b, 0xda68d, 0xda68f, + 0xda691, 0xda693, 0xda695, 0xda697, 0xda699, 0xda69b, 0xda723, 0xda725, 0xda727, + 0xda729, 0xda72b, 0xda72d, 0xda733, 0xda735, 0xda737, 0xda739, 0xda73b, 0xda73d, + 0xda73f, 0xda741, 0xda743, 0xda745, 0xda747, 0xda749, 0xda74b, 0xda74d, 0xda74f, + 0xda751, 0xda753, 0xda755, 0xda757, 0xda759, 0xda75b, 0xda75d, 0xda75f, 0xda761, + 0xda763, 0xda765, 0xda767, 0xda769, 0xda76b, 0xda76d, 0xda76f, 0xda77a, 0xda77c, + 0xda77f, 0xda781, 0xda783, 0xda785, 0xda787, 0xda78c, 0xda78e, 0xda791, 0xda797, + 0xda799, 0xda79b, 0xda79d, 0xda79f, 0xda7a1, 0xda7a3, 0xda7a5, 0xda7a7, 0xda7a9, + 0xda7b5, 0xda7b7, 0xda7fa, 0xe00b5, 0xe0101, 0xe0103, 0xe0105, 0xe0107, 0xe0109, + 0xe010b, 0xe010d, 0xe010f, 0xe0111, 0xe0113, 0xe0115, 0xe0117, 0xe0119, 0xe011b, + 0xe011d, 0xe011f, 0xe0121, 0xe0123, 0xe0125, 0xe0127, 0xe0129, 0xe012b, 0xe012d, + 0xe012f, 0xe0131, 0xe0133, 0xe0135, 0xe0137, 0xe0138, 0xe013a, 0xe013c, 0xe013e, + 0xe0140, 0xe0142, 0xe0144, 0xe0146, 0xe0148, 0xe0149, 0xe014b, 0xe014d, 0xe014f, + 0xe0151, 0xe0153, 0xe0155, 0xe0157, 0xe0159, 0xe015b, 0xe015d, 0xe015f, 0xe0161, + 0xe0163, 0xe0165, 0xe0167, 0xe0169, 0xe016b, 0xe016d, 0xe016f, 0xe0171, 0xe0173, + 0xe0175, 0xe0177, 0xe017a, 0xe017c, 0xe0183, 0xe0185, 0xe0188, 0xe018c, 0xe018d, + 0xe0192, 0xe0195, 0xe019e, 0xe01a1, 0xe01a3, 0xe01a5, 0xe01a8, 0xe01aa, 0xe01ab, + 0xe01ad, 0xe01b0, 0xe01b4, 0xe01b6, 0xe01b9, 0xe01ba, 0xe01c6, 0xe01c9, 0xe01cc, + 0xe01ce, 0xe01d0, 0xe01d2, 0xe01d4, 0xe01d6, 0xe01d8, 0xe01da, 0xe01dc, 0xe01dd, + 0xe01df, 0xe01e1, 0xe01e3, 0xe01e5, 0xe01e7, 0xe01e9, 0xe01eb, 0xe01ed, 0xe01ef, + 0xe01f0, 0xe01f3, 0xe01f5, 0xe01f9, 0xe01fb, 0xe01fd, 0xe01ff, 0xe0201, 0xe0203, + 0xe0205, 0xe0207, 0xe0209, 0xe020b, 0xe020d, 0xe020f, 0xe0211, 0xe0213, 0xe0215, + 0xe0217, 0xe0219, 0xe021b, 0xe021d, 0xe021f, 0xe0221, 0xe0223, 0xe0225, 0xe0227, + 0xe0229, 0xe022b, 0xe022d, 0xe022f, 0xe0231, 0xe023c, 0xe023f, 0xe0240, 0xe0242, + 0xe0247, 0xe0249, 0xe024b, 0xe024d, 0xe0371, 0xe0373, 0xe0377, 0xe0390, 0xe03d0, + 0xe03d1, 0xe03d9, 0xe03db, 0xe03dd, 0xe03df, 0xe03e1, 0xe03e3, 0xe03e5, 0xe03e7, + 0xe03e9, 0xe03eb, 0xe03ed, 0xe03f5, 0xe03f8, 0xe03fb, 0xe03fc, 0xe0461, 0xe0463, + 0xe0465, 0xe0467, 0xe0469, 0xe046b, 0xe046d, 0xe046f, 0xe0471, 0xe0473, 0xe0475, + 0xe0477, 0xe0479, 0xe047b, 0xe047d, 0xe047f, 0xe0481, 0xe048b, 0xe048d, 0xe048f, + 0xe0491, 0xe0493, 0xe0495, 0xe0497, 0xe0499, 0xe049b, 0xe049d, 0xe049f, 0xe04a1, + 0xe04a3, 0xe04a5, 0xe04a7, 0xe04a9, 0xe04ab, 0xe04ad, 0xe04af, 0xe04b1, 0xe04b3, + 0xe04b5, 0xe04b7, 0xe04b9, 0xe04bb, 0xe04bd, 0xe04bf, 0xe04c2, 0xe04c4, 0xe04c6, + 0xe04c8, 0xe04ca, 0xe04cc, 0xe04ce, 0xe04cf, 0xe04d1, 0xe04d3, 0xe04d5, 0xe04d7, + 0xe04d9, 0xe04db, 0xe04dd, 0xe04df, 0xe04e1, 0xe04e3, 0xe04e5, 0xe04e7, 0xe04e9, + 0xe04eb, 0xe04ed, 0xe04ef, 0xe04f1, 0xe04f3, 0xe04f5, 0xe04f7, 0xe04f9, 0xe04fb, + 0xe04fd, 0xe04ff, 0xe0501, 0xe0503, 0xe0505, 0xe0507, 0xe0509, 0xe050b, 0xe050d, + 0xe050f, 0xe0511, 0xe0513, 0xe0515, 0xe0517, 0xe0519, 0xe051b, 0xe051d, 0xe051f, + 0xe0521, 0xe0523, 0xe0525, 0xe0527, 0xe0529, 0xe052b, 0xe052d, 0xe052f, 0xe1e01, + 0xe1e03, 0xe1e05, 0xe1e07, 0xe1e09, 0xe1e0b, 0xe1e0d, 0xe1e0f, 0xe1e11, 0xe1e13, + 0xe1e15, 0xe1e17, 0xe1e19, 0xe1e1b, 0xe1e1d, 0xe1e1f, 0xe1e21, 0xe1e23, 0xe1e25, + 0xe1e27, 0xe1e29, 0xe1e2b, 0xe1e2d, 0xe1e2f, 0xe1e31, 0xe1e33, 0xe1e35, 0xe1e37, + 0xe1e39, 0xe1e3b, 0xe1e3d, 0xe1e3f, 0xe1e41, 0xe1e43, 0xe1e45, 0xe1e47, 0xe1e49, + 0xe1e4b, 0xe1e4d, 0xe1e4f, 0xe1e51, 0xe1e53, 0xe1e55, 0xe1e57, 0xe1e59, 0xe1e5b, + 0xe1e5d, 0xe1e5f, 0xe1e61, 0xe1e63, 0xe1e65, 0xe1e67, 0xe1e69, 0xe1e6b, 0xe1e6d, + 0xe1e6f, 0xe1e71, 0xe1e73, 0xe1e75, 0xe1e77, 0xe1e79, 0xe1e7b, 0xe1e7d, 0xe1e7f, + 0xe1e81, 0xe1e83, 0xe1e85, 0xe1e87, 0xe1e89, 0xe1e8b, 0xe1e8d, 0xe1e8f, 0xe1e91, + 0xe1e93, 0xe1e9f, 0xe1ea1, 0xe1ea3, 0xe1ea5, 0xe1ea7, 0xe1ea9, 0xe1eab, 0xe1ead, + 0xe1eaf, 0xe1eb1, 0xe1eb3, 0xe1eb5, 0xe1eb7, 0xe1eb9, 0xe1ebb, 0xe1ebd, 0xe1ebf, + 0xe1ec1, 0xe1ec3, 0xe1ec5, 0xe1ec7, 0xe1ec9, 0xe1ecb, 0xe1ecd, 0xe1ecf, 0xe1ed1, + 0xe1ed3, 0xe1ed5, 0xe1ed7, 0xe1ed9, 0xe1edb, 0xe1edd, 0xe1edf, 0xe1ee1, 0xe1ee3, + 0xe1ee5, 0xe1ee7, 0xe1ee9, 0xe1eeb, 0xe1eed, 0xe1eef, 0xe1ef1, 0xe1ef3, 0xe1ef5, + 0xe1ef7, 0xe1ef9, 0xe1efb, 0xe1efd, 0xe1fb6, 0xe1fb7, 0xe1fbe, 0xe1fc6, 0xe1fc7, + 0xe1fd6, 0xe1fd7, 0xe1ff6, 0xe1ff7, 0xe210a, 0xe210e, 0xe210f, 0xe2113, 0xe212f, + 0xe2134, 0xe2139, 0xe213c, 0xe213d, 0xe214e, 0xe2184, 0xe2c61, 0xe2c65, 0xe2c66, + 0xe2c68, 0xe2c6a, 0xe2c6c, 0xe2c71, 0xe2c73, 0xe2c74, 0xe2c81, 0xe2c83, 0xe2c85, + 0xe2c87, 0xe2c89, 0xe2c8b, 0xe2c8d, 0xe2c8f, 0xe2c91, 0xe2c93, 0xe2c95, 0xe2c97, + 0xe2c99, 0xe2c9b, 0xe2c9d, 0xe2c9f, 0xe2ca1, 0xe2ca3, 0xe2ca5, 0xe2ca7, 0xe2ca9, + 0xe2cab, 0xe2cad, 0xe2caf, 0xe2cb1, 0xe2cb3, 0xe2cb5, 0xe2cb7, 0xe2cb9, 0xe2cbb, + 0xe2cbd, 0xe2cbf, 0xe2cc1, 0xe2cc3, 0xe2cc5, 0xe2cc7, 0xe2cc9, 0xe2ccb, 0xe2ccd, + 0xe2ccf, 0xe2cd1, 0xe2cd3, 0xe2cd5, 0xe2cd7, 0xe2cd9, 0xe2cdb, 0xe2cdd, 0xe2cdf, + 0xe2ce1, 0xe2ce3, 0xe2ce4, 0xe2cec, 0xe2cee, 0xe2cf3, 0xe2d27, 0xe2d2d, 0xea641, + 0xea643, 0xea645, 0xea647, 0xea649, 0xea64b, 0xea64d, 0xea64f, 0xea651, 0xea653, + 0xea655, 0xea657, 0xea659, 0xea65b, 0xea65d, 0xea65f, 0xea661, 0xea663, 0xea665, + 0xea667, 0xea669, 0xea66b, 0xea66d, 0xea681, 0xea683, 0xea685, 0xea687, 0xea689, + 0xea68b, 0xea68d, 0xea68f, 0xea691, 0xea693, 0xea695, 0xea697, 0xea699, 0xea69b, + 0xea723, 0xea725, 0xea727, 0xea729, 0xea72b, 0xea72d, 0xea733, 0xea735, 0xea737, + 0xea739, 0xea73b, 0xea73d, 0xea73f, 0xea741, 0xea743, 0xea745, 0xea747, 0xea749, + 0xea74b, 0xea74d, 0xea74f, 0xea751, 0xea753, 0xea755, 0xea757, 0xea759, 0xea75b, + 0xea75d, 0xea75f, 0xea761, 0xea763, 0xea765, 0xea767, 0xea769, 0xea76b, 0xea76d, + 0xea76f, 0xea77a, 0xea77c, 0xea77f, 0xea781, 0xea783, 0xea785, 0xea787, 0xea78c, + 0xea78e, 0xea791, 0xea797, 0xea799, 0xea79b, 0xea79d, 0xea79f, 0xea7a1, 0xea7a3, + 0xea7a5, 0xea7a7, 0xea7a9, 0xea7b5, 0xea7b7, 0xea7fa, 0xf00b5, 0xf0101, 0xf0103, + 0xf0105, 0xf0107, 0xf0109, 0xf010b, 0xf010d, 0xf010f, 0xf0111, 0xf0113, 0xf0115, + 0xf0117, 0xf0119, 0xf011b, 0xf011d, 0xf011f, 0xf0121, 0xf0123, 0xf0125, 0xf0127, + 0xf0129, 0xf012b, 0xf012d, 0xf012f, 0xf0131, 0xf0133, 0xf0135, 0xf0137, 0xf0138, + 0xf013a, 0xf013c, 0xf013e, 0xf0140, 0xf0142, 0xf0144, 0xf0146, 0xf0148, 0xf0149, + 0xf014b, 0xf014d, 0xf014f, 0xf0151, 0xf0153, 0xf0155, 0xf0157, 0xf0159, 0xf015b, + 0xf015d, 0xf015f, 0xf0161, 0xf0163, 0xf0165, 0xf0167, 0xf0169, 0xf016b, 0xf016d, + 0xf016f, 0xf0171, 0xf0173, 0xf0175, 0xf0177, 0xf017a, 0xf017c, 0xf0183, 0xf0185, + 0xf0188, 0xf018c, 0xf018d, 0xf0192, 0xf0195, 0xf019e, 0xf01a1, 0xf01a3, 0xf01a5, + 0xf01a8, 0xf01aa, 0xf01ab, 0xf01ad, 0xf01b0, 0xf01b4, 0xf01b6, 0xf01b9, 0xf01ba, + 0xf01c6, 0xf01c9, 0xf01cc, 0xf01ce, 0xf01d0, 0xf01d2, 0xf01d4, 0xf01d6, 0xf01d8, + 0xf01da, 0xf01dc, 0xf01dd, 0xf01df, 0xf01e1, 0xf01e3, 0xf01e5, 0xf01e7, 0xf01e9, + 0xf01eb, 0xf01ed, 0xf01ef, 0xf01f0, 0xf01f3, 0xf01f5, 0xf01f9, 0xf01fb, 0xf01fd, + 0xf01ff, 0xf0201, 0xf0203, 0xf0205, 0xf0207, 0xf0209, 0xf020b, 0xf020d, 0xf020f, + 0xf0211, 0xf0213, 0xf0215, 0xf0217, 0xf0219, 0xf021b, 0xf021d, 0xf021f, 0xf0221, + 0xf0223, 0xf0225, 0xf0227, 0xf0229, 0xf022b, 0xf022d, 0xf022f, 0xf0231, 0xf023c, + 0xf023f, 0xf0240, 0xf0242, 0xf0247, 0xf0249, 0xf024b, 0xf024d, 0xf0371, 0xf0373, + 0xf0377, 0xf0390, 0xf03d0, 0xf03d1, 0xf03d9, 0xf03db, 0xf03dd, 0xf03df, 0xf03e1, + 0xf03e3, 0xf03e5, 0xf03e7, 0xf03e9, 0xf03eb, 0xf03ed, 0xf03f5, 0xf03f8, 0xf03fb, + 0xf03fc, 0xf0461, 0xf0463, 0xf0465, 0xf0467, 0xf0469, 0xf046b, 0xf046d, 0xf046f, + 0xf0471, 0xf0473, 0xf0475, 0xf0477, 0xf0479, 0xf047b, 0xf047d, 0xf047f, 0xf0481, + 0xf048b, 0xf048d, 0xf048f, 0xf0491, 0xf0493, 0xf0495, 0xf0497, 0xf0499, 0xf049b, + 0xf049d, 0xf049f, 0xf04a1, 0xf04a3, 0xf04a5, 0xf04a7, 0xf04a9, 0xf04ab, 0xf04ad, + 0xf04af, 0xf04b1, 0xf04b3, 0xf04b5, 0xf04b7, 0xf04b9, 0xf04bb, 0xf04bd, 0xf04bf, + 0xf04c2, 0xf04c4, 0xf04c6, 0xf04c8, 0xf04ca, 0xf04cc, 0xf04ce, 0xf04cf, 0xf04d1, + 0xf04d3, 0xf04d5, 0xf04d7, 0xf04d9, 0xf04db, 0xf04dd, 0xf04df, 0xf04e1, 0xf04e3, + 0xf04e5, 0xf04e7, 0xf04e9, 0xf04eb, 0xf04ed, 0xf04ef, 0xf04f1, 0xf04f3, 0xf04f5, + 0xf04f7, 0xf04f9, 0xf04fb, 0xf04fd, 0xf04ff, 0xf0501, 0xf0503, 0xf0505, 0xf0507, + 0xf0509, 0xf050b, 0xf050d, 0xf050f, 0xf0511, 0xf0513, 0xf0515, 0xf0517, 0xf0519, + 0xf051b, 0xf051d, 0xf051f, 0xf0521, 0xf0523, 0xf0525, 0xf0527, 0xf0529, 0xf052b, + 0xf052d, 0xf052f, 0xf1e01, 0xf1e03, 0xf1e05, 0xf1e07, 0xf1e09, 0xf1e0b, 0xf1e0d, + 0xf1e0f, 0xf1e11, 0xf1e13, 0xf1e15, 0xf1e17, 0xf1e19, 0xf1e1b, 0xf1e1d, 0xf1e1f, + 0xf1e21, 0xf1e23, 0xf1e25, 0xf1e27, 0xf1e29, 0xf1e2b, 0xf1e2d, 0xf1e2f, 0xf1e31, + 0xf1e33, 0xf1e35, 0xf1e37, 0xf1e39, 0xf1e3b, 0xf1e3d, 0xf1e3f, 0xf1e41, 0xf1e43, + 0xf1e45, 0xf1e47, 0xf1e49, 0xf1e4b, 0xf1e4d, 0xf1e4f, 0xf1e51, 0xf1e53, 0xf1e55, + 0xf1e57, 0xf1e59, 0xf1e5b, 0xf1e5d, 0xf1e5f, 0xf1e61, 0xf1e63, 0xf1e65, 0xf1e67, + 0xf1e69, 0xf1e6b, 0xf1e6d, 0xf1e6f, 0xf1e71, 0xf1e73, 0xf1e75, 0xf1e77, 0xf1e79, + 0xf1e7b, 0xf1e7d, 0xf1e7f, 0xf1e81, 0xf1e83, 0xf1e85, 0xf1e87, 0xf1e89, 0xf1e8b, + 0xf1e8d, 0xf1e8f, 0xf1e91, 0xf1e93, 0xf1e9f, 0xf1ea1, 0xf1ea3, 0xf1ea5, 0xf1ea7, + 0xf1ea9, 0xf1eab, 0xf1ead, 0xf1eaf, 0xf1eb1, 0xf1eb3, 0xf1eb5, 0xf1eb7, 0xf1eb9, + 0xf1ebb, 0xf1ebd, 0xf1ebf, 0xf1ec1, 0xf1ec3, 0xf1ec5, 0xf1ec7, 0xf1ec9, 0xf1ecb, + 0xf1ecd, 0xf1ecf, 0xf1ed1, 0xf1ed3, 0xf1ed5, 0xf1ed7, 0xf1ed9, 0xf1edb, 0xf1edd, + 0xf1edf, 0xf1ee1, 0xf1ee3, 0xf1ee5, 0xf1ee7, 0xf1ee9, 0xf1eeb, 0xf1eed, 0xf1eef, + 0xf1ef1, 0xf1ef3, 0xf1ef5, 0xf1ef7, 0xf1ef9, 0xf1efb, 0xf1efd, 0xf1fb6, 0xf1fb7, + 0xf1fbe, 0xf1fc6, 0xf1fc7, 0xf1fd6, 0xf1fd7, 0xf1ff6, 0xf1ff7, 0xf210a, 0xf210e, + 0xf210f, 0xf2113, 0xf212f, 0xf2134, 0xf2139, 0xf213c, 0xf213d, 0xf214e, 0xf2184, + 0xf2c61, 0xf2c65, 0xf2c66, 0xf2c68, 0xf2c6a, 0xf2c6c, 0xf2c71, 0xf2c73, 0xf2c74, + 0xf2c81, 0xf2c83, 0xf2c85, 0xf2c87, 0xf2c89, 0xf2c8b, 0xf2c8d, 0xf2c8f, 0xf2c91, + 0xf2c93, 0xf2c95, 0xf2c97, 0xf2c99, 0xf2c9b, 0xf2c9d, 0xf2c9f, 0xf2ca1, 0xf2ca3, + 0xf2ca5, 0xf2ca7, 0xf2ca9, 0xf2cab, 0xf2cad, 0xf2caf, 0xf2cb1, 0xf2cb3, 0xf2cb5, + 0xf2cb7, 0xf2cb9, 0xf2cbb, 0xf2cbd, 0xf2cbf, 0xf2cc1, 0xf2cc3, 0xf2cc5, 0xf2cc7, + 0xf2cc9, 0xf2ccb, 0xf2ccd, 0xf2ccf, 0xf2cd1, 0xf2cd3, 0xf2cd5, 0xf2cd7, 0xf2cd9, + 0xf2cdb, 0xf2cdd, 0xf2cdf, 0xf2ce1, 0xf2ce3, 0xf2ce4, 0xf2cec, 0xf2cee, 0xf2cf3, + 0xf2d27, 0xf2d2d, 0xfa641, 0xfa643, 0xfa645, 0xfa647, 0xfa649, 0xfa64b, 0xfa64d, + 0xfa64f, 0xfa651, 0xfa653, 0xfa655, 0xfa657, 0xfa659, 0xfa65b, 0xfa65d, 0xfa65f, + 0xfa661, 0xfa663, 0xfa665, 0xfa667, 0xfa669, 0xfa66b, 0xfa66d, 0xfa681, 0xfa683, + 0xfa685, 0xfa687, 0xfa689, 0xfa68b, 0xfa68d, 0xfa68f, 0xfa691, 0xfa693, 0xfa695, + 0xfa697, 0xfa699, 0xfa69b, 0xfa723, 0xfa725, 0xfa727, 0xfa729, 0xfa72b, 0xfa72d, + 0xfa733, 0xfa735, 0xfa737, 0xfa739, 0xfa73b, 0xfa73d, 0xfa73f, 0xfa741, 0xfa743, + 0xfa745, 0xfa747, 0xfa749, 0xfa74b, 0xfa74d, 0xfa74f, 0xfa751, 0xfa753, 0xfa755, + 0xfa757, 0xfa759, 0xfa75b, 0xfa75d, 0xfa75f, 0xfa761, 0xfa763, 0xfa765, 0xfa767, + 0xfa769, 0xfa76b, 0xfa76d, 0xfa76f, 0xfa77a, 0xfa77c, 0xfa77f, 0xfa781, 0xfa783, + 0xfa785, 0xfa787, 0xfa78c, 0xfa78e, 0xfa791, 0xfa797, 0xfa799, 0xfa79b, 0xfa79d, + 0xfa79f, 0xfa7a1, 0xfa7a3, 0xfa7a5, 0xfa7a7, 0xfa7a9, 0xfa7b5, 0xfa7b7, 0xfa7fa, + 0x1000b5, 0x100101, 0x100103, 0x100105, 0x100107, 0x100109, 0x10010b, 0x10010d, 0x10010f, + 0x100111, 0x100113, 0x100115, 0x100117, 0x100119, 0x10011b, 0x10011d, 0x10011f, 0x100121, + 0x100123, 0x100125, 0x100127, 0x100129, 0x10012b, 0x10012d, 0x10012f, 0x100131, 0x100133, + 0x100135, 0x100137, 0x100138, 0x10013a, 0x10013c, 0x10013e, 0x100140, 0x100142, 0x100144, + 0x100146, 0x100148, 0x100149, 0x10014b, 0x10014d, 0x10014f, 0x100151, 0x100153, 0x100155, + 0x100157, 0x100159, 0x10015b, 0x10015d, 0x10015f, 0x100161, 0x100163, 0x100165, 0x100167, + 0x100169, 0x10016b, 0x10016d, 0x10016f, 0x100171, 0x100173, 0x100175, 0x100177, 0x10017a, + 0x10017c, 0x100183, 0x100185, 0x100188, 0x10018c, 0x10018d, 0x100192, 0x100195, 0x10019e, + 0x1001a1, 0x1001a3, 0x1001a5, 0x1001a8, 0x1001aa, 0x1001ab, 0x1001ad, 0x1001b0, 0x1001b4, + 0x1001b6, 0x1001b9, 0x1001ba, 0x1001c6, 0x1001c9, 0x1001cc, 0x1001ce, 0x1001d0, 0x1001d2, + 0x1001d4, 0x1001d6, 0x1001d8, 0x1001da, 0x1001dc, 0x1001dd, 0x1001df, 0x1001e1, 0x1001e3, + 0x1001e5, 0x1001e7, 0x1001e9, 0x1001eb, 0x1001ed, 0x1001ef, 0x1001f0, 0x1001f3, 0x1001f5, + 0x1001f9, 0x1001fb, 0x1001fd, 0x1001ff, 0x100201, 0x100203, 0x100205, 0x100207, 0x100209, + 0x10020b, 0x10020d, 0x10020f, 0x100211, 0x100213, 0x100215, 0x100217, 0x100219, 0x10021b, + 0x10021d, 0x10021f, 0x100221, 0x100223, 0x100225, 0x100227, 0x100229, 0x10022b, 0x10022d, + 0x10022f, 0x100231, 0x10023c, 0x10023f, 0x100240, 0x100242, 0x100247, 0x100249, 0x10024b, + 0x10024d, 0x100371, 0x100373, 0x100377, 0x100390, 0x1003d0, 0x1003d1, 0x1003d9, 0x1003db, + 0x1003dd, 0x1003df, 0x1003e1, 0x1003e3, 0x1003e5, 0x1003e7, 0x1003e9, 0x1003eb, 0x1003ed, + 0x1003f5, 0x1003f8, 0x1003fb, 0x1003fc, 0x100461, 0x100463, 0x100465, 0x100467, 0x100469, + 0x10046b, 0x10046d, 0x10046f, 0x100471, 0x100473, 0x100475, 0x100477, 0x100479, 0x10047b, + 0x10047d, 0x10047f, 0x100481, 0x10048b, 0x10048d, 0x10048f, 0x100491, 0x100493, 0x100495, + 0x100497, 0x100499, 0x10049b, 0x10049d, 0x10049f, 0x1004a1, 0x1004a3, 0x1004a5, 0x1004a7, + 0x1004a9, 0x1004ab, 0x1004ad, 0x1004af, 0x1004b1, 0x1004b3, 0x1004b5, 0x1004b7, 0x1004b9, + 0x1004bb, 0x1004bd, 0x1004bf, 0x1004c2, 0x1004c4, 0x1004c6, 0x1004c8, 0x1004ca, 0x1004cc, + 0x1004ce, 0x1004cf, 0x1004d1, 0x1004d3, 0x1004d5, 0x1004d7, 0x1004d9, 0x1004db, 0x1004dd, + 0x1004df, 0x1004e1, 0x1004e3, 0x1004e5, 0x1004e7, 0x1004e9, 0x1004eb, 0x1004ed, 0x1004ef, + 0x1004f1, 0x1004f3, 0x1004f5, 0x1004f7, 0x1004f9, 0x1004fb, 0x1004fd, 0x1004ff, 0x100501, + 0x100503, 0x100505, 0x100507, 0x100509, 0x10050b, 0x10050d, 0x10050f, 0x100511, 0x100513, + 0x100515, 0x100517, 0x100519, 0x10051b, 0x10051d, 0x10051f, 0x100521, 0x100523, 0x100525, + 0x100527, 0x100529, 0x10052b, 0x10052d, 0x10052f, 0x101e01, 0x101e03, 0x101e05, 0x101e07, + 0x101e09, 0x101e0b, 0x101e0d, 0x101e0f, 0x101e11, 0x101e13, 0x101e15, 0x101e17, 0x101e19, + 0x101e1b, 0x101e1d, 0x101e1f, 0x101e21, 0x101e23, 0x101e25, 0x101e27, 0x101e29, 0x101e2b, + 0x101e2d, 0x101e2f, 0x101e31, 0x101e33, 0x101e35, 0x101e37, 0x101e39, 0x101e3b, 0x101e3d, + 0x101e3f, 0x101e41, 0x101e43, 0x101e45, 0x101e47, 0x101e49, 0x101e4b, 0x101e4d, 0x101e4f, + 0x101e51, 0x101e53, 0x101e55, 0x101e57, 0x101e59, 0x101e5b, 0x101e5d, 0x101e5f, 0x101e61, + 0x101e63, 0x101e65, 0x101e67, 0x101e69, 0x101e6b, 0x101e6d, 0x101e6f, 0x101e71, 0x101e73, + 0x101e75, 0x101e77, 0x101e79, 0x101e7b, 0x101e7d, 0x101e7f, 0x101e81, 0x101e83, 0x101e85, + 0x101e87, 0x101e89, 0x101e8b, 0x101e8d, 0x101e8f, 0x101e91, 0x101e93, 0x101e9f, 0x101ea1, + 0x101ea3, 0x101ea5, 0x101ea7, 0x101ea9, 0x101eab, 0x101ead, 0x101eaf, 0x101eb1, 0x101eb3, + 0x101eb5, 0x101eb7, 0x101eb9, 0x101ebb, 0x101ebd, 0x101ebf, 0x101ec1, 0x101ec3, 0x101ec5, + 0x101ec7, 0x101ec9, 0x101ecb, 0x101ecd, 0x101ecf, 0x101ed1, 0x101ed3, 0x101ed5, 0x101ed7, + 0x101ed9, 0x101edb, 0x101edd, 0x101edf, 0x101ee1, 0x101ee3, 0x101ee5, 0x101ee7, 0x101ee9, + 0x101eeb, 0x101eed, 0x101eef, 0x101ef1, 0x101ef3, 0x101ef5, 0x101ef7, 0x101ef9, 0x101efb, + 0x101efd, 0x101fb6, 0x101fb7, 0x101fbe, 0x101fc6, 0x101fc7, 0x101fd6, 0x101fd7, 0x101ff6, + 0x101ff7, 0x10210a, 0x10210e, 0x10210f, 0x102113, 0x10212f, 0x102134, 0x102139, 0x10213c, + 0x10213d, 0x10214e, 0x102184, 0x102c61, 0x102c65, 0x102c66, 0x102c68, 0x102c6a, 0x102c6c, + 0x102c71, 0x102c73, 0x102c74, 0x102c81, 0x102c83, 0x102c85, 0x102c87, 0x102c89, 0x102c8b, + 0x102c8d, 0x102c8f, 0x102c91, 0x102c93, 0x102c95, 0x102c97, 0x102c99, 0x102c9b, 0x102c9d, + 0x102c9f, 0x102ca1, 0x102ca3, 0x102ca5, 0x102ca7, 0x102ca9, 0x102cab, 0x102cad, 0x102caf, + 0x102cb1, 0x102cb3, 0x102cb5, 0x102cb7, 0x102cb9, 0x102cbb, 0x102cbd, 0x102cbf, 0x102cc1, + 0x102cc3, 0x102cc5, 0x102cc7, 0x102cc9, 0x102ccb, 0x102ccd, 0x102ccf, 0x102cd1, 0x102cd3, + 0x102cd5, 0x102cd7, 0x102cd9, 0x102cdb, 0x102cdd, 0x102cdf, 0x102ce1, 0x102ce3, 0x102ce4, + 0x102cec, 0x102cee, 0x102cf3, 0x102d27, 0x102d2d, 0x10a641, 0x10a643, 0x10a645, 0x10a647, + 0x10a649, 0x10a64b, 0x10a64d, 0x10a64f, 0x10a651, 0x10a653, 0x10a655, 0x10a657, 0x10a659, + 0x10a65b, 0x10a65d, 0x10a65f, 0x10a661, 0x10a663, 0x10a665, 0x10a667, 0x10a669, 0x10a66b, + 0x10a66d, 0x10a681, 0x10a683, 0x10a685, 0x10a687, 0x10a689, 0x10a68b, 0x10a68d, 0x10a68f, + 0x10a691, 0x10a693, 0x10a695, 0x10a697, 0x10a699, 0x10a69b, 0x10a723, 0x10a725, 0x10a727, + 0x10a729, 0x10a72b, 0x10a72d, 0x10a733, 0x10a735, 0x10a737, 0x10a739, 0x10a73b, 0x10a73d, + 0x10a73f, 0x10a741, 0x10a743, 0x10a745, 0x10a747, 0x10a749, 0x10a74b, 0x10a74d, 0x10a74f, + 0x10a751, 0x10a753, 0x10a755, 0x10a757, 0x10a759, 0x10a75b, 0x10a75d, 0x10a75f, 0x10a761, + 0x10a763, 0x10a765, 0x10a767, 0x10a769, 0x10a76b, 0x10a76d, 0x10a76f, 0x10a77a, 0x10a77c, + 0x10a77f, 0x10a781, 0x10a783, 0x10a785, 0x10a787, 0x10a78c, 0x10a78e, 0x10a791, 0x10a797, + 0x10a799, 0x10a79b, 0x10a79d, 0x10a79f, 0x10a7a1, 0x10a7a3, 0x10a7a5, 0x10a7a7, 0x10a7a9, + 0x10a7b5, 0x10a7b7, 0x10a7fa #endif }; @@ -521,13 +3626,166 @@ static const crange upperRangeTable[] = { {0x2130, 0x2133}, {0x2c00, 0x2c2e}, {0x2c62, 0x2c64}, {0x2c6d, 0x2c70}, {0x2c7e, 0x2c80}, {0xa7aa, 0xa7ae}, {0xa7b0, 0xa7b4}, {0xff21, 0xff3a} #if TCL_UTF_MAX > 4 - ,{0x10400, 0x10427}, {0x104b0, 0x104d3}, {0x10c80, 0x10cb2}, {0x118a0, 0x118bf}, - {0x1d400, 0x1d419}, {0x1d434, 0x1d44d}, {0x1d468, 0x1d481}, {0x1d4a9, 0x1d4ac}, - {0x1d4ae, 0x1d4b5}, {0x1d4d0, 0x1d4e9}, {0x1d507, 0x1d50a}, {0x1d50d, 0x1d514}, - {0x1d516, 0x1d51c}, {0x1d53b, 0x1d53e}, {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, - {0x1d56c, 0x1d585}, {0x1d5a0, 0x1d5b9}, {0x1d5d4, 0x1d5ed}, {0x1d608, 0x1d621}, - {0x1d63c, 0x1d655}, {0x1d670, 0x1d689}, {0x1d6a8, 0x1d6c0}, {0x1d6e2, 0x1d6fa}, - {0x1d71c, 0x1d734}, {0x1d756, 0x1d76e}, {0x1d790, 0x1d7a8}, {0x1e900, 0x1e921} + ,{0x10041, 0x1005a}, {0x100c0, 0x100d6}, {0x100d8, 0x100de}, {0x10189, 0x1018b}, + {0x1018e, 0x10191}, {0x10196, 0x10198}, {0x101b1, 0x101b3}, {0x101f6, 0x101f8}, + {0x10243, 0x10246}, {0x10388, 0x1038a}, {0x10391, 0x103a1}, {0x103a3, 0x103ab}, + {0x103d2, 0x103d4}, {0x103fd, 0x1042f}, {0x10531, 0x10556}, {0x110a0, 0x110c5}, + {0x113a0, 0x113f5}, {0x11f08, 0x11f0f}, {0x11f18, 0x11f1d}, {0x11f28, 0x11f2f}, + {0x11f38, 0x11f3f}, {0x11f48, 0x11f4d}, {0x11f68, 0x11f6f}, {0x11fb8, 0x11fbb}, + {0x11fc8, 0x11fcb}, {0x11fd8, 0x11fdb}, {0x11fe8, 0x11fec}, {0x11ff8, 0x11ffb}, + {0x1210b, 0x1210d}, {0x12110, 0x12112}, {0x12119, 0x1211d}, {0x1212a, 0x1212d}, + {0x12130, 0x12133}, {0x12c00, 0x12c2e}, {0x12c62, 0x12c64}, {0x12c6d, 0x12c70}, + {0x12c7e, 0x12c80}, {0x1a7aa, 0x1a7ae}, {0x1a7b0, 0x1a7b4}, {0x1ff21, 0x1ff3a}, + {0x20041, 0x2005a}, {0x200c0, 0x200d6}, {0x200d8, 0x200de}, {0x20189, 0x2018b}, + {0x2018e, 0x20191}, {0x20196, 0x20198}, {0x201b1, 0x201b3}, {0x201f6, 0x201f8}, + {0x20243, 0x20246}, {0x20388, 0x2038a}, {0x20391, 0x203a1}, {0x203a3, 0x203ab}, + {0x203d2, 0x203d4}, {0x203fd, 0x2042f}, {0x20531, 0x20556}, {0x210a0, 0x210c5}, + {0x213a0, 0x213f5}, {0x21f08, 0x21f0f}, {0x21f18, 0x21f1d}, {0x21f28, 0x21f2f}, + {0x21f38, 0x21f3f}, {0x21f48, 0x21f4d}, {0x21f68, 0x21f6f}, {0x21fb8, 0x21fbb}, + {0x21fc8, 0x21fcb}, {0x21fd8, 0x21fdb}, {0x21fe8, 0x21fec}, {0x21ff8, 0x21ffb}, + {0x2210b, 0x2210d}, {0x22110, 0x22112}, {0x22119, 0x2211d}, {0x2212a, 0x2212d}, + {0x22130, 0x22133}, {0x22c00, 0x22c2e}, {0x22c62, 0x22c64}, {0x22c6d, 0x22c70}, + {0x22c7e, 0x22c80}, {0x2a7aa, 0x2a7ae}, {0x2a7b0, 0x2a7b4}, {0x2ff21, 0x2ff3a}, + {0x30041, 0x3005a}, {0x300c0, 0x300d6}, {0x300d8, 0x300de}, {0x30189, 0x3018b}, + {0x3018e, 0x30191}, {0x30196, 0x30198}, {0x301b1, 0x301b3}, {0x301f6, 0x301f8}, + {0x30243, 0x30246}, {0x30388, 0x3038a}, {0x30391, 0x303a1}, {0x303a3, 0x303ab}, + {0x303d2, 0x303d4}, {0x303fd, 0x3042f}, {0x30531, 0x30556}, {0x310a0, 0x310c5}, + {0x313a0, 0x313f5}, {0x31f08, 0x31f0f}, {0x31f18, 0x31f1d}, {0x31f28, 0x31f2f}, + {0x31f38, 0x31f3f}, {0x31f48, 0x31f4d}, {0x31f68, 0x31f6f}, {0x31fb8, 0x31fbb}, + {0x31fc8, 0x31fcb}, {0x31fd8, 0x31fdb}, {0x31fe8, 0x31fec}, {0x31ff8, 0x31ffb}, + {0x3210b, 0x3210d}, {0x32110, 0x32112}, {0x32119, 0x3211d}, {0x3212a, 0x3212d}, + {0x32130, 0x32133}, {0x32c00, 0x32c2e}, {0x32c62, 0x32c64}, {0x32c6d, 0x32c70}, + {0x32c7e, 0x32c80}, {0x3a7aa, 0x3a7ae}, {0x3a7b0, 0x3a7b4}, {0x3ff21, 0x3ff3a}, + {0x40041, 0x4005a}, {0x400c0, 0x400d6}, {0x400d8, 0x400de}, {0x40189, 0x4018b}, + {0x4018e, 0x40191}, {0x40196, 0x40198}, {0x401b1, 0x401b3}, {0x401f6, 0x401f8}, + {0x40243, 0x40246}, {0x40388, 0x4038a}, {0x40391, 0x403a1}, {0x403a3, 0x403ab}, + {0x403d2, 0x403d4}, {0x403fd, 0x4042f}, {0x40531, 0x40556}, {0x410a0, 0x410c5}, + {0x413a0, 0x413f5}, {0x41f08, 0x41f0f}, {0x41f18, 0x41f1d}, {0x41f28, 0x41f2f}, + {0x41f38, 0x41f3f}, {0x41f48, 0x41f4d}, {0x41f68, 0x41f6f}, {0x41fb8, 0x41fbb}, + {0x41fc8, 0x41fcb}, {0x41fd8, 0x41fdb}, {0x41fe8, 0x41fec}, {0x41ff8, 0x41ffb}, + {0x4210b, 0x4210d}, {0x42110, 0x42112}, {0x42119, 0x4211d}, {0x4212a, 0x4212d}, + {0x42130, 0x42133}, {0x42c00, 0x42c2e}, {0x42c62, 0x42c64}, {0x42c6d, 0x42c70}, + {0x42c7e, 0x42c80}, {0x4a7aa, 0x4a7ae}, {0x4a7b0, 0x4a7b4}, {0x4ff21, 0x4ff3a}, + {0x50041, 0x5005a}, {0x500c0, 0x500d6}, {0x500d8, 0x500de}, {0x50189, 0x5018b}, + {0x5018e, 0x50191}, {0x50196, 0x50198}, {0x501b1, 0x501b3}, {0x501f6, 0x501f8}, + {0x50243, 0x50246}, {0x50388, 0x5038a}, {0x50391, 0x503a1}, {0x503a3, 0x503ab}, + {0x503d2, 0x503d4}, {0x503fd, 0x5042f}, {0x50531, 0x50556}, {0x510a0, 0x510c5}, + {0x513a0, 0x513f5}, {0x51f08, 0x51f0f}, {0x51f18, 0x51f1d}, {0x51f28, 0x51f2f}, + {0x51f38, 0x51f3f}, {0x51f48, 0x51f4d}, {0x51f68, 0x51f6f}, {0x51fb8, 0x51fbb}, + {0x51fc8, 0x51fcb}, {0x51fd8, 0x51fdb}, {0x51fe8, 0x51fec}, {0x51ff8, 0x51ffb}, + {0x5210b, 0x5210d}, {0x52110, 0x52112}, {0x52119, 0x5211d}, {0x5212a, 0x5212d}, + {0x52130, 0x52133}, {0x52c00, 0x52c2e}, {0x52c62, 0x52c64}, {0x52c6d, 0x52c70}, + {0x52c7e, 0x52c80}, {0x5a7aa, 0x5a7ae}, {0x5a7b0, 0x5a7b4}, {0x5ff21, 0x5ff3a}, + {0x60041, 0x6005a}, {0x600c0, 0x600d6}, {0x600d8, 0x600de}, {0x60189, 0x6018b}, + {0x6018e, 0x60191}, {0x60196, 0x60198}, {0x601b1, 0x601b3}, {0x601f6, 0x601f8}, + {0x60243, 0x60246}, {0x60388, 0x6038a}, {0x60391, 0x603a1}, {0x603a3, 0x603ab}, + {0x603d2, 0x603d4}, {0x603fd, 0x6042f}, {0x60531, 0x60556}, {0x610a0, 0x610c5}, + {0x613a0, 0x613f5}, {0x61f08, 0x61f0f}, {0x61f18, 0x61f1d}, {0x61f28, 0x61f2f}, + {0x61f38, 0x61f3f}, {0x61f48, 0x61f4d}, {0x61f68, 0x61f6f}, {0x61fb8, 0x61fbb}, + {0x61fc8, 0x61fcb}, {0x61fd8, 0x61fdb}, {0x61fe8, 0x61fec}, {0x61ff8, 0x61ffb}, + {0x6210b, 0x6210d}, {0x62110, 0x62112}, {0x62119, 0x6211d}, {0x6212a, 0x6212d}, + {0x62130, 0x62133}, {0x62c00, 0x62c2e}, {0x62c62, 0x62c64}, {0x62c6d, 0x62c70}, + {0x62c7e, 0x62c80}, {0x6a7aa, 0x6a7ae}, {0x6a7b0, 0x6a7b4}, {0x6ff21, 0x6ff3a}, + {0x70041, 0x7005a}, {0x700c0, 0x700d6}, {0x700d8, 0x700de}, {0x70189, 0x7018b}, + {0x7018e, 0x70191}, {0x70196, 0x70198}, {0x701b1, 0x701b3}, {0x701f6, 0x701f8}, + {0x70243, 0x70246}, {0x70388, 0x7038a}, {0x70391, 0x703a1}, {0x703a3, 0x703ab}, + {0x703d2, 0x703d4}, {0x703fd, 0x7042f}, {0x70531, 0x70556}, {0x710a0, 0x710c5}, + {0x713a0, 0x713f5}, {0x71f08, 0x71f0f}, {0x71f18, 0x71f1d}, {0x71f28, 0x71f2f}, + {0x71f38, 0x71f3f}, {0x71f48, 0x71f4d}, {0x71f68, 0x71f6f}, {0x71fb8, 0x71fbb}, + {0x71fc8, 0x71fcb}, {0x71fd8, 0x71fdb}, {0x71fe8, 0x71fec}, {0x71ff8, 0x71ffb}, + {0x7210b, 0x7210d}, {0x72110, 0x72112}, {0x72119, 0x7211d}, {0x7212a, 0x7212d}, + {0x72130, 0x72133}, {0x72c00, 0x72c2e}, {0x72c62, 0x72c64}, {0x72c6d, 0x72c70}, + {0x72c7e, 0x72c80}, {0x7a7aa, 0x7a7ae}, {0x7a7b0, 0x7a7b4}, {0x7ff21, 0x7ff3a}, + {0x80041, 0x8005a}, {0x800c0, 0x800d6}, {0x800d8, 0x800de}, {0x80189, 0x8018b}, + {0x8018e, 0x80191}, {0x80196, 0x80198}, {0x801b1, 0x801b3}, {0x801f6, 0x801f8}, + {0x80243, 0x80246}, {0x80388, 0x8038a}, {0x80391, 0x803a1}, {0x803a3, 0x803ab}, + {0x803d2, 0x803d4}, {0x803fd, 0x8042f}, {0x80531, 0x80556}, {0x810a0, 0x810c5}, + {0x813a0, 0x813f5}, {0x81f08, 0x81f0f}, {0x81f18, 0x81f1d}, {0x81f28, 0x81f2f}, + {0x81f38, 0x81f3f}, {0x81f48, 0x81f4d}, {0x81f68, 0x81f6f}, {0x81fb8, 0x81fbb}, + {0x81fc8, 0x81fcb}, {0x81fd8, 0x81fdb}, {0x81fe8, 0x81fec}, {0x81ff8, 0x81ffb}, + {0x8210b, 0x8210d}, {0x82110, 0x82112}, {0x82119, 0x8211d}, {0x8212a, 0x8212d}, + {0x82130, 0x82133}, {0x82c00, 0x82c2e}, {0x82c62, 0x82c64}, {0x82c6d, 0x82c70}, + {0x82c7e, 0x82c80}, {0x8a7aa, 0x8a7ae}, {0x8a7b0, 0x8a7b4}, {0x8ff21, 0x8ff3a}, + {0x90041, 0x9005a}, {0x900c0, 0x900d6}, {0x900d8, 0x900de}, {0x90189, 0x9018b}, + {0x9018e, 0x90191}, {0x90196, 0x90198}, {0x901b1, 0x901b3}, {0x901f6, 0x901f8}, + {0x90243, 0x90246}, {0x90388, 0x9038a}, {0x90391, 0x903a1}, {0x903a3, 0x903ab}, + {0x903d2, 0x903d4}, {0x903fd, 0x9042f}, {0x90531, 0x90556}, {0x910a0, 0x910c5}, + {0x913a0, 0x913f5}, {0x91f08, 0x91f0f}, {0x91f18, 0x91f1d}, {0x91f28, 0x91f2f}, + {0x91f38, 0x91f3f}, {0x91f48, 0x91f4d}, {0x91f68, 0x91f6f}, {0x91fb8, 0x91fbb}, + {0x91fc8, 0x91fcb}, {0x91fd8, 0x91fdb}, {0x91fe8, 0x91fec}, {0x91ff8, 0x91ffb}, + {0x9210b, 0x9210d}, {0x92110, 0x92112}, {0x92119, 0x9211d}, {0x9212a, 0x9212d}, + {0x92130, 0x92133}, {0x92c00, 0x92c2e}, {0x92c62, 0x92c64}, {0x92c6d, 0x92c70}, + {0x92c7e, 0x92c80}, {0x9a7aa, 0x9a7ae}, {0x9a7b0, 0x9a7b4}, {0x9ff21, 0x9ff3a}, + {0xa0041, 0xa005a}, {0xa00c0, 0xa00d6}, {0xa00d8, 0xa00de}, {0xa0189, 0xa018b}, + {0xa018e, 0xa0191}, {0xa0196, 0xa0198}, {0xa01b1, 0xa01b3}, {0xa01f6, 0xa01f8}, + {0xa0243, 0xa0246}, {0xa0388, 0xa038a}, {0xa0391, 0xa03a1}, {0xa03a3, 0xa03ab}, + {0xa03d2, 0xa03d4}, {0xa03fd, 0xa042f}, {0xa0531, 0xa0556}, {0xa10a0, 0xa10c5}, + {0xa13a0, 0xa13f5}, {0xa1f08, 0xa1f0f}, {0xa1f18, 0xa1f1d}, {0xa1f28, 0xa1f2f}, + {0xa1f38, 0xa1f3f}, {0xa1f48, 0xa1f4d}, {0xa1f68, 0xa1f6f}, {0xa1fb8, 0xa1fbb}, + {0xa1fc8, 0xa1fcb}, {0xa1fd8, 0xa1fdb}, {0xa1fe8, 0xa1fec}, {0xa1ff8, 0xa1ffb}, + {0xa210b, 0xa210d}, {0xa2110, 0xa2112}, {0xa2119, 0xa211d}, {0xa212a, 0xa212d}, + {0xa2130, 0xa2133}, {0xa2c00, 0xa2c2e}, {0xa2c62, 0xa2c64}, {0xa2c6d, 0xa2c70}, + {0xa2c7e, 0xa2c80}, {0xaa7aa, 0xaa7ae}, {0xaa7b0, 0xaa7b4}, {0xaff21, 0xaff3a}, + {0xb0041, 0xb005a}, {0xb00c0, 0xb00d6}, {0xb00d8, 0xb00de}, {0xb0189, 0xb018b}, + {0xb018e, 0xb0191}, {0xb0196, 0xb0198}, {0xb01b1, 0xb01b3}, {0xb01f6, 0xb01f8}, + {0xb0243, 0xb0246}, {0xb0388, 0xb038a}, {0xb0391, 0xb03a1}, {0xb03a3, 0xb03ab}, + {0xb03d2, 0xb03d4}, {0xb03fd, 0xb042f}, {0xb0531, 0xb0556}, {0xb10a0, 0xb10c5}, + {0xb13a0, 0xb13f5}, {0xb1f08, 0xb1f0f}, {0xb1f18, 0xb1f1d}, {0xb1f28, 0xb1f2f}, + {0xb1f38, 0xb1f3f}, {0xb1f48, 0xb1f4d}, {0xb1f68, 0xb1f6f}, {0xb1fb8, 0xb1fbb}, + {0xb1fc8, 0xb1fcb}, {0xb1fd8, 0xb1fdb}, {0xb1fe8, 0xb1fec}, {0xb1ff8, 0xb1ffb}, + {0xb210b, 0xb210d}, {0xb2110, 0xb2112}, {0xb2119, 0xb211d}, {0xb212a, 0xb212d}, + {0xb2130, 0xb2133}, {0xb2c00, 0xb2c2e}, {0xb2c62, 0xb2c64}, {0xb2c6d, 0xb2c70}, + {0xb2c7e, 0xb2c80}, {0xba7aa, 0xba7ae}, {0xba7b0, 0xba7b4}, {0xbff21, 0xbff3a}, + {0xc0041, 0xc005a}, {0xc00c0, 0xc00d6}, {0xc00d8, 0xc00de}, {0xc0189, 0xc018b}, + {0xc018e, 0xc0191}, {0xc0196, 0xc0198}, {0xc01b1, 0xc01b3}, {0xc01f6, 0xc01f8}, + {0xc0243, 0xc0246}, {0xc0388, 0xc038a}, {0xc0391, 0xc03a1}, {0xc03a3, 0xc03ab}, + {0xc03d2, 0xc03d4}, {0xc03fd, 0xc042f}, {0xc0531, 0xc0556}, {0xc10a0, 0xc10c5}, + {0xc13a0, 0xc13f5}, {0xc1f08, 0xc1f0f}, {0xc1f18, 0xc1f1d}, {0xc1f28, 0xc1f2f}, + {0xc1f38, 0xc1f3f}, {0xc1f48, 0xc1f4d}, {0xc1f68, 0xc1f6f}, {0xc1fb8, 0xc1fbb}, + {0xc1fc8, 0xc1fcb}, {0xc1fd8, 0xc1fdb}, {0xc1fe8, 0xc1fec}, {0xc1ff8, 0xc1ffb}, + {0xc210b, 0xc210d}, {0xc2110, 0xc2112}, {0xc2119, 0xc211d}, {0xc212a, 0xc212d}, + {0xc2130, 0xc2133}, {0xc2c00, 0xc2c2e}, {0xc2c62, 0xc2c64}, {0xc2c6d, 0xc2c70}, + {0xc2c7e, 0xc2c80}, {0xca7aa, 0xca7ae}, {0xca7b0, 0xca7b4}, {0xcff21, 0xcff3a}, + {0xd0041, 0xd005a}, {0xd00c0, 0xd00d6}, {0xd00d8, 0xd00de}, {0xd0189, 0xd018b}, + {0xd018e, 0xd0191}, {0xd0196, 0xd0198}, {0xd01b1, 0xd01b3}, {0xd01f6, 0xd01f8}, + {0xd0243, 0xd0246}, {0xd0388, 0xd038a}, {0xd0391, 0xd03a1}, {0xd03a3, 0xd03ab}, + {0xd03d2, 0xd03d4}, {0xd03fd, 0xd042f}, {0xd0531, 0xd0556}, {0xd10a0, 0xd10c5}, + {0xd13a0, 0xd13f5}, {0xd1f08, 0xd1f0f}, {0xd1f18, 0xd1f1d}, {0xd1f28, 0xd1f2f}, + {0xd1f38, 0xd1f3f}, {0xd1f48, 0xd1f4d}, {0xd1f68, 0xd1f6f}, {0xd1fb8, 0xd1fbb}, + {0xd1fc8, 0xd1fcb}, {0xd1fd8, 0xd1fdb}, {0xd1fe8, 0xd1fec}, {0xd1ff8, 0xd1ffb}, + {0xd210b, 0xd210d}, {0xd2110, 0xd2112}, {0xd2119, 0xd211d}, {0xd212a, 0xd212d}, + {0xd2130, 0xd2133}, {0xd2c00, 0xd2c2e}, {0xd2c62, 0xd2c64}, {0xd2c6d, 0xd2c70}, + {0xd2c7e, 0xd2c80}, {0xda7aa, 0xda7ae}, {0xda7b0, 0xda7b4}, {0xdff21, 0xdff3a}, + {0xe0041, 0xe005a}, {0xe00c0, 0xe00d6}, {0xe00d8, 0xe00de}, {0xe0189, 0xe018b}, + {0xe018e, 0xe0191}, {0xe0196, 0xe0198}, {0xe01b1, 0xe01b3}, {0xe01f6, 0xe01f8}, + {0xe0243, 0xe0246}, {0xe0388, 0xe038a}, {0xe0391, 0xe03a1}, {0xe03a3, 0xe03ab}, + {0xe03d2, 0xe03d4}, {0xe03fd, 0xe042f}, {0xe0531, 0xe0556}, {0xe10a0, 0xe10c5}, + {0xe13a0, 0xe13f5}, {0xe1f08, 0xe1f0f}, {0xe1f18, 0xe1f1d}, {0xe1f28, 0xe1f2f}, + {0xe1f38, 0xe1f3f}, {0xe1f48, 0xe1f4d}, {0xe1f68, 0xe1f6f}, {0xe1fb8, 0xe1fbb}, + {0xe1fc8, 0xe1fcb}, {0xe1fd8, 0xe1fdb}, {0xe1fe8, 0xe1fec}, {0xe1ff8, 0xe1ffb}, + {0xe210b, 0xe210d}, {0xe2110, 0xe2112}, {0xe2119, 0xe211d}, {0xe212a, 0xe212d}, + {0xe2130, 0xe2133}, {0xe2c00, 0xe2c2e}, {0xe2c62, 0xe2c64}, {0xe2c6d, 0xe2c70}, + {0xe2c7e, 0xe2c80}, {0xea7aa, 0xea7ae}, {0xea7b0, 0xea7b4}, {0xeff21, 0xeff3a}, + {0xf0041, 0xf005a}, {0xf00c0, 0xf00d6}, {0xf00d8, 0xf00de}, {0xf0189, 0xf018b}, + {0xf018e, 0xf0191}, {0xf0196, 0xf0198}, {0xf01b1, 0xf01b3}, {0xf01f6, 0xf01f8}, + {0xf0243, 0xf0246}, {0xf0388, 0xf038a}, {0xf0391, 0xf03a1}, {0xf03a3, 0xf03ab}, + {0xf03d2, 0xf03d4}, {0xf03fd, 0xf042f}, {0xf0531, 0xf0556}, {0xf10a0, 0xf10c5}, + {0xf13a0, 0xf13f5}, {0xf1f08, 0xf1f0f}, {0xf1f18, 0xf1f1d}, {0xf1f28, 0xf1f2f}, + {0xf1f38, 0xf1f3f}, {0xf1f48, 0xf1f4d}, {0xf1f68, 0xf1f6f}, {0xf1fb8, 0xf1fbb}, + {0xf1fc8, 0xf1fcb}, {0xf1fd8, 0xf1fdb}, {0xf1fe8, 0xf1fec}, {0xf1ff8, 0xf1ffb}, + {0xf210b, 0xf210d}, {0xf2110, 0xf2112}, {0xf2119, 0xf211d}, {0xf212a, 0xf212d}, + {0xf2130, 0xf2133}, {0xf2c00, 0xf2c2e}, {0xf2c62, 0xf2c64}, {0xf2c6d, 0xf2c70}, + {0xf2c7e, 0xf2c80}, {0xfa7aa, 0xfa7ae}, {0xfa7b0, 0xfa7b4}, {0xfff21, 0xfff3a}, + {0x100041, 0x10005a}, {0x1000c0, 0x1000d6}, {0x1000d8, 0x1000de}, {0x100189, 0x10018b}, + {0x10018e, 0x100191}, {0x100196, 0x100198}, {0x1001b1, 0x1001b3}, {0x1001f6, 0x1001f8}, + {0x100243, 0x100246}, {0x100388, 0x10038a}, {0x100391, 0x1003a1}, {0x1003a3, 0x1003ab}, + {0x1003d2, 0x1003d4}, {0x1003fd, 0x10042f}, {0x100531, 0x100556}, {0x1010a0, 0x1010c5}, + {0x1013a0, 0x1013f5}, {0x101f08, 0x101f0f}, {0x101f18, 0x101f1d}, {0x101f28, 0x101f2f}, + {0x101f38, 0x101f3f}, {0x101f48, 0x101f4d}, {0x101f68, 0x101f6f}, {0x101fb8, 0x101fbb}, + {0x101fc8, 0x101fcb}, {0x101fd8, 0x101fdb}, {0x101fe8, 0x101fec}, {0x101ff8, 0x101ffb}, + {0x10210b, 0x10210d}, {0x102110, 0x102112}, {0x102119, 0x10211d}, {0x10212a, 0x10212d}, + {0x102130, 0x102133}, {0x102c00, 0x102c2e}, {0x102c62, 0x102c64}, {0x102c6d, 0x102c70}, + {0x102c7e, 0x102c80}, {0x10a7aa, 0x10a7ae}, {0x10a7b0, 0x10a7b4}, {0x10ff21, 0x10ff3a} #endif }; @@ -598,8 +3856,1014 @@ static const chr upperCharTable[] = { 0xa782, 0xa784, 0xa786, 0xa78b, 0xa78d, 0xa790, 0xa792, 0xa796, 0xa798, 0xa79a, 0xa79c, 0xa79e, 0xa7a0, 0xa7a2, 0xa7a4, 0xa7a6, 0xa7a8, 0xa7b6 #if TCL_UTF_MAX > 4 - ,0x1d49c, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d504, 0x1d505, 0x1d538, - 0x1d539, 0x1d546, 0x1d7ca + ,0x10100, 0x10102, 0x10104, 0x10106, 0x10108, 0x1010a, 0x1010c, 0x1010e, 0x10110, + 0x10112, 0x10114, 0x10116, 0x10118, 0x1011a, 0x1011c, 0x1011e, 0x10120, 0x10122, + 0x10124, 0x10126, 0x10128, 0x1012a, 0x1012c, 0x1012e, 0x10130, 0x10132, 0x10134, + 0x10136, 0x10139, 0x1013b, 0x1013d, 0x1013f, 0x10141, 0x10143, 0x10145, 0x10147, + 0x1014a, 0x1014c, 0x1014e, 0x10150, 0x10152, 0x10154, 0x10156, 0x10158, 0x1015a, + 0x1015c, 0x1015e, 0x10160, 0x10162, 0x10164, 0x10166, 0x10168, 0x1016a, 0x1016c, + 0x1016e, 0x10170, 0x10172, 0x10174, 0x10176, 0x10178, 0x10179, 0x1017b, 0x1017d, + 0x10181, 0x10182, 0x10184, 0x10186, 0x10187, 0x10193, 0x10194, 0x1019c, 0x1019d, + 0x1019f, 0x101a0, 0x101a2, 0x101a4, 0x101a6, 0x101a7, 0x101a9, 0x101ac, 0x101ae, + 0x101af, 0x101b5, 0x101b7, 0x101b8, 0x101bc, 0x101c4, 0x101c7, 0x101ca, 0x101cd, + 0x101cf, 0x101d1, 0x101d3, 0x101d5, 0x101d7, 0x101d9, 0x101db, 0x101de, 0x101e0, + 0x101e2, 0x101e4, 0x101e6, 0x101e8, 0x101ea, 0x101ec, 0x101ee, 0x101f1, 0x101f4, + 0x101fa, 0x101fc, 0x101fe, 0x10200, 0x10202, 0x10204, 0x10206, 0x10208, 0x1020a, + 0x1020c, 0x1020e, 0x10210, 0x10212, 0x10214, 0x10216, 0x10218, 0x1021a, 0x1021c, + 0x1021e, 0x10220, 0x10222, 0x10224, 0x10226, 0x10228, 0x1022a, 0x1022c, 0x1022e, + 0x10230, 0x10232, 0x1023a, 0x1023b, 0x1023d, 0x1023e, 0x10241, 0x10248, 0x1024a, + 0x1024c, 0x1024e, 0x10370, 0x10372, 0x10376, 0x1037f, 0x10386, 0x1038c, 0x1038e, + 0x1038f, 0x103cf, 0x103d8, 0x103da, 0x103dc, 0x103de, 0x103e0, 0x103e2, 0x103e4, + 0x103e6, 0x103e8, 0x103ea, 0x103ec, 0x103ee, 0x103f4, 0x103f7, 0x103f9, 0x103fa, + 0x10460, 0x10462, 0x10464, 0x10466, 0x10468, 0x1046a, 0x1046c, 0x1046e, 0x10470, + 0x10472, 0x10474, 0x10476, 0x10478, 0x1047a, 0x1047c, 0x1047e, 0x10480, 0x1048a, + 0x1048c, 0x1048e, 0x10490, 0x10492, 0x10494, 0x10496, 0x10498, 0x1049a, 0x1049c, + 0x1049e, 0x104a0, 0x104a2, 0x104a4, 0x104a6, 0x104a8, 0x104aa, 0x104ac, 0x104ae, + 0x104b0, 0x104b2, 0x104b4, 0x104b6, 0x104b8, 0x104ba, 0x104bc, 0x104be, 0x104c0, + 0x104c1, 0x104c3, 0x104c5, 0x104c7, 0x104c9, 0x104cb, 0x104cd, 0x104d0, 0x104d2, + 0x104d4, 0x104d6, 0x104d8, 0x104da, 0x104dc, 0x104de, 0x104e0, 0x104e2, 0x104e4, + 0x104e6, 0x104e8, 0x104ea, 0x104ec, 0x104ee, 0x104f0, 0x104f2, 0x104f4, 0x104f6, + 0x104f8, 0x104fa, 0x104fc, 0x104fe, 0x10500, 0x10502, 0x10504, 0x10506, 0x10508, + 0x1050a, 0x1050c, 0x1050e, 0x10510, 0x10512, 0x10514, 0x10516, 0x10518, 0x1051a, + 0x1051c, 0x1051e, 0x10520, 0x10522, 0x10524, 0x10526, 0x10528, 0x1052a, 0x1052c, + 0x1052e, 0x110c7, 0x110cd, 0x11e00, 0x11e02, 0x11e04, 0x11e06, 0x11e08, 0x11e0a, + 0x11e0c, 0x11e0e, 0x11e10, 0x11e12, 0x11e14, 0x11e16, 0x11e18, 0x11e1a, 0x11e1c, + 0x11e1e, 0x11e20, 0x11e22, 0x11e24, 0x11e26, 0x11e28, 0x11e2a, 0x11e2c, 0x11e2e, + 0x11e30, 0x11e32, 0x11e34, 0x11e36, 0x11e38, 0x11e3a, 0x11e3c, 0x11e3e, 0x11e40, + 0x11e42, 0x11e44, 0x11e46, 0x11e48, 0x11e4a, 0x11e4c, 0x11e4e, 0x11e50, 0x11e52, + 0x11e54, 0x11e56, 0x11e58, 0x11e5a, 0x11e5c, 0x11e5e, 0x11e60, 0x11e62, 0x11e64, + 0x11e66, 0x11e68, 0x11e6a, 0x11e6c, 0x11e6e, 0x11e70, 0x11e72, 0x11e74, 0x11e76, + 0x11e78, 0x11e7a, 0x11e7c, 0x11e7e, 0x11e80, 0x11e82, 0x11e84, 0x11e86, 0x11e88, + 0x11e8a, 0x11e8c, 0x11e8e, 0x11e90, 0x11e92, 0x11e94, 0x11e9e, 0x11ea0, 0x11ea2, + 0x11ea4, 0x11ea6, 0x11ea8, 0x11eaa, 0x11eac, 0x11eae, 0x11eb0, 0x11eb2, 0x11eb4, + 0x11eb6, 0x11eb8, 0x11eba, 0x11ebc, 0x11ebe, 0x11ec0, 0x11ec2, 0x11ec4, 0x11ec6, + 0x11ec8, 0x11eca, 0x11ecc, 0x11ece, 0x11ed0, 0x11ed2, 0x11ed4, 0x11ed6, 0x11ed8, + 0x11eda, 0x11edc, 0x11ede, 0x11ee0, 0x11ee2, 0x11ee4, 0x11ee6, 0x11ee8, 0x11eea, + 0x11eec, 0x11eee, 0x11ef0, 0x11ef2, 0x11ef4, 0x11ef6, 0x11ef8, 0x11efa, 0x11efc, + 0x11efe, 0x11f59, 0x11f5b, 0x11f5d, 0x11f5f, 0x12102, 0x12107, 0x12115, 0x12124, + 0x12126, 0x12128, 0x1213e, 0x1213f, 0x12145, 0x12183, 0x12c60, 0x12c67, 0x12c69, + 0x12c6b, 0x12c72, 0x12c75, 0x12c82, 0x12c84, 0x12c86, 0x12c88, 0x12c8a, 0x12c8c, + 0x12c8e, 0x12c90, 0x12c92, 0x12c94, 0x12c96, 0x12c98, 0x12c9a, 0x12c9c, 0x12c9e, + 0x12ca0, 0x12ca2, 0x12ca4, 0x12ca6, 0x12ca8, 0x12caa, 0x12cac, 0x12cae, 0x12cb0, + 0x12cb2, 0x12cb4, 0x12cb6, 0x12cb8, 0x12cba, 0x12cbc, 0x12cbe, 0x12cc0, 0x12cc2, + 0x12cc4, 0x12cc6, 0x12cc8, 0x12cca, 0x12ccc, 0x12cce, 0x12cd0, 0x12cd2, 0x12cd4, + 0x12cd6, 0x12cd8, 0x12cda, 0x12cdc, 0x12cde, 0x12ce0, 0x12ce2, 0x12ceb, 0x12ced, + 0x12cf2, 0x1a640, 0x1a642, 0x1a644, 0x1a646, 0x1a648, 0x1a64a, 0x1a64c, 0x1a64e, + 0x1a650, 0x1a652, 0x1a654, 0x1a656, 0x1a658, 0x1a65a, 0x1a65c, 0x1a65e, 0x1a660, + 0x1a662, 0x1a664, 0x1a666, 0x1a668, 0x1a66a, 0x1a66c, 0x1a680, 0x1a682, 0x1a684, + 0x1a686, 0x1a688, 0x1a68a, 0x1a68c, 0x1a68e, 0x1a690, 0x1a692, 0x1a694, 0x1a696, + 0x1a698, 0x1a69a, 0x1a722, 0x1a724, 0x1a726, 0x1a728, 0x1a72a, 0x1a72c, 0x1a72e, + 0x1a732, 0x1a734, 0x1a736, 0x1a738, 0x1a73a, 0x1a73c, 0x1a73e, 0x1a740, 0x1a742, + 0x1a744, 0x1a746, 0x1a748, 0x1a74a, 0x1a74c, 0x1a74e, 0x1a750, 0x1a752, 0x1a754, + 0x1a756, 0x1a758, 0x1a75a, 0x1a75c, 0x1a75e, 0x1a760, 0x1a762, 0x1a764, 0x1a766, + 0x1a768, 0x1a76a, 0x1a76c, 0x1a76e, 0x1a779, 0x1a77b, 0x1a77d, 0x1a77e, 0x1a780, + 0x1a782, 0x1a784, 0x1a786, 0x1a78b, 0x1a78d, 0x1a790, 0x1a792, 0x1a796, 0x1a798, + 0x1a79a, 0x1a79c, 0x1a79e, 0x1a7a0, 0x1a7a2, 0x1a7a4, 0x1a7a6, 0x1a7a8, 0x1a7b6, + 0x20100, 0x20102, 0x20104, 0x20106, 0x20108, 0x2010a, 0x2010c, 0x2010e, 0x20110, + 0x20112, 0x20114, 0x20116, 0x20118, 0x2011a, 0x2011c, 0x2011e, 0x20120, 0x20122, + 0x20124, 0x20126, 0x20128, 0x2012a, 0x2012c, 0x2012e, 0x20130, 0x20132, 0x20134, + 0x20136, 0x20139, 0x2013b, 0x2013d, 0x2013f, 0x20141, 0x20143, 0x20145, 0x20147, + 0x2014a, 0x2014c, 0x2014e, 0x20150, 0x20152, 0x20154, 0x20156, 0x20158, 0x2015a, + 0x2015c, 0x2015e, 0x20160, 0x20162, 0x20164, 0x20166, 0x20168, 0x2016a, 0x2016c, + 0x2016e, 0x20170, 0x20172, 0x20174, 0x20176, 0x20178, 0x20179, 0x2017b, 0x2017d, + 0x20181, 0x20182, 0x20184, 0x20186, 0x20187, 0x20193, 0x20194, 0x2019c, 0x2019d, + 0x2019f, 0x201a0, 0x201a2, 0x201a4, 0x201a6, 0x201a7, 0x201a9, 0x201ac, 0x201ae, + 0x201af, 0x201b5, 0x201b7, 0x201b8, 0x201bc, 0x201c4, 0x201c7, 0x201ca, 0x201cd, + 0x201cf, 0x201d1, 0x201d3, 0x201d5, 0x201d7, 0x201d9, 0x201db, 0x201de, 0x201e0, + 0x201e2, 0x201e4, 0x201e6, 0x201e8, 0x201ea, 0x201ec, 0x201ee, 0x201f1, 0x201f4, + 0x201fa, 0x201fc, 0x201fe, 0x20200, 0x20202, 0x20204, 0x20206, 0x20208, 0x2020a, + 0x2020c, 0x2020e, 0x20210, 0x20212, 0x20214, 0x20216, 0x20218, 0x2021a, 0x2021c, + 0x2021e, 0x20220, 0x20222, 0x20224, 0x20226, 0x20228, 0x2022a, 0x2022c, 0x2022e, + 0x20230, 0x20232, 0x2023a, 0x2023b, 0x2023d, 0x2023e, 0x20241, 0x20248, 0x2024a, + 0x2024c, 0x2024e, 0x20370, 0x20372, 0x20376, 0x2037f, 0x20386, 0x2038c, 0x2038e, + 0x2038f, 0x203cf, 0x203d8, 0x203da, 0x203dc, 0x203de, 0x203e0, 0x203e2, 0x203e4, + 0x203e6, 0x203e8, 0x203ea, 0x203ec, 0x203ee, 0x203f4, 0x203f7, 0x203f9, 0x203fa, + 0x20460, 0x20462, 0x20464, 0x20466, 0x20468, 0x2046a, 0x2046c, 0x2046e, 0x20470, + 0x20472, 0x20474, 0x20476, 0x20478, 0x2047a, 0x2047c, 0x2047e, 0x20480, 0x2048a, + 0x2048c, 0x2048e, 0x20490, 0x20492, 0x20494, 0x20496, 0x20498, 0x2049a, 0x2049c, + 0x2049e, 0x204a0, 0x204a2, 0x204a4, 0x204a6, 0x204a8, 0x204aa, 0x204ac, 0x204ae, + 0x204b0, 0x204b2, 0x204b4, 0x204b6, 0x204b8, 0x204ba, 0x204bc, 0x204be, 0x204c0, + 0x204c1, 0x204c3, 0x204c5, 0x204c7, 0x204c9, 0x204cb, 0x204cd, 0x204d0, 0x204d2, + 0x204d4, 0x204d6, 0x204d8, 0x204da, 0x204dc, 0x204de, 0x204e0, 0x204e2, 0x204e4, + 0x204e6, 0x204e8, 0x204ea, 0x204ec, 0x204ee, 0x204f0, 0x204f2, 0x204f4, 0x204f6, + 0x204f8, 0x204fa, 0x204fc, 0x204fe, 0x20500, 0x20502, 0x20504, 0x20506, 0x20508, + 0x2050a, 0x2050c, 0x2050e, 0x20510, 0x20512, 0x20514, 0x20516, 0x20518, 0x2051a, + 0x2051c, 0x2051e, 0x20520, 0x20522, 0x20524, 0x20526, 0x20528, 0x2052a, 0x2052c, + 0x2052e, 0x210c7, 0x210cd, 0x21e00, 0x21e02, 0x21e04, 0x21e06, 0x21e08, 0x21e0a, + 0x21e0c, 0x21e0e, 0x21e10, 0x21e12, 0x21e14, 0x21e16, 0x21e18, 0x21e1a, 0x21e1c, + 0x21e1e, 0x21e20, 0x21e22, 0x21e24, 0x21e26, 0x21e28, 0x21e2a, 0x21e2c, 0x21e2e, + 0x21e30, 0x21e32, 0x21e34, 0x21e36, 0x21e38, 0x21e3a, 0x21e3c, 0x21e3e, 0x21e40, + 0x21e42, 0x21e44, 0x21e46, 0x21e48, 0x21e4a, 0x21e4c, 0x21e4e, 0x21e50, 0x21e52, + 0x21e54, 0x21e56, 0x21e58, 0x21e5a, 0x21e5c, 0x21e5e, 0x21e60, 0x21e62, 0x21e64, + 0x21e66, 0x21e68, 0x21e6a, 0x21e6c, 0x21e6e, 0x21e70, 0x21e72, 0x21e74, 0x21e76, + 0x21e78, 0x21e7a, 0x21e7c, 0x21e7e, 0x21e80, 0x21e82, 0x21e84, 0x21e86, 0x21e88, + 0x21e8a, 0x21e8c, 0x21e8e, 0x21e90, 0x21e92, 0x21e94, 0x21e9e, 0x21ea0, 0x21ea2, + 0x21ea4, 0x21ea6, 0x21ea8, 0x21eaa, 0x21eac, 0x21eae, 0x21eb0, 0x21eb2, 0x21eb4, + 0x21eb6, 0x21eb8, 0x21eba, 0x21ebc, 0x21ebe, 0x21ec0, 0x21ec2, 0x21ec4, 0x21ec6, + 0x21ec8, 0x21eca, 0x21ecc, 0x21ece, 0x21ed0, 0x21ed2, 0x21ed4, 0x21ed6, 0x21ed8, + 0x21eda, 0x21edc, 0x21ede, 0x21ee0, 0x21ee2, 0x21ee4, 0x21ee6, 0x21ee8, 0x21eea, + 0x21eec, 0x21eee, 0x21ef0, 0x21ef2, 0x21ef4, 0x21ef6, 0x21ef8, 0x21efa, 0x21efc, + 0x21efe, 0x21f59, 0x21f5b, 0x21f5d, 0x21f5f, 0x22102, 0x22107, 0x22115, 0x22124, + 0x22126, 0x22128, 0x2213e, 0x2213f, 0x22145, 0x22183, 0x22c60, 0x22c67, 0x22c69, + 0x22c6b, 0x22c72, 0x22c75, 0x22c82, 0x22c84, 0x22c86, 0x22c88, 0x22c8a, 0x22c8c, + 0x22c8e, 0x22c90, 0x22c92, 0x22c94, 0x22c96, 0x22c98, 0x22c9a, 0x22c9c, 0x22c9e, + 0x22ca0, 0x22ca2, 0x22ca4, 0x22ca6, 0x22ca8, 0x22caa, 0x22cac, 0x22cae, 0x22cb0, + 0x22cb2, 0x22cb4, 0x22cb6, 0x22cb8, 0x22cba, 0x22cbc, 0x22cbe, 0x22cc0, 0x22cc2, + 0x22cc4, 0x22cc6, 0x22cc8, 0x22cca, 0x22ccc, 0x22cce, 0x22cd0, 0x22cd2, 0x22cd4, + 0x22cd6, 0x22cd8, 0x22cda, 0x22cdc, 0x22cde, 0x22ce0, 0x22ce2, 0x22ceb, 0x22ced, + 0x22cf2, 0x2a640, 0x2a642, 0x2a644, 0x2a646, 0x2a648, 0x2a64a, 0x2a64c, 0x2a64e, + 0x2a650, 0x2a652, 0x2a654, 0x2a656, 0x2a658, 0x2a65a, 0x2a65c, 0x2a65e, 0x2a660, + 0x2a662, 0x2a664, 0x2a666, 0x2a668, 0x2a66a, 0x2a66c, 0x2a680, 0x2a682, 0x2a684, + 0x2a686, 0x2a688, 0x2a68a, 0x2a68c, 0x2a68e, 0x2a690, 0x2a692, 0x2a694, 0x2a696, + 0x2a698, 0x2a69a, 0x2a722, 0x2a724, 0x2a726, 0x2a728, 0x2a72a, 0x2a72c, 0x2a72e, + 0x2a732, 0x2a734, 0x2a736, 0x2a738, 0x2a73a, 0x2a73c, 0x2a73e, 0x2a740, 0x2a742, + 0x2a744, 0x2a746, 0x2a748, 0x2a74a, 0x2a74c, 0x2a74e, 0x2a750, 0x2a752, 0x2a754, + 0x2a756, 0x2a758, 0x2a75a, 0x2a75c, 0x2a75e, 0x2a760, 0x2a762, 0x2a764, 0x2a766, + 0x2a768, 0x2a76a, 0x2a76c, 0x2a76e, 0x2a779, 0x2a77b, 0x2a77d, 0x2a77e, 0x2a780, + 0x2a782, 0x2a784, 0x2a786, 0x2a78b, 0x2a78d, 0x2a790, 0x2a792, 0x2a796, 0x2a798, + 0x2a79a, 0x2a79c, 0x2a79e, 0x2a7a0, 0x2a7a2, 0x2a7a4, 0x2a7a6, 0x2a7a8, 0x2a7b6, + 0x30100, 0x30102, 0x30104, 0x30106, 0x30108, 0x3010a, 0x3010c, 0x3010e, 0x30110, + 0x30112, 0x30114, 0x30116, 0x30118, 0x3011a, 0x3011c, 0x3011e, 0x30120, 0x30122, + 0x30124, 0x30126, 0x30128, 0x3012a, 0x3012c, 0x3012e, 0x30130, 0x30132, 0x30134, + 0x30136, 0x30139, 0x3013b, 0x3013d, 0x3013f, 0x30141, 0x30143, 0x30145, 0x30147, + 0x3014a, 0x3014c, 0x3014e, 0x30150, 0x30152, 0x30154, 0x30156, 0x30158, 0x3015a, + 0x3015c, 0x3015e, 0x30160, 0x30162, 0x30164, 0x30166, 0x30168, 0x3016a, 0x3016c, + 0x3016e, 0x30170, 0x30172, 0x30174, 0x30176, 0x30178, 0x30179, 0x3017b, 0x3017d, + 0x30181, 0x30182, 0x30184, 0x30186, 0x30187, 0x30193, 0x30194, 0x3019c, 0x3019d, + 0x3019f, 0x301a0, 0x301a2, 0x301a4, 0x301a6, 0x301a7, 0x301a9, 0x301ac, 0x301ae, + 0x301af, 0x301b5, 0x301b7, 0x301b8, 0x301bc, 0x301c4, 0x301c7, 0x301ca, 0x301cd, + 0x301cf, 0x301d1, 0x301d3, 0x301d5, 0x301d7, 0x301d9, 0x301db, 0x301de, 0x301e0, + 0x301e2, 0x301e4, 0x301e6, 0x301e8, 0x301ea, 0x301ec, 0x301ee, 0x301f1, 0x301f4, + 0x301fa, 0x301fc, 0x301fe, 0x30200, 0x30202, 0x30204, 0x30206, 0x30208, 0x3020a, + 0x3020c, 0x3020e, 0x30210, 0x30212, 0x30214, 0x30216, 0x30218, 0x3021a, 0x3021c, + 0x3021e, 0x30220, 0x30222, 0x30224, 0x30226, 0x30228, 0x3022a, 0x3022c, 0x3022e, + 0x30230, 0x30232, 0x3023a, 0x3023b, 0x3023d, 0x3023e, 0x30241, 0x30248, 0x3024a, + 0x3024c, 0x3024e, 0x30370, 0x30372, 0x30376, 0x3037f, 0x30386, 0x3038c, 0x3038e, + 0x3038f, 0x303cf, 0x303d8, 0x303da, 0x303dc, 0x303de, 0x303e0, 0x303e2, 0x303e4, + 0x303e6, 0x303e8, 0x303ea, 0x303ec, 0x303ee, 0x303f4, 0x303f7, 0x303f9, 0x303fa, + 0x30460, 0x30462, 0x30464, 0x30466, 0x30468, 0x3046a, 0x3046c, 0x3046e, 0x30470, + 0x30472, 0x30474, 0x30476, 0x30478, 0x3047a, 0x3047c, 0x3047e, 0x30480, 0x3048a, + 0x3048c, 0x3048e, 0x30490, 0x30492, 0x30494, 0x30496, 0x30498, 0x3049a, 0x3049c, + 0x3049e, 0x304a0, 0x304a2, 0x304a4, 0x304a6, 0x304a8, 0x304aa, 0x304ac, 0x304ae, + 0x304b0, 0x304b2, 0x304b4, 0x304b6, 0x304b8, 0x304ba, 0x304bc, 0x304be, 0x304c0, + 0x304c1, 0x304c3, 0x304c5, 0x304c7, 0x304c9, 0x304cb, 0x304cd, 0x304d0, 0x304d2, + 0x304d4, 0x304d6, 0x304d8, 0x304da, 0x304dc, 0x304de, 0x304e0, 0x304e2, 0x304e4, + 0x304e6, 0x304e8, 0x304ea, 0x304ec, 0x304ee, 0x304f0, 0x304f2, 0x304f4, 0x304f6, + 0x304f8, 0x304fa, 0x304fc, 0x304fe, 0x30500, 0x30502, 0x30504, 0x30506, 0x30508, + 0x3050a, 0x3050c, 0x3050e, 0x30510, 0x30512, 0x30514, 0x30516, 0x30518, 0x3051a, + 0x3051c, 0x3051e, 0x30520, 0x30522, 0x30524, 0x30526, 0x30528, 0x3052a, 0x3052c, + 0x3052e, 0x310c7, 0x310cd, 0x31e00, 0x31e02, 0x31e04, 0x31e06, 0x31e08, 0x31e0a, + 0x31e0c, 0x31e0e, 0x31e10, 0x31e12, 0x31e14, 0x31e16, 0x31e18, 0x31e1a, 0x31e1c, + 0x31e1e, 0x31e20, 0x31e22, 0x31e24, 0x31e26, 0x31e28, 0x31e2a, 0x31e2c, 0x31e2e, + 0x31e30, 0x31e32, 0x31e34, 0x31e36, 0x31e38, 0x31e3a, 0x31e3c, 0x31e3e, 0x31e40, + 0x31e42, 0x31e44, 0x31e46, 0x31e48, 0x31e4a, 0x31e4c, 0x31e4e, 0x31e50, 0x31e52, + 0x31e54, 0x31e56, 0x31e58, 0x31e5a, 0x31e5c, 0x31e5e, 0x31e60, 0x31e62, 0x31e64, + 0x31e66, 0x31e68, 0x31e6a, 0x31e6c, 0x31e6e, 0x31e70, 0x31e72, 0x31e74, 0x31e76, + 0x31e78, 0x31e7a, 0x31e7c, 0x31e7e, 0x31e80, 0x31e82, 0x31e84, 0x31e86, 0x31e88, + 0x31e8a, 0x31e8c, 0x31e8e, 0x31e90, 0x31e92, 0x31e94, 0x31e9e, 0x31ea0, 0x31ea2, + 0x31ea4, 0x31ea6, 0x31ea8, 0x31eaa, 0x31eac, 0x31eae, 0x31eb0, 0x31eb2, 0x31eb4, + 0x31eb6, 0x31eb8, 0x31eba, 0x31ebc, 0x31ebe, 0x31ec0, 0x31ec2, 0x31ec4, 0x31ec6, + 0x31ec8, 0x31eca, 0x31ecc, 0x31ece, 0x31ed0, 0x31ed2, 0x31ed4, 0x31ed6, 0x31ed8, + 0x31eda, 0x31edc, 0x31ede, 0x31ee0, 0x31ee2, 0x31ee4, 0x31ee6, 0x31ee8, 0x31eea, + 0x31eec, 0x31eee, 0x31ef0, 0x31ef2, 0x31ef4, 0x31ef6, 0x31ef8, 0x31efa, 0x31efc, + 0x31efe, 0x31f59, 0x31f5b, 0x31f5d, 0x31f5f, 0x32102, 0x32107, 0x32115, 0x32124, + 0x32126, 0x32128, 0x3213e, 0x3213f, 0x32145, 0x32183, 0x32c60, 0x32c67, 0x32c69, + 0x32c6b, 0x32c72, 0x32c75, 0x32c82, 0x32c84, 0x32c86, 0x32c88, 0x32c8a, 0x32c8c, + 0x32c8e, 0x32c90, 0x32c92, 0x32c94, 0x32c96, 0x32c98, 0x32c9a, 0x32c9c, 0x32c9e, + 0x32ca0, 0x32ca2, 0x32ca4, 0x32ca6, 0x32ca8, 0x32caa, 0x32cac, 0x32cae, 0x32cb0, + 0x32cb2, 0x32cb4, 0x32cb6, 0x32cb8, 0x32cba, 0x32cbc, 0x32cbe, 0x32cc0, 0x32cc2, + 0x32cc4, 0x32cc6, 0x32cc8, 0x32cca, 0x32ccc, 0x32cce, 0x32cd0, 0x32cd2, 0x32cd4, + 0x32cd6, 0x32cd8, 0x32cda, 0x32cdc, 0x32cde, 0x32ce0, 0x32ce2, 0x32ceb, 0x32ced, + 0x32cf2, 0x3a640, 0x3a642, 0x3a644, 0x3a646, 0x3a648, 0x3a64a, 0x3a64c, 0x3a64e, + 0x3a650, 0x3a652, 0x3a654, 0x3a656, 0x3a658, 0x3a65a, 0x3a65c, 0x3a65e, 0x3a660, + 0x3a662, 0x3a664, 0x3a666, 0x3a668, 0x3a66a, 0x3a66c, 0x3a680, 0x3a682, 0x3a684, + 0x3a686, 0x3a688, 0x3a68a, 0x3a68c, 0x3a68e, 0x3a690, 0x3a692, 0x3a694, 0x3a696, + 0x3a698, 0x3a69a, 0x3a722, 0x3a724, 0x3a726, 0x3a728, 0x3a72a, 0x3a72c, 0x3a72e, + 0x3a732, 0x3a734, 0x3a736, 0x3a738, 0x3a73a, 0x3a73c, 0x3a73e, 0x3a740, 0x3a742, + 0x3a744, 0x3a746, 0x3a748, 0x3a74a, 0x3a74c, 0x3a74e, 0x3a750, 0x3a752, 0x3a754, + 0x3a756, 0x3a758, 0x3a75a, 0x3a75c, 0x3a75e, 0x3a760, 0x3a762, 0x3a764, 0x3a766, + 0x3a768, 0x3a76a, 0x3a76c, 0x3a76e, 0x3a779, 0x3a77b, 0x3a77d, 0x3a77e, 0x3a780, + 0x3a782, 0x3a784, 0x3a786, 0x3a78b, 0x3a78d, 0x3a790, 0x3a792, 0x3a796, 0x3a798, + 0x3a79a, 0x3a79c, 0x3a79e, 0x3a7a0, 0x3a7a2, 0x3a7a4, 0x3a7a6, 0x3a7a8, 0x3a7b6, + 0x40100, 0x40102, 0x40104, 0x40106, 0x40108, 0x4010a, 0x4010c, 0x4010e, 0x40110, + 0x40112, 0x40114, 0x40116, 0x40118, 0x4011a, 0x4011c, 0x4011e, 0x40120, 0x40122, + 0x40124, 0x40126, 0x40128, 0x4012a, 0x4012c, 0x4012e, 0x40130, 0x40132, 0x40134, + 0x40136, 0x40139, 0x4013b, 0x4013d, 0x4013f, 0x40141, 0x40143, 0x40145, 0x40147, + 0x4014a, 0x4014c, 0x4014e, 0x40150, 0x40152, 0x40154, 0x40156, 0x40158, 0x4015a, + 0x4015c, 0x4015e, 0x40160, 0x40162, 0x40164, 0x40166, 0x40168, 0x4016a, 0x4016c, + 0x4016e, 0x40170, 0x40172, 0x40174, 0x40176, 0x40178, 0x40179, 0x4017b, 0x4017d, + 0x40181, 0x40182, 0x40184, 0x40186, 0x40187, 0x40193, 0x40194, 0x4019c, 0x4019d, + 0x4019f, 0x401a0, 0x401a2, 0x401a4, 0x401a6, 0x401a7, 0x401a9, 0x401ac, 0x401ae, + 0x401af, 0x401b5, 0x401b7, 0x401b8, 0x401bc, 0x401c4, 0x401c7, 0x401ca, 0x401cd, + 0x401cf, 0x401d1, 0x401d3, 0x401d5, 0x401d7, 0x401d9, 0x401db, 0x401de, 0x401e0, + 0x401e2, 0x401e4, 0x401e6, 0x401e8, 0x401ea, 0x401ec, 0x401ee, 0x401f1, 0x401f4, + 0x401fa, 0x401fc, 0x401fe, 0x40200, 0x40202, 0x40204, 0x40206, 0x40208, 0x4020a, + 0x4020c, 0x4020e, 0x40210, 0x40212, 0x40214, 0x40216, 0x40218, 0x4021a, 0x4021c, + 0x4021e, 0x40220, 0x40222, 0x40224, 0x40226, 0x40228, 0x4022a, 0x4022c, 0x4022e, + 0x40230, 0x40232, 0x4023a, 0x4023b, 0x4023d, 0x4023e, 0x40241, 0x40248, 0x4024a, + 0x4024c, 0x4024e, 0x40370, 0x40372, 0x40376, 0x4037f, 0x40386, 0x4038c, 0x4038e, + 0x4038f, 0x403cf, 0x403d8, 0x403da, 0x403dc, 0x403de, 0x403e0, 0x403e2, 0x403e4, + 0x403e6, 0x403e8, 0x403ea, 0x403ec, 0x403ee, 0x403f4, 0x403f7, 0x403f9, 0x403fa, + 0x40460, 0x40462, 0x40464, 0x40466, 0x40468, 0x4046a, 0x4046c, 0x4046e, 0x40470, + 0x40472, 0x40474, 0x40476, 0x40478, 0x4047a, 0x4047c, 0x4047e, 0x40480, 0x4048a, + 0x4048c, 0x4048e, 0x40490, 0x40492, 0x40494, 0x40496, 0x40498, 0x4049a, 0x4049c, + 0x4049e, 0x404a0, 0x404a2, 0x404a4, 0x404a6, 0x404a8, 0x404aa, 0x404ac, 0x404ae, + 0x404b0, 0x404b2, 0x404b4, 0x404b6, 0x404b8, 0x404ba, 0x404bc, 0x404be, 0x404c0, + 0x404c1, 0x404c3, 0x404c5, 0x404c7, 0x404c9, 0x404cb, 0x404cd, 0x404d0, 0x404d2, + 0x404d4, 0x404d6, 0x404d8, 0x404da, 0x404dc, 0x404de, 0x404e0, 0x404e2, 0x404e4, + 0x404e6, 0x404e8, 0x404ea, 0x404ec, 0x404ee, 0x404f0, 0x404f2, 0x404f4, 0x404f6, + 0x404f8, 0x404fa, 0x404fc, 0x404fe, 0x40500, 0x40502, 0x40504, 0x40506, 0x40508, + 0x4050a, 0x4050c, 0x4050e, 0x40510, 0x40512, 0x40514, 0x40516, 0x40518, 0x4051a, + 0x4051c, 0x4051e, 0x40520, 0x40522, 0x40524, 0x40526, 0x40528, 0x4052a, 0x4052c, + 0x4052e, 0x410c7, 0x410cd, 0x41e00, 0x41e02, 0x41e04, 0x41e06, 0x41e08, 0x41e0a, + 0x41e0c, 0x41e0e, 0x41e10, 0x41e12, 0x41e14, 0x41e16, 0x41e18, 0x41e1a, 0x41e1c, + 0x41e1e, 0x41e20, 0x41e22, 0x41e24, 0x41e26, 0x41e28, 0x41e2a, 0x41e2c, 0x41e2e, + 0x41e30, 0x41e32, 0x41e34, 0x41e36, 0x41e38, 0x41e3a, 0x41e3c, 0x41e3e, 0x41e40, + 0x41e42, 0x41e44, 0x41e46, 0x41e48, 0x41e4a, 0x41e4c, 0x41e4e, 0x41e50, 0x41e52, + 0x41e54, 0x41e56, 0x41e58, 0x41e5a, 0x41e5c, 0x41e5e, 0x41e60, 0x41e62, 0x41e64, + 0x41e66, 0x41e68, 0x41e6a, 0x41e6c, 0x41e6e, 0x41e70, 0x41e72, 0x41e74, 0x41e76, + 0x41e78, 0x41e7a, 0x41e7c, 0x41e7e, 0x41e80, 0x41e82, 0x41e84, 0x41e86, 0x41e88, + 0x41e8a, 0x41e8c, 0x41e8e, 0x41e90, 0x41e92, 0x41e94, 0x41e9e, 0x41ea0, 0x41ea2, + 0x41ea4, 0x41ea6, 0x41ea8, 0x41eaa, 0x41eac, 0x41eae, 0x41eb0, 0x41eb2, 0x41eb4, + 0x41eb6, 0x41eb8, 0x41eba, 0x41ebc, 0x41ebe, 0x41ec0, 0x41ec2, 0x41ec4, 0x41ec6, + 0x41ec8, 0x41eca, 0x41ecc, 0x41ece, 0x41ed0, 0x41ed2, 0x41ed4, 0x41ed6, 0x41ed8, + 0x41eda, 0x41edc, 0x41ede, 0x41ee0, 0x41ee2, 0x41ee4, 0x41ee6, 0x41ee8, 0x41eea, + 0x41eec, 0x41eee, 0x41ef0, 0x41ef2, 0x41ef4, 0x41ef6, 0x41ef8, 0x41efa, 0x41efc, + 0x41efe, 0x41f59, 0x41f5b, 0x41f5d, 0x41f5f, 0x42102, 0x42107, 0x42115, 0x42124, + 0x42126, 0x42128, 0x4213e, 0x4213f, 0x42145, 0x42183, 0x42c60, 0x42c67, 0x42c69, + 0x42c6b, 0x42c72, 0x42c75, 0x42c82, 0x42c84, 0x42c86, 0x42c88, 0x42c8a, 0x42c8c, + 0x42c8e, 0x42c90, 0x42c92, 0x42c94, 0x42c96, 0x42c98, 0x42c9a, 0x42c9c, 0x42c9e, + 0x42ca0, 0x42ca2, 0x42ca4, 0x42ca6, 0x42ca8, 0x42caa, 0x42cac, 0x42cae, 0x42cb0, + 0x42cb2, 0x42cb4, 0x42cb6, 0x42cb8, 0x42cba, 0x42cbc, 0x42cbe, 0x42cc0, 0x42cc2, + 0x42cc4, 0x42cc6, 0x42cc8, 0x42cca, 0x42ccc, 0x42cce, 0x42cd0, 0x42cd2, 0x42cd4, + 0x42cd6, 0x42cd8, 0x42cda, 0x42cdc, 0x42cde, 0x42ce0, 0x42ce2, 0x42ceb, 0x42ced, + 0x42cf2, 0x4a640, 0x4a642, 0x4a644, 0x4a646, 0x4a648, 0x4a64a, 0x4a64c, 0x4a64e, + 0x4a650, 0x4a652, 0x4a654, 0x4a656, 0x4a658, 0x4a65a, 0x4a65c, 0x4a65e, 0x4a660, + 0x4a662, 0x4a664, 0x4a666, 0x4a668, 0x4a66a, 0x4a66c, 0x4a680, 0x4a682, 0x4a684, + 0x4a686, 0x4a688, 0x4a68a, 0x4a68c, 0x4a68e, 0x4a690, 0x4a692, 0x4a694, 0x4a696, + 0x4a698, 0x4a69a, 0x4a722, 0x4a724, 0x4a726, 0x4a728, 0x4a72a, 0x4a72c, 0x4a72e, + 0x4a732, 0x4a734, 0x4a736, 0x4a738, 0x4a73a, 0x4a73c, 0x4a73e, 0x4a740, 0x4a742, + 0x4a744, 0x4a746, 0x4a748, 0x4a74a, 0x4a74c, 0x4a74e, 0x4a750, 0x4a752, 0x4a754, + 0x4a756, 0x4a758, 0x4a75a, 0x4a75c, 0x4a75e, 0x4a760, 0x4a762, 0x4a764, 0x4a766, + 0x4a768, 0x4a76a, 0x4a76c, 0x4a76e, 0x4a779, 0x4a77b, 0x4a77d, 0x4a77e, 0x4a780, + 0x4a782, 0x4a784, 0x4a786, 0x4a78b, 0x4a78d, 0x4a790, 0x4a792, 0x4a796, 0x4a798, + 0x4a79a, 0x4a79c, 0x4a79e, 0x4a7a0, 0x4a7a2, 0x4a7a4, 0x4a7a6, 0x4a7a8, 0x4a7b6, + 0x50100, 0x50102, 0x50104, 0x50106, 0x50108, 0x5010a, 0x5010c, 0x5010e, 0x50110, + 0x50112, 0x50114, 0x50116, 0x50118, 0x5011a, 0x5011c, 0x5011e, 0x50120, 0x50122, + 0x50124, 0x50126, 0x50128, 0x5012a, 0x5012c, 0x5012e, 0x50130, 0x50132, 0x50134, + 0x50136, 0x50139, 0x5013b, 0x5013d, 0x5013f, 0x50141, 0x50143, 0x50145, 0x50147, + 0x5014a, 0x5014c, 0x5014e, 0x50150, 0x50152, 0x50154, 0x50156, 0x50158, 0x5015a, + 0x5015c, 0x5015e, 0x50160, 0x50162, 0x50164, 0x50166, 0x50168, 0x5016a, 0x5016c, + 0x5016e, 0x50170, 0x50172, 0x50174, 0x50176, 0x50178, 0x50179, 0x5017b, 0x5017d, + 0x50181, 0x50182, 0x50184, 0x50186, 0x50187, 0x50193, 0x50194, 0x5019c, 0x5019d, + 0x5019f, 0x501a0, 0x501a2, 0x501a4, 0x501a6, 0x501a7, 0x501a9, 0x501ac, 0x501ae, + 0x501af, 0x501b5, 0x501b7, 0x501b8, 0x501bc, 0x501c4, 0x501c7, 0x501ca, 0x501cd, + 0x501cf, 0x501d1, 0x501d3, 0x501d5, 0x501d7, 0x501d9, 0x501db, 0x501de, 0x501e0, + 0x501e2, 0x501e4, 0x501e6, 0x501e8, 0x501ea, 0x501ec, 0x501ee, 0x501f1, 0x501f4, + 0x501fa, 0x501fc, 0x501fe, 0x50200, 0x50202, 0x50204, 0x50206, 0x50208, 0x5020a, + 0x5020c, 0x5020e, 0x50210, 0x50212, 0x50214, 0x50216, 0x50218, 0x5021a, 0x5021c, + 0x5021e, 0x50220, 0x50222, 0x50224, 0x50226, 0x50228, 0x5022a, 0x5022c, 0x5022e, + 0x50230, 0x50232, 0x5023a, 0x5023b, 0x5023d, 0x5023e, 0x50241, 0x50248, 0x5024a, + 0x5024c, 0x5024e, 0x50370, 0x50372, 0x50376, 0x5037f, 0x50386, 0x5038c, 0x5038e, + 0x5038f, 0x503cf, 0x503d8, 0x503da, 0x503dc, 0x503de, 0x503e0, 0x503e2, 0x503e4, + 0x503e6, 0x503e8, 0x503ea, 0x503ec, 0x503ee, 0x503f4, 0x503f7, 0x503f9, 0x503fa, + 0x50460, 0x50462, 0x50464, 0x50466, 0x50468, 0x5046a, 0x5046c, 0x5046e, 0x50470, + 0x50472, 0x50474, 0x50476, 0x50478, 0x5047a, 0x5047c, 0x5047e, 0x50480, 0x5048a, + 0x5048c, 0x5048e, 0x50490, 0x50492, 0x50494, 0x50496, 0x50498, 0x5049a, 0x5049c, + 0x5049e, 0x504a0, 0x504a2, 0x504a4, 0x504a6, 0x504a8, 0x504aa, 0x504ac, 0x504ae, + 0x504b0, 0x504b2, 0x504b4, 0x504b6, 0x504b8, 0x504ba, 0x504bc, 0x504be, 0x504c0, + 0x504c1, 0x504c3, 0x504c5, 0x504c7, 0x504c9, 0x504cb, 0x504cd, 0x504d0, 0x504d2, + 0x504d4, 0x504d6, 0x504d8, 0x504da, 0x504dc, 0x504de, 0x504e0, 0x504e2, 0x504e4, + 0x504e6, 0x504e8, 0x504ea, 0x504ec, 0x504ee, 0x504f0, 0x504f2, 0x504f4, 0x504f6, + 0x504f8, 0x504fa, 0x504fc, 0x504fe, 0x50500, 0x50502, 0x50504, 0x50506, 0x50508, + 0x5050a, 0x5050c, 0x5050e, 0x50510, 0x50512, 0x50514, 0x50516, 0x50518, 0x5051a, + 0x5051c, 0x5051e, 0x50520, 0x50522, 0x50524, 0x50526, 0x50528, 0x5052a, 0x5052c, + 0x5052e, 0x510c7, 0x510cd, 0x51e00, 0x51e02, 0x51e04, 0x51e06, 0x51e08, 0x51e0a, + 0x51e0c, 0x51e0e, 0x51e10, 0x51e12, 0x51e14, 0x51e16, 0x51e18, 0x51e1a, 0x51e1c, + 0x51e1e, 0x51e20, 0x51e22, 0x51e24, 0x51e26, 0x51e28, 0x51e2a, 0x51e2c, 0x51e2e, + 0x51e30, 0x51e32, 0x51e34, 0x51e36, 0x51e38, 0x51e3a, 0x51e3c, 0x51e3e, 0x51e40, + 0x51e42, 0x51e44, 0x51e46, 0x51e48, 0x51e4a, 0x51e4c, 0x51e4e, 0x51e50, 0x51e52, + 0x51e54, 0x51e56, 0x51e58, 0x51e5a, 0x51e5c, 0x51e5e, 0x51e60, 0x51e62, 0x51e64, + 0x51e66, 0x51e68, 0x51e6a, 0x51e6c, 0x51e6e, 0x51e70, 0x51e72, 0x51e74, 0x51e76, + 0x51e78, 0x51e7a, 0x51e7c, 0x51e7e, 0x51e80, 0x51e82, 0x51e84, 0x51e86, 0x51e88, + 0x51e8a, 0x51e8c, 0x51e8e, 0x51e90, 0x51e92, 0x51e94, 0x51e9e, 0x51ea0, 0x51ea2, + 0x51ea4, 0x51ea6, 0x51ea8, 0x51eaa, 0x51eac, 0x51eae, 0x51eb0, 0x51eb2, 0x51eb4, + 0x51eb6, 0x51eb8, 0x51eba, 0x51ebc, 0x51ebe, 0x51ec0, 0x51ec2, 0x51ec4, 0x51ec6, + 0x51ec8, 0x51eca, 0x51ecc, 0x51ece, 0x51ed0, 0x51ed2, 0x51ed4, 0x51ed6, 0x51ed8, + 0x51eda, 0x51edc, 0x51ede, 0x51ee0, 0x51ee2, 0x51ee4, 0x51ee6, 0x51ee8, 0x51eea, + 0x51eec, 0x51eee, 0x51ef0, 0x51ef2, 0x51ef4, 0x51ef6, 0x51ef8, 0x51efa, 0x51efc, + 0x51efe, 0x51f59, 0x51f5b, 0x51f5d, 0x51f5f, 0x52102, 0x52107, 0x52115, 0x52124, + 0x52126, 0x52128, 0x5213e, 0x5213f, 0x52145, 0x52183, 0x52c60, 0x52c67, 0x52c69, + 0x52c6b, 0x52c72, 0x52c75, 0x52c82, 0x52c84, 0x52c86, 0x52c88, 0x52c8a, 0x52c8c, + 0x52c8e, 0x52c90, 0x52c92, 0x52c94, 0x52c96, 0x52c98, 0x52c9a, 0x52c9c, 0x52c9e, + 0x52ca0, 0x52ca2, 0x52ca4, 0x52ca6, 0x52ca8, 0x52caa, 0x52cac, 0x52cae, 0x52cb0, + 0x52cb2, 0x52cb4, 0x52cb6, 0x52cb8, 0x52cba, 0x52cbc, 0x52cbe, 0x52cc0, 0x52cc2, + 0x52cc4, 0x52cc6, 0x52cc8, 0x52cca, 0x52ccc, 0x52cce, 0x52cd0, 0x52cd2, 0x52cd4, + 0x52cd6, 0x52cd8, 0x52cda, 0x52cdc, 0x52cde, 0x52ce0, 0x52ce2, 0x52ceb, 0x52ced, + 0x52cf2, 0x5a640, 0x5a642, 0x5a644, 0x5a646, 0x5a648, 0x5a64a, 0x5a64c, 0x5a64e, + 0x5a650, 0x5a652, 0x5a654, 0x5a656, 0x5a658, 0x5a65a, 0x5a65c, 0x5a65e, 0x5a660, + 0x5a662, 0x5a664, 0x5a666, 0x5a668, 0x5a66a, 0x5a66c, 0x5a680, 0x5a682, 0x5a684, + 0x5a686, 0x5a688, 0x5a68a, 0x5a68c, 0x5a68e, 0x5a690, 0x5a692, 0x5a694, 0x5a696, + 0x5a698, 0x5a69a, 0x5a722, 0x5a724, 0x5a726, 0x5a728, 0x5a72a, 0x5a72c, 0x5a72e, + 0x5a732, 0x5a734, 0x5a736, 0x5a738, 0x5a73a, 0x5a73c, 0x5a73e, 0x5a740, 0x5a742, + 0x5a744, 0x5a746, 0x5a748, 0x5a74a, 0x5a74c, 0x5a74e, 0x5a750, 0x5a752, 0x5a754, + 0x5a756, 0x5a758, 0x5a75a, 0x5a75c, 0x5a75e, 0x5a760, 0x5a762, 0x5a764, 0x5a766, + 0x5a768, 0x5a76a, 0x5a76c, 0x5a76e, 0x5a779, 0x5a77b, 0x5a77d, 0x5a77e, 0x5a780, + 0x5a782, 0x5a784, 0x5a786, 0x5a78b, 0x5a78d, 0x5a790, 0x5a792, 0x5a796, 0x5a798, + 0x5a79a, 0x5a79c, 0x5a79e, 0x5a7a0, 0x5a7a2, 0x5a7a4, 0x5a7a6, 0x5a7a8, 0x5a7b6, + 0x60100, 0x60102, 0x60104, 0x60106, 0x60108, 0x6010a, 0x6010c, 0x6010e, 0x60110, + 0x60112, 0x60114, 0x60116, 0x60118, 0x6011a, 0x6011c, 0x6011e, 0x60120, 0x60122, + 0x60124, 0x60126, 0x60128, 0x6012a, 0x6012c, 0x6012e, 0x60130, 0x60132, 0x60134, + 0x60136, 0x60139, 0x6013b, 0x6013d, 0x6013f, 0x60141, 0x60143, 0x60145, 0x60147, + 0x6014a, 0x6014c, 0x6014e, 0x60150, 0x60152, 0x60154, 0x60156, 0x60158, 0x6015a, + 0x6015c, 0x6015e, 0x60160, 0x60162, 0x60164, 0x60166, 0x60168, 0x6016a, 0x6016c, + 0x6016e, 0x60170, 0x60172, 0x60174, 0x60176, 0x60178, 0x60179, 0x6017b, 0x6017d, + 0x60181, 0x60182, 0x60184, 0x60186, 0x60187, 0x60193, 0x60194, 0x6019c, 0x6019d, + 0x6019f, 0x601a0, 0x601a2, 0x601a4, 0x601a6, 0x601a7, 0x601a9, 0x601ac, 0x601ae, + 0x601af, 0x601b5, 0x601b7, 0x601b8, 0x601bc, 0x601c4, 0x601c7, 0x601ca, 0x601cd, + 0x601cf, 0x601d1, 0x601d3, 0x601d5, 0x601d7, 0x601d9, 0x601db, 0x601de, 0x601e0, + 0x601e2, 0x601e4, 0x601e6, 0x601e8, 0x601ea, 0x601ec, 0x601ee, 0x601f1, 0x601f4, + 0x601fa, 0x601fc, 0x601fe, 0x60200, 0x60202, 0x60204, 0x60206, 0x60208, 0x6020a, + 0x6020c, 0x6020e, 0x60210, 0x60212, 0x60214, 0x60216, 0x60218, 0x6021a, 0x6021c, + 0x6021e, 0x60220, 0x60222, 0x60224, 0x60226, 0x60228, 0x6022a, 0x6022c, 0x6022e, + 0x60230, 0x60232, 0x6023a, 0x6023b, 0x6023d, 0x6023e, 0x60241, 0x60248, 0x6024a, + 0x6024c, 0x6024e, 0x60370, 0x60372, 0x60376, 0x6037f, 0x60386, 0x6038c, 0x6038e, + 0x6038f, 0x603cf, 0x603d8, 0x603da, 0x603dc, 0x603de, 0x603e0, 0x603e2, 0x603e4, + 0x603e6, 0x603e8, 0x603ea, 0x603ec, 0x603ee, 0x603f4, 0x603f7, 0x603f9, 0x603fa, + 0x60460, 0x60462, 0x60464, 0x60466, 0x60468, 0x6046a, 0x6046c, 0x6046e, 0x60470, + 0x60472, 0x60474, 0x60476, 0x60478, 0x6047a, 0x6047c, 0x6047e, 0x60480, 0x6048a, + 0x6048c, 0x6048e, 0x60490, 0x60492, 0x60494, 0x60496, 0x60498, 0x6049a, 0x6049c, + 0x6049e, 0x604a0, 0x604a2, 0x604a4, 0x604a6, 0x604a8, 0x604aa, 0x604ac, 0x604ae, + 0x604b0, 0x604b2, 0x604b4, 0x604b6, 0x604b8, 0x604ba, 0x604bc, 0x604be, 0x604c0, + 0x604c1, 0x604c3, 0x604c5, 0x604c7, 0x604c9, 0x604cb, 0x604cd, 0x604d0, 0x604d2, + 0x604d4, 0x604d6, 0x604d8, 0x604da, 0x604dc, 0x604de, 0x604e0, 0x604e2, 0x604e4, + 0x604e6, 0x604e8, 0x604ea, 0x604ec, 0x604ee, 0x604f0, 0x604f2, 0x604f4, 0x604f6, + 0x604f8, 0x604fa, 0x604fc, 0x604fe, 0x60500, 0x60502, 0x60504, 0x60506, 0x60508, + 0x6050a, 0x6050c, 0x6050e, 0x60510, 0x60512, 0x60514, 0x60516, 0x60518, 0x6051a, + 0x6051c, 0x6051e, 0x60520, 0x60522, 0x60524, 0x60526, 0x60528, 0x6052a, 0x6052c, + 0x6052e, 0x610c7, 0x610cd, 0x61e00, 0x61e02, 0x61e04, 0x61e06, 0x61e08, 0x61e0a, + 0x61e0c, 0x61e0e, 0x61e10, 0x61e12, 0x61e14, 0x61e16, 0x61e18, 0x61e1a, 0x61e1c, + 0x61e1e, 0x61e20, 0x61e22, 0x61e24, 0x61e26, 0x61e28, 0x61e2a, 0x61e2c, 0x61e2e, + 0x61e30, 0x61e32, 0x61e34, 0x61e36, 0x61e38, 0x61e3a, 0x61e3c, 0x61e3e, 0x61e40, + 0x61e42, 0x61e44, 0x61e46, 0x61e48, 0x61e4a, 0x61e4c, 0x61e4e, 0x61e50, 0x61e52, + 0x61e54, 0x61e56, 0x61e58, 0x61e5a, 0x61e5c, 0x61e5e, 0x61e60, 0x61e62, 0x61e64, + 0x61e66, 0x61e68, 0x61e6a, 0x61e6c, 0x61e6e, 0x61e70, 0x61e72, 0x61e74, 0x61e76, + 0x61e78, 0x61e7a, 0x61e7c, 0x61e7e, 0x61e80, 0x61e82, 0x61e84, 0x61e86, 0x61e88, + 0x61e8a, 0x61e8c, 0x61e8e, 0x61e90, 0x61e92, 0x61e94, 0x61e9e, 0x61ea0, 0x61ea2, + 0x61ea4, 0x61ea6, 0x61ea8, 0x61eaa, 0x61eac, 0x61eae, 0x61eb0, 0x61eb2, 0x61eb4, + 0x61eb6, 0x61eb8, 0x61eba, 0x61ebc, 0x61ebe, 0x61ec0, 0x61ec2, 0x61ec4, 0x61ec6, + 0x61ec8, 0x61eca, 0x61ecc, 0x61ece, 0x61ed0, 0x61ed2, 0x61ed4, 0x61ed6, 0x61ed8, + 0x61eda, 0x61edc, 0x61ede, 0x61ee0, 0x61ee2, 0x61ee4, 0x61ee6, 0x61ee8, 0x61eea, + 0x61eec, 0x61eee, 0x61ef0, 0x61ef2, 0x61ef4, 0x61ef6, 0x61ef8, 0x61efa, 0x61efc, + 0x61efe, 0x61f59, 0x61f5b, 0x61f5d, 0x61f5f, 0x62102, 0x62107, 0x62115, 0x62124, + 0x62126, 0x62128, 0x6213e, 0x6213f, 0x62145, 0x62183, 0x62c60, 0x62c67, 0x62c69, + 0x62c6b, 0x62c72, 0x62c75, 0x62c82, 0x62c84, 0x62c86, 0x62c88, 0x62c8a, 0x62c8c, + 0x62c8e, 0x62c90, 0x62c92, 0x62c94, 0x62c96, 0x62c98, 0x62c9a, 0x62c9c, 0x62c9e, + 0x62ca0, 0x62ca2, 0x62ca4, 0x62ca6, 0x62ca8, 0x62caa, 0x62cac, 0x62cae, 0x62cb0, + 0x62cb2, 0x62cb4, 0x62cb6, 0x62cb8, 0x62cba, 0x62cbc, 0x62cbe, 0x62cc0, 0x62cc2, + 0x62cc4, 0x62cc6, 0x62cc8, 0x62cca, 0x62ccc, 0x62cce, 0x62cd0, 0x62cd2, 0x62cd4, + 0x62cd6, 0x62cd8, 0x62cda, 0x62cdc, 0x62cde, 0x62ce0, 0x62ce2, 0x62ceb, 0x62ced, + 0x62cf2, 0x6a640, 0x6a642, 0x6a644, 0x6a646, 0x6a648, 0x6a64a, 0x6a64c, 0x6a64e, + 0x6a650, 0x6a652, 0x6a654, 0x6a656, 0x6a658, 0x6a65a, 0x6a65c, 0x6a65e, 0x6a660, + 0x6a662, 0x6a664, 0x6a666, 0x6a668, 0x6a66a, 0x6a66c, 0x6a680, 0x6a682, 0x6a684, + 0x6a686, 0x6a688, 0x6a68a, 0x6a68c, 0x6a68e, 0x6a690, 0x6a692, 0x6a694, 0x6a696, + 0x6a698, 0x6a69a, 0x6a722, 0x6a724, 0x6a726, 0x6a728, 0x6a72a, 0x6a72c, 0x6a72e, + 0x6a732, 0x6a734, 0x6a736, 0x6a738, 0x6a73a, 0x6a73c, 0x6a73e, 0x6a740, 0x6a742, + 0x6a744, 0x6a746, 0x6a748, 0x6a74a, 0x6a74c, 0x6a74e, 0x6a750, 0x6a752, 0x6a754, + 0x6a756, 0x6a758, 0x6a75a, 0x6a75c, 0x6a75e, 0x6a760, 0x6a762, 0x6a764, 0x6a766, + 0x6a768, 0x6a76a, 0x6a76c, 0x6a76e, 0x6a779, 0x6a77b, 0x6a77d, 0x6a77e, 0x6a780, + 0x6a782, 0x6a784, 0x6a786, 0x6a78b, 0x6a78d, 0x6a790, 0x6a792, 0x6a796, 0x6a798, + 0x6a79a, 0x6a79c, 0x6a79e, 0x6a7a0, 0x6a7a2, 0x6a7a4, 0x6a7a6, 0x6a7a8, 0x6a7b6, + 0x70100, 0x70102, 0x70104, 0x70106, 0x70108, 0x7010a, 0x7010c, 0x7010e, 0x70110, + 0x70112, 0x70114, 0x70116, 0x70118, 0x7011a, 0x7011c, 0x7011e, 0x70120, 0x70122, + 0x70124, 0x70126, 0x70128, 0x7012a, 0x7012c, 0x7012e, 0x70130, 0x70132, 0x70134, + 0x70136, 0x70139, 0x7013b, 0x7013d, 0x7013f, 0x70141, 0x70143, 0x70145, 0x70147, + 0x7014a, 0x7014c, 0x7014e, 0x70150, 0x70152, 0x70154, 0x70156, 0x70158, 0x7015a, + 0x7015c, 0x7015e, 0x70160, 0x70162, 0x70164, 0x70166, 0x70168, 0x7016a, 0x7016c, + 0x7016e, 0x70170, 0x70172, 0x70174, 0x70176, 0x70178, 0x70179, 0x7017b, 0x7017d, + 0x70181, 0x70182, 0x70184, 0x70186, 0x70187, 0x70193, 0x70194, 0x7019c, 0x7019d, + 0x7019f, 0x701a0, 0x701a2, 0x701a4, 0x701a6, 0x701a7, 0x701a9, 0x701ac, 0x701ae, + 0x701af, 0x701b5, 0x701b7, 0x701b8, 0x701bc, 0x701c4, 0x701c7, 0x701ca, 0x701cd, + 0x701cf, 0x701d1, 0x701d3, 0x701d5, 0x701d7, 0x701d9, 0x701db, 0x701de, 0x701e0, + 0x701e2, 0x701e4, 0x701e6, 0x701e8, 0x701ea, 0x701ec, 0x701ee, 0x701f1, 0x701f4, + 0x701fa, 0x701fc, 0x701fe, 0x70200, 0x70202, 0x70204, 0x70206, 0x70208, 0x7020a, + 0x7020c, 0x7020e, 0x70210, 0x70212, 0x70214, 0x70216, 0x70218, 0x7021a, 0x7021c, + 0x7021e, 0x70220, 0x70222, 0x70224, 0x70226, 0x70228, 0x7022a, 0x7022c, 0x7022e, + 0x70230, 0x70232, 0x7023a, 0x7023b, 0x7023d, 0x7023e, 0x70241, 0x70248, 0x7024a, + 0x7024c, 0x7024e, 0x70370, 0x70372, 0x70376, 0x7037f, 0x70386, 0x7038c, 0x7038e, + 0x7038f, 0x703cf, 0x703d8, 0x703da, 0x703dc, 0x703de, 0x703e0, 0x703e2, 0x703e4, + 0x703e6, 0x703e8, 0x703ea, 0x703ec, 0x703ee, 0x703f4, 0x703f7, 0x703f9, 0x703fa, + 0x70460, 0x70462, 0x70464, 0x70466, 0x70468, 0x7046a, 0x7046c, 0x7046e, 0x70470, + 0x70472, 0x70474, 0x70476, 0x70478, 0x7047a, 0x7047c, 0x7047e, 0x70480, 0x7048a, + 0x7048c, 0x7048e, 0x70490, 0x70492, 0x70494, 0x70496, 0x70498, 0x7049a, 0x7049c, + 0x7049e, 0x704a0, 0x704a2, 0x704a4, 0x704a6, 0x704a8, 0x704aa, 0x704ac, 0x704ae, + 0x704b0, 0x704b2, 0x704b4, 0x704b6, 0x704b8, 0x704ba, 0x704bc, 0x704be, 0x704c0, + 0x704c1, 0x704c3, 0x704c5, 0x704c7, 0x704c9, 0x704cb, 0x704cd, 0x704d0, 0x704d2, + 0x704d4, 0x704d6, 0x704d8, 0x704da, 0x704dc, 0x704de, 0x704e0, 0x704e2, 0x704e4, + 0x704e6, 0x704e8, 0x704ea, 0x704ec, 0x704ee, 0x704f0, 0x704f2, 0x704f4, 0x704f6, + 0x704f8, 0x704fa, 0x704fc, 0x704fe, 0x70500, 0x70502, 0x70504, 0x70506, 0x70508, + 0x7050a, 0x7050c, 0x7050e, 0x70510, 0x70512, 0x70514, 0x70516, 0x70518, 0x7051a, + 0x7051c, 0x7051e, 0x70520, 0x70522, 0x70524, 0x70526, 0x70528, 0x7052a, 0x7052c, + 0x7052e, 0x710c7, 0x710cd, 0x71e00, 0x71e02, 0x71e04, 0x71e06, 0x71e08, 0x71e0a, + 0x71e0c, 0x71e0e, 0x71e10, 0x71e12, 0x71e14, 0x71e16, 0x71e18, 0x71e1a, 0x71e1c, + 0x71e1e, 0x71e20, 0x71e22, 0x71e24, 0x71e26, 0x71e28, 0x71e2a, 0x71e2c, 0x71e2e, + 0x71e30, 0x71e32, 0x71e34, 0x71e36, 0x71e38, 0x71e3a, 0x71e3c, 0x71e3e, 0x71e40, + 0x71e42, 0x71e44, 0x71e46, 0x71e48, 0x71e4a, 0x71e4c, 0x71e4e, 0x71e50, 0x71e52, + 0x71e54, 0x71e56, 0x71e58, 0x71e5a, 0x71e5c, 0x71e5e, 0x71e60, 0x71e62, 0x71e64, + 0x71e66, 0x71e68, 0x71e6a, 0x71e6c, 0x71e6e, 0x71e70, 0x71e72, 0x71e74, 0x71e76, + 0x71e78, 0x71e7a, 0x71e7c, 0x71e7e, 0x71e80, 0x71e82, 0x71e84, 0x71e86, 0x71e88, + 0x71e8a, 0x71e8c, 0x71e8e, 0x71e90, 0x71e92, 0x71e94, 0x71e9e, 0x71ea0, 0x71ea2, + 0x71ea4, 0x71ea6, 0x71ea8, 0x71eaa, 0x71eac, 0x71eae, 0x71eb0, 0x71eb2, 0x71eb4, + 0x71eb6, 0x71eb8, 0x71eba, 0x71ebc, 0x71ebe, 0x71ec0, 0x71ec2, 0x71ec4, 0x71ec6, + 0x71ec8, 0x71eca, 0x71ecc, 0x71ece, 0x71ed0, 0x71ed2, 0x71ed4, 0x71ed6, 0x71ed8, + 0x71eda, 0x71edc, 0x71ede, 0x71ee0, 0x71ee2, 0x71ee4, 0x71ee6, 0x71ee8, 0x71eea, + 0x71eec, 0x71eee, 0x71ef0, 0x71ef2, 0x71ef4, 0x71ef6, 0x71ef8, 0x71efa, 0x71efc, + 0x71efe, 0x71f59, 0x71f5b, 0x71f5d, 0x71f5f, 0x72102, 0x72107, 0x72115, 0x72124, + 0x72126, 0x72128, 0x7213e, 0x7213f, 0x72145, 0x72183, 0x72c60, 0x72c67, 0x72c69, + 0x72c6b, 0x72c72, 0x72c75, 0x72c82, 0x72c84, 0x72c86, 0x72c88, 0x72c8a, 0x72c8c, + 0x72c8e, 0x72c90, 0x72c92, 0x72c94, 0x72c96, 0x72c98, 0x72c9a, 0x72c9c, 0x72c9e, + 0x72ca0, 0x72ca2, 0x72ca4, 0x72ca6, 0x72ca8, 0x72caa, 0x72cac, 0x72cae, 0x72cb0, + 0x72cb2, 0x72cb4, 0x72cb6, 0x72cb8, 0x72cba, 0x72cbc, 0x72cbe, 0x72cc0, 0x72cc2, + 0x72cc4, 0x72cc6, 0x72cc8, 0x72cca, 0x72ccc, 0x72cce, 0x72cd0, 0x72cd2, 0x72cd4, + 0x72cd6, 0x72cd8, 0x72cda, 0x72cdc, 0x72cde, 0x72ce0, 0x72ce2, 0x72ceb, 0x72ced, + 0x72cf2, 0x7a640, 0x7a642, 0x7a644, 0x7a646, 0x7a648, 0x7a64a, 0x7a64c, 0x7a64e, + 0x7a650, 0x7a652, 0x7a654, 0x7a656, 0x7a658, 0x7a65a, 0x7a65c, 0x7a65e, 0x7a660, + 0x7a662, 0x7a664, 0x7a666, 0x7a668, 0x7a66a, 0x7a66c, 0x7a680, 0x7a682, 0x7a684, + 0x7a686, 0x7a688, 0x7a68a, 0x7a68c, 0x7a68e, 0x7a690, 0x7a692, 0x7a694, 0x7a696, + 0x7a698, 0x7a69a, 0x7a722, 0x7a724, 0x7a726, 0x7a728, 0x7a72a, 0x7a72c, 0x7a72e, + 0x7a732, 0x7a734, 0x7a736, 0x7a738, 0x7a73a, 0x7a73c, 0x7a73e, 0x7a740, 0x7a742, + 0x7a744, 0x7a746, 0x7a748, 0x7a74a, 0x7a74c, 0x7a74e, 0x7a750, 0x7a752, 0x7a754, + 0x7a756, 0x7a758, 0x7a75a, 0x7a75c, 0x7a75e, 0x7a760, 0x7a762, 0x7a764, 0x7a766, + 0x7a768, 0x7a76a, 0x7a76c, 0x7a76e, 0x7a779, 0x7a77b, 0x7a77d, 0x7a77e, 0x7a780, + 0x7a782, 0x7a784, 0x7a786, 0x7a78b, 0x7a78d, 0x7a790, 0x7a792, 0x7a796, 0x7a798, + 0x7a79a, 0x7a79c, 0x7a79e, 0x7a7a0, 0x7a7a2, 0x7a7a4, 0x7a7a6, 0x7a7a8, 0x7a7b6, + 0x80100, 0x80102, 0x80104, 0x80106, 0x80108, 0x8010a, 0x8010c, 0x8010e, 0x80110, + 0x80112, 0x80114, 0x80116, 0x80118, 0x8011a, 0x8011c, 0x8011e, 0x80120, 0x80122, + 0x80124, 0x80126, 0x80128, 0x8012a, 0x8012c, 0x8012e, 0x80130, 0x80132, 0x80134, + 0x80136, 0x80139, 0x8013b, 0x8013d, 0x8013f, 0x80141, 0x80143, 0x80145, 0x80147, + 0x8014a, 0x8014c, 0x8014e, 0x80150, 0x80152, 0x80154, 0x80156, 0x80158, 0x8015a, + 0x8015c, 0x8015e, 0x80160, 0x80162, 0x80164, 0x80166, 0x80168, 0x8016a, 0x8016c, + 0x8016e, 0x80170, 0x80172, 0x80174, 0x80176, 0x80178, 0x80179, 0x8017b, 0x8017d, + 0x80181, 0x80182, 0x80184, 0x80186, 0x80187, 0x80193, 0x80194, 0x8019c, 0x8019d, + 0x8019f, 0x801a0, 0x801a2, 0x801a4, 0x801a6, 0x801a7, 0x801a9, 0x801ac, 0x801ae, + 0x801af, 0x801b5, 0x801b7, 0x801b8, 0x801bc, 0x801c4, 0x801c7, 0x801ca, 0x801cd, + 0x801cf, 0x801d1, 0x801d3, 0x801d5, 0x801d7, 0x801d9, 0x801db, 0x801de, 0x801e0, + 0x801e2, 0x801e4, 0x801e6, 0x801e8, 0x801ea, 0x801ec, 0x801ee, 0x801f1, 0x801f4, + 0x801fa, 0x801fc, 0x801fe, 0x80200, 0x80202, 0x80204, 0x80206, 0x80208, 0x8020a, + 0x8020c, 0x8020e, 0x80210, 0x80212, 0x80214, 0x80216, 0x80218, 0x8021a, 0x8021c, + 0x8021e, 0x80220, 0x80222, 0x80224, 0x80226, 0x80228, 0x8022a, 0x8022c, 0x8022e, + 0x80230, 0x80232, 0x8023a, 0x8023b, 0x8023d, 0x8023e, 0x80241, 0x80248, 0x8024a, + 0x8024c, 0x8024e, 0x80370, 0x80372, 0x80376, 0x8037f, 0x80386, 0x8038c, 0x8038e, + 0x8038f, 0x803cf, 0x803d8, 0x803da, 0x803dc, 0x803de, 0x803e0, 0x803e2, 0x803e4, + 0x803e6, 0x803e8, 0x803ea, 0x803ec, 0x803ee, 0x803f4, 0x803f7, 0x803f9, 0x803fa, + 0x80460, 0x80462, 0x80464, 0x80466, 0x80468, 0x8046a, 0x8046c, 0x8046e, 0x80470, + 0x80472, 0x80474, 0x80476, 0x80478, 0x8047a, 0x8047c, 0x8047e, 0x80480, 0x8048a, + 0x8048c, 0x8048e, 0x80490, 0x80492, 0x80494, 0x80496, 0x80498, 0x8049a, 0x8049c, + 0x8049e, 0x804a0, 0x804a2, 0x804a4, 0x804a6, 0x804a8, 0x804aa, 0x804ac, 0x804ae, + 0x804b0, 0x804b2, 0x804b4, 0x804b6, 0x804b8, 0x804ba, 0x804bc, 0x804be, 0x804c0, + 0x804c1, 0x804c3, 0x804c5, 0x804c7, 0x804c9, 0x804cb, 0x804cd, 0x804d0, 0x804d2, + 0x804d4, 0x804d6, 0x804d8, 0x804da, 0x804dc, 0x804de, 0x804e0, 0x804e2, 0x804e4, + 0x804e6, 0x804e8, 0x804ea, 0x804ec, 0x804ee, 0x804f0, 0x804f2, 0x804f4, 0x804f6, + 0x804f8, 0x804fa, 0x804fc, 0x804fe, 0x80500, 0x80502, 0x80504, 0x80506, 0x80508, + 0x8050a, 0x8050c, 0x8050e, 0x80510, 0x80512, 0x80514, 0x80516, 0x80518, 0x8051a, + 0x8051c, 0x8051e, 0x80520, 0x80522, 0x80524, 0x80526, 0x80528, 0x8052a, 0x8052c, + 0x8052e, 0x810c7, 0x810cd, 0x81e00, 0x81e02, 0x81e04, 0x81e06, 0x81e08, 0x81e0a, + 0x81e0c, 0x81e0e, 0x81e10, 0x81e12, 0x81e14, 0x81e16, 0x81e18, 0x81e1a, 0x81e1c, + 0x81e1e, 0x81e20, 0x81e22, 0x81e24, 0x81e26, 0x81e28, 0x81e2a, 0x81e2c, 0x81e2e, + 0x81e30, 0x81e32, 0x81e34, 0x81e36, 0x81e38, 0x81e3a, 0x81e3c, 0x81e3e, 0x81e40, + 0x81e42, 0x81e44, 0x81e46, 0x81e48, 0x81e4a, 0x81e4c, 0x81e4e, 0x81e50, 0x81e52, + 0x81e54, 0x81e56, 0x81e58, 0x81e5a, 0x81e5c, 0x81e5e, 0x81e60, 0x81e62, 0x81e64, + 0x81e66, 0x81e68, 0x81e6a, 0x81e6c, 0x81e6e, 0x81e70, 0x81e72, 0x81e74, 0x81e76, + 0x81e78, 0x81e7a, 0x81e7c, 0x81e7e, 0x81e80, 0x81e82, 0x81e84, 0x81e86, 0x81e88, + 0x81e8a, 0x81e8c, 0x81e8e, 0x81e90, 0x81e92, 0x81e94, 0x81e9e, 0x81ea0, 0x81ea2, + 0x81ea4, 0x81ea6, 0x81ea8, 0x81eaa, 0x81eac, 0x81eae, 0x81eb0, 0x81eb2, 0x81eb4, + 0x81eb6, 0x81eb8, 0x81eba, 0x81ebc, 0x81ebe, 0x81ec0, 0x81ec2, 0x81ec4, 0x81ec6, + 0x81ec8, 0x81eca, 0x81ecc, 0x81ece, 0x81ed0, 0x81ed2, 0x81ed4, 0x81ed6, 0x81ed8, + 0x81eda, 0x81edc, 0x81ede, 0x81ee0, 0x81ee2, 0x81ee4, 0x81ee6, 0x81ee8, 0x81eea, + 0x81eec, 0x81eee, 0x81ef0, 0x81ef2, 0x81ef4, 0x81ef6, 0x81ef8, 0x81efa, 0x81efc, + 0x81efe, 0x81f59, 0x81f5b, 0x81f5d, 0x81f5f, 0x82102, 0x82107, 0x82115, 0x82124, + 0x82126, 0x82128, 0x8213e, 0x8213f, 0x82145, 0x82183, 0x82c60, 0x82c67, 0x82c69, + 0x82c6b, 0x82c72, 0x82c75, 0x82c82, 0x82c84, 0x82c86, 0x82c88, 0x82c8a, 0x82c8c, + 0x82c8e, 0x82c90, 0x82c92, 0x82c94, 0x82c96, 0x82c98, 0x82c9a, 0x82c9c, 0x82c9e, + 0x82ca0, 0x82ca2, 0x82ca4, 0x82ca6, 0x82ca8, 0x82caa, 0x82cac, 0x82cae, 0x82cb0, + 0x82cb2, 0x82cb4, 0x82cb6, 0x82cb8, 0x82cba, 0x82cbc, 0x82cbe, 0x82cc0, 0x82cc2, + 0x82cc4, 0x82cc6, 0x82cc8, 0x82cca, 0x82ccc, 0x82cce, 0x82cd0, 0x82cd2, 0x82cd4, + 0x82cd6, 0x82cd8, 0x82cda, 0x82cdc, 0x82cde, 0x82ce0, 0x82ce2, 0x82ceb, 0x82ced, + 0x82cf2, 0x8a640, 0x8a642, 0x8a644, 0x8a646, 0x8a648, 0x8a64a, 0x8a64c, 0x8a64e, + 0x8a650, 0x8a652, 0x8a654, 0x8a656, 0x8a658, 0x8a65a, 0x8a65c, 0x8a65e, 0x8a660, + 0x8a662, 0x8a664, 0x8a666, 0x8a668, 0x8a66a, 0x8a66c, 0x8a680, 0x8a682, 0x8a684, + 0x8a686, 0x8a688, 0x8a68a, 0x8a68c, 0x8a68e, 0x8a690, 0x8a692, 0x8a694, 0x8a696, + 0x8a698, 0x8a69a, 0x8a722, 0x8a724, 0x8a726, 0x8a728, 0x8a72a, 0x8a72c, 0x8a72e, + 0x8a732, 0x8a734, 0x8a736, 0x8a738, 0x8a73a, 0x8a73c, 0x8a73e, 0x8a740, 0x8a742, + 0x8a744, 0x8a746, 0x8a748, 0x8a74a, 0x8a74c, 0x8a74e, 0x8a750, 0x8a752, 0x8a754, + 0x8a756, 0x8a758, 0x8a75a, 0x8a75c, 0x8a75e, 0x8a760, 0x8a762, 0x8a764, 0x8a766, + 0x8a768, 0x8a76a, 0x8a76c, 0x8a76e, 0x8a779, 0x8a77b, 0x8a77d, 0x8a77e, 0x8a780, + 0x8a782, 0x8a784, 0x8a786, 0x8a78b, 0x8a78d, 0x8a790, 0x8a792, 0x8a796, 0x8a798, + 0x8a79a, 0x8a79c, 0x8a79e, 0x8a7a0, 0x8a7a2, 0x8a7a4, 0x8a7a6, 0x8a7a8, 0x8a7b6, + 0x90100, 0x90102, 0x90104, 0x90106, 0x90108, 0x9010a, 0x9010c, 0x9010e, 0x90110, + 0x90112, 0x90114, 0x90116, 0x90118, 0x9011a, 0x9011c, 0x9011e, 0x90120, 0x90122, + 0x90124, 0x90126, 0x90128, 0x9012a, 0x9012c, 0x9012e, 0x90130, 0x90132, 0x90134, + 0x90136, 0x90139, 0x9013b, 0x9013d, 0x9013f, 0x90141, 0x90143, 0x90145, 0x90147, + 0x9014a, 0x9014c, 0x9014e, 0x90150, 0x90152, 0x90154, 0x90156, 0x90158, 0x9015a, + 0x9015c, 0x9015e, 0x90160, 0x90162, 0x90164, 0x90166, 0x90168, 0x9016a, 0x9016c, + 0x9016e, 0x90170, 0x90172, 0x90174, 0x90176, 0x90178, 0x90179, 0x9017b, 0x9017d, + 0x90181, 0x90182, 0x90184, 0x90186, 0x90187, 0x90193, 0x90194, 0x9019c, 0x9019d, + 0x9019f, 0x901a0, 0x901a2, 0x901a4, 0x901a6, 0x901a7, 0x901a9, 0x901ac, 0x901ae, + 0x901af, 0x901b5, 0x901b7, 0x901b8, 0x901bc, 0x901c4, 0x901c7, 0x901ca, 0x901cd, + 0x901cf, 0x901d1, 0x901d3, 0x901d5, 0x901d7, 0x901d9, 0x901db, 0x901de, 0x901e0, + 0x901e2, 0x901e4, 0x901e6, 0x901e8, 0x901ea, 0x901ec, 0x901ee, 0x901f1, 0x901f4, + 0x901fa, 0x901fc, 0x901fe, 0x90200, 0x90202, 0x90204, 0x90206, 0x90208, 0x9020a, + 0x9020c, 0x9020e, 0x90210, 0x90212, 0x90214, 0x90216, 0x90218, 0x9021a, 0x9021c, + 0x9021e, 0x90220, 0x90222, 0x90224, 0x90226, 0x90228, 0x9022a, 0x9022c, 0x9022e, + 0x90230, 0x90232, 0x9023a, 0x9023b, 0x9023d, 0x9023e, 0x90241, 0x90248, 0x9024a, + 0x9024c, 0x9024e, 0x90370, 0x90372, 0x90376, 0x9037f, 0x90386, 0x9038c, 0x9038e, + 0x9038f, 0x903cf, 0x903d8, 0x903da, 0x903dc, 0x903de, 0x903e0, 0x903e2, 0x903e4, + 0x903e6, 0x903e8, 0x903ea, 0x903ec, 0x903ee, 0x903f4, 0x903f7, 0x903f9, 0x903fa, + 0x90460, 0x90462, 0x90464, 0x90466, 0x90468, 0x9046a, 0x9046c, 0x9046e, 0x90470, + 0x90472, 0x90474, 0x90476, 0x90478, 0x9047a, 0x9047c, 0x9047e, 0x90480, 0x9048a, + 0x9048c, 0x9048e, 0x90490, 0x90492, 0x90494, 0x90496, 0x90498, 0x9049a, 0x9049c, + 0x9049e, 0x904a0, 0x904a2, 0x904a4, 0x904a6, 0x904a8, 0x904aa, 0x904ac, 0x904ae, + 0x904b0, 0x904b2, 0x904b4, 0x904b6, 0x904b8, 0x904ba, 0x904bc, 0x904be, 0x904c0, + 0x904c1, 0x904c3, 0x904c5, 0x904c7, 0x904c9, 0x904cb, 0x904cd, 0x904d0, 0x904d2, + 0x904d4, 0x904d6, 0x904d8, 0x904da, 0x904dc, 0x904de, 0x904e0, 0x904e2, 0x904e4, + 0x904e6, 0x904e8, 0x904ea, 0x904ec, 0x904ee, 0x904f0, 0x904f2, 0x904f4, 0x904f6, + 0x904f8, 0x904fa, 0x904fc, 0x904fe, 0x90500, 0x90502, 0x90504, 0x90506, 0x90508, + 0x9050a, 0x9050c, 0x9050e, 0x90510, 0x90512, 0x90514, 0x90516, 0x90518, 0x9051a, + 0x9051c, 0x9051e, 0x90520, 0x90522, 0x90524, 0x90526, 0x90528, 0x9052a, 0x9052c, + 0x9052e, 0x910c7, 0x910cd, 0x91e00, 0x91e02, 0x91e04, 0x91e06, 0x91e08, 0x91e0a, + 0x91e0c, 0x91e0e, 0x91e10, 0x91e12, 0x91e14, 0x91e16, 0x91e18, 0x91e1a, 0x91e1c, + 0x91e1e, 0x91e20, 0x91e22, 0x91e24, 0x91e26, 0x91e28, 0x91e2a, 0x91e2c, 0x91e2e, + 0x91e30, 0x91e32, 0x91e34, 0x91e36, 0x91e38, 0x91e3a, 0x91e3c, 0x91e3e, 0x91e40, + 0x91e42, 0x91e44, 0x91e46, 0x91e48, 0x91e4a, 0x91e4c, 0x91e4e, 0x91e50, 0x91e52, + 0x91e54, 0x91e56, 0x91e58, 0x91e5a, 0x91e5c, 0x91e5e, 0x91e60, 0x91e62, 0x91e64, + 0x91e66, 0x91e68, 0x91e6a, 0x91e6c, 0x91e6e, 0x91e70, 0x91e72, 0x91e74, 0x91e76, + 0x91e78, 0x91e7a, 0x91e7c, 0x91e7e, 0x91e80, 0x91e82, 0x91e84, 0x91e86, 0x91e88, + 0x91e8a, 0x91e8c, 0x91e8e, 0x91e90, 0x91e92, 0x91e94, 0x91e9e, 0x91ea0, 0x91ea2, + 0x91ea4, 0x91ea6, 0x91ea8, 0x91eaa, 0x91eac, 0x91eae, 0x91eb0, 0x91eb2, 0x91eb4, + 0x91eb6, 0x91eb8, 0x91eba, 0x91ebc, 0x91ebe, 0x91ec0, 0x91ec2, 0x91ec4, 0x91ec6, + 0x91ec8, 0x91eca, 0x91ecc, 0x91ece, 0x91ed0, 0x91ed2, 0x91ed4, 0x91ed6, 0x91ed8, + 0x91eda, 0x91edc, 0x91ede, 0x91ee0, 0x91ee2, 0x91ee4, 0x91ee6, 0x91ee8, 0x91eea, + 0x91eec, 0x91eee, 0x91ef0, 0x91ef2, 0x91ef4, 0x91ef6, 0x91ef8, 0x91efa, 0x91efc, + 0x91efe, 0x91f59, 0x91f5b, 0x91f5d, 0x91f5f, 0x92102, 0x92107, 0x92115, 0x92124, + 0x92126, 0x92128, 0x9213e, 0x9213f, 0x92145, 0x92183, 0x92c60, 0x92c67, 0x92c69, + 0x92c6b, 0x92c72, 0x92c75, 0x92c82, 0x92c84, 0x92c86, 0x92c88, 0x92c8a, 0x92c8c, + 0x92c8e, 0x92c90, 0x92c92, 0x92c94, 0x92c96, 0x92c98, 0x92c9a, 0x92c9c, 0x92c9e, + 0x92ca0, 0x92ca2, 0x92ca4, 0x92ca6, 0x92ca8, 0x92caa, 0x92cac, 0x92cae, 0x92cb0, + 0x92cb2, 0x92cb4, 0x92cb6, 0x92cb8, 0x92cba, 0x92cbc, 0x92cbe, 0x92cc0, 0x92cc2, + 0x92cc4, 0x92cc6, 0x92cc8, 0x92cca, 0x92ccc, 0x92cce, 0x92cd0, 0x92cd2, 0x92cd4, + 0x92cd6, 0x92cd8, 0x92cda, 0x92cdc, 0x92cde, 0x92ce0, 0x92ce2, 0x92ceb, 0x92ced, + 0x92cf2, 0x9a640, 0x9a642, 0x9a644, 0x9a646, 0x9a648, 0x9a64a, 0x9a64c, 0x9a64e, + 0x9a650, 0x9a652, 0x9a654, 0x9a656, 0x9a658, 0x9a65a, 0x9a65c, 0x9a65e, 0x9a660, + 0x9a662, 0x9a664, 0x9a666, 0x9a668, 0x9a66a, 0x9a66c, 0x9a680, 0x9a682, 0x9a684, + 0x9a686, 0x9a688, 0x9a68a, 0x9a68c, 0x9a68e, 0x9a690, 0x9a692, 0x9a694, 0x9a696, + 0x9a698, 0x9a69a, 0x9a722, 0x9a724, 0x9a726, 0x9a728, 0x9a72a, 0x9a72c, 0x9a72e, + 0x9a732, 0x9a734, 0x9a736, 0x9a738, 0x9a73a, 0x9a73c, 0x9a73e, 0x9a740, 0x9a742, + 0x9a744, 0x9a746, 0x9a748, 0x9a74a, 0x9a74c, 0x9a74e, 0x9a750, 0x9a752, 0x9a754, + 0x9a756, 0x9a758, 0x9a75a, 0x9a75c, 0x9a75e, 0x9a760, 0x9a762, 0x9a764, 0x9a766, + 0x9a768, 0x9a76a, 0x9a76c, 0x9a76e, 0x9a779, 0x9a77b, 0x9a77d, 0x9a77e, 0x9a780, + 0x9a782, 0x9a784, 0x9a786, 0x9a78b, 0x9a78d, 0x9a790, 0x9a792, 0x9a796, 0x9a798, + 0x9a79a, 0x9a79c, 0x9a79e, 0x9a7a0, 0x9a7a2, 0x9a7a4, 0x9a7a6, 0x9a7a8, 0x9a7b6, + 0xa0100, 0xa0102, 0xa0104, 0xa0106, 0xa0108, 0xa010a, 0xa010c, 0xa010e, 0xa0110, + 0xa0112, 0xa0114, 0xa0116, 0xa0118, 0xa011a, 0xa011c, 0xa011e, 0xa0120, 0xa0122, + 0xa0124, 0xa0126, 0xa0128, 0xa012a, 0xa012c, 0xa012e, 0xa0130, 0xa0132, 0xa0134, + 0xa0136, 0xa0139, 0xa013b, 0xa013d, 0xa013f, 0xa0141, 0xa0143, 0xa0145, 0xa0147, + 0xa014a, 0xa014c, 0xa014e, 0xa0150, 0xa0152, 0xa0154, 0xa0156, 0xa0158, 0xa015a, + 0xa015c, 0xa015e, 0xa0160, 0xa0162, 0xa0164, 0xa0166, 0xa0168, 0xa016a, 0xa016c, + 0xa016e, 0xa0170, 0xa0172, 0xa0174, 0xa0176, 0xa0178, 0xa0179, 0xa017b, 0xa017d, + 0xa0181, 0xa0182, 0xa0184, 0xa0186, 0xa0187, 0xa0193, 0xa0194, 0xa019c, 0xa019d, + 0xa019f, 0xa01a0, 0xa01a2, 0xa01a4, 0xa01a6, 0xa01a7, 0xa01a9, 0xa01ac, 0xa01ae, + 0xa01af, 0xa01b5, 0xa01b7, 0xa01b8, 0xa01bc, 0xa01c4, 0xa01c7, 0xa01ca, 0xa01cd, + 0xa01cf, 0xa01d1, 0xa01d3, 0xa01d5, 0xa01d7, 0xa01d9, 0xa01db, 0xa01de, 0xa01e0, + 0xa01e2, 0xa01e4, 0xa01e6, 0xa01e8, 0xa01ea, 0xa01ec, 0xa01ee, 0xa01f1, 0xa01f4, + 0xa01fa, 0xa01fc, 0xa01fe, 0xa0200, 0xa0202, 0xa0204, 0xa0206, 0xa0208, 0xa020a, + 0xa020c, 0xa020e, 0xa0210, 0xa0212, 0xa0214, 0xa0216, 0xa0218, 0xa021a, 0xa021c, + 0xa021e, 0xa0220, 0xa0222, 0xa0224, 0xa0226, 0xa0228, 0xa022a, 0xa022c, 0xa022e, + 0xa0230, 0xa0232, 0xa023a, 0xa023b, 0xa023d, 0xa023e, 0xa0241, 0xa0248, 0xa024a, + 0xa024c, 0xa024e, 0xa0370, 0xa0372, 0xa0376, 0xa037f, 0xa0386, 0xa038c, 0xa038e, + 0xa038f, 0xa03cf, 0xa03d8, 0xa03da, 0xa03dc, 0xa03de, 0xa03e0, 0xa03e2, 0xa03e4, + 0xa03e6, 0xa03e8, 0xa03ea, 0xa03ec, 0xa03ee, 0xa03f4, 0xa03f7, 0xa03f9, 0xa03fa, + 0xa0460, 0xa0462, 0xa0464, 0xa0466, 0xa0468, 0xa046a, 0xa046c, 0xa046e, 0xa0470, + 0xa0472, 0xa0474, 0xa0476, 0xa0478, 0xa047a, 0xa047c, 0xa047e, 0xa0480, 0xa048a, + 0xa048c, 0xa048e, 0xa0490, 0xa0492, 0xa0494, 0xa0496, 0xa0498, 0xa049a, 0xa049c, + 0xa049e, 0xa04a0, 0xa04a2, 0xa04a4, 0xa04a6, 0xa04a8, 0xa04aa, 0xa04ac, 0xa04ae, + 0xa04b0, 0xa04b2, 0xa04b4, 0xa04b6, 0xa04b8, 0xa04ba, 0xa04bc, 0xa04be, 0xa04c0, + 0xa04c1, 0xa04c3, 0xa04c5, 0xa04c7, 0xa04c9, 0xa04cb, 0xa04cd, 0xa04d0, 0xa04d2, + 0xa04d4, 0xa04d6, 0xa04d8, 0xa04da, 0xa04dc, 0xa04de, 0xa04e0, 0xa04e2, 0xa04e4, + 0xa04e6, 0xa04e8, 0xa04ea, 0xa04ec, 0xa04ee, 0xa04f0, 0xa04f2, 0xa04f4, 0xa04f6, + 0xa04f8, 0xa04fa, 0xa04fc, 0xa04fe, 0xa0500, 0xa0502, 0xa0504, 0xa0506, 0xa0508, + 0xa050a, 0xa050c, 0xa050e, 0xa0510, 0xa0512, 0xa0514, 0xa0516, 0xa0518, 0xa051a, + 0xa051c, 0xa051e, 0xa0520, 0xa0522, 0xa0524, 0xa0526, 0xa0528, 0xa052a, 0xa052c, + 0xa052e, 0xa10c7, 0xa10cd, 0xa1e00, 0xa1e02, 0xa1e04, 0xa1e06, 0xa1e08, 0xa1e0a, + 0xa1e0c, 0xa1e0e, 0xa1e10, 0xa1e12, 0xa1e14, 0xa1e16, 0xa1e18, 0xa1e1a, 0xa1e1c, + 0xa1e1e, 0xa1e20, 0xa1e22, 0xa1e24, 0xa1e26, 0xa1e28, 0xa1e2a, 0xa1e2c, 0xa1e2e, + 0xa1e30, 0xa1e32, 0xa1e34, 0xa1e36, 0xa1e38, 0xa1e3a, 0xa1e3c, 0xa1e3e, 0xa1e40, + 0xa1e42, 0xa1e44, 0xa1e46, 0xa1e48, 0xa1e4a, 0xa1e4c, 0xa1e4e, 0xa1e50, 0xa1e52, + 0xa1e54, 0xa1e56, 0xa1e58, 0xa1e5a, 0xa1e5c, 0xa1e5e, 0xa1e60, 0xa1e62, 0xa1e64, + 0xa1e66, 0xa1e68, 0xa1e6a, 0xa1e6c, 0xa1e6e, 0xa1e70, 0xa1e72, 0xa1e74, 0xa1e76, + 0xa1e78, 0xa1e7a, 0xa1e7c, 0xa1e7e, 0xa1e80, 0xa1e82, 0xa1e84, 0xa1e86, 0xa1e88, + 0xa1e8a, 0xa1e8c, 0xa1e8e, 0xa1e90, 0xa1e92, 0xa1e94, 0xa1e9e, 0xa1ea0, 0xa1ea2, + 0xa1ea4, 0xa1ea6, 0xa1ea8, 0xa1eaa, 0xa1eac, 0xa1eae, 0xa1eb0, 0xa1eb2, 0xa1eb4, + 0xa1eb6, 0xa1eb8, 0xa1eba, 0xa1ebc, 0xa1ebe, 0xa1ec0, 0xa1ec2, 0xa1ec4, 0xa1ec6, + 0xa1ec8, 0xa1eca, 0xa1ecc, 0xa1ece, 0xa1ed0, 0xa1ed2, 0xa1ed4, 0xa1ed6, 0xa1ed8, + 0xa1eda, 0xa1edc, 0xa1ede, 0xa1ee0, 0xa1ee2, 0xa1ee4, 0xa1ee6, 0xa1ee8, 0xa1eea, + 0xa1eec, 0xa1eee, 0xa1ef0, 0xa1ef2, 0xa1ef4, 0xa1ef6, 0xa1ef8, 0xa1efa, 0xa1efc, + 0xa1efe, 0xa1f59, 0xa1f5b, 0xa1f5d, 0xa1f5f, 0xa2102, 0xa2107, 0xa2115, 0xa2124, + 0xa2126, 0xa2128, 0xa213e, 0xa213f, 0xa2145, 0xa2183, 0xa2c60, 0xa2c67, 0xa2c69, + 0xa2c6b, 0xa2c72, 0xa2c75, 0xa2c82, 0xa2c84, 0xa2c86, 0xa2c88, 0xa2c8a, 0xa2c8c, + 0xa2c8e, 0xa2c90, 0xa2c92, 0xa2c94, 0xa2c96, 0xa2c98, 0xa2c9a, 0xa2c9c, 0xa2c9e, + 0xa2ca0, 0xa2ca2, 0xa2ca4, 0xa2ca6, 0xa2ca8, 0xa2caa, 0xa2cac, 0xa2cae, 0xa2cb0, + 0xa2cb2, 0xa2cb4, 0xa2cb6, 0xa2cb8, 0xa2cba, 0xa2cbc, 0xa2cbe, 0xa2cc0, 0xa2cc2, + 0xa2cc4, 0xa2cc6, 0xa2cc8, 0xa2cca, 0xa2ccc, 0xa2cce, 0xa2cd0, 0xa2cd2, 0xa2cd4, + 0xa2cd6, 0xa2cd8, 0xa2cda, 0xa2cdc, 0xa2cde, 0xa2ce0, 0xa2ce2, 0xa2ceb, 0xa2ced, + 0xa2cf2, 0xaa640, 0xaa642, 0xaa644, 0xaa646, 0xaa648, 0xaa64a, 0xaa64c, 0xaa64e, + 0xaa650, 0xaa652, 0xaa654, 0xaa656, 0xaa658, 0xaa65a, 0xaa65c, 0xaa65e, 0xaa660, + 0xaa662, 0xaa664, 0xaa666, 0xaa668, 0xaa66a, 0xaa66c, 0xaa680, 0xaa682, 0xaa684, + 0xaa686, 0xaa688, 0xaa68a, 0xaa68c, 0xaa68e, 0xaa690, 0xaa692, 0xaa694, 0xaa696, + 0xaa698, 0xaa69a, 0xaa722, 0xaa724, 0xaa726, 0xaa728, 0xaa72a, 0xaa72c, 0xaa72e, + 0xaa732, 0xaa734, 0xaa736, 0xaa738, 0xaa73a, 0xaa73c, 0xaa73e, 0xaa740, 0xaa742, + 0xaa744, 0xaa746, 0xaa748, 0xaa74a, 0xaa74c, 0xaa74e, 0xaa750, 0xaa752, 0xaa754, + 0xaa756, 0xaa758, 0xaa75a, 0xaa75c, 0xaa75e, 0xaa760, 0xaa762, 0xaa764, 0xaa766, + 0xaa768, 0xaa76a, 0xaa76c, 0xaa76e, 0xaa779, 0xaa77b, 0xaa77d, 0xaa77e, 0xaa780, + 0xaa782, 0xaa784, 0xaa786, 0xaa78b, 0xaa78d, 0xaa790, 0xaa792, 0xaa796, 0xaa798, + 0xaa79a, 0xaa79c, 0xaa79e, 0xaa7a0, 0xaa7a2, 0xaa7a4, 0xaa7a6, 0xaa7a8, 0xaa7b6, + 0xb0100, 0xb0102, 0xb0104, 0xb0106, 0xb0108, 0xb010a, 0xb010c, 0xb010e, 0xb0110, + 0xb0112, 0xb0114, 0xb0116, 0xb0118, 0xb011a, 0xb011c, 0xb011e, 0xb0120, 0xb0122, + 0xb0124, 0xb0126, 0xb0128, 0xb012a, 0xb012c, 0xb012e, 0xb0130, 0xb0132, 0xb0134, + 0xb0136, 0xb0139, 0xb013b, 0xb013d, 0xb013f, 0xb0141, 0xb0143, 0xb0145, 0xb0147, + 0xb014a, 0xb014c, 0xb014e, 0xb0150, 0xb0152, 0xb0154, 0xb0156, 0xb0158, 0xb015a, + 0xb015c, 0xb015e, 0xb0160, 0xb0162, 0xb0164, 0xb0166, 0xb0168, 0xb016a, 0xb016c, + 0xb016e, 0xb0170, 0xb0172, 0xb0174, 0xb0176, 0xb0178, 0xb0179, 0xb017b, 0xb017d, + 0xb0181, 0xb0182, 0xb0184, 0xb0186, 0xb0187, 0xb0193, 0xb0194, 0xb019c, 0xb019d, + 0xb019f, 0xb01a0, 0xb01a2, 0xb01a4, 0xb01a6, 0xb01a7, 0xb01a9, 0xb01ac, 0xb01ae, + 0xb01af, 0xb01b5, 0xb01b7, 0xb01b8, 0xb01bc, 0xb01c4, 0xb01c7, 0xb01ca, 0xb01cd, + 0xb01cf, 0xb01d1, 0xb01d3, 0xb01d5, 0xb01d7, 0xb01d9, 0xb01db, 0xb01de, 0xb01e0, + 0xb01e2, 0xb01e4, 0xb01e6, 0xb01e8, 0xb01ea, 0xb01ec, 0xb01ee, 0xb01f1, 0xb01f4, + 0xb01fa, 0xb01fc, 0xb01fe, 0xb0200, 0xb0202, 0xb0204, 0xb0206, 0xb0208, 0xb020a, + 0xb020c, 0xb020e, 0xb0210, 0xb0212, 0xb0214, 0xb0216, 0xb0218, 0xb021a, 0xb021c, + 0xb021e, 0xb0220, 0xb0222, 0xb0224, 0xb0226, 0xb0228, 0xb022a, 0xb022c, 0xb022e, + 0xb0230, 0xb0232, 0xb023a, 0xb023b, 0xb023d, 0xb023e, 0xb0241, 0xb0248, 0xb024a, + 0xb024c, 0xb024e, 0xb0370, 0xb0372, 0xb0376, 0xb037f, 0xb0386, 0xb038c, 0xb038e, + 0xb038f, 0xb03cf, 0xb03d8, 0xb03da, 0xb03dc, 0xb03de, 0xb03e0, 0xb03e2, 0xb03e4, + 0xb03e6, 0xb03e8, 0xb03ea, 0xb03ec, 0xb03ee, 0xb03f4, 0xb03f7, 0xb03f9, 0xb03fa, + 0xb0460, 0xb0462, 0xb0464, 0xb0466, 0xb0468, 0xb046a, 0xb046c, 0xb046e, 0xb0470, + 0xb0472, 0xb0474, 0xb0476, 0xb0478, 0xb047a, 0xb047c, 0xb047e, 0xb0480, 0xb048a, + 0xb048c, 0xb048e, 0xb0490, 0xb0492, 0xb0494, 0xb0496, 0xb0498, 0xb049a, 0xb049c, + 0xb049e, 0xb04a0, 0xb04a2, 0xb04a4, 0xb04a6, 0xb04a8, 0xb04aa, 0xb04ac, 0xb04ae, + 0xb04b0, 0xb04b2, 0xb04b4, 0xb04b6, 0xb04b8, 0xb04ba, 0xb04bc, 0xb04be, 0xb04c0, + 0xb04c1, 0xb04c3, 0xb04c5, 0xb04c7, 0xb04c9, 0xb04cb, 0xb04cd, 0xb04d0, 0xb04d2, + 0xb04d4, 0xb04d6, 0xb04d8, 0xb04da, 0xb04dc, 0xb04de, 0xb04e0, 0xb04e2, 0xb04e4, + 0xb04e6, 0xb04e8, 0xb04ea, 0xb04ec, 0xb04ee, 0xb04f0, 0xb04f2, 0xb04f4, 0xb04f6, + 0xb04f8, 0xb04fa, 0xb04fc, 0xb04fe, 0xb0500, 0xb0502, 0xb0504, 0xb0506, 0xb0508, + 0xb050a, 0xb050c, 0xb050e, 0xb0510, 0xb0512, 0xb0514, 0xb0516, 0xb0518, 0xb051a, + 0xb051c, 0xb051e, 0xb0520, 0xb0522, 0xb0524, 0xb0526, 0xb0528, 0xb052a, 0xb052c, + 0xb052e, 0xb10c7, 0xb10cd, 0xb1e00, 0xb1e02, 0xb1e04, 0xb1e06, 0xb1e08, 0xb1e0a, + 0xb1e0c, 0xb1e0e, 0xb1e10, 0xb1e12, 0xb1e14, 0xb1e16, 0xb1e18, 0xb1e1a, 0xb1e1c, + 0xb1e1e, 0xb1e20, 0xb1e22, 0xb1e24, 0xb1e26, 0xb1e28, 0xb1e2a, 0xb1e2c, 0xb1e2e, + 0xb1e30, 0xb1e32, 0xb1e34, 0xb1e36, 0xb1e38, 0xb1e3a, 0xb1e3c, 0xb1e3e, 0xb1e40, + 0xb1e42, 0xb1e44, 0xb1e46, 0xb1e48, 0xb1e4a, 0xb1e4c, 0xb1e4e, 0xb1e50, 0xb1e52, + 0xb1e54, 0xb1e56, 0xb1e58, 0xb1e5a, 0xb1e5c, 0xb1e5e, 0xb1e60, 0xb1e62, 0xb1e64, + 0xb1e66, 0xb1e68, 0xb1e6a, 0xb1e6c, 0xb1e6e, 0xb1e70, 0xb1e72, 0xb1e74, 0xb1e76, + 0xb1e78, 0xb1e7a, 0xb1e7c, 0xb1e7e, 0xb1e80, 0xb1e82, 0xb1e84, 0xb1e86, 0xb1e88, + 0xb1e8a, 0xb1e8c, 0xb1e8e, 0xb1e90, 0xb1e92, 0xb1e94, 0xb1e9e, 0xb1ea0, 0xb1ea2, + 0xb1ea4, 0xb1ea6, 0xb1ea8, 0xb1eaa, 0xb1eac, 0xb1eae, 0xb1eb0, 0xb1eb2, 0xb1eb4, + 0xb1eb6, 0xb1eb8, 0xb1eba, 0xb1ebc, 0xb1ebe, 0xb1ec0, 0xb1ec2, 0xb1ec4, 0xb1ec6, + 0xb1ec8, 0xb1eca, 0xb1ecc, 0xb1ece, 0xb1ed0, 0xb1ed2, 0xb1ed4, 0xb1ed6, 0xb1ed8, + 0xb1eda, 0xb1edc, 0xb1ede, 0xb1ee0, 0xb1ee2, 0xb1ee4, 0xb1ee6, 0xb1ee8, 0xb1eea, + 0xb1eec, 0xb1eee, 0xb1ef0, 0xb1ef2, 0xb1ef4, 0xb1ef6, 0xb1ef8, 0xb1efa, 0xb1efc, + 0xb1efe, 0xb1f59, 0xb1f5b, 0xb1f5d, 0xb1f5f, 0xb2102, 0xb2107, 0xb2115, 0xb2124, + 0xb2126, 0xb2128, 0xb213e, 0xb213f, 0xb2145, 0xb2183, 0xb2c60, 0xb2c67, 0xb2c69, + 0xb2c6b, 0xb2c72, 0xb2c75, 0xb2c82, 0xb2c84, 0xb2c86, 0xb2c88, 0xb2c8a, 0xb2c8c, + 0xb2c8e, 0xb2c90, 0xb2c92, 0xb2c94, 0xb2c96, 0xb2c98, 0xb2c9a, 0xb2c9c, 0xb2c9e, + 0xb2ca0, 0xb2ca2, 0xb2ca4, 0xb2ca6, 0xb2ca8, 0xb2caa, 0xb2cac, 0xb2cae, 0xb2cb0, + 0xb2cb2, 0xb2cb4, 0xb2cb6, 0xb2cb8, 0xb2cba, 0xb2cbc, 0xb2cbe, 0xb2cc0, 0xb2cc2, + 0xb2cc4, 0xb2cc6, 0xb2cc8, 0xb2cca, 0xb2ccc, 0xb2cce, 0xb2cd0, 0xb2cd2, 0xb2cd4, + 0xb2cd6, 0xb2cd8, 0xb2cda, 0xb2cdc, 0xb2cde, 0xb2ce0, 0xb2ce2, 0xb2ceb, 0xb2ced, + 0xb2cf2, 0xba640, 0xba642, 0xba644, 0xba646, 0xba648, 0xba64a, 0xba64c, 0xba64e, + 0xba650, 0xba652, 0xba654, 0xba656, 0xba658, 0xba65a, 0xba65c, 0xba65e, 0xba660, + 0xba662, 0xba664, 0xba666, 0xba668, 0xba66a, 0xba66c, 0xba680, 0xba682, 0xba684, + 0xba686, 0xba688, 0xba68a, 0xba68c, 0xba68e, 0xba690, 0xba692, 0xba694, 0xba696, + 0xba698, 0xba69a, 0xba722, 0xba724, 0xba726, 0xba728, 0xba72a, 0xba72c, 0xba72e, + 0xba732, 0xba734, 0xba736, 0xba738, 0xba73a, 0xba73c, 0xba73e, 0xba740, 0xba742, + 0xba744, 0xba746, 0xba748, 0xba74a, 0xba74c, 0xba74e, 0xba750, 0xba752, 0xba754, + 0xba756, 0xba758, 0xba75a, 0xba75c, 0xba75e, 0xba760, 0xba762, 0xba764, 0xba766, + 0xba768, 0xba76a, 0xba76c, 0xba76e, 0xba779, 0xba77b, 0xba77d, 0xba77e, 0xba780, + 0xba782, 0xba784, 0xba786, 0xba78b, 0xba78d, 0xba790, 0xba792, 0xba796, 0xba798, + 0xba79a, 0xba79c, 0xba79e, 0xba7a0, 0xba7a2, 0xba7a4, 0xba7a6, 0xba7a8, 0xba7b6, + 0xc0100, 0xc0102, 0xc0104, 0xc0106, 0xc0108, 0xc010a, 0xc010c, 0xc010e, 0xc0110, + 0xc0112, 0xc0114, 0xc0116, 0xc0118, 0xc011a, 0xc011c, 0xc011e, 0xc0120, 0xc0122, + 0xc0124, 0xc0126, 0xc0128, 0xc012a, 0xc012c, 0xc012e, 0xc0130, 0xc0132, 0xc0134, + 0xc0136, 0xc0139, 0xc013b, 0xc013d, 0xc013f, 0xc0141, 0xc0143, 0xc0145, 0xc0147, + 0xc014a, 0xc014c, 0xc014e, 0xc0150, 0xc0152, 0xc0154, 0xc0156, 0xc0158, 0xc015a, + 0xc015c, 0xc015e, 0xc0160, 0xc0162, 0xc0164, 0xc0166, 0xc0168, 0xc016a, 0xc016c, + 0xc016e, 0xc0170, 0xc0172, 0xc0174, 0xc0176, 0xc0178, 0xc0179, 0xc017b, 0xc017d, + 0xc0181, 0xc0182, 0xc0184, 0xc0186, 0xc0187, 0xc0193, 0xc0194, 0xc019c, 0xc019d, + 0xc019f, 0xc01a0, 0xc01a2, 0xc01a4, 0xc01a6, 0xc01a7, 0xc01a9, 0xc01ac, 0xc01ae, + 0xc01af, 0xc01b5, 0xc01b7, 0xc01b8, 0xc01bc, 0xc01c4, 0xc01c7, 0xc01ca, 0xc01cd, + 0xc01cf, 0xc01d1, 0xc01d3, 0xc01d5, 0xc01d7, 0xc01d9, 0xc01db, 0xc01de, 0xc01e0, + 0xc01e2, 0xc01e4, 0xc01e6, 0xc01e8, 0xc01ea, 0xc01ec, 0xc01ee, 0xc01f1, 0xc01f4, + 0xc01fa, 0xc01fc, 0xc01fe, 0xc0200, 0xc0202, 0xc0204, 0xc0206, 0xc0208, 0xc020a, + 0xc020c, 0xc020e, 0xc0210, 0xc0212, 0xc0214, 0xc0216, 0xc0218, 0xc021a, 0xc021c, + 0xc021e, 0xc0220, 0xc0222, 0xc0224, 0xc0226, 0xc0228, 0xc022a, 0xc022c, 0xc022e, + 0xc0230, 0xc0232, 0xc023a, 0xc023b, 0xc023d, 0xc023e, 0xc0241, 0xc0248, 0xc024a, + 0xc024c, 0xc024e, 0xc0370, 0xc0372, 0xc0376, 0xc037f, 0xc0386, 0xc038c, 0xc038e, + 0xc038f, 0xc03cf, 0xc03d8, 0xc03da, 0xc03dc, 0xc03de, 0xc03e0, 0xc03e2, 0xc03e4, + 0xc03e6, 0xc03e8, 0xc03ea, 0xc03ec, 0xc03ee, 0xc03f4, 0xc03f7, 0xc03f9, 0xc03fa, + 0xc0460, 0xc0462, 0xc0464, 0xc0466, 0xc0468, 0xc046a, 0xc046c, 0xc046e, 0xc0470, + 0xc0472, 0xc0474, 0xc0476, 0xc0478, 0xc047a, 0xc047c, 0xc047e, 0xc0480, 0xc048a, + 0xc048c, 0xc048e, 0xc0490, 0xc0492, 0xc0494, 0xc0496, 0xc0498, 0xc049a, 0xc049c, + 0xc049e, 0xc04a0, 0xc04a2, 0xc04a4, 0xc04a6, 0xc04a8, 0xc04aa, 0xc04ac, 0xc04ae, + 0xc04b0, 0xc04b2, 0xc04b4, 0xc04b6, 0xc04b8, 0xc04ba, 0xc04bc, 0xc04be, 0xc04c0, + 0xc04c1, 0xc04c3, 0xc04c5, 0xc04c7, 0xc04c9, 0xc04cb, 0xc04cd, 0xc04d0, 0xc04d2, + 0xc04d4, 0xc04d6, 0xc04d8, 0xc04da, 0xc04dc, 0xc04de, 0xc04e0, 0xc04e2, 0xc04e4, + 0xc04e6, 0xc04e8, 0xc04ea, 0xc04ec, 0xc04ee, 0xc04f0, 0xc04f2, 0xc04f4, 0xc04f6, + 0xc04f8, 0xc04fa, 0xc04fc, 0xc04fe, 0xc0500, 0xc0502, 0xc0504, 0xc0506, 0xc0508, + 0xc050a, 0xc050c, 0xc050e, 0xc0510, 0xc0512, 0xc0514, 0xc0516, 0xc0518, 0xc051a, + 0xc051c, 0xc051e, 0xc0520, 0xc0522, 0xc0524, 0xc0526, 0xc0528, 0xc052a, 0xc052c, + 0xc052e, 0xc10c7, 0xc10cd, 0xc1e00, 0xc1e02, 0xc1e04, 0xc1e06, 0xc1e08, 0xc1e0a, + 0xc1e0c, 0xc1e0e, 0xc1e10, 0xc1e12, 0xc1e14, 0xc1e16, 0xc1e18, 0xc1e1a, 0xc1e1c, + 0xc1e1e, 0xc1e20, 0xc1e22, 0xc1e24, 0xc1e26, 0xc1e28, 0xc1e2a, 0xc1e2c, 0xc1e2e, + 0xc1e30, 0xc1e32, 0xc1e34, 0xc1e36, 0xc1e38, 0xc1e3a, 0xc1e3c, 0xc1e3e, 0xc1e40, + 0xc1e42, 0xc1e44, 0xc1e46, 0xc1e48, 0xc1e4a, 0xc1e4c, 0xc1e4e, 0xc1e50, 0xc1e52, + 0xc1e54, 0xc1e56, 0xc1e58, 0xc1e5a, 0xc1e5c, 0xc1e5e, 0xc1e60, 0xc1e62, 0xc1e64, + 0xc1e66, 0xc1e68, 0xc1e6a, 0xc1e6c, 0xc1e6e, 0xc1e70, 0xc1e72, 0xc1e74, 0xc1e76, + 0xc1e78, 0xc1e7a, 0xc1e7c, 0xc1e7e, 0xc1e80, 0xc1e82, 0xc1e84, 0xc1e86, 0xc1e88, + 0xc1e8a, 0xc1e8c, 0xc1e8e, 0xc1e90, 0xc1e92, 0xc1e94, 0xc1e9e, 0xc1ea0, 0xc1ea2, + 0xc1ea4, 0xc1ea6, 0xc1ea8, 0xc1eaa, 0xc1eac, 0xc1eae, 0xc1eb0, 0xc1eb2, 0xc1eb4, + 0xc1eb6, 0xc1eb8, 0xc1eba, 0xc1ebc, 0xc1ebe, 0xc1ec0, 0xc1ec2, 0xc1ec4, 0xc1ec6, + 0xc1ec8, 0xc1eca, 0xc1ecc, 0xc1ece, 0xc1ed0, 0xc1ed2, 0xc1ed4, 0xc1ed6, 0xc1ed8, + 0xc1eda, 0xc1edc, 0xc1ede, 0xc1ee0, 0xc1ee2, 0xc1ee4, 0xc1ee6, 0xc1ee8, 0xc1eea, + 0xc1eec, 0xc1eee, 0xc1ef0, 0xc1ef2, 0xc1ef4, 0xc1ef6, 0xc1ef8, 0xc1efa, 0xc1efc, + 0xc1efe, 0xc1f59, 0xc1f5b, 0xc1f5d, 0xc1f5f, 0xc2102, 0xc2107, 0xc2115, 0xc2124, + 0xc2126, 0xc2128, 0xc213e, 0xc213f, 0xc2145, 0xc2183, 0xc2c60, 0xc2c67, 0xc2c69, + 0xc2c6b, 0xc2c72, 0xc2c75, 0xc2c82, 0xc2c84, 0xc2c86, 0xc2c88, 0xc2c8a, 0xc2c8c, + 0xc2c8e, 0xc2c90, 0xc2c92, 0xc2c94, 0xc2c96, 0xc2c98, 0xc2c9a, 0xc2c9c, 0xc2c9e, + 0xc2ca0, 0xc2ca2, 0xc2ca4, 0xc2ca6, 0xc2ca8, 0xc2caa, 0xc2cac, 0xc2cae, 0xc2cb0, + 0xc2cb2, 0xc2cb4, 0xc2cb6, 0xc2cb8, 0xc2cba, 0xc2cbc, 0xc2cbe, 0xc2cc0, 0xc2cc2, + 0xc2cc4, 0xc2cc6, 0xc2cc8, 0xc2cca, 0xc2ccc, 0xc2cce, 0xc2cd0, 0xc2cd2, 0xc2cd4, + 0xc2cd6, 0xc2cd8, 0xc2cda, 0xc2cdc, 0xc2cde, 0xc2ce0, 0xc2ce2, 0xc2ceb, 0xc2ced, + 0xc2cf2, 0xca640, 0xca642, 0xca644, 0xca646, 0xca648, 0xca64a, 0xca64c, 0xca64e, + 0xca650, 0xca652, 0xca654, 0xca656, 0xca658, 0xca65a, 0xca65c, 0xca65e, 0xca660, + 0xca662, 0xca664, 0xca666, 0xca668, 0xca66a, 0xca66c, 0xca680, 0xca682, 0xca684, + 0xca686, 0xca688, 0xca68a, 0xca68c, 0xca68e, 0xca690, 0xca692, 0xca694, 0xca696, + 0xca698, 0xca69a, 0xca722, 0xca724, 0xca726, 0xca728, 0xca72a, 0xca72c, 0xca72e, + 0xca732, 0xca734, 0xca736, 0xca738, 0xca73a, 0xca73c, 0xca73e, 0xca740, 0xca742, + 0xca744, 0xca746, 0xca748, 0xca74a, 0xca74c, 0xca74e, 0xca750, 0xca752, 0xca754, + 0xca756, 0xca758, 0xca75a, 0xca75c, 0xca75e, 0xca760, 0xca762, 0xca764, 0xca766, + 0xca768, 0xca76a, 0xca76c, 0xca76e, 0xca779, 0xca77b, 0xca77d, 0xca77e, 0xca780, + 0xca782, 0xca784, 0xca786, 0xca78b, 0xca78d, 0xca790, 0xca792, 0xca796, 0xca798, + 0xca79a, 0xca79c, 0xca79e, 0xca7a0, 0xca7a2, 0xca7a4, 0xca7a6, 0xca7a8, 0xca7b6, + 0xd0100, 0xd0102, 0xd0104, 0xd0106, 0xd0108, 0xd010a, 0xd010c, 0xd010e, 0xd0110, + 0xd0112, 0xd0114, 0xd0116, 0xd0118, 0xd011a, 0xd011c, 0xd011e, 0xd0120, 0xd0122, + 0xd0124, 0xd0126, 0xd0128, 0xd012a, 0xd012c, 0xd012e, 0xd0130, 0xd0132, 0xd0134, + 0xd0136, 0xd0139, 0xd013b, 0xd013d, 0xd013f, 0xd0141, 0xd0143, 0xd0145, 0xd0147, + 0xd014a, 0xd014c, 0xd014e, 0xd0150, 0xd0152, 0xd0154, 0xd0156, 0xd0158, 0xd015a, + 0xd015c, 0xd015e, 0xd0160, 0xd0162, 0xd0164, 0xd0166, 0xd0168, 0xd016a, 0xd016c, + 0xd016e, 0xd0170, 0xd0172, 0xd0174, 0xd0176, 0xd0178, 0xd0179, 0xd017b, 0xd017d, + 0xd0181, 0xd0182, 0xd0184, 0xd0186, 0xd0187, 0xd0193, 0xd0194, 0xd019c, 0xd019d, + 0xd019f, 0xd01a0, 0xd01a2, 0xd01a4, 0xd01a6, 0xd01a7, 0xd01a9, 0xd01ac, 0xd01ae, + 0xd01af, 0xd01b5, 0xd01b7, 0xd01b8, 0xd01bc, 0xd01c4, 0xd01c7, 0xd01ca, 0xd01cd, + 0xd01cf, 0xd01d1, 0xd01d3, 0xd01d5, 0xd01d7, 0xd01d9, 0xd01db, 0xd01de, 0xd01e0, + 0xd01e2, 0xd01e4, 0xd01e6, 0xd01e8, 0xd01ea, 0xd01ec, 0xd01ee, 0xd01f1, 0xd01f4, + 0xd01fa, 0xd01fc, 0xd01fe, 0xd0200, 0xd0202, 0xd0204, 0xd0206, 0xd0208, 0xd020a, + 0xd020c, 0xd020e, 0xd0210, 0xd0212, 0xd0214, 0xd0216, 0xd0218, 0xd021a, 0xd021c, + 0xd021e, 0xd0220, 0xd0222, 0xd0224, 0xd0226, 0xd0228, 0xd022a, 0xd022c, 0xd022e, + 0xd0230, 0xd0232, 0xd023a, 0xd023b, 0xd023d, 0xd023e, 0xd0241, 0xd0248, 0xd024a, + 0xd024c, 0xd024e, 0xd0370, 0xd0372, 0xd0376, 0xd037f, 0xd0386, 0xd038c, 0xd038e, + 0xd038f, 0xd03cf, 0xd03d8, 0xd03da, 0xd03dc, 0xd03de, 0xd03e0, 0xd03e2, 0xd03e4, + 0xd03e6, 0xd03e8, 0xd03ea, 0xd03ec, 0xd03ee, 0xd03f4, 0xd03f7, 0xd03f9, 0xd03fa, + 0xd0460, 0xd0462, 0xd0464, 0xd0466, 0xd0468, 0xd046a, 0xd046c, 0xd046e, 0xd0470, + 0xd0472, 0xd0474, 0xd0476, 0xd0478, 0xd047a, 0xd047c, 0xd047e, 0xd0480, 0xd048a, + 0xd048c, 0xd048e, 0xd0490, 0xd0492, 0xd0494, 0xd0496, 0xd0498, 0xd049a, 0xd049c, + 0xd049e, 0xd04a0, 0xd04a2, 0xd04a4, 0xd04a6, 0xd04a8, 0xd04aa, 0xd04ac, 0xd04ae, + 0xd04b0, 0xd04b2, 0xd04b4, 0xd04b6, 0xd04b8, 0xd04ba, 0xd04bc, 0xd04be, 0xd04c0, + 0xd04c1, 0xd04c3, 0xd04c5, 0xd04c7, 0xd04c9, 0xd04cb, 0xd04cd, 0xd04d0, 0xd04d2, + 0xd04d4, 0xd04d6, 0xd04d8, 0xd04da, 0xd04dc, 0xd04de, 0xd04e0, 0xd04e2, 0xd04e4, + 0xd04e6, 0xd04e8, 0xd04ea, 0xd04ec, 0xd04ee, 0xd04f0, 0xd04f2, 0xd04f4, 0xd04f6, + 0xd04f8, 0xd04fa, 0xd04fc, 0xd04fe, 0xd0500, 0xd0502, 0xd0504, 0xd0506, 0xd0508, + 0xd050a, 0xd050c, 0xd050e, 0xd0510, 0xd0512, 0xd0514, 0xd0516, 0xd0518, 0xd051a, + 0xd051c, 0xd051e, 0xd0520, 0xd0522, 0xd0524, 0xd0526, 0xd0528, 0xd052a, 0xd052c, + 0xd052e, 0xd10c7, 0xd10cd, 0xd1e00, 0xd1e02, 0xd1e04, 0xd1e06, 0xd1e08, 0xd1e0a, + 0xd1e0c, 0xd1e0e, 0xd1e10, 0xd1e12, 0xd1e14, 0xd1e16, 0xd1e18, 0xd1e1a, 0xd1e1c, + 0xd1e1e, 0xd1e20, 0xd1e22, 0xd1e24, 0xd1e26, 0xd1e28, 0xd1e2a, 0xd1e2c, 0xd1e2e, + 0xd1e30, 0xd1e32, 0xd1e34, 0xd1e36, 0xd1e38, 0xd1e3a, 0xd1e3c, 0xd1e3e, 0xd1e40, + 0xd1e42, 0xd1e44, 0xd1e46, 0xd1e48, 0xd1e4a, 0xd1e4c, 0xd1e4e, 0xd1e50, 0xd1e52, + 0xd1e54, 0xd1e56, 0xd1e58, 0xd1e5a, 0xd1e5c, 0xd1e5e, 0xd1e60, 0xd1e62, 0xd1e64, + 0xd1e66, 0xd1e68, 0xd1e6a, 0xd1e6c, 0xd1e6e, 0xd1e70, 0xd1e72, 0xd1e74, 0xd1e76, + 0xd1e78, 0xd1e7a, 0xd1e7c, 0xd1e7e, 0xd1e80, 0xd1e82, 0xd1e84, 0xd1e86, 0xd1e88, + 0xd1e8a, 0xd1e8c, 0xd1e8e, 0xd1e90, 0xd1e92, 0xd1e94, 0xd1e9e, 0xd1ea0, 0xd1ea2, + 0xd1ea4, 0xd1ea6, 0xd1ea8, 0xd1eaa, 0xd1eac, 0xd1eae, 0xd1eb0, 0xd1eb2, 0xd1eb4, + 0xd1eb6, 0xd1eb8, 0xd1eba, 0xd1ebc, 0xd1ebe, 0xd1ec0, 0xd1ec2, 0xd1ec4, 0xd1ec6, + 0xd1ec8, 0xd1eca, 0xd1ecc, 0xd1ece, 0xd1ed0, 0xd1ed2, 0xd1ed4, 0xd1ed6, 0xd1ed8, + 0xd1eda, 0xd1edc, 0xd1ede, 0xd1ee0, 0xd1ee2, 0xd1ee4, 0xd1ee6, 0xd1ee8, 0xd1eea, + 0xd1eec, 0xd1eee, 0xd1ef0, 0xd1ef2, 0xd1ef4, 0xd1ef6, 0xd1ef8, 0xd1efa, 0xd1efc, + 0xd1efe, 0xd1f59, 0xd1f5b, 0xd1f5d, 0xd1f5f, 0xd2102, 0xd2107, 0xd2115, 0xd2124, + 0xd2126, 0xd2128, 0xd213e, 0xd213f, 0xd2145, 0xd2183, 0xd2c60, 0xd2c67, 0xd2c69, + 0xd2c6b, 0xd2c72, 0xd2c75, 0xd2c82, 0xd2c84, 0xd2c86, 0xd2c88, 0xd2c8a, 0xd2c8c, + 0xd2c8e, 0xd2c90, 0xd2c92, 0xd2c94, 0xd2c96, 0xd2c98, 0xd2c9a, 0xd2c9c, 0xd2c9e, + 0xd2ca0, 0xd2ca2, 0xd2ca4, 0xd2ca6, 0xd2ca8, 0xd2caa, 0xd2cac, 0xd2cae, 0xd2cb0, + 0xd2cb2, 0xd2cb4, 0xd2cb6, 0xd2cb8, 0xd2cba, 0xd2cbc, 0xd2cbe, 0xd2cc0, 0xd2cc2, + 0xd2cc4, 0xd2cc6, 0xd2cc8, 0xd2cca, 0xd2ccc, 0xd2cce, 0xd2cd0, 0xd2cd2, 0xd2cd4, + 0xd2cd6, 0xd2cd8, 0xd2cda, 0xd2cdc, 0xd2cde, 0xd2ce0, 0xd2ce2, 0xd2ceb, 0xd2ced, + 0xd2cf2, 0xda640, 0xda642, 0xda644, 0xda646, 0xda648, 0xda64a, 0xda64c, 0xda64e, + 0xda650, 0xda652, 0xda654, 0xda656, 0xda658, 0xda65a, 0xda65c, 0xda65e, 0xda660, + 0xda662, 0xda664, 0xda666, 0xda668, 0xda66a, 0xda66c, 0xda680, 0xda682, 0xda684, + 0xda686, 0xda688, 0xda68a, 0xda68c, 0xda68e, 0xda690, 0xda692, 0xda694, 0xda696, + 0xda698, 0xda69a, 0xda722, 0xda724, 0xda726, 0xda728, 0xda72a, 0xda72c, 0xda72e, + 0xda732, 0xda734, 0xda736, 0xda738, 0xda73a, 0xda73c, 0xda73e, 0xda740, 0xda742, + 0xda744, 0xda746, 0xda748, 0xda74a, 0xda74c, 0xda74e, 0xda750, 0xda752, 0xda754, + 0xda756, 0xda758, 0xda75a, 0xda75c, 0xda75e, 0xda760, 0xda762, 0xda764, 0xda766, + 0xda768, 0xda76a, 0xda76c, 0xda76e, 0xda779, 0xda77b, 0xda77d, 0xda77e, 0xda780, + 0xda782, 0xda784, 0xda786, 0xda78b, 0xda78d, 0xda790, 0xda792, 0xda796, 0xda798, + 0xda79a, 0xda79c, 0xda79e, 0xda7a0, 0xda7a2, 0xda7a4, 0xda7a6, 0xda7a8, 0xda7b6, + 0xe0100, 0xe0102, 0xe0104, 0xe0106, 0xe0108, 0xe010a, 0xe010c, 0xe010e, 0xe0110, + 0xe0112, 0xe0114, 0xe0116, 0xe0118, 0xe011a, 0xe011c, 0xe011e, 0xe0120, 0xe0122, + 0xe0124, 0xe0126, 0xe0128, 0xe012a, 0xe012c, 0xe012e, 0xe0130, 0xe0132, 0xe0134, + 0xe0136, 0xe0139, 0xe013b, 0xe013d, 0xe013f, 0xe0141, 0xe0143, 0xe0145, 0xe0147, + 0xe014a, 0xe014c, 0xe014e, 0xe0150, 0xe0152, 0xe0154, 0xe0156, 0xe0158, 0xe015a, + 0xe015c, 0xe015e, 0xe0160, 0xe0162, 0xe0164, 0xe0166, 0xe0168, 0xe016a, 0xe016c, + 0xe016e, 0xe0170, 0xe0172, 0xe0174, 0xe0176, 0xe0178, 0xe0179, 0xe017b, 0xe017d, + 0xe0181, 0xe0182, 0xe0184, 0xe0186, 0xe0187, 0xe0193, 0xe0194, 0xe019c, 0xe019d, + 0xe019f, 0xe01a0, 0xe01a2, 0xe01a4, 0xe01a6, 0xe01a7, 0xe01a9, 0xe01ac, 0xe01ae, + 0xe01af, 0xe01b5, 0xe01b7, 0xe01b8, 0xe01bc, 0xe01c4, 0xe01c7, 0xe01ca, 0xe01cd, + 0xe01cf, 0xe01d1, 0xe01d3, 0xe01d5, 0xe01d7, 0xe01d9, 0xe01db, 0xe01de, 0xe01e0, + 0xe01e2, 0xe01e4, 0xe01e6, 0xe01e8, 0xe01ea, 0xe01ec, 0xe01ee, 0xe01f1, 0xe01f4, + 0xe01fa, 0xe01fc, 0xe01fe, 0xe0200, 0xe0202, 0xe0204, 0xe0206, 0xe0208, 0xe020a, + 0xe020c, 0xe020e, 0xe0210, 0xe0212, 0xe0214, 0xe0216, 0xe0218, 0xe021a, 0xe021c, + 0xe021e, 0xe0220, 0xe0222, 0xe0224, 0xe0226, 0xe0228, 0xe022a, 0xe022c, 0xe022e, + 0xe0230, 0xe0232, 0xe023a, 0xe023b, 0xe023d, 0xe023e, 0xe0241, 0xe0248, 0xe024a, + 0xe024c, 0xe024e, 0xe0370, 0xe0372, 0xe0376, 0xe037f, 0xe0386, 0xe038c, 0xe038e, + 0xe038f, 0xe03cf, 0xe03d8, 0xe03da, 0xe03dc, 0xe03de, 0xe03e0, 0xe03e2, 0xe03e4, + 0xe03e6, 0xe03e8, 0xe03ea, 0xe03ec, 0xe03ee, 0xe03f4, 0xe03f7, 0xe03f9, 0xe03fa, + 0xe0460, 0xe0462, 0xe0464, 0xe0466, 0xe0468, 0xe046a, 0xe046c, 0xe046e, 0xe0470, + 0xe0472, 0xe0474, 0xe0476, 0xe0478, 0xe047a, 0xe047c, 0xe047e, 0xe0480, 0xe048a, + 0xe048c, 0xe048e, 0xe0490, 0xe0492, 0xe0494, 0xe0496, 0xe0498, 0xe049a, 0xe049c, + 0xe049e, 0xe04a0, 0xe04a2, 0xe04a4, 0xe04a6, 0xe04a8, 0xe04aa, 0xe04ac, 0xe04ae, + 0xe04b0, 0xe04b2, 0xe04b4, 0xe04b6, 0xe04b8, 0xe04ba, 0xe04bc, 0xe04be, 0xe04c0, + 0xe04c1, 0xe04c3, 0xe04c5, 0xe04c7, 0xe04c9, 0xe04cb, 0xe04cd, 0xe04d0, 0xe04d2, + 0xe04d4, 0xe04d6, 0xe04d8, 0xe04da, 0xe04dc, 0xe04de, 0xe04e0, 0xe04e2, 0xe04e4, + 0xe04e6, 0xe04e8, 0xe04ea, 0xe04ec, 0xe04ee, 0xe04f0, 0xe04f2, 0xe04f4, 0xe04f6, + 0xe04f8, 0xe04fa, 0xe04fc, 0xe04fe, 0xe0500, 0xe0502, 0xe0504, 0xe0506, 0xe0508, + 0xe050a, 0xe050c, 0xe050e, 0xe0510, 0xe0512, 0xe0514, 0xe0516, 0xe0518, 0xe051a, + 0xe051c, 0xe051e, 0xe0520, 0xe0522, 0xe0524, 0xe0526, 0xe0528, 0xe052a, 0xe052c, + 0xe052e, 0xe10c7, 0xe10cd, 0xe1e00, 0xe1e02, 0xe1e04, 0xe1e06, 0xe1e08, 0xe1e0a, + 0xe1e0c, 0xe1e0e, 0xe1e10, 0xe1e12, 0xe1e14, 0xe1e16, 0xe1e18, 0xe1e1a, 0xe1e1c, + 0xe1e1e, 0xe1e20, 0xe1e22, 0xe1e24, 0xe1e26, 0xe1e28, 0xe1e2a, 0xe1e2c, 0xe1e2e, + 0xe1e30, 0xe1e32, 0xe1e34, 0xe1e36, 0xe1e38, 0xe1e3a, 0xe1e3c, 0xe1e3e, 0xe1e40, + 0xe1e42, 0xe1e44, 0xe1e46, 0xe1e48, 0xe1e4a, 0xe1e4c, 0xe1e4e, 0xe1e50, 0xe1e52, + 0xe1e54, 0xe1e56, 0xe1e58, 0xe1e5a, 0xe1e5c, 0xe1e5e, 0xe1e60, 0xe1e62, 0xe1e64, + 0xe1e66, 0xe1e68, 0xe1e6a, 0xe1e6c, 0xe1e6e, 0xe1e70, 0xe1e72, 0xe1e74, 0xe1e76, + 0xe1e78, 0xe1e7a, 0xe1e7c, 0xe1e7e, 0xe1e80, 0xe1e82, 0xe1e84, 0xe1e86, 0xe1e88, + 0xe1e8a, 0xe1e8c, 0xe1e8e, 0xe1e90, 0xe1e92, 0xe1e94, 0xe1e9e, 0xe1ea0, 0xe1ea2, + 0xe1ea4, 0xe1ea6, 0xe1ea8, 0xe1eaa, 0xe1eac, 0xe1eae, 0xe1eb0, 0xe1eb2, 0xe1eb4, + 0xe1eb6, 0xe1eb8, 0xe1eba, 0xe1ebc, 0xe1ebe, 0xe1ec0, 0xe1ec2, 0xe1ec4, 0xe1ec6, + 0xe1ec8, 0xe1eca, 0xe1ecc, 0xe1ece, 0xe1ed0, 0xe1ed2, 0xe1ed4, 0xe1ed6, 0xe1ed8, + 0xe1eda, 0xe1edc, 0xe1ede, 0xe1ee0, 0xe1ee2, 0xe1ee4, 0xe1ee6, 0xe1ee8, 0xe1eea, + 0xe1eec, 0xe1eee, 0xe1ef0, 0xe1ef2, 0xe1ef4, 0xe1ef6, 0xe1ef8, 0xe1efa, 0xe1efc, + 0xe1efe, 0xe1f59, 0xe1f5b, 0xe1f5d, 0xe1f5f, 0xe2102, 0xe2107, 0xe2115, 0xe2124, + 0xe2126, 0xe2128, 0xe213e, 0xe213f, 0xe2145, 0xe2183, 0xe2c60, 0xe2c67, 0xe2c69, + 0xe2c6b, 0xe2c72, 0xe2c75, 0xe2c82, 0xe2c84, 0xe2c86, 0xe2c88, 0xe2c8a, 0xe2c8c, + 0xe2c8e, 0xe2c90, 0xe2c92, 0xe2c94, 0xe2c96, 0xe2c98, 0xe2c9a, 0xe2c9c, 0xe2c9e, + 0xe2ca0, 0xe2ca2, 0xe2ca4, 0xe2ca6, 0xe2ca8, 0xe2caa, 0xe2cac, 0xe2cae, 0xe2cb0, + 0xe2cb2, 0xe2cb4, 0xe2cb6, 0xe2cb8, 0xe2cba, 0xe2cbc, 0xe2cbe, 0xe2cc0, 0xe2cc2, + 0xe2cc4, 0xe2cc6, 0xe2cc8, 0xe2cca, 0xe2ccc, 0xe2cce, 0xe2cd0, 0xe2cd2, 0xe2cd4, + 0xe2cd6, 0xe2cd8, 0xe2cda, 0xe2cdc, 0xe2cde, 0xe2ce0, 0xe2ce2, 0xe2ceb, 0xe2ced, + 0xe2cf2, 0xea640, 0xea642, 0xea644, 0xea646, 0xea648, 0xea64a, 0xea64c, 0xea64e, + 0xea650, 0xea652, 0xea654, 0xea656, 0xea658, 0xea65a, 0xea65c, 0xea65e, 0xea660, + 0xea662, 0xea664, 0xea666, 0xea668, 0xea66a, 0xea66c, 0xea680, 0xea682, 0xea684, + 0xea686, 0xea688, 0xea68a, 0xea68c, 0xea68e, 0xea690, 0xea692, 0xea694, 0xea696, + 0xea698, 0xea69a, 0xea722, 0xea724, 0xea726, 0xea728, 0xea72a, 0xea72c, 0xea72e, + 0xea732, 0xea734, 0xea736, 0xea738, 0xea73a, 0xea73c, 0xea73e, 0xea740, 0xea742, + 0xea744, 0xea746, 0xea748, 0xea74a, 0xea74c, 0xea74e, 0xea750, 0xea752, 0xea754, + 0xea756, 0xea758, 0xea75a, 0xea75c, 0xea75e, 0xea760, 0xea762, 0xea764, 0xea766, + 0xea768, 0xea76a, 0xea76c, 0xea76e, 0xea779, 0xea77b, 0xea77d, 0xea77e, 0xea780, + 0xea782, 0xea784, 0xea786, 0xea78b, 0xea78d, 0xea790, 0xea792, 0xea796, 0xea798, + 0xea79a, 0xea79c, 0xea79e, 0xea7a0, 0xea7a2, 0xea7a4, 0xea7a6, 0xea7a8, 0xea7b6, + 0xf0100, 0xf0102, 0xf0104, 0xf0106, 0xf0108, 0xf010a, 0xf010c, 0xf010e, 0xf0110, + 0xf0112, 0xf0114, 0xf0116, 0xf0118, 0xf011a, 0xf011c, 0xf011e, 0xf0120, 0xf0122, + 0xf0124, 0xf0126, 0xf0128, 0xf012a, 0xf012c, 0xf012e, 0xf0130, 0xf0132, 0xf0134, + 0xf0136, 0xf0139, 0xf013b, 0xf013d, 0xf013f, 0xf0141, 0xf0143, 0xf0145, 0xf0147, + 0xf014a, 0xf014c, 0xf014e, 0xf0150, 0xf0152, 0xf0154, 0xf0156, 0xf0158, 0xf015a, + 0xf015c, 0xf015e, 0xf0160, 0xf0162, 0xf0164, 0xf0166, 0xf0168, 0xf016a, 0xf016c, + 0xf016e, 0xf0170, 0xf0172, 0xf0174, 0xf0176, 0xf0178, 0xf0179, 0xf017b, 0xf017d, + 0xf0181, 0xf0182, 0xf0184, 0xf0186, 0xf0187, 0xf0193, 0xf0194, 0xf019c, 0xf019d, + 0xf019f, 0xf01a0, 0xf01a2, 0xf01a4, 0xf01a6, 0xf01a7, 0xf01a9, 0xf01ac, 0xf01ae, + 0xf01af, 0xf01b5, 0xf01b7, 0xf01b8, 0xf01bc, 0xf01c4, 0xf01c7, 0xf01ca, 0xf01cd, + 0xf01cf, 0xf01d1, 0xf01d3, 0xf01d5, 0xf01d7, 0xf01d9, 0xf01db, 0xf01de, 0xf01e0, + 0xf01e2, 0xf01e4, 0xf01e6, 0xf01e8, 0xf01ea, 0xf01ec, 0xf01ee, 0xf01f1, 0xf01f4, + 0xf01fa, 0xf01fc, 0xf01fe, 0xf0200, 0xf0202, 0xf0204, 0xf0206, 0xf0208, 0xf020a, + 0xf020c, 0xf020e, 0xf0210, 0xf0212, 0xf0214, 0xf0216, 0xf0218, 0xf021a, 0xf021c, + 0xf021e, 0xf0220, 0xf0222, 0xf0224, 0xf0226, 0xf0228, 0xf022a, 0xf022c, 0xf022e, + 0xf0230, 0xf0232, 0xf023a, 0xf023b, 0xf023d, 0xf023e, 0xf0241, 0xf0248, 0xf024a, + 0xf024c, 0xf024e, 0xf0370, 0xf0372, 0xf0376, 0xf037f, 0xf0386, 0xf038c, 0xf038e, + 0xf038f, 0xf03cf, 0xf03d8, 0xf03da, 0xf03dc, 0xf03de, 0xf03e0, 0xf03e2, 0xf03e4, + 0xf03e6, 0xf03e8, 0xf03ea, 0xf03ec, 0xf03ee, 0xf03f4, 0xf03f7, 0xf03f9, 0xf03fa, + 0xf0460, 0xf0462, 0xf0464, 0xf0466, 0xf0468, 0xf046a, 0xf046c, 0xf046e, 0xf0470, + 0xf0472, 0xf0474, 0xf0476, 0xf0478, 0xf047a, 0xf047c, 0xf047e, 0xf0480, 0xf048a, + 0xf048c, 0xf048e, 0xf0490, 0xf0492, 0xf0494, 0xf0496, 0xf0498, 0xf049a, 0xf049c, + 0xf049e, 0xf04a0, 0xf04a2, 0xf04a4, 0xf04a6, 0xf04a8, 0xf04aa, 0xf04ac, 0xf04ae, + 0xf04b0, 0xf04b2, 0xf04b4, 0xf04b6, 0xf04b8, 0xf04ba, 0xf04bc, 0xf04be, 0xf04c0, + 0xf04c1, 0xf04c3, 0xf04c5, 0xf04c7, 0xf04c9, 0xf04cb, 0xf04cd, 0xf04d0, 0xf04d2, + 0xf04d4, 0xf04d6, 0xf04d8, 0xf04da, 0xf04dc, 0xf04de, 0xf04e0, 0xf04e2, 0xf04e4, + 0xf04e6, 0xf04e8, 0xf04ea, 0xf04ec, 0xf04ee, 0xf04f0, 0xf04f2, 0xf04f4, 0xf04f6, + 0xf04f8, 0xf04fa, 0xf04fc, 0xf04fe, 0xf0500, 0xf0502, 0xf0504, 0xf0506, 0xf0508, + 0xf050a, 0xf050c, 0xf050e, 0xf0510, 0xf0512, 0xf0514, 0xf0516, 0xf0518, 0xf051a, + 0xf051c, 0xf051e, 0xf0520, 0xf0522, 0xf0524, 0xf0526, 0xf0528, 0xf052a, 0xf052c, + 0xf052e, 0xf10c7, 0xf10cd, 0xf1e00, 0xf1e02, 0xf1e04, 0xf1e06, 0xf1e08, 0xf1e0a, + 0xf1e0c, 0xf1e0e, 0xf1e10, 0xf1e12, 0xf1e14, 0xf1e16, 0xf1e18, 0xf1e1a, 0xf1e1c, + 0xf1e1e, 0xf1e20, 0xf1e22, 0xf1e24, 0xf1e26, 0xf1e28, 0xf1e2a, 0xf1e2c, 0xf1e2e, + 0xf1e30, 0xf1e32, 0xf1e34, 0xf1e36, 0xf1e38, 0xf1e3a, 0xf1e3c, 0xf1e3e, 0xf1e40, + 0xf1e42, 0xf1e44, 0xf1e46, 0xf1e48, 0xf1e4a, 0xf1e4c, 0xf1e4e, 0xf1e50, 0xf1e52, + 0xf1e54, 0xf1e56, 0xf1e58, 0xf1e5a, 0xf1e5c, 0xf1e5e, 0xf1e60, 0xf1e62, 0xf1e64, + 0xf1e66, 0xf1e68, 0xf1e6a, 0xf1e6c, 0xf1e6e, 0xf1e70, 0xf1e72, 0xf1e74, 0xf1e76, + 0xf1e78, 0xf1e7a, 0xf1e7c, 0xf1e7e, 0xf1e80, 0xf1e82, 0xf1e84, 0xf1e86, 0xf1e88, + 0xf1e8a, 0xf1e8c, 0xf1e8e, 0xf1e90, 0xf1e92, 0xf1e94, 0xf1e9e, 0xf1ea0, 0xf1ea2, + 0xf1ea4, 0xf1ea6, 0xf1ea8, 0xf1eaa, 0xf1eac, 0xf1eae, 0xf1eb0, 0xf1eb2, 0xf1eb4, + 0xf1eb6, 0xf1eb8, 0xf1eba, 0xf1ebc, 0xf1ebe, 0xf1ec0, 0xf1ec2, 0xf1ec4, 0xf1ec6, + 0xf1ec8, 0xf1eca, 0xf1ecc, 0xf1ece, 0xf1ed0, 0xf1ed2, 0xf1ed4, 0xf1ed6, 0xf1ed8, + 0xf1eda, 0xf1edc, 0xf1ede, 0xf1ee0, 0xf1ee2, 0xf1ee4, 0xf1ee6, 0xf1ee8, 0xf1eea, + 0xf1eec, 0xf1eee, 0xf1ef0, 0xf1ef2, 0xf1ef4, 0xf1ef6, 0xf1ef8, 0xf1efa, 0xf1efc, + 0xf1efe, 0xf1f59, 0xf1f5b, 0xf1f5d, 0xf1f5f, 0xf2102, 0xf2107, 0xf2115, 0xf2124, + 0xf2126, 0xf2128, 0xf213e, 0xf213f, 0xf2145, 0xf2183, 0xf2c60, 0xf2c67, 0xf2c69, + 0xf2c6b, 0xf2c72, 0xf2c75, 0xf2c82, 0xf2c84, 0xf2c86, 0xf2c88, 0xf2c8a, 0xf2c8c, + 0xf2c8e, 0xf2c90, 0xf2c92, 0xf2c94, 0xf2c96, 0xf2c98, 0xf2c9a, 0xf2c9c, 0xf2c9e, + 0xf2ca0, 0xf2ca2, 0xf2ca4, 0xf2ca6, 0xf2ca8, 0xf2caa, 0xf2cac, 0xf2cae, 0xf2cb0, + 0xf2cb2, 0xf2cb4, 0xf2cb6, 0xf2cb8, 0xf2cba, 0xf2cbc, 0xf2cbe, 0xf2cc0, 0xf2cc2, + 0xf2cc4, 0xf2cc6, 0xf2cc8, 0xf2cca, 0xf2ccc, 0xf2cce, 0xf2cd0, 0xf2cd2, 0xf2cd4, + 0xf2cd6, 0xf2cd8, 0xf2cda, 0xf2cdc, 0xf2cde, 0xf2ce0, 0xf2ce2, 0xf2ceb, 0xf2ced, + 0xf2cf2, 0xfa640, 0xfa642, 0xfa644, 0xfa646, 0xfa648, 0xfa64a, 0xfa64c, 0xfa64e, + 0xfa650, 0xfa652, 0xfa654, 0xfa656, 0xfa658, 0xfa65a, 0xfa65c, 0xfa65e, 0xfa660, + 0xfa662, 0xfa664, 0xfa666, 0xfa668, 0xfa66a, 0xfa66c, 0xfa680, 0xfa682, 0xfa684, + 0xfa686, 0xfa688, 0xfa68a, 0xfa68c, 0xfa68e, 0xfa690, 0xfa692, 0xfa694, 0xfa696, + 0xfa698, 0xfa69a, 0xfa722, 0xfa724, 0xfa726, 0xfa728, 0xfa72a, 0xfa72c, 0xfa72e, + 0xfa732, 0xfa734, 0xfa736, 0xfa738, 0xfa73a, 0xfa73c, 0xfa73e, 0xfa740, 0xfa742, + 0xfa744, 0xfa746, 0xfa748, 0xfa74a, 0xfa74c, 0xfa74e, 0xfa750, 0xfa752, 0xfa754, + 0xfa756, 0xfa758, 0xfa75a, 0xfa75c, 0xfa75e, 0xfa760, 0xfa762, 0xfa764, 0xfa766, + 0xfa768, 0xfa76a, 0xfa76c, 0xfa76e, 0xfa779, 0xfa77b, 0xfa77d, 0xfa77e, 0xfa780, + 0xfa782, 0xfa784, 0xfa786, 0xfa78b, 0xfa78d, 0xfa790, 0xfa792, 0xfa796, 0xfa798, + 0xfa79a, 0xfa79c, 0xfa79e, 0xfa7a0, 0xfa7a2, 0xfa7a4, 0xfa7a6, 0xfa7a8, 0xfa7b6, + 0x100100, 0x100102, 0x100104, 0x100106, 0x100108, 0x10010a, 0x10010c, 0x10010e, 0x100110, + 0x100112, 0x100114, 0x100116, 0x100118, 0x10011a, 0x10011c, 0x10011e, 0x100120, 0x100122, + 0x100124, 0x100126, 0x100128, 0x10012a, 0x10012c, 0x10012e, 0x100130, 0x100132, 0x100134, + 0x100136, 0x100139, 0x10013b, 0x10013d, 0x10013f, 0x100141, 0x100143, 0x100145, 0x100147, + 0x10014a, 0x10014c, 0x10014e, 0x100150, 0x100152, 0x100154, 0x100156, 0x100158, 0x10015a, + 0x10015c, 0x10015e, 0x100160, 0x100162, 0x100164, 0x100166, 0x100168, 0x10016a, 0x10016c, + 0x10016e, 0x100170, 0x100172, 0x100174, 0x100176, 0x100178, 0x100179, 0x10017b, 0x10017d, + 0x100181, 0x100182, 0x100184, 0x100186, 0x100187, 0x100193, 0x100194, 0x10019c, 0x10019d, + 0x10019f, 0x1001a0, 0x1001a2, 0x1001a4, 0x1001a6, 0x1001a7, 0x1001a9, 0x1001ac, 0x1001ae, + 0x1001af, 0x1001b5, 0x1001b7, 0x1001b8, 0x1001bc, 0x1001c4, 0x1001c7, 0x1001ca, 0x1001cd, + 0x1001cf, 0x1001d1, 0x1001d3, 0x1001d5, 0x1001d7, 0x1001d9, 0x1001db, 0x1001de, 0x1001e0, + 0x1001e2, 0x1001e4, 0x1001e6, 0x1001e8, 0x1001ea, 0x1001ec, 0x1001ee, 0x1001f1, 0x1001f4, + 0x1001fa, 0x1001fc, 0x1001fe, 0x100200, 0x100202, 0x100204, 0x100206, 0x100208, 0x10020a, + 0x10020c, 0x10020e, 0x100210, 0x100212, 0x100214, 0x100216, 0x100218, 0x10021a, 0x10021c, + 0x10021e, 0x100220, 0x100222, 0x100224, 0x100226, 0x100228, 0x10022a, 0x10022c, 0x10022e, + 0x100230, 0x100232, 0x10023a, 0x10023b, 0x10023d, 0x10023e, 0x100241, 0x100248, 0x10024a, + 0x10024c, 0x10024e, 0x100370, 0x100372, 0x100376, 0x10037f, 0x100386, 0x10038c, 0x10038e, + 0x10038f, 0x1003cf, 0x1003d8, 0x1003da, 0x1003dc, 0x1003de, 0x1003e0, 0x1003e2, 0x1003e4, + 0x1003e6, 0x1003e8, 0x1003ea, 0x1003ec, 0x1003ee, 0x1003f4, 0x1003f7, 0x1003f9, 0x1003fa, + 0x100460, 0x100462, 0x100464, 0x100466, 0x100468, 0x10046a, 0x10046c, 0x10046e, 0x100470, + 0x100472, 0x100474, 0x100476, 0x100478, 0x10047a, 0x10047c, 0x10047e, 0x100480, 0x10048a, + 0x10048c, 0x10048e, 0x100490, 0x100492, 0x100494, 0x100496, 0x100498, 0x10049a, 0x10049c, + 0x10049e, 0x1004a0, 0x1004a2, 0x1004a4, 0x1004a6, 0x1004a8, 0x1004aa, 0x1004ac, 0x1004ae, + 0x1004b0, 0x1004b2, 0x1004b4, 0x1004b6, 0x1004b8, 0x1004ba, 0x1004bc, 0x1004be, 0x1004c0, + 0x1004c1, 0x1004c3, 0x1004c5, 0x1004c7, 0x1004c9, 0x1004cb, 0x1004cd, 0x1004d0, 0x1004d2, + 0x1004d4, 0x1004d6, 0x1004d8, 0x1004da, 0x1004dc, 0x1004de, 0x1004e0, 0x1004e2, 0x1004e4, + 0x1004e6, 0x1004e8, 0x1004ea, 0x1004ec, 0x1004ee, 0x1004f0, 0x1004f2, 0x1004f4, 0x1004f6, + 0x1004f8, 0x1004fa, 0x1004fc, 0x1004fe, 0x100500, 0x100502, 0x100504, 0x100506, 0x100508, + 0x10050a, 0x10050c, 0x10050e, 0x100510, 0x100512, 0x100514, 0x100516, 0x100518, 0x10051a, + 0x10051c, 0x10051e, 0x100520, 0x100522, 0x100524, 0x100526, 0x100528, 0x10052a, 0x10052c, + 0x10052e, 0x1010c7, 0x1010cd, 0x101e00, 0x101e02, 0x101e04, 0x101e06, 0x101e08, 0x101e0a, + 0x101e0c, 0x101e0e, 0x101e10, 0x101e12, 0x101e14, 0x101e16, 0x101e18, 0x101e1a, 0x101e1c, + 0x101e1e, 0x101e20, 0x101e22, 0x101e24, 0x101e26, 0x101e28, 0x101e2a, 0x101e2c, 0x101e2e, + 0x101e30, 0x101e32, 0x101e34, 0x101e36, 0x101e38, 0x101e3a, 0x101e3c, 0x101e3e, 0x101e40, + 0x101e42, 0x101e44, 0x101e46, 0x101e48, 0x101e4a, 0x101e4c, 0x101e4e, 0x101e50, 0x101e52, + 0x101e54, 0x101e56, 0x101e58, 0x101e5a, 0x101e5c, 0x101e5e, 0x101e60, 0x101e62, 0x101e64, + 0x101e66, 0x101e68, 0x101e6a, 0x101e6c, 0x101e6e, 0x101e70, 0x101e72, 0x101e74, 0x101e76, + 0x101e78, 0x101e7a, 0x101e7c, 0x101e7e, 0x101e80, 0x101e82, 0x101e84, 0x101e86, 0x101e88, + 0x101e8a, 0x101e8c, 0x101e8e, 0x101e90, 0x101e92, 0x101e94, 0x101e9e, 0x101ea0, 0x101ea2, + 0x101ea4, 0x101ea6, 0x101ea8, 0x101eaa, 0x101eac, 0x101eae, 0x101eb0, 0x101eb2, 0x101eb4, + 0x101eb6, 0x101eb8, 0x101eba, 0x101ebc, 0x101ebe, 0x101ec0, 0x101ec2, 0x101ec4, 0x101ec6, + 0x101ec8, 0x101eca, 0x101ecc, 0x101ece, 0x101ed0, 0x101ed2, 0x101ed4, 0x101ed6, 0x101ed8, + 0x101eda, 0x101edc, 0x101ede, 0x101ee0, 0x101ee2, 0x101ee4, 0x101ee6, 0x101ee8, 0x101eea, + 0x101eec, 0x101eee, 0x101ef0, 0x101ef2, 0x101ef4, 0x101ef6, 0x101ef8, 0x101efa, 0x101efc, + 0x101efe, 0x101f59, 0x101f5b, 0x101f5d, 0x101f5f, 0x102102, 0x102107, 0x102115, 0x102124, + 0x102126, 0x102128, 0x10213e, 0x10213f, 0x102145, 0x102183, 0x102c60, 0x102c67, 0x102c69, + 0x102c6b, 0x102c72, 0x102c75, 0x102c82, 0x102c84, 0x102c86, 0x102c88, 0x102c8a, 0x102c8c, + 0x102c8e, 0x102c90, 0x102c92, 0x102c94, 0x102c96, 0x102c98, 0x102c9a, 0x102c9c, 0x102c9e, + 0x102ca0, 0x102ca2, 0x102ca4, 0x102ca6, 0x102ca8, 0x102caa, 0x102cac, 0x102cae, 0x102cb0, + 0x102cb2, 0x102cb4, 0x102cb6, 0x102cb8, 0x102cba, 0x102cbc, 0x102cbe, 0x102cc0, 0x102cc2, + 0x102cc4, 0x102cc6, 0x102cc8, 0x102cca, 0x102ccc, 0x102cce, 0x102cd0, 0x102cd2, 0x102cd4, + 0x102cd6, 0x102cd8, 0x102cda, 0x102cdc, 0x102cde, 0x102ce0, 0x102ce2, 0x102ceb, 0x102ced, + 0x102cf2, 0x10a640, 0x10a642, 0x10a644, 0x10a646, 0x10a648, 0x10a64a, 0x10a64c, 0x10a64e, + 0x10a650, 0x10a652, 0x10a654, 0x10a656, 0x10a658, 0x10a65a, 0x10a65c, 0x10a65e, 0x10a660, + 0x10a662, 0x10a664, 0x10a666, 0x10a668, 0x10a66a, 0x10a66c, 0x10a680, 0x10a682, 0x10a684, + 0x10a686, 0x10a688, 0x10a68a, 0x10a68c, 0x10a68e, 0x10a690, 0x10a692, 0x10a694, 0x10a696, + 0x10a698, 0x10a69a, 0x10a722, 0x10a724, 0x10a726, 0x10a728, 0x10a72a, 0x10a72c, 0x10a72e, + 0x10a732, 0x10a734, 0x10a736, 0x10a738, 0x10a73a, 0x10a73c, 0x10a73e, 0x10a740, 0x10a742, + 0x10a744, 0x10a746, 0x10a748, 0x10a74a, 0x10a74c, 0x10a74e, 0x10a750, 0x10a752, 0x10a754, + 0x10a756, 0x10a758, 0x10a75a, 0x10a75c, 0x10a75e, 0x10a760, 0x10a762, 0x10a764, 0x10a766, + 0x10a768, 0x10a76a, 0x10a76c, 0x10a76e, 0x10a779, 0x10a77b, 0x10a77d, 0x10a77e, 0x10a780, + 0x10a782, 0x10a784, 0x10a786, 0x10a78b, 0x10a78d, 0x10a790, 0x10a792, 0x10a796, 0x10a798, + 0x10a79a, 0x10a79c, 0x10a79e, 0x10a7a0, 0x10a7a2, 0x10a7a4, 0x10a7a6, 0x10a7a8, 0x10a7b6 #endif }; @@ -615,63 +4879,63 @@ static const crange graphRangeTable[] = { {0x559, 0x55f}, {0x561, 0x587}, {0x58d, 0x58f}, {0x591, 0x5c7}, {0x5d0, 0x5ea}, {0x5f0, 0x5f4}, {0x606, 0x61b}, {0x61e, 0x6dc}, {0x6de, 0x70d}, {0x710, 0x74a}, {0x74d, 0x7b1}, {0x7c0, 0x7fa}, - {0x800, 0x82d}, {0x830, 0x83e}, {0x840, 0x85b}, {0x8a0, 0x8b4}, - {0x8b6, 0x8bd}, {0x8d4, 0x8e1}, {0x8e3, 0x983}, {0x985, 0x98c}, - {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b6, 0x9b9}, {0x9bc, 0x9c4}, - {0x9cb, 0x9ce}, {0x9df, 0x9e3}, {0x9e6, 0x9fb}, {0xa01, 0xa03}, - {0xa05, 0xa0a}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa3e, 0xa42}, - {0xa4b, 0xa4d}, {0xa59, 0xa5c}, {0xa66, 0xa75}, {0xa81, 0xa83}, - {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, {0xaaa, 0xab0}, - {0xab5, 0xab9}, {0xabc, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, - {0xae0, 0xae3}, {0xae6, 0xaf1}, {0xb01, 0xb03}, {0xb05, 0xb0c}, - {0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb35, 0xb39}, {0xb3c, 0xb44}, - {0xb4b, 0xb4d}, {0xb5f, 0xb63}, {0xb66, 0xb77}, {0xb85, 0xb8a}, - {0xb8e, 0xb90}, {0xb92, 0xb95}, {0xba8, 0xbaa}, {0xbae, 0xbb9}, - {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, {0xbca, 0xbcd}, {0xbe6, 0xbfa}, - {0xc00, 0xc03}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28}, - {0xc2a, 0xc39}, {0xc3d, 0xc44}, {0xc46, 0xc48}, {0xc4a, 0xc4d}, - {0xc58, 0xc5a}, {0xc60, 0xc63}, {0xc66, 0xc6f}, {0xc78, 0xc83}, - {0xc85, 0xc8c}, {0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, - {0xcb5, 0xcb9}, {0xcbc, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, - {0xce0, 0xce3}, {0xce6, 0xcef}, {0xd01, 0xd03}, {0xd05, 0xd0c}, - {0xd0e, 0xd10}, {0xd12, 0xd3a}, {0xd3d, 0xd44}, {0xd46, 0xd48}, - {0xd4a, 0xd4f}, {0xd54, 0xd63}, {0xd66, 0xd7f}, {0xd85, 0xd96}, - {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdc0, 0xdc6}, {0xdcf, 0xdd4}, - {0xdd8, 0xddf}, {0xde6, 0xdef}, {0xdf2, 0xdf4}, {0xe01, 0xe3a}, - {0xe3f, 0xe5b}, {0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, - {0xead, 0xeb9}, {0xebb, 0xebd}, {0xec0, 0xec4}, {0xec8, 0xecd}, - {0xed0, 0xed9}, {0xedc, 0xedf}, {0xf00, 0xf47}, {0xf49, 0xf6c}, - {0xf71, 0xf97}, {0xf99, 0xfbc}, {0xfbe, 0xfcc}, {0xfce, 0xfda}, - {0x1000, 0x10c5}, {0x10d0, 0x1248}, {0x124a, 0x124d}, {0x1250, 0x1256}, - {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, {0x1290, 0x12b0}, - {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c2, 0x12c5}, {0x12c8, 0x12d6}, - {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, {0x135d, 0x137c}, - {0x1380, 0x1399}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, {0x1400, 0x167f}, - {0x1681, 0x169c}, {0x16a0, 0x16f8}, {0x1700, 0x170c}, {0x170e, 0x1714}, - {0x1720, 0x1736}, {0x1740, 0x1753}, {0x1760, 0x176c}, {0x176e, 0x1770}, - {0x1780, 0x17dd}, {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, {0x1800, 0x180d}, - {0x1810, 0x1819}, {0x1820, 0x1877}, {0x1880, 0x18aa}, {0x18b0, 0x18f5}, - {0x1900, 0x191e}, {0x1920, 0x192b}, {0x1930, 0x193b}, {0x1944, 0x196d}, - {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, {0x19d0, 0x19da}, - {0x19de, 0x1a1b}, {0x1a1e, 0x1a5e}, {0x1a60, 0x1a7c}, {0x1a7f, 0x1a89}, - {0x1a90, 0x1a99}, {0x1aa0, 0x1aad}, {0x1ab0, 0x1abe}, {0x1b00, 0x1b4b}, - {0x1b50, 0x1b7c}, {0x1b80, 0x1bf3}, {0x1bfc, 0x1c37}, {0x1c3b, 0x1c49}, - {0x1c4d, 0x1c88}, {0x1cc0, 0x1cc7}, {0x1cd0, 0x1cf6}, {0x1d00, 0x1df5}, - {0x1dfb, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, {0x1f48, 0x1f4d}, - {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fc4}, - {0x1fc6, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fdd, 0x1fef}, {0x1ff2, 0x1ff4}, - {0x1ff6, 0x1ffe}, {0x2010, 0x2027}, {0x2030, 0x205e}, {0x2074, 0x208e}, - {0x2090, 0x209c}, {0x20a0, 0x20be}, {0x20d0, 0x20f0}, {0x2100, 0x218b}, - {0x2190, 0x23fe}, {0x2400, 0x2426}, {0x2440, 0x244a}, {0x2460, 0x2b73}, - {0x2b76, 0x2b95}, {0x2b98, 0x2bb9}, {0x2bbd, 0x2bc8}, {0x2bca, 0x2bd1}, + {0x800, 0x82d}, {0x830, 0x83e}, {0x840, 0x85b}, {0x860, 0x86a}, + {0x8a0, 0x8b4}, {0x8b6, 0x8bd}, {0x8d4, 0x8e1}, {0x8e3, 0x983}, + {0x985, 0x98c}, {0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b6, 0x9b9}, + {0x9bc, 0x9c4}, {0x9cb, 0x9ce}, {0x9df, 0x9e3}, {0x9e6, 0x9fd}, + {0xa01, 0xa03}, {0xa05, 0xa0a}, {0xa13, 0xa28}, {0xa2a, 0xa30}, + {0xa3e, 0xa42}, {0xa4b, 0xa4d}, {0xa59, 0xa5c}, {0xa66, 0xa75}, + {0xa81, 0xa83}, {0xa85, 0xa8d}, {0xa8f, 0xa91}, {0xa93, 0xaa8}, + {0xaaa, 0xab0}, {0xab5, 0xab9}, {0xabc, 0xac5}, {0xac7, 0xac9}, + {0xacb, 0xacd}, {0xae0, 0xae3}, {0xae6, 0xaf1}, {0xaf9, 0xaff}, + {0xb01, 0xb03}, {0xb05, 0xb0c}, {0xb13, 0xb28}, {0xb2a, 0xb30}, + {0xb35, 0xb39}, {0xb3c, 0xb44}, {0xb4b, 0xb4d}, {0xb5f, 0xb63}, + {0xb66, 0xb77}, {0xb85, 0xb8a}, {0xb8e, 0xb90}, {0xb92, 0xb95}, + {0xba8, 0xbaa}, {0xbae, 0xbb9}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8}, + {0xbca, 0xbcd}, {0xbe6, 0xbfa}, {0xc00, 0xc03}, {0xc05, 0xc0c}, + {0xc0e, 0xc10}, {0xc12, 0xc28}, {0xc2a, 0xc39}, {0xc3d, 0xc44}, + {0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc58, 0xc5a}, {0xc60, 0xc63}, + {0xc66, 0xc6f}, {0xc78, 0xc83}, {0xc85, 0xc8c}, {0xc8e, 0xc90}, + {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9}, {0xcbc, 0xcc4}, + {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xce0, 0xce3}, {0xce6, 0xcef}, + {0xd00, 0xd03}, {0xd05, 0xd0c}, {0xd0e, 0xd10}, {0xd12, 0xd44}, + {0xd46, 0xd48}, {0xd4a, 0xd4f}, {0xd54, 0xd63}, {0xd66, 0xd7f}, + {0xd85, 0xd96}, {0xd9a, 0xdb1}, {0xdb3, 0xdbb}, {0xdc0, 0xdc6}, + {0xdcf, 0xdd4}, {0xdd8, 0xddf}, {0xde6, 0xdef}, {0xdf2, 0xdf4}, + {0xe01, 0xe3a}, {0xe3f, 0xe5b}, {0xe94, 0xe97}, {0xe99, 0xe9f}, + {0xea1, 0xea3}, {0xead, 0xeb9}, {0xebb, 0xebd}, {0xec0, 0xec4}, + {0xec8, 0xecd}, {0xed0, 0xed9}, {0xedc, 0xedf}, {0xf00, 0xf47}, + {0xf49, 0xf6c}, {0xf71, 0xf97}, {0xf99, 0xfbc}, {0xfbe, 0xfcc}, + {0xfce, 0xfda}, {0x1000, 0x10c5}, {0x10d0, 0x1248}, {0x124a, 0x124d}, + {0x1250, 0x1256}, {0x125a, 0x125d}, {0x1260, 0x1288}, {0x128a, 0x128d}, + {0x1290, 0x12b0}, {0x12b2, 0x12b5}, {0x12b8, 0x12be}, {0x12c2, 0x12c5}, + {0x12c8, 0x12d6}, {0x12d8, 0x1310}, {0x1312, 0x1315}, {0x1318, 0x135a}, + {0x135d, 0x137c}, {0x1380, 0x1399}, {0x13a0, 0x13f5}, {0x13f8, 0x13fd}, + {0x1400, 0x167f}, {0x1681, 0x169c}, {0x16a0, 0x16f8}, {0x1700, 0x170c}, + {0x170e, 0x1714}, {0x1720, 0x1736}, {0x1740, 0x1753}, {0x1760, 0x176c}, + {0x176e, 0x1770}, {0x1780, 0x17dd}, {0x17e0, 0x17e9}, {0x17f0, 0x17f9}, + {0x1800, 0x180d}, {0x1810, 0x1819}, {0x1820, 0x1877}, {0x1880, 0x18aa}, + {0x18b0, 0x18f5}, {0x1900, 0x191e}, {0x1920, 0x192b}, {0x1930, 0x193b}, + {0x1944, 0x196d}, {0x1970, 0x1974}, {0x1980, 0x19ab}, {0x19b0, 0x19c9}, + {0x19d0, 0x19da}, {0x19de, 0x1a1b}, {0x1a1e, 0x1a5e}, {0x1a60, 0x1a7c}, + {0x1a7f, 0x1a89}, {0x1a90, 0x1a99}, {0x1aa0, 0x1aad}, {0x1ab0, 0x1abe}, + {0x1b00, 0x1b4b}, {0x1b50, 0x1b7c}, {0x1b80, 0x1bf3}, {0x1bfc, 0x1c37}, + {0x1c3b, 0x1c49}, {0x1c4d, 0x1c88}, {0x1cc0, 0x1cc7}, {0x1cd0, 0x1cf9}, + {0x1d00, 0x1df9}, {0x1dfb, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45}, + {0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, + {0x1fb6, 0x1fc4}, {0x1fc6, 0x1fd3}, {0x1fd6, 0x1fdb}, {0x1fdd, 0x1fef}, + {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffe}, {0x2010, 0x2027}, {0x2030, 0x205e}, + {0x2074, 0x208e}, {0x2090, 0x209c}, {0x20a0, 0x20bf}, {0x20d0, 0x20f0}, + {0x2100, 0x218b}, {0x2190, 0x2426}, {0x2440, 0x244a}, {0x2460, 0x2b73}, + {0x2b76, 0x2b95}, {0x2b98, 0x2bb9}, {0x2bbd, 0x2bc8}, {0x2bca, 0x2bd2}, {0x2bec, 0x2bef}, {0x2c00, 0x2c2e}, {0x2c30, 0x2c5e}, {0x2c60, 0x2cf3}, {0x2cf9, 0x2d25}, {0x2d30, 0x2d67}, {0x2d7f, 0x2d96}, {0x2da0, 0x2da6}, {0x2da8, 0x2dae}, {0x2db0, 0x2db6}, {0x2db8, 0x2dbe}, {0x2dc0, 0x2dc6}, - {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2e44}, + {0x2dc8, 0x2dce}, {0x2dd0, 0x2dd6}, {0x2dd8, 0x2dde}, {0x2de0, 0x2e49}, {0x2e80, 0x2e99}, {0x2e9b, 0x2ef3}, {0x2f00, 0x2fd5}, {0x2ff0, 0x2ffb}, - {0x3001, 0x303f}, {0x3041, 0x3096}, {0x3099, 0x30ff}, {0x3105, 0x312d}, + {0x3001, 0x303f}, {0x3041, 0x3096}, {0x3099, 0x30ff}, {0x3105, 0x312e}, {0x3131, 0x318e}, {0x3190, 0x31ba}, {0x31c0, 0x31e3}, {0x31f0, 0x321e}, - {0x3220, 0x32fe}, {0x3300, 0x4db5}, {0x4dc0, 0x9fd5}, {0xa000, 0xa48c}, + {0x3220, 0x32fe}, {0x3300, 0x4db5}, {0x4dc0, 0x9fea}, {0xa000, 0xa48c}, {0xa490, 0xa4c6}, {0xa4d0, 0xa62b}, {0xa640, 0xa6f7}, {0xa700, 0xa7ae}, {0xa7b0, 0xa7b7}, {0xa7f7, 0xa82b}, {0xa830, 0xa839}, {0xa840, 0xa877}, {0xa880, 0xa8c5}, {0xa8ce, 0xa8d9}, {0xa8e0, 0xa8fd}, {0xa900, 0xa953}, @@ -680,10 +4944,6 @@ static const crange graphRangeTable[] = { {0xaadb, 0xaaf6}, {0xab01, 0xab06}, {0xab09, 0xab0e}, {0xab11, 0xab16}, {0xab20, 0xab26}, {0xab28, 0xab2e}, {0xab30, 0xab65}, {0xab70, 0xabed}, {0xabf0, 0xabf9}, {0xac00, 0xd7a3}, {0xd7b0, 0xd7c6}, {0xd7cb, 0xd7fb}, - {0xdc00, 0xdc3e}, {0xdc40, 0xdc7e}, {0xdc80, 0xdcbe}, {0xdcc0, 0xdcfe}, - {0xdd00, 0xdd3e}, {0xdd40, 0xdd7e}, {0xdd80, 0xddbe}, {0xddc0, 0xddfe}, - {0xde00, 0xde3e}, {0xde40, 0xde7e}, {0xde80, 0xdebe}, {0xdec0, 0xdefe}, - {0xdf00, 0xdf3e}, {0xdf40, 0xdf7e}, {0xdf80, 0xdfbe}, {0xdfc0, 0xdffe}, {0xf900, 0xfa6d}, {0xfa70, 0xfad9}, {0xfb00, 0xfb06}, {0xfb13, 0xfb17}, {0xfb1d, 0xfb36}, {0xfb38, 0xfb3c}, {0xfb46, 0xfbc1}, {0xfbd3, 0xfd3f}, {0xfd50, 0xfd8f}, {0xfd92, 0xfdc7}, {0xfdf0, 0xfdfd}, {0xfe00, 0xfe19}, @@ -691,61 +4951,1222 @@ static const crange graphRangeTable[] = { {0xfe76, 0xfefc}, {0xff01, 0xffbe}, {0xffc2, 0xffc7}, {0xffca, 0xffcf}, {0xffd2, 0xffd7}, {0xffda, 0xffdc}, {0xffe0, 0xffe6}, {0xffe8, 0xffee} #if TCL_UTF_MAX > 4 - ,{0x10000, 0x1000b}, {0x1000d, 0x10026}, {0x10028, 0x1003a}, {0x1003f, 0x1004d}, - {0x10050, 0x1005d}, {0x10080, 0x100fa}, {0x10100, 0x10102}, {0x10107, 0x10133}, - {0x10137, 0x1018e}, {0x10190, 0x1019b}, {0x101d0, 0x101fd}, {0x10280, 0x1029c}, - {0x102a0, 0x102d0}, {0x102e0, 0x102fb}, {0x10300, 0x10323}, {0x10330, 0x1034a}, - {0x10350, 0x1037a}, {0x10380, 0x1039d}, {0x1039f, 0x103c3}, {0x103c8, 0x103d5}, - {0x10400, 0x1049d}, {0x104a0, 0x104a9}, {0x104b0, 0x104d3}, {0x104d8, 0x104fb}, - {0x10500, 0x10527}, {0x10530, 0x10563}, {0x10600, 0x10736}, {0x10740, 0x10755}, - {0x10760, 0x10767}, {0x10800, 0x10805}, {0x1080a, 0x10835}, {0x1083f, 0x10855}, - {0x10857, 0x1089e}, {0x108a7, 0x108af}, {0x108e0, 0x108f2}, {0x108fb, 0x1091b}, - {0x1091f, 0x10939}, {0x10980, 0x109b7}, {0x109bc, 0x109cf}, {0x109d2, 0x10a03}, - {0x10a0c, 0x10a13}, {0x10a15, 0x10a17}, {0x10a19, 0x10a33}, {0x10a38, 0x10a3a}, - {0x10a3f, 0x10a47}, {0x10a50, 0x10a58}, {0x10a60, 0x10a9f}, {0x10ac0, 0x10ae6}, - {0x10aeb, 0x10af6}, {0x10b00, 0x10b35}, {0x10b39, 0x10b55}, {0x10b58, 0x10b72}, - {0x10b78, 0x10b91}, {0x10b99, 0x10b9c}, {0x10ba9, 0x10baf}, {0x10c00, 0x10c48}, - {0x10c80, 0x10cb2}, {0x10cc0, 0x10cf2}, {0x10cfa, 0x10cff}, {0x10e60, 0x10e7e}, - {0x11000, 0x1104d}, {0x11052, 0x1106f}, {0x1107f, 0x110bc}, {0x110be, 0x110c1}, - {0x110d0, 0x110e8}, {0x110f0, 0x110f9}, {0x11100, 0x11134}, {0x11136, 0x11143}, - {0x11150, 0x11176}, {0x11180, 0x111cd}, {0x111d0, 0x111df}, {0x111e1, 0x111f4}, - {0x11200, 0x11211}, {0x11213, 0x1123e}, {0x11280, 0x11286}, {0x1128a, 0x1128d}, - {0x1128f, 0x1129d}, {0x1129f, 0x112a9}, {0x112b0, 0x112ea}, {0x112f0, 0x112f9}, - {0x11300, 0x11303}, {0x11305, 0x1130c}, {0x11313, 0x11328}, {0x1132a, 0x11330}, - {0x11335, 0x11339}, {0x1133c, 0x11344}, {0x1134b, 0x1134d}, {0x1135d, 0x11363}, - {0x11366, 0x1136c}, {0x11370, 0x11374}, {0x11400, 0x11459}, {0x11480, 0x114c7}, - {0x114d0, 0x114d9}, {0x11580, 0x115b5}, {0x115b8, 0x115dd}, {0x11600, 0x11644}, - {0x11650, 0x11659}, {0x11660, 0x1166c}, {0x11680, 0x116b7}, {0x116c0, 0x116c9}, - {0x11700, 0x11719}, {0x1171d, 0x1172b}, {0x11730, 0x1173f}, {0x118a0, 0x118f2}, - {0x11ac0, 0x11af8}, {0x11c00, 0x11c08}, {0x11c0a, 0x11c36}, {0x11c38, 0x11c45}, - {0x11c50, 0x11c6c}, {0x11c70, 0x11c8f}, {0x11c92, 0x11ca7}, {0x11ca9, 0x11cb6}, - {0x12000, 0x12399}, {0x12400, 0x1246e}, {0x12470, 0x12474}, {0x12480, 0x12543}, - {0x13000, 0x1342e}, {0x14400, 0x14646}, {0x16800, 0x16a38}, {0x16a40, 0x16a5e}, - {0x16a60, 0x16a69}, {0x16ad0, 0x16aed}, {0x16af0, 0x16af5}, {0x16b00, 0x16b45}, - {0x16b50, 0x16b59}, {0x16b5b, 0x16b61}, {0x16b63, 0x16b77}, {0x16b7d, 0x16b8f}, - {0x16f00, 0x16f44}, {0x16f50, 0x16f7e}, {0x16f8f, 0x16f9f}, {0x17000, 0x187ec}, - {0x18800, 0x18af2}, {0x1bc00, 0x1bc6a}, {0x1bc70, 0x1bc7c}, {0x1bc80, 0x1bc88}, - {0x1bc90, 0x1bc99}, {0x1bc9c, 0x1bc9f}, {0x1d000, 0x1d0f5}, {0x1d100, 0x1d126}, - {0x1d129, 0x1d172}, {0x1d17b, 0x1d1e8}, {0x1d200, 0x1d245}, {0x1d300, 0x1d356}, - {0x1d360, 0x1d371}, {0x1d400, 0x1d454}, {0x1d456, 0x1d49c}, {0x1d4a9, 0x1d4ac}, - {0x1d4ae, 0x1d4b9}, {0x1d4bd, 0x1d4c3}, {0x1d4c5, 0x1d505}, {0x1d507, 0x1d50a}, - {0x1d50d, 0x1d514}, {0x1d516, 0x1d51c}, {0x1d51e, 0x1d539}, {0x1d53b, 0x1d53e}, - {0x1d540, 0x1d544}, {0x1d54a, 0x1d550}, {0x1d552, 0x1d6a5}, {0x1d6a8, 0x1d7cb}, - {0x1d7ce, 0x1da8b}, {0x1da9b, 0x1da9f}, {0x1daa1, 0x1daaf}, {0x1e000, 0x1e006}, - {0x1e008, 0x1e018}, {0x1e01b, 0x1e021}, {0x1e026, 0x1e02a}, {0x1e800, 0x1e8c4}, - {0x1e8c7, 0x1e8d6}, {0x1e900, 0x1e94a}, {0x1e950, 0x1e959}, {0x1ee00, 0x1ee03}, - {0x1ee05, 0x1ee1f}, {0x1ee29, 0x1ee32}, {0x1ee34, 0x1ee37}, {0x1ee4d, 0x1ee4f}, - {0x1ee67, 0x1ee6a}, {0x1ee6c, 0x1ee72}, {0x1ee74, 0x1ee77}, {0x1ee79, 0x1ee7c}, - {0x1ee80, 0x1ee89}, {0x1ee8b, 0x1ee9b}, {0x1eea1, 0x1eea3}, {0x1eea5, 0x1eea9}, - {0x1eeab, 0x1eebb}, {0x1f000, 0x1f02b}, {0x1f030, 0x1f093}, {0x1f0a0, 0x1f0ae}, - {0x1f0b1, 0x1f0bf}, {0x1f0c1, 0x1f0cf}, {0x1f0d1, 0x1f0f5}, {0x1f100, 0x1f10c}, - {0x1f110, 0x1f12e}, {0x1f130, 0x1f16b}, {0x1f170, 0x1f1ac}, {0x1f1e6, 0x1f202}, - {0x1f210, 0x1f23b}, {0x1f240, 0x1f248}, {0x1f300, 0x1f6d2}, {0x1f6e0, 0x1f6ec}, - {0x1f6f0, 0x1f6f6}, {0x1f700, 0x1f773}, {0x1f780, 0x1f7d4}, {0x1f800, 0x1f80b}, - {0x1f810, 0x1f847}, {0x1f850, 0x1f859}, {0x1f860, 0x1f887}, {0x1f890, 0x1f8ad}, - {0x1f910, 0x1f91e}, {0x1f920, 0x1f927}, {0x1f933, 0x1f93e}, {0x1f940, 0x1f94b}, - {0x1f950, 0x1f95e}, {0x1f980, 0x1f991}, {0x20000, 0x2a6d6}, {0x2a700, 0x2b734}, - {0x2b740, 0x2b81d}, {0x2b820, 0x2cea1}, {0x2f800, 0x2fa1d}, {0xe0100, 0xe01ef} + ,{0x10021, 0x1007e}, {0x100a1, 0x100ac}, {0x100ae, 0x10377}, {0x1037a, 0x1037f}, + {0x10384, 0x1038a}, {0x1038e, 0x103a1}, {0x103a3, 0x1052f}, {0x10531, 0x10556}, + {0x10559, 0x1055f}, {0x10561, 0x10587}, {0x1058d, 0x1058f}, {0x10591, 0x105c7}, + {0x105d0, 0x105ea}, {0x105f0, 0x105f4}, {0x10606, 0x1061b}, {0x1061e, 0x106dc}, + {0x106de, 0x1070d}, {0x10710, 0x1074a}, {0x1074d, 0x107b1}, {0x107c0, 0x107fa}, + {0x10800, 0x1082d}, {0x10830, 0x1083e}, {0x10840, 0x1085b}, {0x10860, 0x1086a}, + {0x108a0, 0x108b4}, {0x108b6, 0x108bd}, {0x108d4, 0x108e1}, {0x108e3, 0x10983}, + {0x10985, 0x1098c}, {0x10993, 0x109a8}, {0x109aa, 0x109b0}, {0x109b6, 0x109b9}, + {0x109bc, 0x109c4}, {0x109cb, 0x109ce}, {0x109df, 0x109e3}, {0x109e6, 0x109fd}, + {0x10a01, 0x10a03}, {0x10a05, 0x10a0a}, {0x10a13, 0x10a28}, {0x10a2a, 0x10a30}, + {0x10a3e, 0x10a42}, {0x10a4b, 0x10a4d}, {0x10a59, 0x10a5c}, {0x10a66, 0x10a75}, + {0x10a81, 0x10a83}, {0x10a85, 0x10a8d}, {0x10a8f, 0x10a91}, {0x10a93, 0x10aa8}, + {0x10aaa, 0x10ab0}, {0x10ab5, 0x10ab9}, {0x10abc, 0x10ac5}, {0x10ac7, 0x10ac9}, + {0x10acb, 0x10acd}, {0x10ae0, 0x10ae3}, {0x10ae6, 0x10af1}, {0x10af9, 0x10aff}, + {0x10b01, 0x10b03}, {0x10b05, 0x10b0c}, {0x10b13, 0x10b28}, {0x10b2a, 0x10b30}, + {0x10b35, 0x10b39}, {0x10b3c, 0x10b44}, {0x10b4b, 0x10b4d}, {0x10b5f, 0x10b63}, + {0x10b66, 0x10b77}, {0x10b85, 0x10b8a}, {0x10b8e, 0x10b90}, {0x10b92, 0x10b95}, + {0x10ba8, 0x10baa}, {0x10bae, 0x10bb9}, {0x10bbe, 0x10bc2}, {0x10bc6, 0x10bc8}, + {0x10bca, 0x10bcd}, {0x10be6, 0x10bfa}, {0x10c00, 0x10c03}, {0x10c05, 0x10c0c}, + {0x10c0e, 0x10c10}, {0x10c12, 0x10c28}, {0x10c2a, 0x10c39}, {0x10c3d, 0x10c44}, + {0x10c46, 0x10c48}, {0x10c4a, 0x10c4d}, {0x10c58, 0x10c5a}, {0x10c60, 0x10c63}, + {0x10c66, 0x10c6f}, {0x10c78, 0x10c83}, {0x10c85, 0x10c8c}, {0x10c8e, 0x10c90}, + {0x10c92, 0x10ca8}, {0x10caa, 0x10cb3}, {0x10cb5, 0x10cb9}, {0x10cbc, 0x10cc4}, + {0x10cc6, 0x10cc8}, {0x10cca, 0x10ccd}, {0x10ce0, 0x10ce3}, {0x10ce6, 0x10cef}, + {0x10d00, 0x10d03}, {0x10d05, 0x10d0c}, {0x10d0e, 0x10d10}, {0x10d12, 0x10d44}, + {0x10d46, 0x10d48}, {0x10d4a, 0x10d4f}, {0x10d54, 0x10d63}, {0x10d66, 0x10d7f}, + {0x10d85, 0x10d96}, {0x10d9a, 0x10db1}, {0x10db3, 0x10dbb}, {0x10dc0, 0x10dc6}, + {0x10dcf, 0x10dd4}, {0x10dd8, 0x10ddf}, {0x10de6, 0x10def}, {0x10df2, 0x10df4}, + {0x10e01, 0x10e3a}, {0x10e3f, 0x10e5b}, {0x10e94, 0x10e97}, {0x10e99, 0x10e9f}, + {0x10ea1, 0x10ea3}, {0x10ead, 0x10eb9}, {0x10ebb, 0x10ebd}, {0x10ec0, 0x10ec4}, + {0x10ec8, 0x10ecd}, {0x10ed0, 0x10ed9}, {0x10edc, 0x10edf}, {0x10f00, 0x10f47}, + {0x10f49, 0x10f6c}, {0x10f71, 0x10f97}, {0x10f99, 0x10fbc}, {0x10fbe, 0x10fcc}, + {0x10fce, 0x10fda}, {0x11000, 0x110c5}, {0x110d0, 0x11248}, {0x1124a, 0x1124d}, + {0x11250, 0x11256}, {0x1125a, 0x1125d}, {0x11260, 0x11288}, {0x1128a, 0x1128d}, + {0x11290, 0x112b0}, {0x112b2, 0x112b5}, {0x112b8, 0x112be}, {0x112c2, 0x112c5}, + {0x112c8, 0x112d6}, {0x112d8, 0x11310}, {0x11312, 0x11315}, {0x11318, 0x1135a}, + {0x1135d, 0x1137c}, {0x11380, 0x11399}, {0x113a0, 0x113f5}, {0x113f8, 0x113fd}, + {0x11400, 0x1167f}, {0x11681, 0x1169c}, {0x116a0, 0x116f8}, {0x11700, 0x1170c}, + {0x1170e, 0x11714}, {0x11720, 0x11736}, {0x11740, 0x11753}, {0x11760, 0x1176c}, + {0x1176e, 0x11770}, {0x11780, 0x117dd}, {0x117e0, 0x117e9}, {0x117f0, 0x117f9}, + {0x11800, 0x1180d}, {0x11810, 0x11819}, {0x11820, 0x11877}, {0x11880, 0x118aa}, + {0x118b0, 0x118f5}, {0x11900, 0x1191e}, {0x11920, 0x1192b}, {0x11930, 0x1193b}, + {0x11944, 0x1196d}, {0x11970, 0x11974}, {0x11980, 0x119ab}, {0x119b0, 0x119c9}, + {0x119d0, 0x119da}, {0x119de, 0x11a1b}, {0x11a1e, 0x11a5e}, {0x11a60, 0x11a7c}, + {0x11a7f, 0x11a89}, {0x11a90, 0x11a99}, {0x11aa0, 0x11aad}, {0x11ab0, 0x11abe}, + {0x11b00, 0x11b4b}, {0x11b50, 0x11b7c}, {0x11b80, 0x11bf3}, {0x11bfc, 0x11c37}, + {0x11c3b, 0x11c49}, {0x11c4d, 0x11c88}, {0x11cc0, 0x11cc7}, {0x11cd0, 0x11cf9}, + {0x11d00, 0x11df9}, {0x11dfb, 0x11f15}, {0x11f18, 0x11f1d}, {0x11f20, 0x11f45}, + {0x11f48, 0x11f4d}, {0x11f50, 0x11f57}, {0x11f5f, 0x11f7d}, {0x11f80, 0x11fb4}, + {0x11fb6, 0x11fc4}, {0x11fc6, 0x11fd3}, {0x11fd6, 0x11fdb}, {0x11fdd, 0x11fef}, + {0x11ff2, 0x11ff4}, {0x11ff6, 0x11ffe}, {0x12010, 0x12027}, {0x12030, 0x1205e}, + {0x12074, 0x1208e}, {0x12090, 0x1209c}, {0x120a0, 0x120bf}, {0x120d0, 0x120f0}, + {0x12100, 0x1218b}, {0x12190, 0x12426}, {0x12440, 0x1244a}, {0x12460, 0x12b73}, + {0x12b76, 0x12b95}, {0x12b98, 0x12bb9}, {0x12bbd, 0x12bc8}, {0x12bca, 0x12bd2}, + {0x12bec, 0x12bef}, {0x12c00, 0x12c2e}, {0x12c30, 0x12c5e}, {0x12c60, 0x12cf3}, + {0x12cf9, 0x12d25}, {0x12d30, 0x12d67}, {0x12d7f, 0x12d96}, {0x12da0, 0x12da6}, + {0x12da8, 0x12dae}, {0x12db0, 0x12db6}, {0x12db8, 0x12dbe}, {0x12dc0, 0x12dc6}, + {0x12dc8, 0x12dce}, {0x12dd0, 0x12dd6}, {0x12dd8, 0x12dde}, {0x12de0, 0x12e49}, + {0x12e80, 0x12e99}, {0x12e9b, 0x12ef3}, {0x12f00, 0x12fd5}, {0x12ff0, 0x12ffb}, + {0x13001, 0x1303f}, {0x13041, 0x13096}, {0x13099, 0x130ff}, {0x13105, 0x1312e}, + {0x13131, 0x1318e}, {0x13190, 0x131ba}, {0x131c0, 0x131e3}, {0x131f0, 0x1321e}, + {0x13220, 0x132fe}, {0x13300, 0x14db5}, {0x14dc0, 0x19fea}, {0x1a000, 0x1a48c}, + {0x1a490, 0x1a4c6}, {0x1a4d0, 0x1a62b}, {0x1a640, 0x1a6f7}, {0x1a700, 0x1a7ae}, + {0x1a7b0, 0x1a7b7}, {0x1a7f7, 0x1a82b}, {0x1a830, 0x1a839}, {0x1a840, 0x1a877}, + {0x1a880, 0x1a8c5}, {0x1a8ce, 0x1a8d9}, {0x1a8e0, 0x1a8fd}, {0x1a900, 0x1a953}, + {0x1a95f, 0x1a97c}, {0x1a980, 0x1a9cd}, {0x1a9cf, 0x1a9d9}, {0x1a9de, 0x1a9fe}, + {0x1aa00, 0x1aa36}, {0x1aa40, 0x1aa4d}, {0x1aa50, 0x1aa59}, {0x1aa5c, 0x1aac2}, + {0x1aadb, 0x1aaf6}, {0x1ab01, 0x1ab06}, {0x1ab09, 0x1ab0e}, {0x1ab11, 0x1ab16}, + {0x1ab20, 0x1ab26}, {0x1ab28, 0x1ab2e}, {0x1ab30, 0x1ab65}, {0x1ab70, 0x1abed}, + {0x1abf0, 0x1abf9}, {0x1ac00, 0x1d7a3}, {0x1d7b0, 0x1d7c6}, {0x1d7cb, 0x1d7fb}, + {0x1f900, 0x1fa6d}, {0x1fa70, 0x1fad9}, {0x1fb00, 0x1fb06}, {0x1fb13, 0x1fb17}, + {0x1fb1d, 0x1fb36}, {0x1fb38, 0x1fb3c}, {0x1fb46, 0x1fbc1}, {0x1fbd3, 0x1fd3f}, + {0x1fd50, 0x1fd8f}, {0x1fd92, 0x1fdc7}, {0x1fdf0, 0x1fdfd}, {0x1fe00, 0x1fe19}, + {0x1fe20, 0x1fe52}, {0x1fe54, 0x1fe66}, {0x1fe68, 0x1fe6b}, {0x1fe70, 0x1fe74}, + {0x1fe76, 0x1fefc}, {0x1ff01, 0x1ffbe}, {0x1ffc2, 0x1ffc7}, {0x1ffca, 0x1ffcf}, + {0x1ffd2, 0x1ffd7}, {0x1ffda, 0x1ffdc}, {0x1ffe0, 0x1ffe6}, {0x1ffe8, 0x1ffee}, + {0x20021, 0x2007e}, {0x200a1, 0x200ac}, {0x200ae, 0x20377}, {0x2037a, 0x2037f}, + {0x20384, 0x2038a}, {0x2038e, 0x203a1}, {0x203a3, 0x2052f}, {0x20531, 0x20556}, + {0x20559, 0x2055f}, {0x20561, 0x20587}, {0x2058d, 0x2058f}, {0x20591, 0x205c7}, + {0x205d0, 0x205ea}, {0x205f0, 0x205f4}, {0x20606, 0x2061b}, {0x2061e, 0x206dc}, + {0x206de, 0x2070d}, {0x20710, 0x2074a}, {0x2074d, 0x207b1}, {0x207c0, 0x207fa}, + {0x20800, 0x2082d}, {0x20830, 0x2083e}, {0x20840, 0x2085b}, {0x20860, 0x2086a}, + {0x208a0, 0x208b4}, {0x208b6, 0x208bd}, {0x208d4, 0x208e1}, {0x208e3, 0x20983}, + {0x20985, 0x2098c}, {0x20993, 0x209a8}, {0x209aa, 0x209b0}, {0x209b6, 0x209b9}, + {0x209bc, 0x209c4}, {0x209cb, 0x209ce}, {0x209df, 0x209e3}, {0x209e6, 0x209fd}, + {0x20a01, 0x20a03}, {0x20a05, 0x20a0a}, {0x20a13, 0x20a28}, {0x20a2a, 0x20a30}, + {0x20a3e, 0x20a42}, {0x20a4b, 0x20a4d}, {0x20a59, 0x20a5c}, {0x20a66, 0x20a75}, + {0x20a81, 0x20a83}, {0x20a85, 0x20a8d}, {0x20a8f, 0x20a91}, {0x20a93, 0x20aa8}, + {0x20aaa, 0x20ab0}, {0x20ab5, 0x20ab9}, {0x20abc, 0x20ac5}, {0x20ac7, 0x20ac9}, + {0x20acb, 0x20acd}, {0x20ae0, 0x20ae3}, {0x20ae6, 0x20af1}, {0x20af9, 0x20aff}, + {0x20b01, 0x20b03}, {0x20b05, 0x20b0c}, {0x20b13, 0x20b28}, {0x20b2a, 0x20b30}, + {0x20b35, 0x20b39}, {0x20b3c, 0x20b44}, {0x20b4b, 0x20b4d}, {0x20b5f, 0x20b63}, + {0x20b66, 0x20b77}, {0x20b85, 0x20b8a}, {0x20b8e, 0x20b90}, {0x20b92, 0x20b95}, + {0x20ba8, 0x20baa}, {0x20bae, 0x20bb9}, {0x20bbe, 0x20bc2}, {0x20bc6, 0x20bc8}, + {0x20bca, 0x20bcd}, {0x20be6, 0x20bfa}, {0x20c00, 0x20c03}, {0x20c05, 0x20c0c}, + {0x20c0e, 0x20c10}, {0x20c12, 0x20c28}, {0x20c2a, 0x20c39}, {0x20c3d, 0x20c44}, + {0x20c46, 0x20c48}, {0x20c4a, 0x20c4d}, {0x20c58, 0x20c5a}, {0x20c60, 0x20c63}, + {0x20c66, 0x20c6f}, {0x20c78, 0x20c83}, {0x20c85, 0x20c8c}, {0x20c8e, 0x20c90}, + {0x20c92, 0x20ca8}, {0x20caa, 0x20cb3}, {0x20cb5, 0x20cb9}, {0x20cbc, 0x20cc4}, + {0x20cc6, 0x20cc8}, {0x20cca, 0x20ccd}, {0x20ce0, 0x20ce3}, {0x20ce6, 0x20cef}, + {0x20d00, 0x20d03}, {0x20d05, 0x20d0c}, {0x20d0e, 0x20d10}, {0x20d12, 0x20d44}, + {0x20d46, 0x20d48}, {0x20d4a, 0x20d4f}, {0x20d54, 0x20d63}, {0x20d66, 0x20d7f}, + {0x20d85, 0x20d96}, {0x20d9a, 0x20db1}, {0x20db3, 0x20dbb}, {0x20dc0, 0x20dc6}, + {0x20dcf, 0x20dd4}, {0x20dd8, 0x20ddf}, {0x20de6, 0x20def}, {0x20df2, 0x20df4}, + {0x20e01, 0x20e3a}, {0x20e3f, 0x20e5b}, {0x20e94, 0x20e97}, {0x20e99, 0x20e9f}, + {0x20ea1, 0x20ea3}, {0x20ead, 0x20eb9}, {0x20ebb, 0x20ebd}, {0x20ec0, 0x20ec4}, + {0x20ec8, 0x20ecd}, {0x20ed0, 0x20ed9}, {0x20edc, 0x20edf}, {0x20f00, 0x20f47}, + {0x20f49, 0x20f6c}, {0x20f71, 0x20f97}, {0x20f99, 0x20fbc}, {0x20fbe, 0x20fcc}, + {0x20fce, 0x20fda}, {0x21000, 0x210c5}, {0x210d0, 0x21248}, {0x2124a, 0x2124d}, + {0x21250, 0x21256}, {0x2125a, 0x2125d}, {0x21260, 0x21288}, {0x2128a, 0x2128d}, + {0x21290, 0x212b0}, {0x212b2, 0x212b5}, {0x212b8, 0x212be}, {0x212c2, 0x212c5}, + {0x212c8, 0x212d6}, {0x212d8, 0x21310}, {0x21312, 0x21315}, {0x21318, 0x2135a}, + {0x2135d, 0x2137c}, {0x21380, 0x21399}, {0x213a0, 0x213f5}, {0x213f8, 0x213fd}, + {0x21400, 0x2167f}, {0x21681, 0x2169c}, {0x216a0, 0x216f8}, {0x21700, 0x2170c}, + {0x2170e, 0x21714}, {0x21720, 0x21736}, {0x21740, 0x21753}, {0x21760, 0x2176c}, + {0x2176e, 0x21770}, {0x21780, 0x217dd}, {0x217e0, 0x217e9}, {0x217f0, 0x217f9}, + {0x21800, 0x2180d}, {0x21810, 0x21819}, {0x21820, 0x21877}, {0x21880, 0x218aa}, + {0x218b0, 0x218f5}, {0x21900, 0x2191e}, {0x21920, 0x2192b}, {0x21930, 0x2193b}, + {0x21944, 0x2196d}, {0x21970, 0x21974}, {0x21980, 0x219ab}, {0x219b0, 0x219c9}, + {0x219d0, 0x219da}, {0x219de, 0x21a1b}, {0x21a1e, 0x21a5e}, {0x21a60, 0x21a7c}, + {0x21a7f, 0x21a89}, {0x21a90, 0x21a99}, {0x21aa0, 0x21aad}, {0x21ab0, 0x21abe}, + {0x21b00, 0x21b4b}, {0x21b50, 0x21b7c}, {0x21b80, 0x21bf3}, {0x21bfc, 0x21c37}, + {0x21c3b, 0x21c49}, {0x21c4d, 0x21c88}, {0x21cc0, 0x21cc7}, {0x21cd0, 0x21cf9}, + {0x21d00, 0x21df9}, {0x21dfb, 0x21f15}, {0x21f18, 0x21f1d}, {0x21f20, 0x21f45}, + {0x21f48, 0x21f4d}, {0x21f50, 0x21f57}, {0x21f5f, 0x21f7d}, {0x21f80, 0x21fb4}, + {0x21fb6, 0x21fc4}, {0x21fc6, 0x21fd3}, {0x21fd6, 0x21fdb}, {0x21fdd, 0x21fef}, + {0x21ff2, 0x21ff4}, {0x21ff6, 0x21ffe}, {0x22010, 0x22027}, {0x22030, 0x2205e}, + {0x22074, 0x2208e}, {0x22090, 0x2209c}, {0x220a0, 0x220bf}, {0x220d0, 0x220f0}, + {0x22100, 0x2218b}, {0x22190, 0x22426}, {0x22440, 0x2244a}, {0x22460, 0x22b73}, + {0x22b76, 0x22b95}, {0x22b98, 0x22bb9}, {0x22bbd, 0x22bc8}, {0x22bca, 0x22bd2}, + {0x22bec, 0x22bef}, {0x22c00, 0x22c2e}, {0x22c30, 0x22c5e}, {0x22c60, 0x22cf3}, + {0x22cf9, 0x22d25}, {0x22d30, 0x22d67}, {0x22d7f, 0x22d96}, {0x22da0, 0x22da6}, + {0x22da8, 0x22dae}, {0x22db0, 0x22db6}, {0x22db8, 0x22dbe}, {0x22dc0, 0x22dc6}, + {0x22dc8, 0x22dce}, {0x22dd0, 0x22dd6}, {0x22dd8, 0x22dde}, {0x22de0, 0x22e49}, + {0x22e80, 0x22e99}, {0x22e9b, 0x22ef3}, {0x22f00, 0x22fd5}, {0x22ff0, 0x22ffb}, + {0x23001, 0x2303f}, {0x23041, 0x23096}, {0x23099, 0x230ff}, {0x23105, 0x2312e}, + {0x23131, 0x2318e}, {0x23190, 0x231ba}, {0x231c0, 0x231e3}, {0x231f0, 0x2321e}, + {0x23220, 0x232fe}, {0x23300, 0x24db5}, {0x24dc0, 0x29fea}, {0x2a000, 0x2a48c}, + {0x2a490, 0x2a4c6}, {0x2a4d0, 0x2a62b}, {0x2a640, 0x2a6f7}, {0x2a700, 0x2a7ae}, + {0x2a7b0, 0x2a7b7}, {0x2a7f7, 0x2a82b}, {0x2a830, 0x2a839}, {0x2a840, 0x2a877}, + {0x2a880, 0x2a8c5}, {0x2a8ce, 0x2a8d9}, {0x2a8e0, 0x2a8fd}, {0x2a900, 0x2a953}, + {0x2a95f, 0x2a97c}, {0x2a980, 0x2a9cd}, {0x2a9cf, 0x2a9d9}, {0x2a9de, 0x2a9fe}, + {0x2aa00, 0x2aa36}, {0x2aa40, 0x2aa4d}, {0x2aa50, 0x2aa59}, {0x2aa5c, 0x2aac2}, + {0x2aadb, 0x2aaf6}, {0x2ab01, 0x2ab06}, {0x2ab09, 0x2ab0e}, {0x2ab11, 0x2ab16}, + {0x2ab20, 0x2ab26}, {0x2ab28, 0x2ab2e}, {0x2ab30, 0x2ab65}, {0x2ab70, 0x2abed}, + {0x2abf0, 0x2abf9}, {0x2ac00, 0x2d7a3}, {0x2d7b0, 0x2d7c6}, {0x2d7cb, 0x2d7fb}, + {0x2f900, 0x2fa6d}, {0x2fa70, 0x2fad9}, {0x2fb00, 0x2fb06}, {0x2fb13, 0x2fb17}, + {0x2fb1d, 0x2fb36}, {0x2fb38, 0x2fb3c}, {0x2fb46, 0x2fbc1}, {0x2fbd3, 0x2fd3f}, + {0x2fd50, 0x2fd8f}, {0x2fd92, 0x2fdc7}, {0x2fdf0, 0x2fdfd}, {0x2fe00, 0x2fe19}, + {0x2fe20, 0x2fe52}, {0x2fe54, 0x2fe66}, {0x2fe68, 0x2fe6b}, {0x2fe70, 0x2fe74}, + {0x2fe76, 0x2fefc}, {0x2ff01, 0x2ffbe}, {0x2ffc2, 0x2ffc7}, {0x2ffca, 0x2ffcf}, + {0x2ffd2, 0x2ffd7}, {0x2ffda, 0x2ffdc}, {0x2ffe0, 0x2ffe6}, {0x2ffe8, 0x2ffee}, + {0x30021, 0x3007e}, {0x300a1, 0x300ac}, {0x300ae, 0x30377}, {0x3037a, 0x3037f}, + {0x30384, 0x3038a}, {0x3038e, 0x303a1}, {0x303a3, 0x3052f}, {0x30531, 0x30556}, + {0x30559, 0x3055f}, {0x30561, 0x30587}, {0x3058d, 0x3058f}, {0x30591, 0x305c7}, + {0x305d0, 0x305ea}, {0x305f0, 0x305f4}, {0x30606, 0x3061b}, {0x3061e, 0x306dc}, + {0x306de, 0x3070d}, {0x30710, 0x3074a}, {0x3074d, 0x307b1}, {0x307c0, 0x307fa}, + {0x30800, 0x3082d}, {0x30830, 0x3083e}, {0x30840, 0x3085b}, {0x30860, 0x3086a}, + {0x308a0, 0x308b4}, {0x308b6, 0x308bd}, {0x308d4, 0x308e1}, {0x308e3, 0x30983}, + {0x30985, 0x3098c}, {0x30993, 0x309a8}, {0x309aa, 0x309b0}, {0x309b6, 0x309b9}, + {0x309bc, 0x309c4}, {0x309cb, 0x309ce}, {0x309df, 0x309e3}, {0x309e6, 0x309fd}, + {0x30a01, 0x30a03}, {0x30a05, 0x30a0a}, {0x30a13, 0x30a28}, {0x30a2a, 0x30a30}, + {0x30a3e, 0x30a42}, {0x30a4b, 0x30a4d}, {0x30a59, 0x30a5c}, {0x30a66, 0x30a75}, + {0x30a81, 0x30a83}, {0x30a85, 0x30a8d}, {0x30a8f, 0x30a91}, {0x30a93, 0x30aa8}, + {0x30aaa, 0x30ab0}, {0x30ab5, 0x30ab9}, {0x30abc, 0x30ac5}, {0x30ac7, 0x30ac9}, + {0x30acb, 0x30acd}, {0x30ae0, 0x30ae3}, {0x30ae6, 0x30af1}, {0x30af9, 0x30aff}, + {0x30b01, 0x30b03}, {0x30b05, 0x30b0c}, {0x30b13, 0x30b28}, {0x30b2a, 0x30b30}, + {0x30b35, 0x30b39}, {0x30b3c, 0x30b44}, {0x30b4b, 0x30b4d}, {0x30b5f, 0x30b63}, + {0x30b66, 0x30b77}, {0x30b85, 0x30b8a}, {0x30b8e, 0x30b90}, {0x30b92, 0x30b95}, + {0x30ba8, 0x30baa}, {0x30bae, 0x30bb9}, {0x30bbe, 0x30bc2}, {0x30bc6, 0x30bc8}, + {0x30bca, 0x30bcd}, {0x30be6, 0x30bfa}, {0x30c00, 0x30c03}, {0x30c05, 0x30c0c}, + {0x30c0e, 0x30c10}, {0x30c12, 0x30c28}, {0x30c2a, 0x30c39}, {0x30c3d, 0x30c44}, + {0x30c46, 0x30c48}, {0x30c4a, 0x30c4d}, {0x30c58, 0x30c5a}, {0x30c60, 0x30c63}, + {0x30c66, 0x30c6f}, {0x30c78, 0x30c83}, {0x30c85, 0x30c8c}, {0x30c8e, 0x30c90}, + {0x30c92, 0x30ca8}, {0x30caa, 0x30cb3}, {0x30cb5, 0x30cb9}, {0x30cbc, 0x30cc4}, + {0x30cc6, 0x30cc8}, {0x30cca, 0x30ccd}, {0x30ce0, 0x30ce3}, {0x30ce6, 0x30cef}, + {0x30d00, 0x30d03}, {0x30d05, 0x30d0c}, {0x30d0e, 0x30d10}, {0x30d12, 0x30d44}, + {0x30d46, 0x30d48}, {0x30d4a, 0x30d4f}, {0x30d54, 0x30d63}, {0x30d66, 0x30d7f}, + {0x30d85, 0x30d96}, {0x30d9a, 0x30db1}, {0x30db3, 0x30dbb}, {0x30dc0, 0x30dc6}, + {0x30dcf, 0x30dd4}, {0x30dd8, 0x30ddf}, {0x30de6, 0x30def}, {0x30df2, 0x30df4}, + {0x30e01, 0x30e3a}, {0x30e3f, 0x30e5b}, {0x30e94, 0x30e97}, {0x30e99, 0x30e9f}, + {0x30ea1, 0x30ea3}, {0x30ead, 0x30eb9}, {0x30ebb, 0x30ebd}, {0x30ec0, 0x30ec4}, + {0x30ec8, 0x30ecd}, {0x30ed0, 0x30ed9}, {0x30edc, 0x30edf}, {0x30f00, 0x30f47}, + {0x30f49, 0x30f6c}, {0x30f71, 0x30f97}, {0x30f99, 0x30fbc}, {0x30fbe, 0x30fcc}, + {0x30fce, 0x30fda}, {0x31000, 0x310c5}, {0x310d0, 0x31248}, {0x3124a, 0x3124d}, + {0x31250, 0x31256}, {0x3125a, 0x3125d}, {0x31260, 0x31288}, {0x3128a, 0x3128d}, + {0x31290, 0x312b0}, {0x312b2, 0x312b5}, {0x312b8, 0x312be}, {0x312c2, 0x312c5}, + {0x312c8, 0x312d6}, {0x312d8, 0x31310}, {0x31312, 0x31315}, {0x31318, 0x3135a}, + {0x3135d, 0x3137c}, {0x31380, 0x31399}, {0x313a0, 0x313f5}, {0x313f8, 0x313fd}, + {0x31400, 0x3167f}, {0x31681, 0x3169c}, {0x316a0, 0x316f8}, {0x31700, 0x3170c}, + {0x3170e, 0x31714}, {0x31720, 0x31736}, {0x31740, 0x31753}, {0x31760, 0x3176c}, + {0x3176e, 0x31770}, {0x31780, 0x317dd}, {0x317e0, 0x317e9}, {0x317f0, 0x317f9}, + {0x31800, 0x3180d}, {0x31810, 0x31819}, {0x31820, 0x31877}, {0x31880, 0x318aa}, + {0x318b0, 0x318f5}, {0x31900, 0x3191e}, {0x31920, 0x3192b}, {0x31930, 0x3193b}, + {0x31944, 0x3196d}, {0x31970, 0x31974}, {0x31980, 0x319ab}, {0x319b0, 0x319c9}, + {0x319d0, 0x319da}, {0x319de, 0x31a1b}, {0x31a1e, 0x31a5e}, {0x31a60, 0x31a7c}, + {0x31a7f, 0x31a89}, {0x31a90, 0x31a99}, {0x31aa0, 0x31aad}, {0x31ab0, 0x31abe}, + {0x31b00, 0x31b4b}, {0x31b50, 0x31b7c}, {0x31b80, 0x31bf3}, {0x31bfc, 0x31c37}, + {0x31c3b, 0x31c49}, {0x31c4d, 0x31c88}, {0x31cc0, 0x31cc7}, {0x31cd0, 0x31cf9}, + {0x31d00, 0x31df9}, {0x31dfb, 0x31f15}, {0x31f18, 0x31f1d}, {0x31f20, 0x31f45}, + {0x31f48, 0x31f4d}, {0x31f50, 0x31f57}, {0x31f5f, 0x31f7d}, {0x31f80, 0x31fb4}, + {0x31fb6, 0x31fc4}, {0x31fc6, 0x31fd3}, {0x31fd6, 0x31fdb}, {0x31fdd, 0x31fef}, + {0x31ff2, 0x31ff4}, {0x31ff6, 0x31ffe}, {0x32010, 0x32027}, {0x32030, 0x3205e}, + {0x32074, 0x3208e}, {0x32090, 0x3209c}, {0x320a0, 0x320bf}, {0x320d0, 0x320f0}, + {0x32100, 0x3218b}, {0x32190, 0x32426}, {0x32440, 0x3244a}, {0x32460, 0x32b73}, + {0x32b76, 0x32b95}, {0x32b98, 0x32bb9}, {0x32bbd, 0x32bc8}, {0x32bca, 0x32bd2}, + {0x32bec, 0x32bef}, {0x32c00, 0x32c2e}, {0x32c30, 0x32c5e}, {0x32c60, 0x32cf3}, + {0x32cf9, 0x32d25}, {0x32d30, 0x32d67}, {0x32d7f, 0x32d96}, {0x32da0, 0x32da6}, + {0x32da8, 0x32dae}, {0x32db0, 0x32db6}, {0x32db8, 0x32dbe}, {0x32dc0, 0x32dc6}, + {0x32dc8, 0x32dce}, {0x32dd0, 0x32dd6}, {0x32dd8, 0x32dde}, {0x32de0, 0x32e49}, + {0x32e80, 0x32e99}, {0x32e9b, 0x32ef3}, {0x32f00, 0x32fd5}, {0x32ff0, 0x32ffb}, + {0x33001, 0x3303f}, {0x33041, 0x33096}, {0x33099, 0x330ff}, {0x33105, 0x3312e}, + {0x33131, 0x3318e}, {0x33190, 0x331ba}, {0x331c0, 0x331e3}, {0x331f0, 0x3321e}, + {0x33220, 0x332fe}, {0x33300, 0x34db5}, {0x34dc0, 0x39fea}, {0x3a000, 0x3a48c}, + {0x3a490, 0x3a4c6}, {0x3a4d0, 0x3a62b}, {0x3a640, 0x3a6f7}, {0x3a700, 0x3a7ae}, + {0x3a7b0, 0x3a7b7}, {0x3a7f7, 0x3a82b}, {0x3a830, 0x3a839}, {0x3a840, 0x3a877}, + {0x3a880, 0x3a8c5}, {0x3a8ce, 0x3a8d9}, {0x3a8e0, 0x3a8fd}, {0x3a900, 0x3a953}, + {0x3a95f, 0x3a97c}, {0x3a980, 0x3a9cd}, {0x3a9cf, 0x3a9d9}, {0x3a9de, 0x3a9fe}, + {0x3aa00, 0x3aa36}, {0x3aa40, 0x3aa4d}, {0x3aa50, 0x3aa59}, {0x3aa5c, 0x3aac2}, + {0x3aadb, 0x3aaf6}, {0x3ab01, 0x3ab06}, {0x3ab09, 0x3ab0e}, {0x3ab11, 0x3ab16}, + {0x3ab20, 0x3ab26}, {0x3ab28, 0x3ab2e}, {0x3ab30, 0x3ab65}, {0x3ab70, 0x3abed}, + {0x3abf0, 0x3abf9}, {0x3ac00, 0x3d7a3}, {0x3d7b0, 0x3d7c6}, {0x3d7cb, 0x3d7fb}, + {0x3f900, 0x3fa6d}, {0x3fa70, 0x3fad9}, {0x3fb00, 0x3fb06}, {0x3fb13, 0x3fb17}, + {0x3fb1d, 0x3fb36}, {0x3fb38, 0x3fb3c}, {0x3fb46, 0x3fbc1}, {0x3fbd3, 0x3fd3f}, + {0x3fd50, 0x3fd8f}, {0x3fd92, 0x3fdc7}, {0x3fdf0, 0x3fdfd}, {0x3fe00, 0x3fe19}, + {0x3fe20, 0x3fe52}, {0x3fe54, 0x3fe66}, {0x3fe68, 0x3fe6b}, {0x3fe70, 0x3fe74}, + {0x3fe76, 0x3fefc}, {0x3ff01, 0x3ffbe}, {0x3ffc2, 0x3ffc7}, {0x3ffca, 0x3ffcf}, + {0x3ffd2, 0x3ffd7}, {0x3ffda, 0x3ffdc}, {0x3ffe0, 0x3ffe6}, {0x3ffe8, 0x3ffee}, + {0x40021, 0x4007e}, {0x400a1, 0x400ac}, {0x400ae, 0x40377}, {0x4037a, 0x4037f}, + {0x40384, 0x4038a}, {0x4038e, 0x403a1}, {0x403a3, 0x4052f}, {0x40531, 0x40556}, + {0x40559, 0x4055f}, {0x40561, 0x40587}, {0x4058d, 0x4058f}, {0x40591, 0x405c7}, + {0x405d0, 0x405ea}, {0x405f0, 0x405f4}, {0x40606, 0x4061b}, {0x4061e, 0x406dc}, + {0x406de, 0x4070d}, {0x40710, 0x4074a}, {0x4074d, 0x407b1}, {0x407c0, 0x407fa}, + {0x40800, 0x4082d}, {0x40830, 0x4083e}, {0x40840, 0x4085b}, {0x40860, 0x4086a}, + {0x408a0, 0x408b4}, {0x408b6, 0x408bd}, {0x408d4, 0x408e1}, {0x408e3, 0x40983}, + {0x40985, 0x4098c}, {0x40993, 0x409a8}, {0x409aa, 0x409b0}, {0x409b6, 0x409b9}, + {0x409bc, 0x409c4}, {0x409cb, 0x409ce}, {0x409df, 0x409e3}, {0x409e6, 0x409fd}, + {0x40a01, 0x40a03}, {0x40a05, 0x40a0a}, {0x40a13, 0x40a28}, {0x40a2a, 0x40a30}, + {0x40a3e, 0x40a42}, {0x40a4b, 0x40a4d}, {0x40a59, 0x40a5c}, {0x40a66, 0x40a75}, + {0x40a81, 0x40a83}, {0x40a85, 0x40a8d}, {0x40a8f, 0x40a91}, {0x40a93, 0x40aa8}, + {0x40aaa, 0x40ab0}, {0x40ab5, 0x40ab9}, {0x40abc, 0x40ac5}, {0x40ac7, 0x40ac9}, + {0x40acb, 0x40acd}, {0x40ae0, 0x40ae3}, {0x40ae6, 0x40af1}, {0x40af9, 0x40aff}, + {0x40b01, 0x40b03}, {0x40b05, 0x40b0c}, {0x40b13, 0x40b28}, {0x40b2a, 0x40b30}, + {0x40b35, 0x40b39}, {0x40b3c, 0x40b44}, {0x40b4b, 0x40b4d}, {0x40b5f, 0x40b63}, + {0x40b66, 0x40b77}, {0x40b85, 0x40b8a}, {0x40b8e, 0x40b90}, {0x40b92, 0x40b95}, + {0x40ba8, 0x40baa}, {0x40bae, 0x40bb9}, {0x40bbe, 0x40bc2}, {0x40bc6, 0x40bc8}, + {0x40bca, 0x40bcd}, {0x40be6, 0x40bfa}, {0x40c00, 0x40c03}, {0x40c05, 0x40c0c}, + {0x40c0e, 0x40c10}, {0x40c12, 0x40c28}, {0x40c2a, 0x40c39}, {0x40c3d, 0x40c44}, + {0x40c46, 0x40c48}, {0x40c4a, 0x40c4d}, {0x40c58, 0x40c5a}, {0x40c60, 0x40c63}, + {0x40c66, 0x40c6f}, {0x40c78, 0x40c83}, {0x40c85, 0x40c8c}, {0x40c8e, 0x40c90}, + {0x40c92, 0x40ca8}, {0x40caa, 0x40cb3}, {0x40cb5, 0x40cb9}, {0x40cbc, 0x40cc4}, + {0x40cc6, 0x40cc8}, {0x40cca, 0x40ccd}, {0x40ce0, 0x40ce3}, {0x40ce6, 0x40cef}, + {0x40d00, 0x40d03}, {0x40d05, 0x40d0c}, {0x40d0e, 0x40d10}, {0x40d12, 0x40d44}, + {0x40d46, 0x40d48}, {0x40d4a, 0x40d4f}, {0x40d54, 0x40d63}, {0x40d66, 0x40d7f}, + {0x40d85, 0x40d96}, {0x40d9a, 0x40db1}, {0x40db3, 0x40dbb}, {0x40dc0, 0x40dc6}, + {0x40dcf, 0x40dd4}, {0x40dd8, 0x40ddf}, {0x40de6, 0x40def}, {0x40df2, 0x40df4}, + {0x40e01, 0x40e3a}, {0x40e3f, 0x40e5b}, {0x40e94, 0x40e97}, {0x40e99, 0x40e9f}, + {0x40ea1, 0x40ea3}, {0x40ead, 0x40eb9}, {0x40ebb, 0x40ebd}, {0x40ec0, 0x40ec4}, + {0x40ec8, 0x40ecd}, {0x40ed0, 0x40ed9}, {0x40edc, 0x40edf}, {0x40f00, 0x40f47}, + {0x40f49, 0x40f6c}, {0x40f71, 0x40f97}, {0x40f99, 0x40fbc}, {0x40fbe, 0x40fcc}, + {0x40fce, 0x40fda}, {0x41000, 0x410c5}, {0x410d0, 0x41248}, {0x4124a, 0x4124d}, + {0x41250, 0x41256}, {0x4125a, 0x4125d}, {0x41260, 0x41288}, {0x4128a, 0x4128d}, + {0x41290, 0x412b0}, {0x412b2, 0x412b5}, {0x412b8, 0x412be}, {0x412c2, 0x412c5}, + {0x412c8, 0x412d6}, {0x412d8, 0x41310}, {0x41312, 0x41315}, {0x41318, 0x4135a}, + {0x4135d, 0x4137c}, {0x41380, 0x41399}, {0x413a0, 0x413f5}, {0x413f8, 0x413fd}, + {0x41400, 0x4167f}, {0x41681, 0x4169c}, {0x416a0, 0x416f8}, {0x41700, 0x4170c}, + {0x4170e, 0x41714}, {0x41720, 0x41736}, {0x41740, 0x41753}, {0x41760, 0x4176c}, + {0x4176e, 0x41770}, {0x41780, 0x417dd}, {0x417e0, 0x417e9}, {0x417f0, 0x417f9}, + {0x41800, 0x4180d}, {0x41810, 0x41819}, {0x41820, 0x41877}, {0x41880, 0x418aa}, + {0x418b0, 0x418f5}, {0x41900, 0x4191e}, {0x41920, 0x4192b}, {0x41930, 0x4193b}, + {0x41944, 0x4196d}, {0x41970, 0x41974}, {0x41980, 0x419ab}, {0x419b0, 0x419c9}, + {0x419d0, 0x419da}, {0x419de, 0x41a1b}, {0x41a1e, 0x41a5e}, {0x41a60, 0x41a7c}, + {0x41a7f, 0x41a89}, {0x41a90, 0x41a99}, {0x41aa0, 0x41aad}, {0x41ab0, 0x41abe}, + {0x41b00, 0x41b4b}, {0x41b50, 0x41b7c}, {0x41b80, 0x41bf3}, {0x41bfc, 0x41c37}, + {0x41c3b, 0x41c49}, {0x41c4d, 0x41c88}, {0x41cc0, 0x41cc7}, {0x41cd0, 0x41cf9}, + {0x41d00, 0x41df9}, {0x41dfb, 0x41f15}, {0x41f18, 0x41f1d}, {0x41f20, 0x41f45}, + {0x41f48, 0x41f4d}, {0x41f50, 0x41f57}, {0x41f5f, 0x41f7d}, {0x41f80, 0x41fb4}, + {0x41fb6, 0x41fc4}, {0x41fc6, 0x41fd3}, {0x41fd6, 0x41fdb}, {0x41fdd, 0x41fef}, + {0x41ff2, 0x41ff4}, {0x41ff6, 0x41ffe}, {0x42010, 0x42027}, {0x42030, 0x4205e}, + {0x42074, 0x4208e}, {0x42090, 0x4209c}, {0x420a0, 0x420bf}, {0x420d0, 0x420f0}, + {0x42100, 0x4218b}, {0x42190, 0x42426}, {0x42440, 0x4244a}, {0x42460, 0x42b73}, + {0x42b76, 0x42b95}, {0x42b98, 0x42bb9}, {0x42bbd, 0x42bc8}, {0x42bca, 0x42bd2}, + {0x42bec, 0x42bef}, {0x42c00, 0x42c2e}, {0x42c30, 0x42c5e}, {0x42c60, 0x42cf3}, + {0x42cf9, 0x42d25}, {0x42d30, 0x42d67}, {0x42d7f, 0x42d96}, {0x42da0, 0x42da6}, + {0x42da8, 0x42dae}, {0x42db0, 0x42db6}, {0x42db8, 0x42dbe}, {0x42dc0, 0x42dc6}, + {0x42dc8, 0x42dce}, {0x42dd0, 0x42dd6}, {0x42dd8, 0x42dde}, {0x42de0, 0x42e49}, + {0x42e80, 0x42e99}, {0x42e9b, 0x42ef3}, {0x42f00, 0x42fd5}, {0x42ff0, 0x42ffb}, + {0x43001, 0x4303f}, {0x43041, 0x43096}, {0x43099, 0x430ff}, {0x43105, 0x4312e}, + {0x43131, 0x4318e}, {0x43190, 0x431ba}, {0x431c0, 0x431e3}, {0x431f0, 0x4321e}, + {0x43220, 0x432fe}, {0x43300, 0x44db5}, {0x44dc0, 0x49fea}, {0x4a000, 0x4a48c}, + {0x4a490, 0x4a4c6}, {0x4a4d0, 0x4a62b}, {0x4a640, 0x4a6f7}, {0x4a700, 0x4a7ae}, + {0x4a7b0, 0x4a7b7}, {0x4a7f7, 0x4a82b}, {0x4a830, 0x4a839}, {0x4a840, 0x4a877}, + {0x4a880, 0x4a8c5}, {0x4a8ce, 0x4a8d9}, {0x4a8e0, 0x4a8fd}, {0x4a900, 0x4a953}, + {0x4a95f, 0x4a97c}, {0x4a980, 0x4a9cd}, {0x4a9cf, 0x4a9d9}, {0x4a9de, 0x4a9fe}, + {0x4aa00, 0x4aa36}, {0x4aa40, 0x4aa4d}, {0x4aa50, 0x4aa59}, {0x4aa5c, 0x4aac2}, + {0x4aadb, 0x4aaf6}, {0x4ab01, 0x4ab06}, {0x4ab09, 0x4ab0e}, {0x4ab11, 0x4ab16}, + {0x4ab20, 0x4ab26}, {0x4ab28, 0x4ab2e}, {0x4ab30, 0x4ab65}, {0x4ab70, 0x4abed}, + {0x4abf0, 0x4abf9}, {0x4ac00, 0x4d7a3}, {0x4d7b0, 0x4d7c6}, {0x4d7cb, 0x4d7fb}, + {0x4f900, 0x4fa6d}, {0x4fa70, 0x4fad9}, {0x4fb00, 0x4fb06}, {0x4fb13, 0x4fb17}, + {0x4fb1d, 0x4fb36}, {0x4fb38, 0x4fb3c}, {0x4fb46, 0x4fbc1}, {0x4fbd3, 0x4fd3f}, + {0x4fd50, 0x4fd8f}, {0x4fd92, 0x4fdc7}, {0x4fdf0, 0x4fdfd}, {0x4fe00, 0x4fe19}, + {0x4fe20, 0x4fe52}, {0x4fe54, 0x4fe66}, {0x4fe68, 0x4fe6b}, {0x4fe70, 0x4fe74}, + {0x4fe76, 0x4fefc}, {0x4ff01, 0x4ffbe}, {0x4ffc2, 0x4ffc7}, {0x4ffca, 0x4ffcf}, + {0x4ffd2, 0x4ffd7}, {0x4ffda, 0x4ffdc}, {0x4ffe0, 0x4ffe6}, {0x4ffe8, 0x4ffee}, + {0x50021, 0x5007e}, {0x500a1, 0x500ac}, {0x500ae, 0x50377}, {0x5037a, 0x5037f}, + {0x50384, 0x5038a}, {0x5038e, 0x503a1}, {0x503a3, 0x5052f}, {0x50531, 0x50556}, + {0x50559, 0x5055f}, {0x50561, 0x50587}, {0x5058d, 0x5058f}, {0x50591, 0x505c7}, + {0x505d0, 0x505ea}, {0x505f0, 0x505f4}, {0x50606, 0x5061b}, {0x5061e, 0x506dc}, + {0x506de, 0x5070d}, {0x50710, 0x5074a}, {0x5074d, 0x507b1}, {0x507c0, 0x507fa}, + {0x50800, 0x5082d}, {0x50830, 0x5083e}, {0x50840, 0x5085b}, {0x50860, 0x5086a}, + {0x508a0, 0x508b4}, {0x508b6, 0x508bd}, {0x508d4, 0x508e1}, {0x508e3, 0x50983}, + {0x50985, 0x5098c}, {0x50993, 0x509a8}, {0x509aa, 0x509b0}, {0x509b6, 0x509b9}, + {0x509bc, 0x509c4}, {0x509cb, 0x509ce}, {0x509df, 0x509e3}, {0x509e6, 0x509fd}, + {0x50a01, 0x50a03}, {0x50a05, 0x50a0a}, {0x50a13, 0x50a28}, {0x50a2a, 0x50a30}, + {0x50a3e, 0x50a42}, {0x50a4b, 0x50a4d}, {0x50a59, 0x50a5c}, {0x50a66, 0x50a75}, + {0x50a81, 0x50a83}, {0x50a85, 0x50a8d}, {0x50a8f, 0x50a91}, {0x50a93, 0x50aa8}, + {0x50aaa, 0x50ab0}, {0x50ab5, 0x50ab9}, {0x50abc, 0x50ac5}, {0x50ac7, 0x50ac9}, + {0x50acb, 0x50acd}, {0x50ae0, 0x50ae3}, {0x50ae6, 0x50af1}, {0x50af9, 0x50aff}, + {0x50b01, 0x50b03}, {0x50b05, 0x50b0c}, {0x50b13, 0x50b28}, {0x50b2a, 0x50b30}, + {0x50b35, 0x50b39}, {0x50b3c, 0x50b44}, {0x50b4b, 0x50b4d}, {0x50b5f, 0x50b63}, + {0x50b66, 0x50b77}, {0x50b85, 0x50b8a}, {0x50b8e, 0x50b90}, {0x50b92, 0x50b95}, + {0x50ba8, 0x50baa}, {0x50bae, 0x50bb9}, {0x50bbe, 0x50bc2}, {0x50bc6, 0x50bc8}, + {0x50bca, 0x50bcd}, {0x50be6, 0x50bfa}, {0x50c00, 0x50c03}, {0x50c05, 0x50c0c}, + {0x50c0e, 0x50c10}, {0x50c12, 0x50c28}, {0x50c2a, 0x50c39}, {0x50c3d, 0x50c44}, + {0x50c46, 0x50c48}, {0x50c4a, 0x50c4d}, {0x50c58, 0x50c5a}, {0x50c60, 0x50c63}, + {0x50c66, 0x50c6f}, {0x50c78, 0x50c83}, {0x50c85, 0x50c8c}, {0x50c8e, 0x50c90}, + {0x50c92, 0x50ca8}, {0x50caa, 0x50cb3}, {0x50cb5, 0x50cb9}, {0x50cbc, 0x50cc4}, + {0x50cc6, 0x50cc8}, {0x50cca, 0x50ccd}, {0x50ce0, 0x50ce3}, {0x50ce6, 0x50cef}, + {0x50d00, 0x50d03}, {0x50d05, 0x50d0c}, {0x50d0e, 0x50d10}, {0x50d12, 0x50d44}, + {0x50d46, 0x50d48}, {0x50d4a, 0x50d4f}, {0x50d54, 0x50d63}, {0x50d66, 0x50d7f}, + {0x50d85, 0x50d96}, {0x50d9a, 0x50db1}, {0x50db3, 0x50dbb}, {0x50dc0, 0x50dc6}, + {0x50dcf, 0x50dd4}, {0x50dd8, 0x50ddf}, {0x50de6, 0x50def}, {0x50df2, 0x50df4}, + {0x50e01, 0x50e3a}, {0x50e3f, 0x50e5b}, {0x50e94, 0x50e97}, {0x50e99, 0x50e9f}, + {0x50ea1, 0x50ea3}, {0x50ead, 0x50eb9}, {0x50ebb, 0x50ebd}, {0x50ec0, 0x50ec4}, + {0x50ec8, 0x50ecd}, {0x50ed0, 0x50ed9}, {0x50edc, 0x50edf}, {0x50f00, 0x50f47}, + {0x50f49, 0x50f6c}, {0x50f71, 0x50f97}, {0x50f99, 0x50fbc}, {0x50fbe, 0x50fcc}, + {0x50fce, 0x50fda}, {0x51000, 0x510c5}, {0x510d0, 0x51248}, {0x5124a, 0x5124d}, + {0x51250, 0x51256}, {0x5125a, 0x5125d}, {0x51260, 0x51288}, {0x5128a, 0x5128d}, + {0x51290, 0x512b0}, {0x512b2, 0x512b5}, {0x512b8, 0x512be}, {0x512c2, 0x512c5}, + {0x512c8, 0x512d6}, {0x512d8, 0x51310}, {0x51312, 0x51315}, {0x51318, 0x5135a}, + {0x5135d, 0x5137c}, {0x51380, 0x51399}, {0x513a0, 0x513f5}, {0x513f8, 0x513fd}, + {0x51400, 0x5167f}, {0x51681, 0x5169c}, {0x516a0, 0x516f8}, {0x51700, 0x5170c}, + {0x5170e, 0x51714}, {0x51720, 0x51736}, {0x51740, 0x51753}, {0x51760, 0x5176c}, + {0x5176e, 0x51770}, {0x51780, 0x517dd}, {0x517e0, 0x517e9}, {0x517f0, 0x517f9}, + {0x51800, 0x5180d}, {0x51810, 0x51819}, {0x51820, 0x51877}, {0x51880, 0x518aa}, + {0x518b0, 0x518f5}, {0x51900, 0x5191e}, {0x51920, 0x5192b}, {0x51930, 0x5193b}, + {0x51944, 0x5196d}, {0x51970, 0x51974}, {0x51980, 0x519ab}, {0x519b0, 0x519c9}, + {0x519d0, 0x519da}, {0x519de, 0x51a1b}, {0x51a1e, 0x51a5e}, {0x51a60, 0x51a7c}, + {0x51a7f, 0x51a89}, {0x51a90, 0x51a99}, {0x51aa0, 0x51aad}, {0x51ab0, 0x51abe}, + {0x51b00, 0x51b4b}, {0x51b50, 0x51b7c}, {0x51b80, 0x51bf3}, {0x51bfc, 0x51c37}, + {0x51c3b, 0x51c49}, {0x51c4d, 0x51c88}, {0x51cc0, 0x51cc7}, {0x51cd0, 0x51cf9}, + {0x51d00, 0x51df9}, {0x51dfb, 0x51f15}, {0x51f18, 0x51f1d}, {0x51f20, 0x51f45}, + {0x51f48, 0x51f4d}, {0x51f50, 0x51f57}, {0x51f5f, 0x51f7d}, {0x51f80, 0x51fb4}, + {0x51fb6, 0x51fc4}, {0x51fc6, 0x51fd3}, {0x51fd6, 0x51fdb}, {0x51fdd, 0x51fef}, + {0x51ff2, 0x51ff4}, {0x51ff6, 0x51ffe}, {0x52010, 0x52027}, {0x52030, 0x5205e}, + {0x52074, 0x5208e}, {0x52090, 0x5209c}, {0x520a0, 0x520bf}, {0x520d0, 0x520f0}, + {0x52100, 0x5218b}, {0x52190, 0x52426}, {0x52440, 0x5244a}, {0x52460, 0x52b73}, + {0x52b76, 0x52b95}, {0x52b98, 0x52bb9}, {0x52bbd, 0x52bc8}, {0x52bca, 0x52bd2}, + {0x52bec, 0x52bef}, {0x52c00, 0x52c2e}, {0x52c30, 0x52c5e}, {0x52c60, 0x52cf3}, + {0x52cf9, 0x52d25}, {0x52d30, 0x52d67}, {0x52d7f, 0x52d96}, {0x52da0, 0x52da6}, + {0x52da8, 0x52dae}, {0x52db0, 0x52db6}, {0x52db8, 0x52dbe}, {0x52dc0, 0x52dc6}, + {0x52dc8, 0x52dce}, {0x52dd0, 0x52dd6}, {0x52dd8, 0x52dde}, {0x52de0, 0x52e49}, + {0x52e80, 0x52e99}, {0x52e9b, 0x52ef3}, {0x52f00, 0x52fd5}, {0x52ff0, 0x52ffb}, + {0x53001, 0x5303f}, {0x53041, 0x53096}, {0x53099, 0x530ff}, {0x53105, 0x5312e}, + {0x53131, 0x5318e}, {0x53190, 0x531ba}, {0x531c0, 0x531e3}, {0x531f0, 0x5321e}, + {0x53220, 0x532fe}, {0x53300, 0x54db5}, {0x54dc0, 0x59fea}, {0x5a000, 0x5a48c}, + {0x5a490, 0x5a4c6}, {0x5a4d0, 0x5a62b}, {0x5a640, 0x5a6f7}, {0x5a700, 0x5a7ae}, + {0x5a7b0, 0x5a7b7}, {0x5a7f7, 0x5a82b}, {0x5a830, 0x5a839}, {0x5a840, 0x5a877}, + {0x5a880, 0x5a8c5}, {0x5a8ce, 0x5a8d9}, {0x5a8e0, 0x5a8fd}, {0x5a900, 0x5a953}, + {0x5a95f, 0x5a97c}, {0x5a980, 0x5a9cd}, {0x5a9cf, 0x5a9d9}, {0x5a9de, 0x5a9fe}, + {0x5aa00, 0x5aa36}, {0x5aa40, 0x5aa4d}, {0x5aa50, 0x5aa59}, {0x5aa5c, 0x5aac2}, + {0x5aadb, 0x5aaf6}, {0x5ab01, 0x5ab06}, {0x5ab09, 0x5ab0e}, {0x5ab11, 0x5ab16}, + {0x5ab20, 0x5ab26}, {0x5ab28, 0x5ab2e}, {0x5ab30, 0x5ab65}, {0x5ab70, 0x5abed}, + {0x5abf0, 0x5abf9}, {0x5ac00, 0x5d7a3}, {0x5d7b0, 0x5d7c6}, {0x5d7cb, 0x5d7fb}, + {0x5f900, 0x5fa6d}, {0x5fa70, 0x5fad9}, {0x5fb00, 0x5fb06}, {0x5fb13, 0x5fb17}, + {0x5fb1d, 0x5fb36}, {0x5fb38, 0x5fb3c}, {0x5fb46, 0x5fbc1}, {0x5fbd3, 0x5fd3f}, + {0x5fd50, 0x5fd8f}, {0x5fd92, 0x5fdc7}, {0x5fdf0, 0x5fdfd}, {0x5fe00, 0x5fe19}, + {0x5fe20, 0x5fe52}, {0x5fe54, 0x5fe66}, {0x5fe68, 0x5fe6b}, {0x5fe70, 0x5fe74}, + {0x5fe76, 0x5fefc}, {0x5ff01, 0x5ffbe}, {0x5ffc2, 0x5ffc7}, {0x5ffca, 0x5ffcf}, + {0x5ffd2, 0x5ffd7}, {0x5ffda, 0x5ffdc}, {0x5ffe0, 0x5ffe6}, {0x5ffe8, 0x5ffee}, + {0x60021, 0x6007e}, {0x600a1, 0x600ac}, {0x600ae, 0x60377}, {0x6037a, 0x6037f}, + {0x60384, 0x6038a}, {0x6038e, 0x603a1}, {0x603a3, 0x6052f}, {0x60531, 0x60556}, + {0x60559, 0x6055f}, {0x60561, 0x60587}, {0x6058d, 0x6058f}, {0x60591, 0x605c7}, + {0x605d0, 0x605ea}, {0x605f0, 0x605f4}, {0x60606, 0x6061b}, {0x6061e, 0x606dc}, + {0x606de, 0x6070d}, {0x60710, 0x6074a}, {0x6074d, 0x607b1}, {0x607c0, 0x607fa}, + {0x60800, 0x6082d}, {0x60830, 0x6083e}, {0x60840, 0x6085b}, {0x60860, 0x6086a}, + {0x608a0, 0x608b4}, {0x608b6, 0x608bd}, {0x608d4, 0x608e1}, {0x608e3, 0x60983}, + {0x60985, 0x6098c}, {0x60993, 0x609a8}, {0x609aa, 0x609b0}, {0x609b6, 0x609b9}, + {0x609bc, 0x609c4}, {0x609cb, 0x609ce}, {0x609df, 0x609e3}, {0x609e6, 0x609fd}, + {0x60a01, 0x60a03}, {0x60a05, 0x60a0a}, {0x60a13, 0x60a28}, {0x60a2a, 0x60a30}, + {0x60a3e, 0x60a42}, {0x60a4b, 0x60a4d}, {0x60a59, 0x60a5c}, {0x60a66, 0x60a75}, + {0x60a81, 0x60a83}, {0x60a85, 0x60a8d}, {0x60a8f, 0x60a91}, {0x60a93, 0x60aa8}, + {0x60aaa, 0x60ab0}, {0x60ab5, 0x60ab9}, {0x60abc, 0x60ac5}, {0x60ac7, 0x60ac9}, + {0x60acb, 0x60acd}, {0x60ae0, 0x60ae3}, {0x60ae6, 0x60af1}, {0x60af9, 0x60aff}, + {0x60b01, 0x60b03}, {0x60b05, 0x60b0c}, {0x60b13, 0x60b28}, {0x60b2a, 0x60b30}, + {0x60b35, 0x60b39}, {0x60b3c, 0x60b44}, {0x60b4b, 0x60b4d}, {0x60b5f, 0x60b63}, + {0x60b66, 0x60b77}, {0x60b85, 0x60b8a}, {0x60b8e, 0x60b90}, {0x60b92, 0x60b95}, + {0x60ba8, 0x60baa}, {0x60bae, 0x60bb9}, {0x60bbe, 0x60bc2}, {0x60bc6, 0x60bc8}, + {0x60bca, 0x60bcd}, {0x60be6, 0x60bfa}, {0x60c00, 0x60c03}, {0x60c05, 0x60c0c}, + {0x60c0e, 0x60c10}, {0x60c12, 0x60c28}, {0x60c2a, 0x60c39}, {0x60c3d, 0x60c44}, + {0x60c46, 0x60c48}, {0x60c4a, 0x60c4d}, {0x60c58, 0x60c5a}, {0x60c60, 0x60c63}, + {0x60c66, 0x60c6f}, {0x60c78, 0x60c83}, {0x60c85, 0x60c8c}, {0x60c8e, 0x60c90}, + {0x60c92, 0x60ca8}, {0x60caa, 0x60cb3}, {0x60cb5, 0x60cb9}, {0x60cbc, 0x60cc4}, + {0x60cc6, 0x60cc8}, {0x60cca, 0x60ccd}, {0x60ce0, 0x60ce3}, {0x60ce6, 0x60cef}, + {0x60d00, 0x60d03}, {0x60d05, 0x60d0c}, {0x60d0e, 0x60d10}, {0x60d12, 0x60d44}, + {0x60d46, 0x60d48}, {0x60d4a, 0x60d4f}, {0x60d54, 0x60d63}, {0x60d66, 0x60d7f}, + {0x60d85, 0x60d96}, {0x60d9a, 0x60db1}, {0x60db3, 0x60dbb}, {0x60dc0, 0x60dc6}, + {0x60dcf, 0x60dd4}, {0x60dd8, 0x60ddf}, {0x60de6, 0x60def}, {0x60df2, 0x60df4}, + {0x60e01, 0x60e3a}, {0x60e3f, 0x60e5b}, {0x60e94, 0x60e97}, {0x60e99, 0x60e9f}, + {0x60ea1, 0x60ea3}, {0x60ead, 0x60eb9}, {0x60ebb, 0x60ebd}, {0x60ec0, 0x60ec4}, + {0x60ec8, 0x60ecd}, {0x60ed0, 0x60ed9}, {0x60edc, 0x60edf}, {0x60f00, 0x60f47}, + {0x60f49, 0x60f6c}, {0x60f71, 0x60f97}, {0x60f99, 0x60fbc}, {0x60fbe, 0x60fcc}, + {0x60fce, 0x60fda}, {0x61000, 0x610c5}, {0x610d0, 0x61248}, {0x6124a, 0x6124d}, + {0x61250, 0x61256}, {0x6125a, 0x6125d}, {0x61260, 0x61288}, {0x6128a, 0x6128d}, + {0x61290, 0x612b0}, {0x612b2, 0x612b5}, {0x612b8, 0x612be}, {0x612c2, 0x612c5}, + {0x612c8, 0x612d6}, {0x612d8, 0x61310}, {0x61312, 0x61315}, {0x61318, 0x6135a}, + {0x6135d, 0x6137c}, {0x61380, 0x61399}, {0x613a0, 0x613f5}, {0x613f8, 0x613fd}, + {0x61400, 0x6167f}, {0x61681, 0x6169c}, {0x616a0, 0x616f8}, {0x61700, 0x6170c}, + {0x6170e, 0x61714}, {0x61720, 0x61736}, {0x61740, 0x61753}, {0x61760, 0x6176c}, + {0x6176e, 0x61770}, {0x61780, 0x617dd}, {0x617e0, 0x617e9}, {0x617f0, 0x617f9}, + {0x61800, 0x6180d}, {0x61810, 0x61819}, {0x61820, 0x61877}, {0x61880, 0x618aa}, + {0x618b0, 0x618f5}, {0x61900, 0x6191e}, {0x61920, 0x6192b}, {0x61930, 0x6193b}, + {0x61944, 0x6196d}, {0x61970, 0x61974}, {0x61980, 0x619ab}, {0x619b0, 0x619c9}, + {0x619d0, 0x619da}, {0x619de, 0x61a1b}, {0x61a1e, 0x61a5e}, {0x61a60, 0x61a7c}, + {0x61a7f, 0x61a89}, {0x61a90, 0x61a99}, {0x61aa0, 0x61aad}, {0x61ab0, 0x61abe}, + {0x61b00, 0x61b4b}, {0x61b50, 0x61b7c}, {0x61b80, 0x61bf3}, {0x61bfc, 0x61c37}, + {0x61c3b, 0x61c49}, {0x61c4d, 0x61c88}, {0x61cc0, 0x61cc7}, {0x61cd0, 0x61cf9}, + {0x61d00, 0x61df9}, {0x61dfb, 0x61f15}, {0x61f18, 0x61f1d}, {0x61f20, 0x61f45}, + {0x61f48, 0x61f4d}, {0x61f50, 0x61f57}, {0x61f5f, 0x61f7d}, {0x61f80, 0x61fb4}, + {0x61fb6, 0x61fc4}, {0x61fc6, 0x61fd3}, {0x61fd6, 0x61fdb}, {0x61fdd, 0x61fef}, + {0x61ff2, 0x61ff4}, {0x61ff6, 0x61ffe}, {0x62010, 0x62027}, {0x62030, 0x6205e}, + {0x62074, 0x6208e}, {0x62090, 0x6209c}, {0x620a0, 0x620bf}, {0x620d0, 0x620f0}, + {0x62100, 0x6218b}, {0x62190, 0x62426}, {0x62440, 0x6244a}, {0x62460, 0x62b73}, + {0x62b76, 0x62b95}, {0x62b98, 0x62bb9}, {0x62bbd, 0x62bc8}, {0x62bca, 0x62bd2}, + {0x62bec, 0x62bef}, {0x62c00, 0x62c2e}, {0x62c30, 0x62c5e}, {0x62c60, 0x62cf3}, + {0x62cf9, 0x62d25}, {0x62d30, 0x62d67}, {0x62d7f, 0x62d96}, {0x62da0, 0x62da6}, + {0x62da8, 0x62dae}, {0x62db0, 0x62db6}, {0x62db8, 0x62dbe}, {0x62dc0, 0x62dc6}, + {0x62dc8, 0x62dce}, {0x62dd0, 0x62dd6}, {0x62dd8, 0x62dde}, {0x62de0, 0x62e49}, + {0x62e80, 0x62e99}, {0x62e9b, 0x62ef3}, {0x62f00, 0x62fd5}, {0x62ff0, 0x62ffb}, + {0x63001, 0x6303f}, {0x63041, 0x63096}, {0x63099, 0x630ff}, {0x63105, 0x6312e}, + {0x63131, 0x6318e}, {0x63190, 0x631ba}, {0x631c0, 0x631e3}, {0x631f0, 0x6321e}, + {0x63220, 0x632fe}, {0x63300, 0x64db5}, {0x64dc0, 0x69fea}, {0x6a000, 0x6a48c}, + {0x6a490, 0x6a4c6}, {0x6a4d0, 0x6a62b}, {0x6a640, 0x6a6f7}, {0x6a700, 0x6a7ae}, + {0x6a7b0, 0x6a7b7}, {0x6a7f7, 0x6a82b}, {0x6a830, 0x6a839}, {0x6a840, 0x6a877}, + {0x6a880, 0x6a8c5}, {0x6a8ce, 0x6a8d9}, {0x6a8e0, 0x6a8fd}, {0x6a900, 0x6a953}, + {0x6a95f, 0x6a97c}, {0x6a980, 0x6a9cd}, {0x6a9cf, 0x6a9d9}, {0x6a9de, 0x6a9fe}, + {0x6aa00, 0x6aa36}, {0x6aa40, 0x6aa4d}, {0x6aa50, 0x6aa59}, {0x6aa5c, 0x6aac2}, + {0x6aadb, 0x6aaf6}, {0x6ab01, 0x6ab06}, {0x6ab09, 0x6ab0e}, {0x6ab11, 0x6ab16}, + {0x6ab20, 0x6ab26}, {0x6ab28, 0x6ab2e}, {0x6ab30, 0x6ab65}, {0x6ab70, 0x6abed}, + {0x6abf0, 0x6abf9}, {0x6ac00, 0x6d7a3}, {0x6d7b0, 0x6d7c6}, {0x6d7cb, 0x6d7fb}, + {0x6f900, 0x6fa6d}, {0x6fa70, 0x6fad9}, {0x6fb00, 0x6fb06}, {0x6fb13, 0x6fb17}, + {0x6fb1d, 0x6fb36}, {0x6fb38, 0x6fb3c}, {0x6fb46, 0x6fbc1}, {0x6fbd3, 0x6fd3f}, + {0x6fd50, 0x6fd8f}, {0x6fd92, 0x6fdc7}, {0x6fdf0, 0x6fdfd}, {0x6fe00, 0x6fe19}, + {0x6fe20, 0x6fe52}, {0x6fe54, 0x6fe66}, {0x6fe68, 0x6fe6b}, {0x6fe70, 0x6fe74}, + {0x6fe76, 0x6fefc}, {0x6ff01, 0x6ffbe}, {0x6ffc2, 0x6ffc7}, {0x6ffca, 0x6ffcf}, + {0x6ffd2, 0x6ffd7}, {0x6ffda, 0x6ffdc}, {0x6ffe0, 0x6ffe6}, {0x6ffe8, 0x6ffee}, + {0x70021, 0x7007e}, {0x700a1, 0x700ac}, {0x700ae, 0x70377}, {0x7037a, 0x7037f}, + {0x70384, 0x7038a}, {0x7038e, 0x703a1}, {0x703a3, 0x7052f}, {0x70531, 0x70556}, + {0x70559, 0x7055f}, {0x70561, 0x70587}, {0x7058d, 0x7058f}, {0x70591, 0x705c7}, + {0x705d0, 0x705ea}, {0x705f0, 0x705f4}, {0x70606, 0x7061b}, {0x7061e, 0x706dc}, + {0x706de, 0x7070d}, {0x70710, 0x7074a}, {0x7074d, 0x707b1}, {0x707c0, 0x707fa}, + {0x70800, 0x7082d}, {0x70830, 0x7083e}, {0x70840, 0x7085b}, {0x70860, 0x7086a}, + {0x708a0, 0x708b4}, {0x708b6, 0x708bd}, {0x708d4, 0x708e1}, {0x708e3, 0x70983}, + {0x70985, 0x7098c}, {0x70993, 0x709a8}, {0x709aa, 0x709b0}, {0x709b6, 0x709b9}, + {0x709bc, 0x709c4}, {0x709cb, 0x709ce}, {0x709df, 0x709e3}, {0x709e6, 0x709fd}, + {0x70a01, 0x70a03}, {0x70a05, 0x70a0a}, {0x70a13, 0x70a28}, {0x70a2a, 0x70a30}, + {0x70a3e, 0x70a42}, {0x70a4b, 0x70a4d}, {0x70a59, 0x70a5c}, {0x70a66, 0x70a75}, + {0x70a81, 0x70a83}, {0x70a85, 0x70a8d}, {0x70a8f, 0x70a91}, {0x70a93, 0x70aa8}, + {0x70aaa, 0x70ab0}, {0x70ab5, 0x70ab9}, {0x70abc, 0x70ac5}, {0x70ac7, 0x70ac9}, + {0x70acb, 0x70acd}, {0x70ae0, 0x70ae3}, {0x70ae6, 0x70af1}, {0x70af9, 0x70aff}, + {0x70b01, 0x70b03}, {0x70b05, 0x70b0c}, {0x70b13, 0x70b28}, {0x70b2a, 0x70b30}, + {0x70b35, 0x70b39}, {0x70b3c, 0x70b44}, {0x70b4b, 0x70b4d}, {0x70b5f, 0x70b63}, + {0x70b66, 0x70b77}, {0x70b85, 0x70b8a}, {0x70b8e, 0x70b90}, {0x70b92, 0x70b95}, + {0x70ba8, 0x70baa}, {0x70bae, 0x70bb9}, {0x70bbe, 0x70bc2}, {0x70bc6, 0x70bc8}, + {0x70bca, 0x70bcd}, {0x70be6, 0x70bfa}, {0x70c00, 0x70c03}, {0x70c05, 0x70c0c}, + {0x70c0e, 0x70c10}, {0x70c12, 0x70c28}, {0x70c2a, 0x70c39}, {0x70c3d, 0x70c44}, + {0x70c46, 0x70c48}, {0x70c4a, 0x70c4d}, {0x70c58, 0x70c5a}, {0x70c60, 0x70c63}, + {0x70c66, 0x70c6f}, {0x70c78, 0x70c83}, {0x70c85, 0x70c8c}, {0x70c8e, 0x70c90}, + {0x70c92, 0x70ca8}, {0x70caa, 0x70cb3}, {0x70cb5, 0x70cb9}, {0x70cbc, 0x70cc4}, + {0x70cc6, 0x70cc8}, {0x70cca, 0x70ccd}, {0x70ce0, 0x70ce3}, {0x70ce6, 0x70cef}, + {0x70d00, 0x70d03}, {0x70d05, 0x70d0c}, {0x70d0e, 0x70d10}, {0x70d12, 0x70d44}, + {0x70d46, 0x70d48}, {0x70d4a, 0x70d4f}, {0x70d54, 0x70d63}, {0x70d66, 0x70d7f}, + {0x70d85, 0x70d96}, {0x70d9a, 0x70db1}, {0x70db3, 0x70dbb}, {0x70dc0, 0x70dc6}, + {0x70dcf, 0x70dd4}, {0x70dd8, 0x70ddf}, {0x70de6, 0x70def}, {0x70df2, 0x70df4}, + {0x70e01, 0x70e3a}, {0x70e3f, 0x70e5b}, {0x70e94, 0x70e97}, {0x70e99, 0x70e9f}, + {0x70ea1, 0x70ea3}, {0x70ead, 0x70eb9}, {0x70ebb, 0x70ebd}, {0x70ec0, 0x70ec4}, + {0x70ec8, 0x70ecd}, {0x70ed0, 0x70ed9}, {0x70edc, 0x70edf}, {0x70f00, 0x70f47}, + {0x70f49, 0x70f6c}, {0x70f71, 0x70f97}, {0x70f99, 0x70fbc}, {0x70fbe, 0x70fcc}, + {0x70fce, 0x70fda}, {0x71000, 0x710c5}, {0x710d0, 0x71248}, {0x7124a, 0x7124d}, + {0x71250, 0x71256}, {0x7125a, 0x7125d}, {0x71260, 0x71288}, {0x7128a, 0x7128d}, + {0x71290, 0x712b0}, {0x712b2, 0x712b5}, {0x712b8, 0x712be}, {0x712c2, 0x712c5}, + {0x712c8, 0x712d6}, {0x712d8, 0x71310}, {0x71312, 0x71315}, {0x71318, 0x7135a}, + {0x7135d, 0x7137c}, {0x71380, 0x71399}, {0x713a0, 0x713f5}, {0x713f8, 0x713fd}, + {0x71400, 0x7167f}, {0x71681, 0x7169c}, {0x716a0, 0x716f8}, {0x71700, 0x7170c}, + {0x7170e, 0x71714}, {0x71720, 0x71736}, {0x71740, 0x71753}, {0x71760, 0x7176c}, + {0x7176e, 0x71770}, {0x71780, 0x717dd}, {0x717e0, 0x717e9}, {0x717f0, 0x717f9}, + {0x71800, 0x7180d}, {0x71810, 0x71819}, {0x71820, 0x71877}, {0x71880, 0x718aa}, + {0x718b0, 0x718f5}, {0x71900, 0x7191e}, {0x71920, 0x7192b}, {0x71930, 0x7193b}, + {0x71944, 0x7196d}, {0x71970, 0x71974}, {0x71980, 0x719ab}, {0x719b0, 0x719c9}, + {0x719d0, 0x719da}, {0x719de, 0x71a1b}, {0x71a1e, 0x71a5e}, {0x71a60, 0x71a7c}, + {0x71a7f, 0x71a89}, {0x71a90, 0x71a99}, {0x71aa0, 0x71aad}, {0x71ab0, 0x71abe}, + {0x71b00, 0x71b4b}, {0x71b50, 0x71b7c}, {0x71b80, 0x71bf3}, {0x71bfc, 0x71c37}, + {0x71c3b, 0x71c49}, {0x71c4d, 0x71c88}, {0x71cc0, 0x71cc7}, {0x71cd0, 0x71cf9}, + {0x71d00, 0x71df9}, {0x71dfb, 0x71f15}, {0x71f18, 0x71f1d}, {0x71f20, 0x71f45}, + {0x71f48, 0x71f4d}, {0x71f50, 0x71f57}, {0x71f5f, 0x71f7d}, {0x71f80, 0x71fb4}, + {0x71fb6, 0x71fc4}, {0x71fc6, 0x71fd3}, {0x71fd6, 0x71fdb}, {0x71fdd, 0x71fef}, + {0x71ff2, 0x71ff4}, {0x71ff6, 0x71ffe}, {0x72010, 0x72027}, {0x72030, 0x7205e}, + {0x72074, 0x7208e}, {0x72090, 0x7209c}, {0x720a0, 0x720bf}, {0x720d0, 0x720f0}, + {0x72100, 0x7218b}, {0x72190, 0x72426}, {0x72440, 0x7244a}, {0x72460, 0x72b73}, + {0x72b76, 0x72b95}, {0x72b98, 0x72bb9}, {0x72bbd, 0x72bc8}, {0x72bca, 0x72bd2}, + {0x72bec, 0x72bef}, {0x72c00, 0x72c2e}, {0x72c30, 0x72c5e}, {0x72c60, 0x72cf3}, + {0x72cf9, 0x72d25}, {0x72d30, 0x72d67}, {0x72d7f, 0x72d96}, {0x72da0, 0x72da6}, + {0x72da8, 0x72dae}, {0x72db0, 0x72db6}, {0x72db8, 0x72dbe}, {0x72dc0, 0x72dc6}, + {0x72dc8, 0x72dce}, {0x72dd0, 0x72dd6}, {0x72dd8, 0x72dde}, {0x72de0, 0x72e49}, + {0x72e80, 0x72e99}, {0x72e9b, 0x72ef3}, {0x72f00, 0x72fd5}, {0x72ff0, 0x72ffb}, + {0x73001, 0x7303f}, {0x73041, 0x73096}, {0x73099, 0x730ff}, {0x73105, 0x7312e}, + {0x73131, 0x7318e}, {0x73190, 0x731ba}, {0x731c0, 0x731e3}, {0x731f0, 0x7321e}, + {0x73220, 0x732fe}, {0x73300, 0x74db5}, {0x74dc0, 0x79fea}, {0x7a000, 0x7a48c}, + {0x7a490, 0x7a4c6}, {0x7a4d0, 0x7a62b}, {0x7a640, 0x7a6f7}, {0x7a700, 0x7a7ae}, + {0x7a7b0, 0x7a7b7}, {0x7a7f7, 0x7a82b}, {0x7a830, 0x7a839}, {0x7a840, 0x7a877}, + {0x7a880, 0x7a8c5}, {0x7a8ce, 0x7a8d9}, {0x7a8e0, 0x7a8fd}, {0x7a900, 0x7a953}, + {0x7a95f, 0x7a97c}, {0x7a980, 0x7a9cd}, {0x7a9cf, 0x7a9d9}, {0x7a9de, 0x7a9fe}, + {0x7aa00, 0x7aa36}, {0x7aa40, 0x7aa4d}, {0x7aa50, 0x7aa59}, {0x7aa5c, 0x7aac2}, + {0x7aadb, 0x7aaf6}, {0x7ab01, 0x7ab06}, {0x7ab09, 0x7ab0e}, {0x7ab11, 0x7ab16}, + {0x7ab20, 0x7ab26}, {0x7ab28, 0x7ab2e}, {0x7ab30, 0x7ab65}, {0x7ab70, 0x7abed}, + {0x7abf0, 0x7abf9}, {0x7ac00, 0x7d7a3}, {0x7d7b0, 0x7d7c6}, {0x7d7cb, 0x7d7fb}, + {0x7f900, 0x7fa6d}, {0x7fa70, 0x7fad9}, {0x7fb00, 0x7fb06}, {0x7fb13, 0x7fb17}, + {0x7fb1d, 0x7fb36}, {0x7fb38, 0x7fb3c}, {0x7fb46, 0x7fbc1}, {0x7fbd3, 0x7fd3f}, + {0x7fd50, 0x7fd8f}, {0x7fd92, 0x7fdc7}, {0x7fdf0, 0x7fdfd}, {0x7fe00, 0x7fe19}, + {0x7fe20, 0x7fe52}, {0x7fe54, 0x7fe66}, {0x7fe68, 0x7fe6b}, {0x7fe70, 0x7fe74}, + {0x7fe76, 0x7fefc}, {0x7ff01, 0x7ffbe}, {0x7ffc2, 0x7ffc7}, {0x7ffca, 0x7ffcf}, + {0x7ffd2, 0x7ffd7}, {0x7ffda, 0x7ffdc}, {0x7ffe0, 0x7ffe6}, {0x7ffe8, 0x7ffee}, + {0x80021, 0x8007e}, {0x800a1, 0x800ac}, {0x800ae, 0x80377}, {0x8037a, 0x8037f}, + {0x80384, 0x8038a}, {0x8038e, 0x803a1}, {0x803a3, 0x8052f}, {0x80531, 0x80556}, + {0x80559, 0x8055f}, {0x80561, 0x80587}, {0x8058d, 0x8058f}, {0x80591, 0x805c7}, + {0x805d0, 0x805ea}, {0x805f0, 0x805f4}, {0x80606, 0x8061b}, {0x8061e, 0x806dc}, + {0x806de, 0x8070d}, {0x80710, 0x8074a}, {0x8074d, 0x807b1}, {0x807c0, 0x807fa}, + {0x80800, 0x8082d}, {0x80830, 0x8083e}, {0x80840, 0x8085b}, {0x80860, 0x8086a}, + {0x808a0, 0x808b4}, {0x808b6, 0x808bd}, {0x808d4, 0x808e1}, {0x808e3, 0x80983}, + {0x80985, 0x8098c}, {0x80993, 0x809a8}, {0x809aa, 0x809b0}, {0x809b6, 0x809b9}, + {0x809bc, 0x809c4}, {0x809cb, 0x809ce}, {0x809df, 0x809e3}, {0x809e6, 0x809fd}, + {0x80a01, 0x80a03}, {0x80a05, 0x80a0a}, {0x80a13, 0x80a28}, {0x80a2a, 0x80a30}, + {0x80a3e, 0x80a42}, {0x80a4b, 0x80a4d}, {0x80a59, 0x80a5c}, {0x80a66, 0x80a75}, + {0x80a81, 0x80a83}, {0x80a85, 0x80a8d}, {0x80a8f, 0x80a91}, {0x80a93, 0x80aa8}, + {0x80aaa, 0x80ab0}, {0x80ab5, 0x80ab9}, {0x80abc, 0x80ac5}, {0x80ac7, 0x80ac9}, + {0x80acb, 0x80acd}, {0x80ae0, 0x80ae3}, {0x80ae6, 0x80af1}, {0x80af9, 0x80aff}, + {0x80b01, 0x80b03}, {0x80b05, 0x80b0c}, {0x80b13, 0x80b28}, {0x80b2a, 0x80b30}, + {0x80b35, 0x80b39}, {0x80b3c, 0x80b44}, {0x80b4b, 0x80b4d}, {0x80b5f, 0x80b63}, + {0x80b66, 0x80b77}, {0x80b85, 0x80b8a}, {0x80b8e, 0x80b90}, {0x80b92, 0x80b95}, + {0x80ba8, 0x80baa}, {0x80bae, 0x80bb9}, {0x80bbe, 0x80bc2}, {0x80bc6, 0x80bc8}, + {0x80bca, 0x80bcd}, {0x80be6, 0x80bfa}, {0x80c00, 0x80c03}, {0x80c05, 0x80c0c}, + {0x80c0e, 0x80c10}, {0x80c12, 0x80c28}, {0x80c2a, 0x80c39}, {0x80c3d, 0x80c44}, + {0x80c46, 0x80c48}, {0x80c4a, 0x80c4d}, {0x80c58, 0x80c5a}, {0x80c60, 0x80c63}, + {0x80c66, 0x80c6f}, {0x80c78, 0x80c83}, {0x80c85, 0x80c8c}, {0x80c8e, 0x80c90}, + {0x80c92, 0x80ca8}, {0x80caa, 0x80cb3}, {0x80cb5, 0x80cb9}, {0x80cbc, 0x80cc4}, + {0x80cc6, 0x80cc8}, {0x80cca, 0x80ccd}, {0x80ce0, 0x80ce3}, {0x80ce6, 0x80cef}, + {0x80d00, 0x80d03}, {0x80d05, 0x80d0c}, {0x80d0e, 0x80d10}, {0x80d12, 0x80d44}, + {0x80d46, 0x80d48}, {0x80d4a, 0x80d4f}, {0x80d54, 0x80d63}, {0x80d66, 0x80d7f}, + {0x80d85, 0x80d96}, {0x80d9a, 0x80db1}, {0x80db3, 0x80dbb}, {0x80dc0, 0x80dc6}, + {0x80dcf, 0x80dd4}, {0x80dd8, 0x80ddf}, {0x80de6, 0x80def}, {0x80df2, 0x80df4}, + {0x80e01, 0x80e3a}, {0x80e3f, 0x80e5b}, {0x80e94, 0x80e97}, {0x80e99, 0x80e9f}, + {0x80ea1, 0x80ea3}, {0x80ead, 0x80eb9}, {0x80ebb, 0x80ebd}, {0x80ec0, 0x80ec4}, + {0x80ec8, 0x80ecd}, {0x80ed0, 0x80ed9}, {0x80edc, 0x80edf}, {0x80f00, 0x80f47}, + {0x80f49, 0x80f6c}, {0x80f71, 0x80f97}, {0x80f99, 0x80fbc}, {0x80fbe, 0x80fcc}, + {0x80fce, 0x80fda}, {0x81000, 0x810c5}, {0x810d0, 0x81248}, {0x8124a, 0x8124d}, + {0x81250, 0x81256}, {0x8125a, 0x8125d}, {0x81260, 0x81288}, {0x8128a, 0x8128d}, + {0x81290, 0x812b0}, {0x812b2, 0x812b5}, {0x812b8, 0x812be}, {0x812c2, 0x812c5}, + {0x812c8, 0x812d6}, {0x812d8, 0x81310}, {0x81312, 0x81315}, {0x81318, 0x8135a}, + {0x8135d, 0x8137c}, {0x81380, 0x81399}, {0x813a0, 0x813f5}, {0x813f8, 0x813fd}, + {0x81400, 0x8167f}, {0x81681, 0x8169c}, {0x816a0, 0x816f8}, {0x81700, 0x8170c}, + {0x8170e, 0x81714}, {0x81720, 0x81736}, {0x81740, 0x81753}, {0x81760, 0x8176c}, + {0x8176e, 0x81770}, {0x81780, 0x817dd}, {0x817e0, 0x817e9}, {0x817f0, 0x817f9}, + {0x81800, 0x8180d}, {0x81810, 0x81819}, {0x81820, 0x81877}, {0x81880, 0x818aa}, + {0x818b0, 0x818f5}, {0x81900, 0x8191e}, {0x81920, 0x8192b}, {0x81930, 0x8193b}, + {0x81944, 0x8196d}, {0x81970, 0x81974}, {0x81980, 0x819ab}, {0x819b0, 0x819c9}, + {0x819d0, 0x819da}, {0x819de, 0x81a1b}, {0x81a1e, 0x81a5e}, {0x81a60, 0x81a7c}, + {0x81a7f, 0x81a89}, {0x81a90, 0x81a99}, {0x81aa0, 0x81aad}, {0x81ab0, 0x81abe}, + {0x81b00, 0x81b4b}, {0x81b50, 0x81b7c}, {0x81b80, 0x81bf3}, {0x81bfc, 0x81c37}, + {0x81c3b, 0x81c49}, {0x81c4d, 0x81c88}, {0x81cc0, 0x81cc7}, {0x81cd0, 0x81cf9}, + {0x81d00, 0x81df9}, {0x81dfb, 0x81f15}, {0x81f18, 0x81f1d}, {0x81f20, 0x81f45}, + {0x81f48, 0x81f4d}, {0x81f50, 0x81f57}, {0x81f5f, 0x81f7d}, {0x81f80, 0x81fb4}, + {0x81fb6, 0x81fc4}, {0x81fc6, 0x81fd3}, {0x81fd6, 0x81fdb}, {0x81fdd, 0x81fef}, + {0x81ff2, 0x81ff4}, {0x81ff6, 0x81ffe}, {0x82010, 0x82027}, {0x82030, 0x8205e}, + {0x82074, 0x8208e}, {0x82090, 0x8209c}, {0x820a0, 0x820bf}, {0x820d0, 0x820f0}, + {0x82100, 0x8218b}, {0x82190, 0x82426}, {0x82440, 0x8244a}, {0x82460, 0x82b73}, + {0x82b76, 0x82b95}, {0x82b98, 0x82bb9}, {0x82bbd, 0x82bc8}, {0x82bca, 0x82bd2}, + {0x82bec, 0x82bef}, {0x82c00, 0x82c2e}, {0x82c30, 0x82c5e}, {0x82c60, 0x82cf3}, + {0x82cf9, 0x82d25}, {0x82d30, 0x82d67}, {0x82d7f, 0x82d96}, {0x82da0, 0x82da6}, + {0x82da8, 0x82dae}, {0x82db0, 0x82db6}, {0x82db8, 0x82dbe}, {0x82dc0, 0x82dc6}, + {0x82dc8, 0x82dce}, {0x82dd0, 0x82dd6}, {0x82dd8, 0x82dde}, {0x82de0, 0x82e49}, + {0x82e80, 0x82e99}, {0x82e9b, 0x82ef3}, {0x82f00, 0x82fd5}, {0x82ff0, 0x82ffb}, + {0x83001, 0x8303f}, {0x83041, 0x83096}, {0x83099, 0x830ff}, {0x83105, 0x8312e}, + {0x83131, 0x8318e}, {0x83190, 0x831ba}, {0x831c0, 0x831e3}, {0x831f0, 0x8321e}, + {0x83220, 0x832fe}, {0x83300, 0x84db5}, {0x84dc0, 0x89fea}, {0x8a000, 0x8a48c}, + {0x8a490, 0x8a4c6}, {0x8a4d0, 0x8a62b}, {0x8a640, 0x8a6f7}, {0x8a700, 0x8a7ae}, + {0x8a7b0, 0x8a7b7}, {0x8a7f7, 0x8a82b}, {0x8a830, 0x8a839}, {0x8a840, 0x8a877}, + {0x8a880, 0x8a8c5}, {0x8a8ce, 0x8a8d9}, {0x8a8e0, 0x8a8fd}, {0x8a900, 0x8a953}, + {0x8a95f, 0x8a97c}, {0x8a980, 0x8a9cd}, {0x8a9cf, 0x8a9d9}, {0x8a9de, 0x8a9fe}, + {0x8aa00, 0x8aa36}, {0x8aa40, 0x8aa4d}, {0x8aa50, 0x8aa59}, {0x8aa5c, 0x8aac2}, + {0x8aadb, 0x8aaf6}, {0x8ab01, 0x8ab06}, {0x8ab09, 0x8ab0e}, {0x8ab11, 0x8ab16}, + {0x8ab20, 0x8ab26}, {0x8ab28, 0x8ab2e}, {0x8ab30, 0x8ab65}, {0x8ab70, 0x8abed}, + {0x8abf0, 0x8abf9}, {0x8ac00, 0x8d7a3}, {0x8d7b0, 0x8d7c6}, {0x8d7cb, 0x8d7fb}, + {0x8f900, 0x8fa6d}, {0x8fa70, 0x8fad9}, {0x8fb00, 0x8fb06}, {0x8fb13, 0x8fb17}, + {0x8fb1d, 0x8fb36}, {0x8fb38, 0x8fb3c}, {0x8fb46, 0x8fbc1}, {0x8fbd3, 0x8fd3f}, + {0x8fd50, 0x8fd8f}, {0x8fd92, 0x8fdc7}, {0x8fdf0, 0x8fdfd}, {0x8fe00, 0x8fe19}, + {0x8fe20, 0x8fe52}, {0x8fe54, 0x8fe66}, {0x8fe68, 0x8fe6b}, {0x8fe70, 0x8fe74}, + {0x8fe76, 0x8fefc}, {0x8ff01, 0x8ffbe}, {0x8ffc2, 0x8ffc7}, {0x8ffca, 0x8ffcf}, + {0x8ffd2, 0x8ffd7}, {0x8ffda, 0x8ffdc}, {0x8ffe0, 0x8ffe6}, {0x8ffe8, 0x8ffee}, + {0x90021, 0x9007e}, {0x900a1, 0x900ac}, {0x900ae, 0x90377}, {0x9037a, 0x9037f}, + {0x90384, 0x9038a}, {0x9038e, 0x903a1}, {0x903a3, 0x9052f}, {0x90531, 0x90556}, + {0x90559, 0x9055f}, {0x90561, 0x90587}, {0x9058d, 0x9058f}, {0x90591, 0x905c7}, + {0x905d0, 0x905ea}, {0x905f0, 0x905f4}, {0x90606, 0x9061b}, {0x9061e, 0x906dc}, + {0x906de, 0x9070d}, {0x90710, 0x9074a}, {0x9074d, 0x907b1}, {0x907c0, 0x907fa}, + {0x90800, 0x9082d}, {0x90830, 0x9083e}, {0x90840, 0x9085b}, {0x90860, 0x9086a}, + {0x908a0, 0x908b4}, {0x908b6, 0x908bd}, {0x908d4, 0x908e1}, {0x908e3, 0x90983}, + {0x90985, 0x9098c}, {0x90993, 0x909a8}, {0x909aa, 0x909b0}, {0x909b6, 0x909b9}, + {0x909bc, 0x909c4}, {0x909cb, 0x909ce}, {0x909df, 0x909e3}, {0x909e6, 0x909fd}, + {0x90a01, 0x90a03}, {0x90a05, 0x90a0a}, {0x90a13, 0x90a28}, {0x90a2a, 0x90a30}, + {0x90a3e, 0x90a42}, {0x90a4b, 0x90a4d}, {0x90a59, 0x90a5c}, {0x90a66, 0x90a75}, + {0x90a81, 0x90a83}, {0x90a85, 0x90a8d}, {0x90a8f, 0x90a91}, {0x90a93, 0x90aa8}, + {0x90aaa, 0x90ab0}, {0x90ab5, 0x90ab9}, {0x90abc, 0x90ac5}, {0x90ac7, 0x90ac9}, + {0x90acb, 0x90acd}, {0x90ae0, 0x90ae3}, {0x90ae6, 0x90af1}, {0x90af9, 0x90aff}, + {0x90b01, 0x90b03}, {0x90b05, 0x90b0c}, {0x90b13, 0x90b28}, {0x90b2a, 0x90b30}, + {0x90b35, 0x90b39}, {0x90b3c, 0x90b44}, {0x90b4b, 0x90b4d}, {0x90b5f, 0x90b63}, + {0x90b66, 0x90b77}, {0x90b85, 0x90b8a}, {0x90b8e, 0x90b90}, {0x90b92, 0x90b95}, + {0x90ba8, 0x90baa}, {0x90bae, 0x90bb9}, {0x90bbe, 0x90bc2}, {0x90bc6, 0x90bc8}, + {0x90bca, 0x90bcd}, {0x90be6, 0x90bfa}, {0x90c00, 0x90c03}, {0x90c05, 0x90c0c}, + {0x90c0e, 0x90c10}, {0x90c12, 0x90c28}, {0x90c2a, 0x90c39}, {0x90c3d, 0x90c44}, + {0x90c46, 0x90c48}, {0x90c4a, 0x90c4d}, {0x90c58, 0x90c5a}, {0x90c60, 0x90c63}, + {0x90c66, 0x90c6f}, {0x90c78, 0x90c83}, {0x90c85, 0x90c8c}, {0x90c8e, 0x90c90}, + {0x90c92, 0x90ca8}, {0x90caa, 0x90cb3}, {0x90cb5, 0x90cb9}, {0x90cbc, 0x90cc4}, + {0x90cc6, 0x90cc8}, {0x90cca, 0x90ccd}, {0x90ce0, 0x90ce3}, {0x90ce6, 0x90cef}, + {0x90d00, 0x90d03}, {0x90d05, 0x90d0c}, {0x90d0e, 0x90d10}, {0x90d12, 0x90d44}, + {0x90d46, 0x90d48}, {0x90d4a, 0x90d4f}, {0x90d54, 0x90d63}, {0x90d66, 0x90d7f}, + {0x90d85, 0x90d96}, {0x90d9a, 0x90db1}, {0x90db3, 0x90dbb}, {0x90dc0, 0x90dc6}, + {0x90dcf, 0x90dd4}, {0x90dd8, 0x90ddf}, {0x90de6, 0x90def}, {0x90df2, 0x90df4}, + {0x90e01, 0x90e3a}, {0x90e3f, 0x90e5b}, {0x90e94, 0x90e97}, {0x90e99, 0x90e9f}, + {0x90ea1, 0x90ea3}, {0x90ead, 0x90eb9}, {0x90ebb, 0x90ebd}, {0x90ec0, 0x90ec4}, + {0x90ec8, 0x90ecd}, {0x90ed0, 0x90ed9}, {0x90edc, 0x90edf}, {0x90f00, 0x90f47}, + {0x90f49, 0x90f6c}, {0x90f71, 0x90f97}, {0x90f99, 0x90fbc}, {0x90fbe, 0x90fcc}, + {0x90fce, 0x90fda}, {0x91000, 0x910c5}, {0x910d0, 0x91248}, {0x9124a, 0x9124d}, + {0x91250, 0x91256}, {0x9125a, 0x9125d}, {0x91260, 0x91288}, {0x9128a, 0x9128d}, + {0x91290, 0x912b0}, {0x912b2, 0x912b5}, {0x912b8, 0x912be}, {0x912c2, 0x912c5}, + {0x912c8, 0x912d6}, {0x912d8, 0x91310}, {0x91312, 0x91315}, {0x91318, 0x9135a}, + {0x9135d, 0x9137c}, {0x91380, 0x91399}, {0x913a0, 0x913f5}, {0x913f8, 0x913fd}, + {0x91400, 0x9167f}, {0x91681, 0x9169c}, {0x916a0, 0x916f8}, {0x91700, 0x9170c}, + {0x9170e, 0x91714}, {0x91720, 0x91736}, {0x91740, 0x91753}, {0x91760, 0x9176c}, + {0x9176e, 0x91770}, {0x91780, 0x917dd}, {0x917e0, 0x917e9}, {0x917f0, 0x917f9}, + {0x91800, 0x9180d}, {0x91810, 0x91819}, {0x91820, 0x91877}, {0x91880, 0x918aa}, + {0x918b0, 0x918f5}, {0x91900, 0x9191e}, {0x91920, 0x9192b}, {0x91930, 0x9193b}, + {0x91944, 0x9196d}, {0x91970, 0x91974}, {0x91980, 0x919ab}, {0x919b0, 0x919c9}, + {0x919d0, 0x919da}, {0x919de, 0x91a1b}, {0x91a1e, 0x91a5e}, {0x91a60, 0x91a7c}, + {0x91a7f, 0x91a89}, {0x91a90, 0x91a99}, {0x91aa0, 0x91aad}, {0x91ab0, 0x91abe}, + {0x91b00, 0x91b4b}, {0x91b50, 0x91b7c}, {0x91b80, 0x91bf3}, {0x91bfc, 0x91c37}, + {0x91c3b, 0x91c49}, {0x91c4d, 0x91c88}, {0x91cc0, 0x91cc7}, {0x91cd0, 0x91cf9}, + {0x91d00, 0x91df9}, {0x91dfb, 0x91f15}, {0x91f18, 0x91f1d}, {0x91f20, 0x91f45}, + {0x91f48, 0x91f4d}, {0x91f50, 0x91f57}, {0x91f5f, 0x91f7d}, {0x91f80, 0x91fb4}, + {0x91fb6, 0x91fc4}, {0x91fc6, 0x91fd3}, {0x91fd6, 0x91fdb}, {0x91fdd, 0x91fef}, + {0x91ff2, 0x91ff4}, {0x91ff6, 0x91ffe}, {0x92010, 0x92027}, {0x92030, 0x9205e}, + {0x92074, 0x9208e}, {0x92090, 0x9209c}, {0x920a0, 0x920bf}, {0x920d0, 0x920f0}, + {0x92100, 0x9218b}, {0x92190, 0x92426}, {0x92440, 0x9244a}, {0x92460, 0x92b73}, + {0x92b76, 0x92b95}, {0x92b98, 0x92bb9}, {0x92bbd, 0x92bc8}, {0x92bca, 0x92bd2}, + {0x92bec, 0x92bef}, {0x92c00, 0x92c2e}, {0x92c30, 0x92c5e}, {0x92c60, 0x92cf3}, + {0x92cf9, 0x92d25}, {0x92d30, 0x92d67}, {0x92d7f, 0x92d96}, {0x92da0, 0x92da6}, + {0x92da8, 0x92dae}, {0x92db0, 0x92db6}, {0x92db8, 0x92dbe}, {0x92dc0, 0x92dc6}, + {0x92dc8, 0x92dce}, {0x92dd0, 0x92dd6}, {0x92dd8, 0x92dde}, {0x92de0, 0x92e49}, + {0x92e80, 0x92e99}, {0x92e9b, 0x92ef3}, {0x92f00, 0x92fd5}, {0x92ff0, 0x92ffb}, + {0x93001, 0x9303f}, {0x93041, 0x93096}, {0x93099, 0x930ff}, {0x93105, 0x9312e}, + {0x93131, 0x9318e}, {0x93190, 0x931ba}, {0x931c0, 0x931e3}, {0x931f0, 0x9321e}, + {0x93220, 0x932fe}, {0x93300, 0x94db5}, {0x94dc0, 0x99fea}, {0x9a000, 0x9a48c}, + {0x9a490, 0x9a4c6}, {0x9a4d0, 0x9a62b}, {0x9a640, 0x9a6f7}, {0x9a700, 0x9a7ae}, + {0x9a7b0, 0x9a7b7}, {0x9a7f7, 0x9a82b}, {0x9a830, 0x9a839}, {0x9a840, 0x9a877}, + {0x9a880, 0x9a8c5}, {0x9a8ce, 0x9a8d9}, {0x9a8e0, 0x9a8fd}, {0x9a900, 0x9a953}, + {0x9a95f, 0x9a97c}, {0x9a980, 0x9a9cd}, {0x9a9cf, 0x9a9d9}, {0x9a9de, 0x9a9fe}, + {0x9aa00, 0x9aa36}, {0x9aa40, 0x9aa4d}, {0x9aa50, 0x9aa59}, {0x9aa5c, 0x9aac2}, + {0x9aadb, 0x9aaf6}, {0x9ab01, 0x9ab06}, {0x9ab09, 0x9ab0e}, {0x9ab11, 0x9ab16}, + {0x9ab20, 0x9ab26}, {0x9ab28, 0x9ab2e}, {0x9ab30, 0x9ab65}, {0x9ab70, 0x9abed}, + {0x9abf0, 0x9abf9}, {0x9ac00, 0x9d7a3}, {0x9d7b0, 0x9d7c6}, {0x9d7cb, 0x9d7fb}, + {0x9f900, 0x9fa6d}, {0x9fa70, 0x9fad9}, {0x9fb00, 0x9fb06}, {0x9fb13, 0x9fb17}, + {0x9fb1d, 0x9fb36}, {0x9fb38, 0x9fb3c}, {0x9fb46, 0x9fbc1}, {0x9fbd3, 0x9fd3f}, + {0x9fd50, 0x9fd8f}, {0x9fd92, 0x9fdc7}, {0x9fdf0, 0x9fdfd}, {0x9fe00, 0x9fe19}, + {0x9fe20, 0x9fe52}, {0x9fe54, 0x9fe66}, {0x9fe68, 0x9fe6b}, {0x9fe70, 0x9fe74}, + {0x9fe76, 0x9fefc}, {0x9ff01, 0x9ffbe}, {0x9ffc2, 0x9ffc7}, {0x9ffca, 0x9ffcf}, + {0x9ffd2, 0x9ffd7}, {0x9ffda, 0x9ffdc}, {0x9ffe0, 0x9ffe6}, {0x9ffe8, 0x9ffee}, + {0xa0021, 0xa007e}, {0xa00a1, 0xa00ac}, {0xa00ae, 0xa0377}, {0xa037a, 0xa037f}, + {0xa0384, 0xa038a}, {0xa038e, 0xa03a1}, {0xa03a3, 0xa052f}, {0xa0531, 0xa0556}, + {0xa0559, 0xa055f}, {0xa0561, 0xa0587}, {0xa058d, 0xa058f}, {0xa0591, 0xa05c7}, + {0xa05d0, 0xa05ea}, {0xa05f0, 0xa05f4}, {0xa0606, 0xa061b}, {0xa061e, 0xa06dc}, + {0xa06de, 0xa070d}, {0xa0710, 0xa074a}, {0xa074d, 0xa07b1}, {0xa07c0, 0xa07fa}, + {0xa0800, 0xa082d}, {0xa0830, 0xa083e}, {0xa0840, 0xa085b}, {0xa0860, 0xa086a}, + {0xa08a0, 0xa08b4}, {0xa08b6, 0xa08bd}, {0xa08d4, 0xa08e1}, {0xa08e3, 0xa0983}, + {0xa0985, 0xa098c}, {0xa0993, 0xa09a8}, {0xa09aa, 0xa09b0}, {0xa09b6, 0xa09b9}, + {0xa09bc, 0xa09c4}, {0xa09cb, 0xa09ce}, {0xa09df, 0xa09e3}, {0xa09e6, 0xa09fd}, + {0xa0a01, 0xa0a03}, {0xa0a05, 0xa0a0a}, {0xa0a13, 0xa0a28}, {0xa0a2a, 0xa0a30}, + {0xa0a3e, 0xa0a42}, {0xa0a4b, 0xa0a4d}, {0xa0a59, 0xa0a5c}, {0xa0a66, 0xa0a75}, + {0xa0a81, 0xa0a83}, {0xa0a85, 0xa0a8d}, {0xa0a8f, 0xa0a91}, {0xa0a93, 0xa0aa8}, + {0xa0aaa, 0xa0ab0}, {0xa0ab5, 0xa0ab9}, {0xa0abc, 0xa0ac5}, {0xa0ac7, 0xa0ac9}, + {0xa0acb, 0xa0acd}, {0xa0ae0, 0xa0ae3}, {0xa0ae6, 0xa0af1}, {0xa0af9, 0xa0aff}, + {0xa0b01, 0xa0b03}, {0xa0b05, 0xa0b0c}, {0xa0b13, 0xa0b28}, {0xa0b2a, 0xa0b30}, + {0xa0b35, 0xa0b39}, {0xa0b3c, 0xa0b44}, {0xa0b4b, 0xa0b4d}, {0xa0b5f, 0xa0b63}, + {0xa0b66, 0xa0b77}, {0xa0b85, 0xa0b8a}, {0xa0b8e, 0xa0b90}, {0xa0b92, 0xa0b95}, + {0xa0ba8, 0xa0baa}, {0xa0bae, 0xa0bb9}, {0xa0bbe, 0xa0bc2}, {0xa0bc6, 0xa0bc8}, + {0xa0bca, 0xa0bcd}, {0xa0be6, 0xa0bfa}, {0xa0c00, 0xa0c03}, {0xa0c05, 0xa0c0c}, + {0xa0c0e, 0xa0c10}, {0xa0c12, 0xa0c28}, {0xa0c2a, 0xa0c39}, {0xa0c3d, 0xa0c44}, + {0xa0c46, 0xa0c48}, {0xa0c4a, 0xa0c4d}, {0xa0c58, 0xa0c5a}, {0xa0c60, 0xa0c63}, + {0xa0c66, 0xa0c6f}, {0xa0c78, 0xa0c83}, {0xa0c85, 0xa0c8c}, {0xa0c8e, 0xa0c90}, + {0xa0c92, 0xa0ca8}, {0xa0caa, 0xa0cb3}, {0xa0cb5, 0xa0cb9}, {0xa0cbc, 0xa0cc4}, + {0xa0cc6, 0xa0cc8}, {0xa0cca, 0xa0ccd}, {0xa0ce0, 0xa0ce3}, {0xa0ce6, 0xa0cef}, + {0xa0d00, 0xa0d03}, {0xa0d05, 0xa0d0c}, {0xa0d0e, 0xa0d10}, {0xa0d12, 0xa0d44}, + {0xa0d46, 0xa0d48}, {0xa0d4a, 0xa0d4f}, {0xa0d54, 0xa0d63}, {0xa0d66, 0xa0d7f}, + {0xa0d85, 0xa0d96}, {0xa0d9a, 0xa0db1}, {0xa0db3, 0xa0dbb}, {0xa0dc0, 0xa0dc6}, + {0xa0dcf, 0xa0dd4}, {0xa0dd8, 0xa0ddf}, {0xa0de6, 0xa0def}, {0xa0df2, 0xa0df4}, + {0xa0e01, 0xa0e3a}, {0xa0e3f, 0xa0e5b}, {0xa0e94, 0xa0e97}, {0xa0e99, 0xa0e9f}, + {0xa0ea1, 0xa0ea3}, {0xa0ead, 0xa0eb9}, {0xa0ebb, 0xa0ebd}, {0xa0ec0, 0xa0ec4}, + {0xa0ec8, 0xa0ecd}, {0xa0ed0, 0xa0ed9}, {0xa0edc, 0xa0edf}, {0xa0f00, 0xa0f47}, + {0xa0f49, 0xa0f6c}, {0xa0f71, 0xa0f97}, {0xa0f99, 0xa0fbc}, {0xa0fbe, 0xa0fcc}, + {0xa0fce, 0xa0fda}, {0xa1000, 0xa10c5}, {0xa10d0, 0xa1248}, {0xa124a, 0xa124d}, + {0xa1250, 0xa1256}, {0xa125a, 0xa125d}, {0xa1260, 0xa1288}, {0xa128a, 0xa128d}, + {0xa1290, 0xa12b0}, {0xa12b2, 0xa12b5}, {0xa12b8, 0xa12be}, {0xa12c2, 0xa12c5}, + {0xa12c8, 0xa12d6}, {0xa12d8, 0xa1310}, {0xa1312, 0xa1315}, {0xa1318, 0xa135a}, + {0xa135d, 0xa137c}, {0xa1380, 0xa1399}, {0xa13a0, 0xa13f5}, {0xa13f8, 0xa13fd}, + {0xa1400, 0xa167f}, {0xa1681, 0xa169c}, {0xa16a0, 0xa16f8}, {0xa1700, 0xa170c}, + {0xa170e, 0xa1714}, {0xa1720, 0xa1736}, {0xa1740, 0xa1753}, {0xa1760, 0xa176c}, + {0xa176e, 0xa1770}, {0xa1780, 0xa17dd}, {0xa17e0, 0xa17e9}, {0xa17f0, 0xa17f9}, + {0xa1800, 0xa180d}, {0xa1810, 0xa1819}, {0xa1820, 0xa1877}, {0xa1880, 0xa18aa}, + {0xa18b0, 0xa18f5}, {0xa1900, 0xa191e}, {0xa1920, 0xa192b}, {0xa1930, 0xa193b}, + {0xa1944, 0xa196d}, {0xa1970, 0xa1974}, {0xa1980, 0xa19ab}, {0xa19b0, 0xa19c9}, + {0xa19d0, 0xa19da}, {0xa19de, 0xa1a1b}, {0xa1a1e, 0xa1a5e}, {0xa1a60, 0xa1a7c}, + {0xa1a7f, 0xa1a89}, {0xa1a90, 0xa1a99}, {0xa1aa0, 0xa1aad}, {0xa1ab0, 0xa1abe}, + {0xa1b00, 0xa1b4b}, {0xa1b50, 0xa1b7c}, {0xa1b80, 0xa1bf3}, {0xa1bfc, 0xa1c37}, + {0xa1c3b, 0xa1c49}, {0xa1c4d, 0xa1c88}, {0xa1cc0, 0xa1cc7}, {0xa1cd0, 0xa1cf9}, + {0xa1d00, 0xa1df9}, {0xa1dfb, 0xa1f15}, {0xa1f18, 0xa1f1d}, {0xa1f20, 0xa1f45}, + {0xa1f48, 0xa1f4d}, {0xa1f50, 0xa1f57}, {0xa1f5f, 0xa1f7d}, {0xa1f80, 0xa1fb4}, + {0xa1fb6, 0xa1fc4}, {0xa1fc6, 0xa1fd3}, {0xa1fd6, 0xa1fdb}, {0xa1fdd, 0xa1fef}, + {0xa1ff2, 0xa1ff4}, {0xa1ff6, 0xa1ffe}, {0xa2010, 0xa2027}, {0xa2030, 0xa205e}, + {0xa2074, 0xa208e}, {0xa2090, 0xa209c}, {0xa20a0, 0xa20bf}, {0xa20d0, 0xa20f0}, + {0xa2100, 0xa218b}, {0xa2190, 0xa2426}, {0xa2440, 0xa244a}, {0xa2460, 0xa2b73}, + {0xa2b76, 0xa2b95}, {0xa2b98, 0xa2bb9}, {0xa2bbd, 0xa2bc8}, {0xa2bca, 0xa2bd2}, + {0xa2bec, 0xa2bef}, {0xa2c00, 0xa2c2e}, {0xa2c30, 0xa2c5e}, {0xa2c60, 0xa2cf3}, + {0xa2cf9, 0xa2d25}, {0xa2d30, 0xa2d67}, {0xa2d7f, 0xa2d96}, {0xa2da0, 0xa2da6}, + {0xa2da8, 0xa2dae}, {0xa2db0, 0xa2db6}, {0xa2db8, 0xa2dbe}, {0xa2dc0, 0xa2dc6}, + {0xa2dc8, 0xa2dce}, {0xa2dd0, 0xa2dd6}, {0xa2dd8, 0xa2dde}, {0xa2de0, 0xa2e49}, + {0xa2e80, 0xa2e99}, {0xa2e9b, 0xa2ef3}, {0xa2f00, 0xa2fd5}, {0xa2ff0, 0xa2ffb}, + {0xa3001, 0xa303f}, {0xa3041, 0xa3096}, {0xa3099, 0xa30ff}, {0xa3105, 0xa312e}, + {0xa3131, 0xa318e}, {0xa3190, 0xa31ba}, {0xa31c0, 0xa31e3}, {0xa31f0, 0xa321e}, + {0xa3220, 0xa32fe}, {0xa3300, 0xa4db5}, {0xa4dc0, 0xa9fea}, {0xaa000, 0xaa48c}, + {0xaa490, 0xaa4c6}, {0xaa4d0, 0xaa62b}, {0xaa640, 0xaa6f7}, {0xaa700, 0xaa7ae}, + {0xaa7b0, 0xaa7b7}, {0xaa7f7, 0xaa82b}, {0xaa830, 0xaa839}, {0xaa840, 0xaa877}, + {0xaa880, 0xaa8c5}, {0xaa8ce, 0xaa8d9}, {0xaa8e0, 0xaa8fd}, {0xaa900, 0xaa953}, + {0xaa95f, 0xaa97c}, {0xaa980, 0xaa9cd}, {0xaa9cf, 0xaa9d9}, {0xaa9de, 0xaa9fe}, + {0xaaa00, 0xaaa36}, {0xaaa40, 0xaaa4d}, {0xaaa50, 0xaaa59}, {0xaaa5c, 0xaaac2}, + {0xaaadb, 0xaaaf6}, {0xaab01, 0xaab06}, {0xaab09, 0xaab0e}, {0xaab11, 0xaab16}, + {0xaab20, 0xaab26}, {0xaab28, 0xaab2e}, {0xaab30, 0xaab65}, {0xaab70, 0xaabed}, + {0xaabf0, 0xaabf9}, {0xaac00, 0xad7a3}, {0xad7b0, 0xad7c6}, {0xad7cb, 0xad7fb}, + {0xaf900, 0xafa6d}, {0xafa70, 0xafad9}, {0xafb00, 0xafb06}, {0xafb13, 0xafb17}, + {0xafb1d, 0xafb36}, {0xafb38, 0xafb3c}, {0xafb46, 0xafbc1}, {0xafbd3, 0xafd3f}, + {0xafd50, 0xafd8f}, {0xafd92, 0xafdc7}, {0xafdf0, 0xafdfd}, {0xafe00, 0xafe19}, + {0xafe20, 0xafe52}, {0xafe54, 0xafe66}, {0xafe68, 0xafe6b}, {0xafe70, 0xafe74}, + {0xafe76, 0xafefc}, {0xaff01, 0xaffbe}, {0xaffc2, 0xaffc7}, {0xaffca, 0xaffcf}, + {0xaffd2, 0xaffd7}, {0xaffda, 0xaffdc}, {0xaffe0, 0xaffe6}, {0xaffe8, 0xaffee}, + {0xb0021, 0xb007e}, {0xb00a1, 0xb00ac}, {0xb00ae, 0xb0377}, {0xb037a, 0xb037f}, + {0xb0384, 0xb038a}, {0xb038e, 0xb03a1}, {0xb03a3, 0xb052f}, {0xb0531, 0xb0556}, + {0xb0559, 0xb055f}, {0xb0561, 0xb0587}, {0xb058d, 0xb058f}, {0xb0591, 0xb05c7}, + {0xb05d0, 0xb05ea}, {0xb05f0, 0xb05f4}, {0xb0606, 0xb061b}, {0xb061e, 0xb06dc}, + {0xb06de, 0xb070d}, {0xb0710, 0xb074a}, {0xb074d, 0xb07b1}, {0xb07c0, 0xb07fa}, + {0xb0800, 0xb082d}, {0xb0830, 0xb083e}, {0xb0840, 0xb085b}, {0xb0860, 0xb086a}, + {0xb08a0, 0xb08b4}, {0xb08b6, 0xb08bd}, {0xb08d4, 0xb08e1}, {0xb08e3, 0xb0983}, + {0xb0985, 0xb098c}, {0xb0993, 0xb09a8}, {0xb09aa, 0xb09b0}, {0xb09b6, 0xb09b9}, + {0xb09bc, 0xb09c4}, {0xb09cb, 0xb09ce}, {0xb09df, 0xb09e3}, {0xb09e6, 0xb09fd}, + {0xb0a01, 0xb0a03}, {0xb0a05, 0xb0a0a}, {0xb0a13, 0xb0a28}, {0xb0a2a, 0xb0a30}, + {0xb0a3e, 0xb0a42}, {0xb0a4b, 0xb0a4d}, {0xb0a59, 0xb0a5c}, {0xb0a66, 0xb0a75}, + {0xb0a81, 0xb0a83}, {0xb0a85, 0xb0a8d}, {0xb0a8f, 0xb0a91}, {0xb0a93, 0xb0aa8}, + {0xb0aaa, 0xb0ab0}, {0xb0ab5, 0xb0ab9}, {0xb0abc, 0xb0ac5}, {0xb0ac7, 0xb0ac9}, + {0xb0acb, 0xb0acd}, {0xb0ae0, 0xb0ae3}, {0xb0ae6, 0xb0af1}, {0xb0af9, 0xb0aff}, + {0xb0b01, 0xb0b03}, {0xb0b05, 0xb0b0c}, {0xb0b13, 0xb0b28}, {0xb0b2a, 0xb0b30}, + {0xb0b35, 0xb0b39}, {0xb0b3c, 0xb0b44}, {0xb0b4b, 0xb0b4d}, {0xb0b5f, 0xb0b63}, + {0xb0b66, 0xb0b77}, {0xb0b85, 0xb0b8a}, {0xb0b8e, 0xb0b90}, {0xb0b92, 0xb0b95}, + {0xb0ba8, 0xb0baa}, {0xb0bae, 0xb0bb9}, {0xb0bbe, 0xb0bc2}, {0xb0bc6, 0xb0bc8}, + {0xb0bca, 0xb0bcd}, {0xb0be6, 0xb0bfa}, {0xb0c00, 0xb0c03}, {0xb0c05, 0xb0c0c}, + {0xb0c0e, 0xb0c10}, {0xb0c12, 0xb0c28}, {0xb0c2a, 0xb0c39}, {0xb0c3d, 0xb0c44}, + {0xb0c46, 0xb0c48}, {0xb0c4a, 0xb0c4d}, {0xb0c58, 0xb0c5a}, {0xb0c60, 0xb0c63}, + {0xb0c66, 0xb0c6f}, {0xb0c78, 0xb0c83}, {0xb0c85, 0xb0c8c}, {0xb0c8e, 0xb0c90}, + {0xb0c92, 0xb0ca8}, {0xb0caa, 0xb0cb3}, {0xb0cb5, 0xb0cb9}, {0xb0cbc, 0xb0cc4}, + {0xb0cc6, 0xb0cc8}, {0xb0cca, 0xb0ccd}, {0xb0ce0, 0xb0ce3}, {0xb0ce6, 0xb0cef}, + {0xb0d00, 0xb0d03}, {0xb0d05, 0xb0d0c}, {0xb0d0e, 0xb0d10}, {0xb0d12, 0xb0d44}, + {0xb0d46, 0xb0d48}, {0xb0d4a, 0xb0d4f}, {0xb0d54, 0xb0d63}, {0xb0d66, 0xb0d7f}, + {0xb0d85, 0xb0d96}, {0xb0d9a, 0xb0db1}, {0xb0db3, 0xb0dbb}, {0xb0dc0, 0xb0dc6}, + {0xb0dcf, 0xb0dd4}, {0xb0dd8, 0xb0ddf}, {0xb0de6, 0xb0def}, {0xb0df2, 0xb0df4}, + {0xb0e01, 0xb0e3a}, {0xb0e3f, 0xb0e5b}, {0xb0e94, 0xb0e97}, {0xb0e99, 0xb0e9f}, + {0xb0ea1, 0xb0ea3}, {0xb0ead, 0xb0eb9}, {0xb0ebb, 0xb0ebd}, {0xb0ec0, 0xb0ec4}, + {0xb0ec8, 0xb0ecd}, {0xb0ed0, 0xb0ed9}, {0xb0edc, 0xb0edf}, {0xb0f00, 0xb0f47}, + {0xb0f49, 0xb0f6c}, {0xb0f71, 0xb0f97}, {0xb0f99, 0xb0fbc}, {0xb0fbe, 0xb0fcc}, + {0xb0fce, 0xb0fda}, {0xb1000, 0xb10c5}, {0xb10d0, 0xb1248}, {0xb124a, 0xb124d}, + {0xb1250, 0xb1256}, {0xb125a, 0xb125d}, {0xb1260, 0xb1288}, {0xb128a, 0xb128d}, + {0xb1290, 0xb12b0}, {0xb12b2, 0xb12b5}, {0xb12b8, 0xb12be}, {0xb12c2, 0xb12c5}, + {0xb12c8, 0xb12d6}, {0xb12d8, 0xb1310}, {0xb1312, 0xb1315}, {0xb1318, 0xb135a}, + {0xb135d, 0xb137c}, {0xb1380, 0xb1399}, {0xb13a0, 0xb13f5}, {0xb13f8, 0xb13fd}, + {0xb1400, 0xb167f}, {0xb1681, 0xb169c}, {0xb16a0, 0xb16f8}, {0xb1700, 0xb170c}, + {0xb170e, 0xb1714}, {0xb1720, 0xb1736}, {0xb1740, 0xb1753}, {0xb1760, 0xb176c}, + {0xb176e, 0xb1770}, {0xb1780, 0xb17dd}, {0xb17e0, 0xb17e9}, {0xb17f0, 0xb17f9}, + {0xb1800, 0xb180d}, {0xb1810, 0xb1819}, {0xb1820, 0xb1877}, {0xb1880, 0xb18aa}, + {0xb18b0, 0xb18f5}, {0xb1900, 0xb191e}, {0xb1920, 0xb192b}, {0xb1930, 0xb193b}, + {0xb1944, 0xb196d}, {0xb1970, 0xb1974}, {0xb1980, 0xb19ab}, {0xb19b0, 0xb19c9}, + {0xb19d0, 0xb19da}, {0xb19de, 0xb1a1b}, {0xb1a1e, 0xb1a5e}, {0xb1a60, 0xb1a7c}, + {0xb1a7f, 0xb1a89}, {0xb1a90, 0xb1a99}, {0xb1aa0, 0xb1aad}, {0xb1ab0, 0xb1abe}, + {0xb1b00, 0xb1b4b}, {0xb1b50, 0xb1b7c}, {0xb1b80, 0xb1bf3}, {0xb1bfc, 0xb1c37}, + {0xb1c3b, 0xb1c49}, {0xb1c4d, 0xb1c88}, {0xb1cc0, 0xb1cc7}, {0xb1cd0, 0xb1cf9}, + {0xb1d00, 0xb1df9}, {0xb1dfb, 0xb1f15}, {0xb1f18, 0xb1f1d}, {0xb1f20, 0xb1f45}, + {0xb1f48, 0xb1f4d}, {0xb1f50, 0xb1f57}, {0xb1f5f, 0xb1f7d}, {0xb1f80, 0xb1fb4}, + {0xb1fb6, 0xb1fc4}, {0xb1fc6, 0xb1fd3}, {0xb1fd6, 0xb1fdb}, {0xb1fdd, 0xb1fef}, + {0xb1ff2, 0xb1ff4}, {0xb1ff6, 0xb1ffe}, {0xb2010, 0xb2027}, {0xb2030, 0xb205e}, + {0xb2074, 0xb208e}, {0xb2090, 0xb209c}, {0xb20a0, 0xb20bf}, {0xb20d0, 0xb20f0}, + {0xb2100, 0xb218b}, {0xb2190, 0xb2426}, {0xb2440, 0xb244a}, {0xb2460, 0xb2b73}, + {0xb2b76, 0xb2b95}, {0xb2b98, 0xb2bb9}, {0xb2bbd, 0xb2bc8}, {0xb2bca, 0xb2bd2}, + {0xb2bec, 0xb2bef}, {0xb2c00, 0xb2c2e}, {0xb2c30, 0xb2c5e}, {0xb2c60, 0xb2cf3}, + {0xb2cf9, 0xb2d25}, {0xb2d30, 0xb2d67}, {0xb2d7f, 0xb2d96}, {0xb2da0, 0xb2da6}, + {0xb2da8, 0xb2dae}, {0xb2db0, 0xb2db6}, {0xb2db8, 0xb2dbe}, {0xb2dc0, 0xb2dc6}, + {0xb2dc8, 0xb2dce}, {0xb2dd0, 0xb2dd6}, {0xb2dd8, 0xb2dde}, {0xb2de0, 0xb2e49}, + {0xb2e80, 0xb2e99}, {0xb2e9b, 0xb2ef3}, {0xb2f00, 0xb2fd5}, {0xb2ff0, 0xb2ffb}, + {0xb3001, 0xb303f}, {0xb3041, 0xb3096}, {0xb3099, 0xb30ff}, {0xb3105, 0xb312e}, + {0xb3131, 0xb318e}, {0xb3190, 0xb31ba}, {0xb31c0, 0xb31e3}, {0xb31f0, 0xb321e}, + {0xb3220, 0xb32fe}, {0xb3300, 0xb4db5}, {0xb4dc0, 0xb9fea}, {0xba000, 0xba48c}, + {0xba490, 0xba4c6}, {0xba4d0, 0xba62b}, {0xba640, 0xba6f7}, {0xba700, 0xba7ae}, + {0xba7b0, 0xba7b7}, {0xba7f7, 0xba82b}, {0xba830, 0xba839}, {0xba840, 0xba877}, + {0xba880, 0xba8c5}, {0xba8ce, 0xba8d9}, {0xba8e0, 0xba8fd}, {0xba900, 0xba953}, + {0xba95f, 0xba97c}, {0xba980, 0xba9cd}, {0xba9cf, 0xba9d9}, {0xba9de, 0xba9fe}, + {0xbaa00, 0xbaa36}, {0xbaa40, 0xbaa4d}, {0xbaa50, 0xbaa59}, {0xbaa5c, 0xbaac2}, + {0xbaadb, 0xbaaf6}, {0xbab01, 0xbab06}, {0xbab09, 0xbab0e}, {0xbab11, 0xbab16}, + {0xbab20, 0xbab26}, {0xbab28, 0xbab2e}, {0xbab30, 0xbab65}, {0xbab70, 0xbabed}, + {0xbabf0, 0xbabf9}, {0xbac00, 0xbd7a3}, {0xbd7b0, 0xbd7c6}, {0xbd7cb, 0xbd7fb}, + {0xbf900, 0xbfa6d}, {0xbfa70, 0xbfad9}, {0xbfb00, 0xbfb06}, {0xbfb13, 0xbfb17}, + {0xbfb1d, 0xbfb36}, {0xbfb38, 0xbfb3c}, {0xbfb46, 0xbfbc1}, {0xbfbd3, 0xbfd3f}, + {0xbfd50, 0xbfd8f}, {0xbfd92, 0xbfdc7}, {0xbfdf0, 0xbfdfd}, {0xbfe00, 0xbfe19}, + {0xbfe20, 0xbfe52}, {0xbfe54, 0xbfe66}, {0xbfe68, 0xbfe6b}, {0xbfe70, 0xbfe74}, + {0xbfe76, 0xbfefc}, {0xbff01, 0xbffbe}, {0xbffc2, 0xbffc7}, {0xbffca, 0xbffcf}, + {0xbffd2, 0xbffd7}, {0xbffda, 0xbffdc}, {0xbffe0, 0xbffe6}, {0xbffe8, 0xbffee}, + {0xc0021, 0xc007e}, {0xc00a1, 0xc00ac}, {0xc00ae, 0xc0377}, {0xc037a, 0xc037f}, + {0xc0384, 0xc038a}, {0xc038e, 0xc03a1}, {0xc03a3, 0xc052f}, {0xc0531, 0xc0556}, + {0xc0559, 0xc055f}, {0xc0561, 0xc0587}, {0xc058d, 0xc058f}, {0xc0591, 0xc05c7}, + {0xc05d0, 0xc05ea}, {0xc05f0, 0xc05f4}, {0xc0606, 0xc061b}, {0xc061e, 0xc06dc}, + {0xc06de, 0xc070d}, {0xc0710, 0xc074a}, {0xc074d, 0xc07b1}, {0xc07c0, 0xc07fa}, + {0xc0800, 0xc082d}, {0xc0830, 0xc083e}, {0xc0840, 0xc085b}, {0xc0860, 0xc086a}, + {0xc08a0, 0xc08b4}, {0xc08b6, 0xc08bd}, {0xc08d4, 0xc08e1}, {0xc08e3, 0xc0983}, + {0xc0985, 0xc098c}, {0xc0993, 0xc09a8}, {0xc09aa, 0xc09b0}, {0xc09b6, 0xc09b9}, + {0xc09bc, 0xc09c4}, {0xc09cb, 0xc09ce}, {0xc09df, 0xc09e3}, {0xc09e6, 0xc09fd}, + {0xc0a01, 0xc0a03}, {0xc0a05, 0xc0a0a}, {0xc0a13, 0xc0a28}, {0xc0a2a, 0xc0a30}, + {0xc0a3e, 0xc0a42}, {0xc0a4b, 0xc0a4d}, {0xc0a59, 0xc0a5c}, {0xc0a66, 0xc0a75}, + {0xc0a81, 0xc0a83}, {0xc0a85, 0xc0a8d}, {0xc0a8f, 0xc0a91}, {0xc0a93, 0xc0aa8}, + {0xc0aaa, 0xc0ab0}, {0xc0ab5, 0xc0ab9}, {0xc0abc, 0xc0ac5}, {0xc0ac7, 0xc0ac9}, + {0xc0acb, 0xc0acd}, {0xc0ae0, 0xc0ae3}, {0xc0ae6, 0xc0af1}, {0xc0af9, 0xc0aff}, + {0xc0b01, 0xc0b03}, {0xc0b05, 0xc0b0c}, {0xc0b13, 0xc0b28}, {0xc0b2a, 0xc0b30}, + {0xc0b35, 0xc0b39}, {0xc0b3c, 0xc0b44}, {0xc0b4b, 0xc0b4d}, {0xc0b5f, 0xc0b63}, + {0xc0b66, 0xc0b77}, {0xc0b85, 0xc0b8a}, {0xc0b8e, 0xc0b90}, {0xc0b92, 0xc0b95}, + {0xc0ba8, 0xc0baa}, {0xc0bae, 0xc0bb9}, {0xc0bbe, 0xc0bc2}, {0xc0bc6, 0xc0bc8}, + {0xc0bca, 0xc0bcd}, {0xc0be6, 0xc0bfa}, {0xc0c00, 0xc0c03}, {0xc0c05, 0xc0c0c}, + {0xc0c0e, 0xc0c10}, {0xc0c12, 0xc0c28}, {0xc0c2a, 0xc0c39}, {0xc0c3d, 0xc0c44}, + {0xc0c46, 0xc0c48}, {0xc0c4a, 0xc0c4d}, {0xc0c58, 0xc0c5a}, {0xc0c60, 0xc0c63}, + {0xc0c66, 0xc0c6f}, {0xc0c78, 0xc0c83}, {0xc0c85, 0xc0c8c}, {0xc0c8e, 0xc0c90}, + {0xc0c92, 0xc0ca8}, {0xc0caa, 0xc0cb3}, {0xc0cb5, 0xc0cb9}, {0xc0cbc, 0xc0cc4}, + {0xc0cc6, 0xc0cc8}, {0xc0cca, 0xc0ccd}, {0xc0ce0, 0xc0ce3}, {0xc0ce6, 0xc0cef}, + {0xc0d00, 0xc0d03}, {0xc0d05, 0xc0d0c}, {0xc0d0e, 0xc0d10}, {0xc0d12, 0xc0d44}, + {0xc0d46, 0xc0d48}, {0xc0d4a, 0xc0d4f}, {0xc0d54, 0xc0d63}, {0xc0d66, 0xc0d7f}, + {0xc0d85, 0xc0d96}, {0xc0d9a, 0xc0db1}, {0xc0db3, 0xc0dbb}, {0xc0dc0, 0xc0dc6}, + {0xc0dcf, 0xc0dd4}, {0xc0dd8, 0xc0ddf}, {0xc0de6, 0xc0def}, {0xc0df2, 0xc0df4}, + {0xc0e01, 0xc0e3a}, {0xc0e3f, 0xc0e5b}, {0xc0e94, 0xc0e97}, {0xc0e99, 0xc0e9f}, + {0xc0ea1, 0xc0ea3}, {0xc0ead, 0xc0eb9}, {0xc0ebb, 0xc0ebd}, {0xc0ec0, 0xc0ec4}, + {0xc0ec8, 0xc0ecd}, {0xc0ed0, 0xc0ed9}, {0xc0edc, 0xc0edf}, {0xc0f00, 0xc0f47}, + {0xc0f49, 0xc0f6c}, {0xc0f71, 0xc0f97}, {0xc0f99, 0xc0fbc}, {0xc0fbe, 0xc0fcc}, + {0xc0fce, 0xc0fda}, {0xc1000, 0xc10c5}, {0xc10d0, 0xc1248}, {0xc124a, 0xc124d}, + {0xc1250, 0xc1256}, {0xc125a, 0xc125d}, {0xc1260, 0xc1288}, {0xc128a, 0xc128d}, + {0xc1290, 0xc12b0}, {0xc12b2, 0xc12b5}, {0xc12b8, 0xc12be}, {0xc12c2, 0xc12c5}, + {0xc12c8, 0xc12d6}, {0xc12d8, 0xc1310}, {0xc1312, 0xc1315}, {0xc1318, 0xc135a}, + {0xc135d, 0xc137c}, {0xc1380, 0xc1399}, {0xc13a0, 0xc13f5}, {0xc13f8, 0xc13fd}, + {0xc1400, 0xc167f}, {0xc1681, 0xc169c}, {0xc16a0, 0xc16f8}, {0xc1700, 0xc170c}, + {0xc170e, 0xc1714}, {0xc1720, 0xc1736}, {0xc1740, 0xc1753}, {0xc1760, 0xc176c}, + {0xc176e, 0xc1770}, {0xc1780, 0xc17dd}, {0xc17e0, 0xc17e9}, {0xc17f0, 0xc17f9}, + {0xc1800, 0xc180d}, {0xc1810, 0xc1819}, {0xc1820, 0xc1877}, {0xc1880, 0xc18aa}, + {0xc18b0, 0xc18f5}, {0xc1900, 0xc191e}, {0xc1920, 0xc192b}, {0xc1930, 0xc193b}, + {0xc1944, 0xc196d}, {0xc1970, 0xc1974}, {0xc1980, 0xc19ab}, {0xc19b0, 0xc19c9}, + {0xc19d0, 0xc19da}, {0xc19de, 0xc1a1b}, {0xc1a1e, 0xc1a5e}, {0xc1a60, 0xc1a7c}, + {0xc1a7f, 0xc1a89}, {0xc1a90, 0xc1a99}, {0xc1aa0, 0xc1aad}, {0xc1ab0, 0xc1abe}, + {0xc1b00, 0xc1b4b}, {0xc1b50, 0xc1b7c}, {0xc1b80, 0xc1bf3}, {0xc1bfc, 0xc1c37}, + {0xc1c3b, 0xc1c49}, {0xc1c4d, 0xc1c88}, {0xc1cc0, 0xc1cc7}, {0xc1cd0, 0xc1cf9}, + {0xc1d00, 0xc1df9}, {0xc1dfb, 0xc1f15}, {0xc1f18, 0xc1f1d}, {0xc1f20, 0xc1f45}, + {0xc1f48, 0xc1f4d}, {0xc1f50, 0xc1f57}, {0xc1f5f, 0xc1f7d}, {0xc1f80, 0xc1fb4}, + {0xc1fb6, 0xc1fc4}, {0xc1fc6, 0xc1fd3}, {0xc1fd6, 0xc1fdb}, {0xc1fdd, 0xc1fef}, + {0xc1ff2, 0xc1ff4}, {0xc1ff6, 0xc1ffe}, {0xc2010, 0xc2027}, {0xc2030, 0xc205e}, + {0xc2074, 0xc208e}, {0xc2090, 0xc209c}, {0xc20a0, 0xc20bf}, {0xc20d0, 0xc20f0}, + {0xc2100, 0xc218b}, {0xc2190, 0xc2426}, {0xc2440, 0xc244a}, {0xc2460, 0xc2b73}, + {0xc2b76, 0xc2b95}, {0xc2b98, 0xc2bb9}, {0xc2bbd, 0xc2bc8}, {0xc2bca, 0xc2bd2}, + {0xc2bec, 0xc2bef}, {0xc2c00, 0xc2c2e}, {0xc2c30, 0xc2c5e}, {0xc2c60, 0xc2cf3}, + {0xc2cf9, 0xc2d25}, {0xc2d30, 0xc2d67}, {0xc2d7f, 0xc2d96}, {0xc2da0, 0xc2da6}, + {0xc2da8, 0xc2dae}, {0xc2db0, 0xc2db6}, {0xc2db8, 0xc2dbe}, {0xc2dc0, 0xc2dc6}, + {0xc2dc8, 0xc2dce}, {0xc2dd0, 0xc2dd6}, {0xc2dd8, 0xc2dde}, {0xc2de0, 0xc2e49}, + {0xc2e80, 0xc2e99}, {0xc2e9b, 0xc2ef3}, {0xc2f00, 0xc2fd5}, {0xc2ff0, 0xc2ffb}, + {0xc3001, 0xc303f}, {0xc3041, 0xc3096}, {0xc3099, 0xc30ff}, {0xc3105, 0xc312e}, + {0xc3131, 0xc318e}, {0xc3190, 0xc31ba}, {0xc31c0, 0xc31e3}, {0xc31f0, 0xc321e}, + {0xc3220, 0xc32fe}, {0xc3300, 0xc4db5}, {0xc4dc0, 0xc9fea}, {0xca000, 0xca48c}, + {0xca490, 0xca4c6}, {0xca4d0, 0xca62b}, {0xca640, 0xca6f7}, {0xca700, 0xca7ae}, + {0xca7b0, 0xca7b7}, {0xca7f7, 0xca82b}, {0xca830, 0xca839}, {0xca840, 0xca877}, + {0xca880, 0xca8c5}, {0xca8ce, 0xca8d9}, {0xca8e0, 0xca8fd}, {0xca900, 0xca953}, + {0xca95f, 0xca97c}, {0xca980, 0xca9cd}, {0xca9cf, 0xca9d9}, {0xca9de, 0xca9fe}, + {0xcaa00, 0xcaa36}, {0xcaa40, 0xcaa4d}, {0xcaa50, 0xcaa59}, {0xcaa5c, 0xcaac2}, + {0xcaadb, 0xcaaf6}, {0xcab01, 0xcab06}, {0xcab09, 0xcab0e}, {0xcab11, 0xcab16}, + {0xcab20, 0xcab26}, {0xcab28, 0xcab2e}, {0xcab30, 0xcab65}, {0xcab70, 0xcabed}, + {0xcabf0, 0xcabf9}, {0xcac00, 0xcd7a3}, {0xcd7b0, 0xcd7c6}, {0xcd7cb, 0xcd7fb}, + {0xcf900, 0xcfa6d}, {0xcfa70, 0xcfad9}, {0xcfb00, 0xcfb06}, {0xcfb13, 0xcfb17}, + {0xcfb1d, 0xcfb36}, {0xcfb38, 0xcfb3c}, {0xcfb46, 0xcfbc1}, {0xcfbd3, 0xcfd3f}, + {0xcfd50, 0xcfd8f}, {0xcfd92, 0xcfdc7}, {0xcfdf0, 0xcfdfd}, {0xcfe00, 0xcfe19}, + {0xcfe20, 0xcfe52}, {0xcfe54, 0xcfe66}, {0xcfe68, 0xcfe6b}, {0xcfe70, 0xcfe74}, + {0xcfe76, 0xcfefc}, {0xcff01, 0xcffbe}, {0xcffc2, 0xcffc7}, {0xcffca, 0xcffcf}, + {0xcffd2, 0xcffd7}, {0xcffda, 0xcffdc}, {0xcffe0, 0xcffe6}, {0xcffe8, 0xcffee}, + {0xd0021, 0xd007e}, {0xd00a1, 0xd00ac}, {0xd00ae, 0xd0377}, {0xd037a, 0xd037f}, + {0xd0384, 0xd038a}, {0xd038e, 0xd03a1}, {0xd03a3, 0xd052f}, {0xd0531, 0xd0556}, + {0xd0559, 0xd055f}, {0xd0561, 0xd0587}, {0xd058d, 0xd058f}, {0xd0591, 0xd05c7}, + {0xd05d0, 0xd05ea}, {0xd05f0, 0xd05f4}, {0xd0606, 0xd061b}, {0xd061e, 0xd06dc}, + {0xd06de, 0xd070d}, {0xd0710, 0xd074a}, {0xd074d, 0xd07b1}, {0xd07c0, 0xd07fa}, + {0xd0800, 0xd082d}, {0xd0830, 0xd083e}, {0xd0840, 0xd085b}, {0xd0860, 0xd086a}, + {0xd08a0, 0xd08b4}, {0xd08b6, 0xd08bd}, {0xd08d4, 0xd08e1}, {0xd08e3, 0xd0983}, + {0xd0985, 0xd098c}, {0xd0993, 0xd09a8}, {0xd09aa, 0xd09b0}, {0xd09b6, 0xd09b9}, + {0xd09bc, 0xd09c4}, {0xd09cb, 0xd09ce}, {0xd09df, 0xd09e3}, {0xd09e6, 0xd09fd}, + {0xd0a01, 0xd0a03}, {0xd0a05, 0xd0a0a}, {0xd0a13, 0xd0a28}, {0xd0a2a, 0xd0a30}, + {0xd0a3e, 0xd0a42}, {0xd0a4b, 0xd0a4d}, {0xd0a59, 0xd0a5c}, {0xd0a66, 0xd0a75}, + {0xd0a81, 0xd0a83}, {0xd0a85, 0xd0a8d}, {0xd0a8f, 0xd0a91}, {0xd0a93, 0xd0aa8}, + {0xd0aaa, 0xd0ab0}, {0xd0ab5, 0xd0ab9}, {0xd0abc, 0xd0ac5}, {0xd0ac7, 0xd0ac9}, + {0xd0acb, 0xd0acd}, {0xd0ae0, 0xd0ae3}, {0xd0ae6, 0xd0af1}, {0xd0af9, 0xd0aff}, + {0xd0b01, 0xd0b03}, {0xd0b05, 0xd0b0c}, {0xd0b13, 0xd0b28}, {0xd0b2a, 0xd0b30}, + {0xd0b35, 0xd0b39}, {0xd0b3c, 0xd0b44}, {0xd0b4b, 0xd0b4d}, {0xd0b5f, 0xd0b63}, + {0xd0b66, 0xd0b77}, {0xd0b85, 0xd0b8a}, {0xd0b8e, 0xd0b90}, {0xd0b92, 0xd0b95}, + {0xd0ba8, 0xd0baa}, {0xd0bae, 0xd0bb9}, {0xd0bbe, 0xd0bc2}, {0xd0bc6, 0xd0bc8}, + {0xd0bca, 0xd0bcd}, {0xd0be6, 0xd0bfa}, {0xd0c00, 0xd0c03}, {0xd0c05, 0xd0c0c}, + {0xd0c0e, 0xd0c10}, {0xd0c12, 0xd0c28}, {0xd0c2a, 0xd0c39}, {0xd0c3d, 0xd0c44}, + {0xd0c46, 0xd0c48}, {0xd0c4a, 0xd0c4d}, {0xd0c58, 0xd0c5a}, {0xd0c60, 0xd0c63}, + {0xd0c66, 0xd0c6f}, {0xd0c78, 0xd0c83}, {0xd0c85, 0xd0c8c}, {0xd0c8e, 0xd0c90}, + {0xd0c92, 0xd0ca8}, {0xd0caa, 0xd0cb3}, {0xd0cb5, 0xd0cb9}, {0xd0cbc, 0xd0cc4}, + {0xd0cc6, 0xd0cc8}, {0xd0cca, 0xd0ccd}, {0xd0ce0, 0xd0ce3}, {0xd0ce6, 0xd0cef}, + {0xd0d00, 0xd0d03}, {0xd0d05, 0xd0d0c}, {0xd0d0e, 0xd0d10}, {0xd0d12, 0xd0d44}, + {0xd0d46, 0xd0d48}, {0xd0d4a, 0xd0d4f}, {0xd0d54, 0xd0d63}, {0xd0d66, 0xd0d7f}, + {0xd0d85, 0xd0d96}, {0xd0d9a, 0xd0db1}, {0xd0db3, 0xd0dbb}, {0xd0dc0, 0xd0dc6}, + {0xd0dcf, 0xd0dd4}, {0xd0dd8, 0xd0ddf}, {0xd0de6, 0xd0def}, {0xd0df2, 0xd0df4}, + {0xd0e01, 0xd0e3a}, {0xd0e3f, 0xd0e5b}, {0xd0e94, 0xd0e97}, {0xd0e99, 0xd0e9f}, + {0xd0ea1, 0xd0ea3}, {0xd0ead, 0xd0eb9}, {0xd0ebb, 0xd0ebd}, {0xd0ec0, 0xd0ec4}, + {0xd0ec8, 0xd0ecd}, {0xd0ed0, 0xd0ed9}, {0xd0edc, 0xd0edf}, {0xd0f00, 0xd0f47}, + {0xd0f49, 0xd0f6c}, {0xd0f71, 0xd0f97}, {0xd0f99, 0xd0fbc}, {0xd0fbe, 0xd0fcc}, + {0xd0fce, 0xd0fda}, {0xd1000, 0xd10c5}, {0xd10d0, 0xd1248}, {0xd124a, 0xd124d}, + {0xd1250, 0xd1256}, {0xd125a, 0xd125d}, {0xd1260, 0xd1288}, {0xd128a, 0xd128d}, + {0xd1290, 0xd12b0}, {0xd12b2, 0xd12b5}, {0xd12b8, 0xd12be}, {0xd12c2, 0xd12c5}, + {0xd12c8, 0xd12d6}, {0xd12d8, 0xd1310}, {0xd1312, 0xd1315}, {0xd1318, 0xd135a}, + {0xd135d, 0xd137c}, {0xd1380, 0xd1399}, {0xd13a0, 0xd13f5}, {0xd13f8, 0xd13fd}, + {0xd1400, 0xd167f}, {0xd1681, 0xd169c}, {0xd16a0, 0xd16f8}, {0xd1700, 0xd170c}, + {0xd170e, 0xd1714}, {0xd1720, 0xd1736}, {0xd1740, 0xd1753}, {0xd1760, 0xd176c}, + {0xd176e, 0xd1770}, {0xd1780, 0xd17dd}, {0xd17e0, 0xd17e9}, {0xd17f0, 0xd17f9}, + {0xd1800, 0xd180d}, {0xd1810, 0xd1819}, {0xd1820, 0xd1877}, {0xd1880, 0xd18aa}, + {0xd18b0, 0xd18f5}, {0xd1900, 0xd191e}, {0xd1920, 0xd192b}, {0xd1930, 0xd193b}, + {0xd1944, 0xd196d}, {0xd1970, 0xd1974}, {0xd1980, 0xd19ab}, {0xd19b0, 0xd19c9}, + {0xd19d0, 0xd19da}, {0xd19de, 0xd1a1b}, {0xd1a1e, 0xd1a5e}, {0xd1a60, 0xd1a7c}, + {0xd1a7f, 0xd1a89}, {0xd1a90, 0xd1a99}, {0xd1aa0, 0xd1aad}, {0xd1ab0, 0xd1abe}, + {0xd1b00, 0xd1b4b}, {0xd1b50, 0xd1b7c}, {0xd1b80, 0xd1bf3}, {0xd1bfc, 0xd1c37}, + {0xd1c3b, 0xd1c49}, {0xd1c4d, 0xd1c88}, {0xd1cc0, 0xd1cc7}, {0xd1cd0, 0xd1cf9}, + {0xd1d00, 0xd1df9}, {0xd1dfb, 0xd1f15}, {0xd1f18, 0xd1f1d}, {0xd1f20, 0xd1f45}, + {0xd1f48, 0xd1f4d}, {0xd1f50, 0xd1f57}, {0xd1f5f, 0xd1f7d}, {0xd1f80, 0xd1fb4}, + {0xd1fb6, 0xd1fc4}, {0xd1fc6, 0xd1fd3}, {0xd1fd6, 0xd1fdb}, {0xd1fdd, 0xd1fef}, + {0xd1ff2, 0xd1ff4}, {0xd1ff6, 0xd1ffe}, {0xd2010, 0xd2027}, {0xd2030, 0xd205e}, + {0xd2074, 0xd208e}, {0xd2090, 0xd209c}, {0xd20a0, 0xd20bf}, {0xd20d0, 0xd20f0}, + {0xd2100, 0xd218b}, {0xd2190, 0xd2426}, {0xd2440, 0xd244a}, {0xd2460, 0xd2b73}, + {0xd2b76, 0xd2b95}, {0xd2b98, 0xd2bb9}, {0xd2bbd, 0xd2bc8}, {0xd2bca, 0xd2bd2}, + {0xd2bec, 0xd2bef}, {0xd2c00, 0xd2c2e}, {0xd2c30, 0xd2c5e}, {0xd2c60, 0xd2cf3}, + {0xd2cf9, 0xd2d25}, {0xd2d30, 0xd2d67}, {0xd2d7f, 0xd2d96}, {0xd2da0, 0xd2da6}, + {0xd2da8, 0xd2dae}, {0xd2db0, 0xd2db6}, {0xd2db8, 0xd2dbe}, {0xd2dc0, 0xd2dc6}, + {0xd2dc8, 0xd2dce}, {0xd2dd0, 0xd2dd6}, {0xd2dd8, 0xd2dde}, {0xd2de0, 0xd2e49}, + {0xd2e80, 0xd2e99}, {0xd2e9b, 0xd2ef3}, {0xd2f00, 0xd2fd5}, {0xd2ff0, 0xd2ffb}, + {0xd3001, 0xd303f}, {0xd3041, 0xd3096}, {0xd3099, 0xd30ff}, {0xd3105, 0xd312e}, + {0xd3131, 0xd318e}, {0xd3190, 0xd31ba}, {0xd31c0, 0xd31e3}, {0xd31f0, 0xd321e}, + {0xd3220, 0xd32fe}, {0xd3300, 0xd4db5}, {0xd4dc0, 0xd9fea}, {0xda000, 0xda48c}, + {0xda490, 0xda4c6}, {0xda4d0, 0xda62b}, {0xda640, 0xda6f7}, {0xda700, 0xda7ae}, + {0xda7b0, 0xda7b7}, {0xda7f7, 0xda82b}, {0xda830, 0xda839}, {0xda840, 0xda877}, + {0xda880, 0xda8c5}, {0xda8ce, 0xda8d9}, {0xda8e0, 0xda8fd}, {0xda900, 0xda953}, + {0xda95f, 0xda97c}, {0xda980, 0xda9cd}, {0xda9cf, 0xda9d9}, {0xda9de, 0xda9fe}, + {0xdaa00, 0xdaa36}, {0xdaa40, 0xdaa4d}, {0xdaa50, 0xdaa59}, {0xdaa5c, 0xdaac2}, + {0xdaadb, 0xdaaf6}, {0xdab01, 0xdab06}, {0xdab09, 0xdab0e}, {0xdab11, 0xdab16}, + {0xdab20, 0xdab26}, {0xdab28, 0xdab2e}, {0xdab30, 0xdab65}, {0xdab70, 0xdabed}, + {0xdabf0, 0xdabf9}, {0xdac00, 0xdd7a3}, {0xdd7b0, 0xdd7c6}, {0xdd7cb, 0xdd7fb}, + {0xdf900, 0xdfa6d}, {0xdfa70, 0xdfad9}, {0xdfb00, 0xdfb06}, {0xdfb13, 0xdfb17}, + {0xdfb1d, 0xdfb36}, {0xdfb38, 0xdfb3c}, {0xdfb46, 0xdfbc1}, {0xdfbd3, 0xdfd3f}, + {0xdfd50, 0xdfd8f}, {0xdfd92, 0xdfdc7}, {0xdfdf0, 0xdfdfd}, {0xdfe00, 0xdfe19}, + {0xdfe20, 0xdfe52}, {0xdfe54, 0xdfe66}, {0xdfe68, 0xdfe6b}, {0xdfe70, 0xdfe74}, + {0xdfe76, 0xdfefc}, {0xdff01, 0xdffbe}, {0xdffc2, 0xdffc7}, {0xdffca, 0xdffcf}, + {0xdffd2, 0xdffd7}, {0xdffda, 0xdffdc}, {0xdffe0, 0xdffe6}, {0xdffe8, 0xdffee}, + {0xe0021, 0xe007e}, {0xe00a1, 0xe00ac}, {0xe00ae, 0xe0377}, {0xe037a, 0xe037f}, + {0xe0384, 0xe038a}, {0xe038e, 0xe03a1}, {0xe03a3, 0xe052f}, {0xe0531, 0xe0556}, + {0xe0559, 0xe055f}, {0xe0561, 0xe0587}, {0xe058d, 0xe058f}, {0xe0591, 0xe05c7}, + {0xe05d0, 0xe05ea}, {0xe05f0, 0xe05f4}, {0xe0606, 0xe061b}, {0xe061e, 0xe06dc}, + {0xe06de, 0xe070d}, {0xe0710, 0xe074a}, {0xe074d, 0xe07b1}, {0xe07c0, 0xe07fa}, + {0xe0800, 0xe082d}, {0xe0830, 0xe083e}, {0xe0840, 0xe085b}, {0xe0860, 0xe086a}, + {0xe08a0, 0xe08b4}, {0xe08b6, 0xe08bd}, {0xe08d4, 0xe08e1}, {0xe08e3, 0xe0983}, + {0xe0985, 0xe098c}, {0xe0993, 0xe09a8}, {0xe09aa, 0xe09b0}, {0xe09b6, 0xe09b9}, + {0xe09bc, 0xe09c4}, {0xe09cb, 0xe09ce}, {0xe09df, 0xe09e3}, {0xe09e6, 0xe09fd}, + {0xe0a01, 0xe0a03}, {0xe0a05, 0xe0a0a}, {0xe0a13, 0xe0a28}, {0xe0a2a, 0xe0a30}, + {0xe0a3e, 0xe0a42}, {0xe0a4b, 0xe0a4d}, {0xe0a59, 0xe0a5c}, {0xe0a66, 0xe0a75}, + {0xe0a81, 0xe0a83}, {0xe0a85, 0xe0a8d}, {0xe0a8f, 0xe0a91}, {0xe0a93, 0xe0aa8}, + {0xe0aaa, 0xe0ab0}, {0xe0ab5, 0xe0ab9}, {0xe0abc, 0xe0ac5}, {0xe0ac7, 0xe0ac9}, + {0xe0acb, 0xe0acd}, {0xe0ae0, 0xe0ae3}, {0xe0ae6, 0xe0af1}, {0xe0af9, 0xe0aff}, + {0xe0b01, 0xe0b03}, {0xe0b05, 0xe0b0c}, {0xe0b13, 0xe0b28}, {0xe0b2a, 0xe0b30}, + {0xe0b35, 0xe0b39}, {0xe0b3c, 0xe0b44}, {0xe0b4b, 0xe0b4d}, {0xe0b5f, 0xe0b63}, + {0xe0b66, 0xe0b77}, {0xe0b85, 0xe0b8a}, {0xe0b8e, 0xe0b90}, {0xe0b92, 0xe0b95}, + {0xe0ba8, 0xe0baa}, {0xe0bae, 0xe0bb9}, {0xe0bbe, 0xe0bc2}, {0xe0bc6, 0xe0bc8}, + {0xe0bca, 0xe0bcd}, {0xe0be6, 0xe0bfa}, {0xe0c00, 0xe0c03}, {0xe0c05, 0xe0c0c}, + {0xe0c0e, 0xe0c10}, {0xe0c12, 0xe0c28}, {0xe0c2a, 0xe0c39}, {0xe0c3d, 0xe0c44}, + {0xe0c46, 0xe0c48}, {0xe0c4a, 0xe0c4d}, {0xe0c58, 0xe0c5a}, {0xe0c60, 0xe0c63}, + {0xe0c66, 0xe0c6f}, {0xe0c78, 0xe0c83}, {0xe0c85, 0xe0c8c}, {0xe0c8e, 0xe0c90}, + {0xe0c92, 0xe0ca8}, {0xe0caa, 0xe0cb3}, {0xe0cb5, 0xe0cb9}, {0xe0cbc, 0xe0cc4}, + {0xe0cc6, 0xe0cc8}, {0xe0cca, 0xe0ccd}, {0xe0ce0, 0xe0ce3}, {0xe0ce6, 0xe0cef}, + {0xe0d00, 0xe0d03}, {0xe0d05, 0xe0d0c}, {0xe0d0e, 0xe0d10}, {0xe0d12, 0xe0d44}, + {0xe0d46, 0xe0d48}, {0xe0d4a, 0xe0d4f}, {0xe0d54, 0xe0d63}, {0xe0d66, 0xe0d7f}, + {0xe0d85, 0xe0d96}, {0xe0d9a, 0xe0db1}, {0xe0db3, 0xe0dbb}, {0xe0dc0, 0xe0dc6}, + {0xe0dcf, 0xe0dd4}, {0xe0dd8, 0xe0ddf}, {0xe0de6, 0xe0def}, {0xe0df2, 0xe0df4}, + {0xe0e01, 0xe0e3a}, {0xe0e3f, 0xe0e5b}, {0xe0e94, 0xe0e97}, {0xe0e99, 0xe0e9f}, + {0xe0ea1, 0xe0ea3}, {0xe0ead, 0xe0eb9}, {0xe0ebb, 0xe0ebd}, {0xe0ec0, 0xe0ec4}, + {0xe0ec8, 0xe0ecd}, {0xe0ed0, 0xe0ed9}, {0xe0edc, 0xe0edf}, {0xe0f00, 0xe0f47}, + {0xe0f49, 0xe0f6c}, {0xe0f71, 0xe0f97}, {0xe0f99, 0xe0fbc}, {0xe0fbe, 0xe0fcc}, + {0xe0fce, 0xe0fda}, {0xe1000, 0xe10c5}, {0xe10d0, 0xe1248}, {0xe124a, 0xe124d}, + {0xe1250, 0xe1256}, {0xe125a, 0xe125d}, {0xe1260, 0xe1288}, {0xe128a, 0xe128d}, + {0xe1290, 0xe12b0}, {0xe12b2, 0xe12b5}, {0xe12b8, 0xe12be}, {0xe12c2, 0xe12c5}, + {0xe12c8, 0xe12d6}, {0xe12d8, 0xe1310}, {0xe1312, 0xe1315}, {0xe1318, 0xe135a}, + {0xe135d, 0xe137c}, {0xe1380, 0xe1399}, {0xe13a0, 0xe13f5}, {0xe13f8, 0xe13fd}, + {0xe1400, 0xe167f}, {0xe1681, 0xe169c}, {0xe16a0, 0xe16f8}, {0xe1700, 0xe170c}, + {0xe170e, 0xe1714}, {0xe1720, 0xe1736}, {0xe1740, 0xe1753}, {0xe1760, 0xe176c}, + {0xe176e, 0xe1770}, {0xe1780, 0xe17dd}, {0xe17e0, 0xe17e9}, {0xe17f0, 0xe17f9}, + {0xe1800, 0xe180d}, {0xe1810, 0xe1819}, {0xe1820, 0xe1877}, {0xe1880, 0xe18aa}, + {0xe18b0, 0xe18f5}, {0xe1900, 0xe191e}, {0xe1920, 0xe192b}, {0xe1930, 0xe193b}, + {0xe1944, 0xe196d}, {0xe1970, 0xe1974}, {0xe1980, 0xe19ab}, {0xe19b0, 0xe19c9}, + {0xe19d0, 0xe19da}, {0xe19de, 0xe1a1b}, {0xe1a1e, 0xe1a5e}, {0xe1a60, 0xe1a7c}, + {0xe1a7f, 0xe1a89}, {0xe1a90, 0xe1a99}, {0xe1aa0, 0xe1aad}, {0xe1ab0, 0xe1abe}, + {0xe1b00, 0xe1b4b}, {0xe1b50, 0xe1b7c}, {0xe1b80, 0xe1bf3}, {0xe1bfc, 0xe1c37}, + {0xe1c3b, 0xe1c49}, {0xe1c4d, 0xe1c88}, {0xe1cc0, 0xe1cc7}, {0xe1cd0, 0xe1cf9}, + {0xe1d00, 0xe1df9}, {0xe1dfb, 0xe1f15}, {0xe1f18, 0xe1f1d}, {0xe1f20, 0xe1f45}, + {0xe1f48, 0xe1f4d}, {0xe1f50, 0xe1f57}, {0xe1f5f, 0xe1f7d}, {0xe1f80, 0xe1fb4}, + {0xe1fb6, 0xe1fc4}, {0xe1fc6, 0xe1fd3}, {0xe1fd6, 0xe1fdb}, {0xe1fdd, 0xe1fef}, + {0xe1ff2, 0xe1ff4}, {0xe1ff6, 0xe1ffe}, {0xe2010, 0xe2027}, {0xe2030, 0xe205e}, + {0xe2074, 0xe208e}, {0xe2090, 0xe209c}, {0xe20a0, 0xe20bf}, {0xe20d0, 0xe20f0}, + {0xe2100, 0xe218b}, {0xe2190, 0xe2426}, {0xe2440, 0xe244a}, {0xe2460, 0xe2b73}, + {0xe2b76, 0xe2b95}, {0xe2b98, 0xe2bb9}, {0xe2bbd, 0xe2bc8}, {0xe2bca, 0xe2bd2}, + {0xe2bec, 0xe2bef}, {0xe2c00, 0xe2c2e}, {0xe2c30, 0xe2c5e}, {0xe2c60, 0xe2cf3}, + {0xe2cf9, 0xe2d25}, {0xe2d30, 0xe2d67}, {0xe2d7f, 0xe2d96}, {0xe2da0, 0xe2da6}, + {0xe2da8, 0xe2dae}, {0xe2db0, 0xe2db6}, {0xe2db8, 0xe2dbe}, {0xe2dc0, 0xe2dc6}, + {0xe2dc8, 0xe2dce}, {0xe2dd0, 0xe2dd6}, {0xe2dd8, 0xe2dde}, {0xe2de0, 0xe2e49}, + {0xe2e80, 0xe2e99}, {0xe2e9b, 0xe2ef3}, {0xe2f00, 0xe2fd5}, {0xe2ff0, 0xe2ffb}, + {0xe3001, 0xe303f}, {0xe3041, 0xe3096}, {0xe3099, 0xe30ff}, {0xe3105, 0xe312e}, + {0xe3131, 0xe318e}, {0xe3190, 0xe31ba}, {0xe31c0, 0xe31e3}, {0xe31f0, 0xe321e}, + {0xe3220, 0xe32fe}, {0xe3300, 0xe4db5}, {0xe4dc0, 0xe9fea}, {0xea000, 0xea48c}, + {0xea490, 0xea4c6}, {0xea4d0, 0xea62b}, {0xea640, 0xea6f7}, {0xea700, 0xea7ae}, + {0xea7b0, 0xea7b7}, {0xea7f7, 0xea82b}, {0xea830, 0xea839}, {0xea840, 0xea877}, + {0xea880, 0xea8c5}, {0xea8ce, 0xea8d9}, {0xea8e0, 0xea8fd}, {0xea900, 0xea953}, + {0xea95f, 0xea97c}, {0xea980, 0xea9cd}, {0xea9cf, 0xea9d9}, {0xea9de, 0xea9fe}, + {0xeaa00, 0xeaa36}, {0xeaa40, 0xeaa4d}, {0xeaa50, 0xeaa59}, {0xeaa5c, 0xeaac2}, + {0xeaadb, 0xeaaf6}, {0xeab01, 0xeab06}, {0xeab09, 0xeab0e}, {0xeab11, 0xeab16}, + {0xeab20, 0xeab26}, {0xeab28, 0xeab2e}, {0xeab30, 0xeab65}, {0xeab70, 0xeabed}, + {0xeabf0, 0xeabf9}, {0xeac00, 0xed7a3}, {0xed7b0, 0xed7c6}, {0xed7cb, 0xed7fb}, + {0xef900, 0xefa6d}, {0xefa70, 0xefad9}, {0xefb00, 0xefb06}, {0xefb13, 0xefb17}, + {0xefb1d, 0xefb36}, {0xefb38, 0xefb3c}, {0xefb46, 0xefbc1}, {0xefbd3, 0xefd3f}, + {0xefd50, 0xefd8f}, {0xefd92, 0xefdc7}, {0xefdf0, 0xefdfd}, {0xefe00, 0xefe19}, + {0xefe20, 0xefe52}, {0xefe54, 0xefe66}, {0xefe68, 0xefe6b}, {0xefe70, 0xefe74}, + {0xefe76, 0xefefc}, {0xeff01, 0xeffbe}, {0xeffc2, 0xeffc7}, {0xeffca, 0xeffcf}, + {0xeffd2, 0xeffd7}, {0xeffda, 0xeffdc}, {0xeffe0, 0xeffe6}, {0xeffe8, 0xeffee}, + {0xf0021, 0xf007e}, {0xf00a1, 0xf00ac}, {0xf00ae, 0xf0377}, {0xf037a, 0xf037f}, + {0xf0384, 0xf038a}, {0xf038e, 0xf03a1}, {0xf03a3, 0xf052f}, {0xf0531, 0xf0556}, + {0xf0559, 0xf055f}, {0xf0561, 0xf0587}, {0xf058d, 0xf058f}, {0xf0591, 0xf05c7}, + {0xf05d0, 0xf05ea}, {0xf05f0, 0xf05f4}, {0xf0606, 0xf061b}, {0xf061e, 0xf06dc}, + {0xf06de, 0xf070d}, {0xf0710, 0xf074a}, {0xf074d, 0xf07b1}, {0xf07c0, 0xf07fa}, + {0xf0800, 0xf082d}, {0xf0830, 0xf083e}, {0xf0840, 0xf085b}, {0xf0860, 0xf086a}, + {0xf08a0, 0xf08b4}, {0xf08b6, 0xf08bd}, {0xf08d4, 0xf08e1}, {0xf08e3, 0xf0983}, + {0xf0985, 0xf098c}, {0xf0993, 0xf09a8}, {0xf09aa, 0xf09b0}, {0xf09b6, 0xf09b9}, + {0xf09bc, 0xf09c4}, {0xf09cb, 0xf09ce}, {0xf09df, 0xf09e3}, {0xf09e6, 0xf09fd}, + {0xf0a01, 0xf0a03}, {0xf0a05, 0xf0a0a}, {0xf0a13, 0xf0a28}, {0xf0a2a, 0xf0a30}, + {0xf0a3e, 0xf0a42}, {0xf0a4b, 0xf0a4d}, {0xf0a59, 0xf0a5c}, {0xf0a66, 0xf0a75}, + {0xf0a81, 0xf0a83}, {0xf0a85, 0xf0a8d}, {0xf0a8f, 0xf0a91}, {0xf0a93, 0xf0aa8}, + {0xf0aaa, 0xf0ab0}, {0xf0ab5, 0xf0ab9}, {0xf0abc, 0xf0ac5}, {0xf0ac7, 0xf0ac9}, + {0xf0acb, 0xf0acd}, {0xf0ae0, 0xf0ae3}, {0xf0ae6, 0xf0af1}, {0xf0af9, 0xf0aff}, + {0xf0b01, 0xf0b03}, {0xf0b05, 0xf0b0c}, {0xf0b13, 0xf0b28}, {0xf0b2a, 0xf0b30}, + {0xf0b35, 0xf0b39}, {0xf0b3c, 0xf0b44}, {0xf0b4b, 0xf0b4d}, {0xf0b5f, 0xf0b63}, + {0xf0b66, 0xf0b77}, {0xf0b85, 0xf0b8a}, {0xf0b8e, 0xf0b90}, {0xf0b92, 0xf0b95}, + {0xf0ba8, 0xf0baa}, {0xf0bae, 0xf0bb9}, {0xf0bbe, 0xf0bc2}, {0xf0bc6, 0xf0bc8}, + {0xf0bca, 0xf0bcd}, {0xf0be6, 0xf0bfa}, {0xf0c00, 0xf0c03}, {0xf0c05, 0xf0c0c}, + {0xf0c0e, 0xf0c10}, {0xf0c12, 0xf0c28}, {0xf0c2a, 0xf0c39}, {0xf0c3d, 0xf0c44}, + {0xf0c46, 0xf0c48}, {0xf0c4a, 0xf0c4d}, {0xf0c58, 0xf0c5a}, {0xf0c60, 0xf0c63}, + {0xf0c66, 0xf0c6f}, {0xf0c78, 0xf0c83}, {0xf0c85, 0xf0c8c}, {0xf0c8e, 0xf0c90}, + {0xf0c92, 0xf0ca8}, {0xf0caa, 0xf0cb3}, {0xf0cb5, 0xf0cb9}, {0xf0cbc, 0xf0cc4}, + {0xf0cc6, 0xf0cc8}, {0xf0cca, 0xf0ccd}, {0xf0ce0, 0xf0ce3}, {0xf0ce6, 0xf0cef}, + {0xf0d00, 0xf0d03}, {0xf0d05, 0xf0d0c}, {0xf0d0e, 0xf0d10}, {0xf0d12, 0xf0d44}, + {0xf0d46, 0xf0d48}, {0xf0d4a, 0xf0d4f}, {0xf0d54, 0xf0d63}, {0xf0d66, 0xf0d7f}, + {0xf0d85, 0xf0d96}, {0xf0d9a, 0xf0db1}, {0xf0db3, 0xf0dbb}, {0xf0dc0, 0xf0dc6}, + {0xf0dcf, 0xf0dd4}, {0xf0dd8, 0xf0ddf}, {0xf0de6, 0xf0def}, {0xf0df2, 0xf0df4}, + {0xf0e01, 0xf0e3a}, {0xf0e3f, 0xf0e5b}, {0xf0e94, 0xf0e97}, {0xf0e99, 0xf0e9f}, + {0xf0ea1, 0xf0ea3}, {0xf0ead, 0xf0eb9}, {0xf0ebb, 0xf0ebd}, {0xf0ec0, 0xf0ec4}, + {0xf0ec8, 0xf0ecd}, {0xf0ed0, 0xf0ed9}, {0xf0edc, 0xf0edf}, {0xf0f00, 0xf0f47}, + {0xf0f49, 0xf0f6c}, {0xf0f71, 0xf0f97}, {0xf0f99, 0xf0fbc}, {0xf0fbe, 0xf0fcc}, + {0xf0fce, 0xf0fda}, {0xf1000, 0xf10c5}, {0xf10d0, 0xf1248}, {0xf124a, 0xf124d}, + {0xf1250, 0xf1256}, {0xf125a, 0xf125d}, {0xf1260, 0xf1288}, {0xf128a, 0xf128d}, + {0xf1290, 0xf12b0}, {0xf12b2, 0xf12b5}, {0xf12b8, 0xf12be}, {0xf12c2, 0xf12c5}, + {0xf12c8, 0xf12d6}, {0xf12d8, 0xf1310}, {0xf1312, 0xf1315}, {0xf1318, 0xf135a}, + {0xf135d, 0xf137c}, {0xf1380, 0xf1399}, {0xf13a0, 0xf13f5}, {0xf13f8, 0xf13fd}, + {0xf1400, 0xf167f}, {0xf1681, 0xf169c}, {0xf16a0, 0xf16f8}, {0xf1700, 0xf170c}, + {0xf170e, 0xf1714}, {0xf1720, 0xf1736}, {0xf1740, 0xf1753}, {0xf1760, 0xf176c}, + {0xf176e, 0xf1770}, {0xf1780, 0xf17dd}, {0xf17e0, 0xf17e9}, {0xf17f0, 0xf17f9}, + {0xf1800, 0xf180d}, {0xf1810, 0xf1819}, {0xf1820, 0xf1877}, {0xf1880, 0xf18aa}, + {0xf18b0, 0xf18f5}, {0xf1900, 0xf191e}, {0xf1920, 0xf192b}, {0xf1930, 0xf193b}, + {0xf1944, 0xf196d}, {0xf1970, 0xf1974}, {0xf1980, 0xf19ab}, {0xf19b0, 0xf19c9}, + {0xf19d0, 0xf19da}, {0xf19de, 0xf1a1b}, {0xf1a1e, 0xf1a5e}, {0xf1a60, 0xf1a7c}, + {0xf1a7f, 0xf1a89}, {0xf1a90, 0xf1a99}, {0xf1aa0, 0xf1aad}, {0xf1ab0, 0xf1abe}, + {0xf1b00, 0xf1b4b}, {0xf1b50, 0xf1b7c}, {0xf1b80, 0xf1bf3}, {0xf1bfc, 0xf1c37}, + {0xf1c3b, 0xf1c49}, {0xf1c4d, 0xf1c88}, {0xf1cc0, 0xf1cc7}, {0xf1cd0, 0xf1cf9}, + {0xf1d00, 0xf1df9}, {0xf1dfb, 0xf1f15}, {0xf1f18, 0xf1f1d}, {0xf1f20, 0xf1f45}, + {0xf1f48, 0xf1f4d}, {0xf1f50, 0xf1f57}, {0xf1f5f, 0xf1f7d}, {0xf1f80, 0xf1fb4}, + {0xf1fb6, 0xf1fc4}, {0xf1fc6, 0xf1fd3}, {0xf1fd6, 0xf1fdb}, {0xf1fdd, 0xf1fef}, + {0xf1ff2, 0xf1ff4}, {0xf1ff6, 0xf1ffe}, {0xf2010, 0xf2027}, {0xf2030, 0xf205e}, + {0xf2074, 0xf208e}, {0xf2090, 0xf209c}, {0xf20a0, 0xf20bf}, {0xf20d0, 0xf20f0}, + {0xf2100, 0xf218b}, {0xf2190, 0xf2426}, {0xf2440, 0xf244a}, {0xf2460, 0xf2b73}, + {0xf2b76, 0xf2b95}, {0xf2b98, 0xf2bb9}, {0xf2bbd, 0xf2bc8}, {0xf2bca, 0xf2bd2}, + {0xf2bec, 0xf2bef}, {0xf2c00, 0xf2c2e}, {0xf2c30, 0xf2c5e}, {0xf2c60, 0xf2cf3}, + {0xf2cf9, 0xf2d25}, {0xf2d30, 0xf2d67}, {0xf2d7f, 0xf2d96}, {0xf2da0, 0xf2da6}, + {0xf2da8, 0xf2dae}, {0xf2db0, 0xf2db6}, {0xf2db8, 0xf2dbe}, {0xf2dc0, 0xf2dc6}, + {0xf2dc8, 0xf2dce}, {0xf2dd0, 0xf2dd6}, {0xf2dd8, 0xf2dde}, {0xf2de0, 0xf2e49}, + {0xf2e80, 0xf2e99}, {0xf2e9b, 0xf2ef3}, {0xf2f00, 0xf2fd5}, {0xf2ff0, 0xf2ffb}, + {0xf3001, 0xf303f}, {0xf3041, 0xf3096}, {0xf3099, 0xf30ff}, {0xf3105, 0xf312e}, + {0xf3131, 0xf318e}, {0xf3190, 0xf31ba}, {0xf31c0, 0xf31e3}, {0xf31f0, 0xf321e}, + {0xf3220, 0xf32fe}, {0xf3300, 0xf4db5}, {0xf4dc0, 0xf9fea}, {0xfa000, 0xfa48c}, + {0xfa490, 0xfa4c6}, {0xfa4d0, 0xfa62b}, {0xfa640, 0xfa6f7}, {0xfa700, 0xfa7ae}, + {0xfa7b0, 0xfa7b7}, {0xfa7f7, 0xfa82b}, {0xfa830, 0xfa839}, {0xfa840, 0xfa877}, + {0xfa880, 0xfa8c5}, {0xfa8ce, 0xfa8d9}, {0xfa8e0, 0xfa8fd}, {0xfa900, 0xfa953}, + {0xfa95f, 0xfa97c}, {0xfa980, 0xfa9cd}, {0xfa9cf, 0xfa9d9}, {0xfa9de, 0xfa9fe}, + {0xfaa00, 0xfaa36}, {0xfaa40, 0xfaa4d}, {0xfaa50, 0xfaa59}, {0xfaa5c, 0xfaac2}, + {0xfaadb, 0xfaaf6}, {0xfab01, 0xfab06}, {0xfab09, 0xfab0e}, {0xfab11, 0xfab16}, + {0xfab20, 0xfab26}, {0xfab28, 0xfab2e}, {0xfab30, 0xfab65}, {0xfab70, 0xfabed}, + {0xfabf0, 0xfabf9}, {0xfac00, 0xfd7a3}, {0xfd7b0, 0xfd7c6}, {0xfd7cb, 0xfd7fb}, + {0xff900, 0xffa6d}, {0xffa70, 0xffad9}, {0xffb00, 0xffb06}, {0xffb13, 0xffb17}, + {0xffb1d, 0xffb36}, {0xffb38, 0xffb3c}, {0xffb46, 0xffbc1}, {0xffbd3, 0xffd3f}, + {0xffd50, 0xffd8f}, {0xffd92, 0xffdc7}, {0xffdf0, 0xffdfd}, {0xffe00, 0xffe19}, + {0xffe20, 0xffe52}, {0xffe54, 0xffe66}, {0xffe68, 0xffe6b}, {0xffe70, 0xffe74}, + {0xffe76, 0xffefc}, {0xfff01, 0xfffbe}, {0xfffc2, 0xfffc7}, {0xfffca, 0xfffcf}, + {0xfffd2, 0xfffd7}, {0xfffda, 0xfffdc}, {0xfffe0, 0xfffe6}, {0xfffe8, 0xfffee}, + {0x100021, 0x10007e}, {0x1000a1, 0x1000ac}, {0x1000ae, 0x100377}, {0x10037a, 0x10037f}, + {0x100384, 0x10038a}, {0x10038e, 0x1003a1}, {0x1003a3, 0x10052f}, {0x100531, 0x100556}, + {0x100559, 0x10055f}, {0x100561, 0x100587}, {0x10058d, 0x10058f}, {0x100591, 0x1005c7}, + {0x1005d0, 0x1005ea}, {0x1005f0, 0x1005f4}, {0x100606, 0x10061b}, {0x10061e, 0x1006dc}, + {0x1006de, 0x10070d}, {0x100710, 0x10074a}, {0x10074d, 0x1007b1}, {0x1007c0, 0x1007fa}, + {0x100800, 0x10082d}, {0x100830, 0x10083e}, {0x100840, 0x10085b}, {0x100860, 0x10086a}, + {0x1008a0, 0x1008b4}, {0x1008b6, 0x1008bd}, {0x1008d4, 0x1008e1}, {0x1008e3, 0x100983}, + {0x100985, 0x10098c}, {0x100993, 0x1009a8}, {0x1009aa, 0x1009b0}, {0x1009b6, 0x1009b9}, + {0x1009bc, 0x1009c4}, {0x1009cb, 0x1009ce}, {0x1009df, 0x1009e3}, {0x1009e6, 0x1009fd}, + {0x100a01, 0x100a03}, {0x100a05, 0x100a0a}, {0x100a13, 0x100a28}, {0x100a2a, 0x100a30}, + {0x100a3e, 0x100a42}, {0x100a4b, 0x100a4d}, {0x100a59, 0x100a5c}, {0x100a66, 0x100a75}, + {0x100a81, 0x100a83}, {0x100a85, 0x100a8d}, {0x100a8f, 0x100a91}, {0x100a93, 0x100aa8}, + {0x100aaa, 0x100ab0}, {0x100ab5, 0x100ab9}, {0x100abc, 0x100ac5}, {0x100ac7, 0x100ac9}, + {0x100acb, 0x100acd}, {0x100ae0, 0x100ae3}, {0x100ae6, 0x100af1}, {0x100af9, 0x100aff}, + {0x100b01, 0x100b03}, {0x100b05, 0x100b0c}, {0x100b13, 0x100b28}, {0x100b2a, 0x100b30}, + {0x100b35, 0x100b39}, {0x100b3c, 0x100b44}, {0x100b4b, 0x100b4d}, {0x100b5f, 0x100b63}, + {0x100b66, 0x100b77}, {0x100b85, 0x100b8a}, {0x100b8e, 0x100b90}, {0x100b92, 0x100b95}, + {0x100ba8, 0x100baa}, {0x100bae, 0x100bb9}, {0x100bbe, 0x100bc2}, {0x100bc6, 0x100bc8}, + {0x100bca, 0x100bcd}, {0x100be6, 0x100bfa}, {0x100c00, 0x100c03}, {0x100c05, 0x100c0c}, + {0x100c0e, 0x100c10}, {0x100c12, 0x100c28}, {0x100c2a, 0x100c39}, {0x100c3d, 0x100c44}, + {0x100c46, 0x100c48}, {0x100c4a, 0x100c4d}, {0x100c58, 0x100c5a}, {0x100c60, 0x100c63}, + {0x100c66, 0x100c6f}, {0x100c78, 0x100c83}, {0x100c85, 0x100c8c}, {0x100c8e, 0x100c90}, + {0x100c92, 0x100ca8}, {0x100caa, 0x100cb3}, {0x100cb5, 0x100cb9}, {0x100cbc, 0x100cc4}, + {0x100cc6, 0x100cc8}, {0x100cca, 0x100ccd}, {0x100ce0, 0x100ce3}, {0x100ce6, 0x100cef}, + {0x100d00, 0x100d03}, {0x100d05, 0x100d0c}, {0x100d0e, 0x100d10}, {0x100d12, 0x100d44}, + {0x100d46, 0x100d48}, {0x100d4a, 0x100d4f}, {0x100d54, 0x100d63}, {0x100d66, 0x100d7f}, + {0x100d85, 0x100d96}, {0x100d9a, 0x100db1}, {0x100db3, 0x100dbb}, {0x100dc0, 0x100dc6}, + {0x100dcf, 0x100dd4}, {0x100dd8, 0x100ddf}, {0x100de6, 0x100def}, {0x100df2, 0x100df4}, + {0x100e01, 0x100e3a}, {0x100e3f, 0x100e5b}, {0x100e94, 0x100e97}, {0x100e99, 0x100e9f}, + {0x100ea1, 0x100ea3}, {0x100ead, 0x100eb9}, {0x100ebb, 0x100ebd}, {0x100ec0, 0x100ec4}, + {0x100ec8, 0x100ecd}, {0x100ed0, 0x100ed9}, {0x100edc, 0x100edf}, {0x100f00, 0x100f47}, + {0x100f49, 0x100f6c}, {0x100f71, 0x100f97}, {0x100f99, 0x100fbc}, {0x100fbe, 0x100fcc}, + {0x100fce, 0x100fda}, {0x101000, 0x1010c5}, {0x1010d0, 0x101248}, {0x10124a, 0x10124d}, + {0x101250, 0x101256}, {0x10125a, 0x10125d}, {0x101260, 0x101288}, {0x10128a, 0x10128d}, + {0x101290, 0x1012b0}, {0x1012b2, 0x1012b5}, {0x1012b8, 0x1012be}, {0x1012c2, 0x1012c5}, + {0x1012c8, 0x1012d6}, {0x1012d8, 0x101310}, {0x101312, 0x101315}, {0x101318, 0x10135a}, + {0x10135d, 0x10137c}, {0x101380, 0x101399}, {0x1013a0, 0x1013f5}, {0x1013f8, 0x1013fd}, + {0x101400, 0x10167f}, {0x101681, 0x10169c}, {0x1016a0, 0x1016f8}, {0x101700, 0x10170c}, + {0x10170e, 0x101714}, {0x101720, 0x101736}, {0x101740, 0x101753}, {0x101760, 0x10176c}, + {0x10176e, 0x101770}, {0x101780, 0x1017dd}, {0x1017e0, 0x1017e9}, {0x1017f0, 0x1017f9}, + {0x101800, 0x10180d}, {0x101810, 0x101819}, {0x101820, 0x101877}, {0x101880, 0x1018aa}, + {0x1018b0, 0x1018f5}, {0x101900, 0x10191e}, {0x101920, 0x10192b}, {0x101930, 0x10193b}, + {0x101944, 0x10196d}, {0x101970, 0x101974}, {0x101980, 0x1019ab}, {0x1019b0, 0x1019c9}, + {0x1019d0, 0x1019da}, {0x1019de, 0x101a1b}, {0x101a1e, 0x101a5e}, {0x101a60, 0x101a7c}, + {0x101a7f, 0x101a89}, {0x101a90, 0x101a99}, {0x101aa0, 0x101aad}, {0x101ab0, 0x101abe}, + {0x101b00, 0x101b4b}, {0x101b50, 0x101b7c}, {0x101b80, 0x101bf3}, {0x101bfc, 0x101c37}, + {0x101c3b, 0x101c49}, {0x101c4d, 0x101c88}, {0x101cc0, 0x101cc7}, {0x101cd0, 0x101cf9}, + {0x101d00, 0x101df9}, {0x101dfb, 0x101f15}, {0x101f18, 0x101f1d}, {0x101f20, 0x101f45}, + {0x101f48, 0x101f4d}, {0x101f50, 0x101f57}, {0x101f5f, 0x101f7d}, {0x101f80, 0x101fb4}, + {0x101fb6, 0x101fc4}, {0x101fc6, 0x101fd3}, {0x101fd6, 0x101fdb}, {0x101fdd, 0x101fef}, + {0x101ff2, 0x101ff4}, {0x101ff6, 0x101ffe}, {0x102010, 0x102027}, {0x102030, 0x10205e}, + {0x102074, 0x10208e}, {0x102090, 0x10209c}, {0x1020a0, 0x1020bf}, {0x1020d0, 0x1020f0}, + {0x102100, 0x10218b}, {0x102190, 0x102426}, {0x102440, 0x10244a}, {0x102460, 0x102b73}, + {0x102b76, 0x102b95}, {0x102b98, 0x102bb9}, {0x102bbd, 0x102bc8}, {0x102bca, 0x102bd2}, + {0x102bec, 0x102bef}, {0x102c00, 0x102c2e}, {0x102c30, 0x102c5e}, {0x102c60, 0x102cf3}, + {0x102cf9, 0x102d25}, {0x102d30, 0x102d67}, {0x102d7f, 0x102d96}, {0x102da0, 0x102da6}, + {0x102da8, 0x102dae}, {0x102db0, 0x102db6}, {0x102db8, 0x102dbe}, {0x102dc0, 0x102dc6}, + {0x102dc8, 0x102dce}, {0x102dd0, 0x102dd6}, {0x102dd8, 0x102dde}, {0x102de0, 0x102e49}, + {0x102e80, 0x102e99}, {0x102e9b, 0x102ef3}, {0x102f00, 0x102fd5}, {0x102ff0, 0x102ffb}, + {0x103001, 0x10303f}, {0x103041, 0x103096}, {0x103099, 0x1030ff}, {0x103105, 0x10312e}, + {0x103131, 0x10318e}, {0x103190, 0x1031ba}, {0x1031c0, 0x1031e3}, {0x1031f0, 0x10321e}, + {0x103220, 0x1032fe}, {0x103300, 0x104db5}, {0x104dc0, 0x109fea}, {0x10a000, 0x10a48c}, + {0x10a490, 0x10a4c6}, {0x10a4d0, 0x10a62b}, {0x10a640, 0x10a6f7}, {0x10a700, 0x10a7ae}, + {0x10a7b0, 0x10a7b7}, {0x10a7f7, 0x10a82b}, {0x10a830, 0x10a839}, {0x10a840, 0x10a877}, + {0x10a880, 0x10a8c5}, {0x10a8ce, 0x10a8d9}, {0x10a8e0, 0x10a8fd}, {0x10a900, 0x10a953}, + {0x10a95f, 0x10a97c}, {0x10a980, 0x10a9cd}, {0x10a9cf, 0x10a9d9}, {0x10a9de, 0x10a9fe}, + {0x10aa00, 0x10aa36}, {0x10aa40, 0x10aa4d}, {0x10aa50, 0x10aa59}, {0x10aa5c, 0x10aac2}, + {0x10aadb, 0x10aaf6}, {0x10ab01, 0x10ab06}, {0x10ab09, 0x10ab0e}, {0x10ab11, 0x10ab16}, + {0x10ab20, 0x10ab26}, {0x10ab28, 0x10ab2e}, {0x10ab30, 0x10ab65}, {0x10ab70, 0x10abed}, + {0x10abf0, 0x10abf9}, {0x10ac00, 0x10d7a3}, {0x10d7b0, 0x10d7c6}, {0x10d7cb, 0x10d7fb}, + {0x10f900, 0x10fa6d}, {0x10fa70, 0x10fad9}, {0x10fb00, 0x10fb06}, {0x10fb13, 0x10fb17}, + {0x10fb1d, 0x10fb36}, {0x10fb38, 0x10fb3c}, {0x10fb46, 0x10fbc1}, {0x10fbd3, 0x10fd3f}, + {0x10fd50, 0x10fd8f}, {0x10fd92, 0x10fdc7}, {0x10fdf0, 0x10fdfd}, {0x10fe00, 0x10fe19}, + {0x10fe20, 0x10fe52}, {0x10fe54, 0x10fe66}, {0x10fe68, 0x10fe6b}, {0x10fe70, 0x10fe74}, + {0x10fe76, 0x10fefc}, {0x10ff01, 0x10ffbe}, {0x10ffc2, 0x10ffc7}, {0x10ffca, 0x10ffcf}, + {0x10ffd2, 0x10ffd7}, {0x10ffda, 0x10ffdc}, {0x10ffe0, 0x10ffe6}, {0x10ffe8, 0x10ffee} #endif }; @@ -755,23 +6176,186 @@ static const chr graphCharTable[] = { 0x38c, 0x589, 0x58a, 0x85e, 0x98f, 0x990, 0x9b2, 0x9c7, 0x9c8, 0x9d7, 0x9dc, 0x9dd, 0xa0f, 0xa10, 0xa32, 0xa33, 0xa35, 0xa36, 0xa38, 0xa39, 0xa3c, 0xa47, 0xa48, 0xa51, 0xa5e, 0xab2, 0xab3, - 0xad0, 0xaf9, 0xb0f, 0xb10, 0xb32, 0xb33, 0xb47, 0xb48, 0xb56, - 0xb57, 0xb5c, 0xb5d, 0xb82, 0xb83, 0xb99, 0xb9a, 0xb9c, 0xb9e, - 0xb9f, 0xba3, 0xba4, 0xbd0, 0xbd7, 0xc55, 0xc56, 0xcd5, 0xcd6, - 0xcde, 0xcf1, 0xcf2, 0xd82, 0xd83, 0xdbd, 0xdca, 0xdd6, 0xe81, - 0xe82, 0xe84, 0xe87, 0xe88, 0xe8a, 0xe8d, 0xea5, 0xea7, 0xeaa, - 0xeab, 0xec6, 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x1772, 0x1773, 0x1940, - 0x1cf8, 0x1cf9, 0x1f59, 0x1f5b, 0x1f5d, 0x2070, 0x2071, 0x2d27, 0x2d2d, - 0x2d6f, 0x2d70, 0xfb3e, 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfffc, 0xfffd + 0xad0, 0xb0f, 0xb10, 0xb32, 0xb33, 0xb47, 0xb48, 0xb56, 0xb57, + 0xb5c, 0xb5d, 0xb82, 0xb83, 0xb99, 0xb9a, 0xb9c, 0xb9e, 0xb9f, + 0xba3, 0xba4, 0xbd0, 0xbd7, 0xc55, 0xc56, 0xcd5, 0xcd6, 0xcde, + 0xcf1, 0xcf2, 0xd82, 0xd83, 0xdbd, 0xdca, 0xdd6, 0xe81, 0xe82, + 0xe84, 0xe87, 0xe88, 0xe8a, 0xe8d, 0xea5, 0xea7, 0xeaa, 0xeab, + 0xec6, 0x10c7, 0x10cd, 0x1258, 0x12c0, 0x1772, 0x1773, 0x1940, 0x1f59, + 0x1f5b, 0x1f5d, 0x2070, 0x2071, 0x2d27, 0x2d2d, 0x2d6f, 0x2d70, 0xfb3e, + 0xfb40, 0xfb41, 0xfb43, 0xfb44, 0xfffc, 0xfffd #if TCL_UTF_MAX > 4 - ,0x1003c, 0x1003d, 0x101a0, 0x1056f, 0x10808, 0x10837, 0x10838, 0x1083c, 0x108f4, - 0x108f5, 0x1093f, 0x10a05, 0x10a06, 0x11288, 0x1130f, 0x11310, 0x11332, 0x11333, - 0x11347, 0x11348, 0x11350, 0x11357, 0x1145b, 0x1145d, 0x118ff, 0x16a6e, 0x16a6f, - 0x16fe0, 0x1b000, 0x1b001, 0x1d49e, 0x1d49f, 0x1d4a2, 0x1d4a5, 0x1d4a6, 0x1d4bb, - 0x1d546, 0x1e023, 0x1e024, 0x1e95e, 0x1e95f, 0x1ee21, 0x1ee22, 0x1ee24, 0x1ee27, - 0x1ee39, 0x1ee3b, 0x1ee42, 0x1ee47, 0x1ee49, 0x1ee4b, 0x1ee51, 0x1ee52, 0x1ee54, - 0x1ee57, 0x1ee59, 0x1ee5b, 0x1ee5d, 0x1ee5f, 0x1ee61, 0x1ee62, 0x1ee64, 0x1ee7e, - 0x1eef0, 0x1eef1, 0x1f250, 0x1f251, 0x1f930, 0x1f9c0 + ,0x1038c, 0x10589, 0x1058a, 0x1085e, 0x1098f, 0x10990, 0x109b2, 0x109c7, 0x109c8, + 0x109d7, 0x109dc, 0x109dd, 0x10a0f, 0x10a10, 0x10a32, 0x10a33, 0x10a35, 0x10a36, + 0x10a38, 0x10a39, 0x10a3c, 0x10a47, 0x10a48, 0x10a51, 0x10a5e, 0x10ab2, 0x10ab3, + 0x10ad0, 0x10b0f, 0x10b10, 0x10b32, 0x10b33, 0x10b47, 0x10b48, 0x10b56, 0x10b57, + 0x10b5c, 0x10b5d, 0x10b82, 0x10b83, 0x10b99, 0x10b9a, 0x10b9c, 0x10b9e, 0x10b9f, + 0x10ba3, 0x10ba4, 0x10bd0, 0x10bd7, 0x10c55, 0x10c56, 0x10cd5, 0x10cd6, 0x10cde, + 0x10cf1, 0x10cf2, 0x10d82, 0x10d83, 0x10dbd, 0x10dca, 0x10dd6, 0x10e81, 0x10e82, + 0x10e84, 0x10e87, 0x10e88, 0x10e8a, 0x10e8d, 0x10ea5, 0x10ea7, 0x10eaa, 0x10eab, + 0x10ec6, 0x110c7, 0x110cd, 0x11258, 0x112c0, 0x11772, 0x11773, 0x11940, 0x11f59, + 0x11f5b, 0x11f5d, 0x12070, 0x12071, 0x12d27, 0x12d2d, 0x12d6f, 0x12d70, 0x1fb3e, + 0x1fb40, 0x1fb41, 0x1fb43, 0x1fb44, 0x1fffc, 0x1fffd, 0x2038c, 0x20589, 0x2058a, + 0x2085e, 0x2098f, 0x20990, 0x209b2, 0x209c7, 0x209c8, 0x209d7, 0x209dc, 0x209dd, + 0x20a0f, 0x20a10, 0x20a32, 0x20a33, 0x20a35, 0x20a36, 0x20a38, 0x20a39, 0x20a3c, + 0x20a47, 0x20a48, 0x20a51, 0x20a5e, 0x20ab2, 0x20ab3, 0x20ad0, 0x20b0f, 0x20b10, + 0x20b32, 0x20b33, 0x20b47, 0x20b48, 0x20b56, 0x20b57, 0x20b5c, 0x20b5d, 0x20b82, + 0x20b83, 0x20b99, 0x20b9a, 0x20b9c, 0x20b9e, 0x20b9f, 0x20ba3, 0x20ba4, 0x20bd0, + 0x20bd7, 0x20c55, 0x20c56, 0x20cd5, 0x20cd6, 0x20cde, 0x20cf1, 0x20cf2, 0x20d82, + 0x20d83, 0x20dbd, 0x20dca, 0x20dd6, 0x20e81, 0x20e82, 0x20e84, 0x20e87, 0x20e88, + 0x20e8a, 0x20e8d, 0x20ea5, 0x20ea7, 0x20eaa, 0x20eab, 0x20ec6, 0x210c7, 0x210cd, + 0x21258, 0x212c0, 0x21772, 0x21773, 0x21940, 0x21f59, 0x21f5b, 0x21f5d, 0x22070, + 0x22071, 0x22d27, 0x22d2d, 0x22d6f, 0x22d70, 0x2fb3e, 0x2fb40, 0x2fb41, 0x2fb43, + 0x2fb44, 0x2fffc, 0x2fffd, 0x3038c, 0x30589, 0x3058a, 0x3085e, 0x3098f, 0x30990, + 0x309b2, 0x309c7, 0x309c8, 0x309d7, 0x309dc, 0x309dd, 0x30a0f, 0x30a10, 0x30a32, + 0x30a33, 0x30a35, 0x30a36, 0x30a38, 0x30a39, 0x30a3c, 0x30a47, 0x30a48, 0x30a51, + 0x30a5e, 0x30ab2, 0x30ab3, 0x30ad0, 0x30b0f, 0x30b10, 0x30b32, 0x30b33, 0x30b47, + 0x30b48, 0x30b56, 0x30b57, 0x30b5c, 0x30b5d, 0x30b82, 0x30b83, 0x30b99, 0x30b9a, + 0x30b9c, 0x30b9e, 0x30b9f, 0x30ba3, 0x30ba4, 0x30bd0, 0x30bd7, 0x30c55, 0x30c56, + 0x30cd5, 0x30cd6, 0x30cde, 0x30cf1, 0x30cf2, 0x30d82, 0x30d83, 0x30dbd, 0x30dca, + 0x30dd6, 0x30e81, 0x30e82, 0x30e84, 0x30e87, 0x30e88, 0x30e8a, 0x30e8d, 0x30ea5, + 0x30ea7, 0x30eaa, 0x30eab, 0x30ec6, 0x310c7, 0x310cd, 0x31258, 0x312c0, 0x31772, + 0x31773, 0x31940, 0x31f59, 0x31f5b, 0x31f5d, 0x32070, 0x32071, 0x32d27, 0x32d2d, + 0x32d6f, 0x32d70, 0x3fb3e, 0x3fb40, 0x3fb41, 0x3fb43, 0x3fb44, 0x3fffc, 0x3fffd, + 0x4038c, 0x40589, 0x4058a, 0x4085e, 0x4098f, 0x40990, 0x409b2, 0x409c7, 0x409c8, + 0x409d7, 0x409dc, 0x409dd, 0x40a0f, 0x40a10, 0x40a32, 0x40a33, 0x40a35, 0x40a36, + 0x40a38, 0x40a39, 0x40a3c, 0x40a47, 0x40a48, 0x40a51, 0x40a5e, 0x40ab2, 0x40ab3, + 0x40ad0, 0x40b0f, 0x40b10, 0x40b32, 0x40b33, 0x40b47, 0x40b48, 0x40b56, 0x40b57, + 0x40b5c, 0x40b5d, 0x40b82, 0x40b83, 0x40b99, 0x40b9a, 0x40b9c, 0x40b9e, 0x40b9f, + 0x40ba3, 0x40ba4, 0x40bd0, 0x40bd7, 0x40c55, 0x40c56, 0x40cd5, 0x40cd6, 0x40cde, + 0x40cf1, 0x40cf2, 0x40d82, 0x40d83, 0x40dbd, 0x40dca, 0x40dd6, 0x40e81, 0x40e82, + 0x40e84, 0x40e87, 0x40e88, 0x40e8a, 0x40e8d, 0x40ea5, 0x40ea7, 0x40eaa, 0x40eab, + 0x40ec6, 0x410c7, 0x410cd, 0x41258, 0x412c0, 0x41772, 0x41773, 0x41940, 0x41f59, + 0x41f5b, 0x41f5d, 0x42070, 0x42071, 0x42d27, 0x42d2d, 0x42d6f, 0x42d70, 0x4fb3e, + 0x4fb40, 0x4fb41, 0x4fb43, 0x4fb44, 0x4fffc, 0x4fffd, 0x5038c, 0x50589, 0x5058a, + 0x5085e, 0x5098f, 0x50990, 0x509b2, 0x509c7, 0x509c8, 0x509d7, 0x509dc, 0x509dd, + 0x50a0f, 0x50a10, 0x50a32, 0x50a33, 0x50a35, 0x50a36, 0x50a38, 0x50a39, 0x50a3c, + 0x50a47, 0x50a48, 0x50a51, 0x50a5e, 0x50ab2, 0x50ab3, 0x50ad0, 0x50b0f, 0x50b10, + 0x50b32, 0x50b33, 0x50b47, 0x50b48, 0x50b56, 0x50b57, 0x50b5c, 0x50b5d, 0x50b82, + 0x50b83, 0x50b99, 0x50b9a, 0x50b9c, 0x50b9e, 0x50b9f, 0x50ba3, 0x50ba4, 0x50bd0, + 0x50bd7, 0x50c55, 0x50c56, 0x50cd5, 0x50cd6, 0x50cde, 0x50cf1, 0x50cf2, 0x50d82, + 0x50d83, 0x50dbd, 0x50dca, 0x50dd6, 0x50e81, 0x50e82, 0x50e84, 0x50e87, 0x50e88, + 0x50e8a, 0x50e8d, 0x50ea5, 0x50ea7, 0x50eaa, 0x50eab, 0x50ec6, 0x510c7, 0x510cd, + 0x51258, 0x512c0, 0x51772, 0x51773, 0x51940, 0x51f59, 0x51f5b, 0x51f5d, 0x52070, + 0x52071, 0x52d27, 0x52d2d, 0x52d6f, 0x52d70, 0x5fb3e, 0x5fb40, 0x5fb41, 0x5fb43, + 0x5fb44, 0x5fffc, 0x5fffd, 0x6038c, 0x60589, 0x6058a, 0x6085e, 0x6098f, 0x60990, + 0x609b2, 0x609c7, 0x609c8, 0x609d7, 0x609dc, 0x609dd, 0x60a0f, 0x60a10, 0x60a32, + 0x60a33, 0x60a35, 0x60a36, 0x60a38, 0x60a39, 0x60a3c, 0x60a47, 0x60a48, 0x60a51, + 0x60a5e, 0x60ab2, 0x60ab3, 0x60ad0, 0x60b0f, 0x60b10, 0x60b32, 0x60b33, 0x60b47, + 0x60b48, 0x60b56, 0x60b57, 0x60b5c, 0x60b5d, 0x60b82, 0x60b83, 0x60b99, 0x60b9a, + 0x60b9c, 0x60b9e, 0x60b9f, 0x60ba3, 0x60ba4, 0x60bd0, 0x60bd7, 0x60c55, 0x60c56, + 0x60cd5, 0x60cd6, 0x60cde, 0x60cf1, 0x60cf2, 0x60d82, 0x60d83, 0x60dbd, 0x60dca, + 0x60dd6, 0x60e81, 0x60e82, 0x60e84, 0x60e87, 0x60e88, 0x60e8a, 0x60e8d, 0x60ea5, + 0x60ea7, 0x60eaa, 0x60eab, 0x60ec6, 0x610c7, 0x610cd, 0x61258, 0x612c0, 0x61772, + 0x61773, 0x61940, 0x61f59, 0x61f5b, 0x61f5d, 0x62070, 0x62071, 0x62d27, 0x62d2d, + 0x62d6f, 0x62d70, 0x6fb3e, 0x6fb40, 0x6fb41, 0x6fb43, 0x6fb44, 0x6fffc, 0x6fffd, + 0x7038c, 0x70589, 0x7058a, 0x7085e, 0x7098f, 0x70990, 0x709b2, 0x709c7, 0x709c8, + 0x709d7, 0x709dc, 0x709dd, 0x70a0f, 0x70a10, 0x70a32, 0x70a33, 0x70a35, 0x70a36, + 0x70a38, 0x70a39, 0x70a3c, 0x70a47, 0x70a48, 0x70a51, 0x70a5e, 0x70ab2, 0x70ab3, + 0x70ad0, 0x70b0f, 0x70b10, 0x70b32, 0x70b33, 0x70b47, 0x70b48, 0x70b56, 0x70b57, + 0x70b5c, 0x70b5d, 0x70b82, 0x70b83, 0x70b99, 0x70b9a, 0x70b9c, 0x70b9e, 0x70b9f, + 0x70ba3, 0x70ba4, 0x70bd0, 0x70bd7, 0x70c55, 0x70c56, 0x70cd5, 0x70cd6, 0x70cde, + 0x70cf1, 0x70cf2, 0x70d82, 0x70d83, 0x70dbd, 0x70dca, 0x70dd6, 0x70e81, 0x70e82, + 0x70e84, 0x70e87, 0x70e88, 0x70e8a, 0x70e8d, 0x70ea5, 0x70ea7, 0x70eaa, 0x70eab, + 0x70ec6, 0x710c7, 0x710cd, 0x71258, 0x712c0, 0x71772, 0x71773, 0x71940, 0x71f59, + 0x71f5b, 0x71f5d, 0x72070, 0x72071, 0x72d27, 0x72d2d, 0x72d6f, 0x72d70, 0x7fb3e, + 0x7fb40, 0x7fb41, 0x7fb43, 0x7fb44, 0x7fffc, 0x7fffd, 0x8038c, 0x80589, 0x8058a, + 0x8085e, 0x8098f, 0x80990, 0x809b2, 0x809c7, 0x809c8, 0x809d7, 0x809dc, 0x809dd, + 0x80a0f, 0x80a10, 0x80a32, 0x80a33, 0x80a35, 0x80a36, 0x80a38, 0x80a39, 0x80a3c, + 0x80a47, 0x80a48, 0x80a51, 0x80a5e, 0x80ab2, 0x80ab3, 0x80ad0, 0x80b0f, 0x80b10, + 0x80b32, 0x80b33, 0x80b47, 0x80b48, 0x80b56, 0x80b57, 0x80b5c, 0x80b5d, 0x80b82, + 0x80b83, 0x80b99, 0x80b9a, 0x80b9c, 0x80b9e, 0x80b9f, 0x80ba3, 0x80ba4, 0x80bd0, + 0x80bd7, 0x80c55, 0x80c56, 0x80cd5, 0x80cd6, 0x80cde, 0x80cf1, 0x80cf2, 0x80d82, + 0x80d83, 0x80dbd, 0x80dca, 0x80dd6, 0x80e81, 0x80e82, 0x80e84, 0x80e87, 0x80e88, + 0x80e8a, 0x80e8d, 0x80ea5, 0x80ea7, 0x80eaa, 0x80eab, 0x80ec6, 0x810c7, 0x810cd, + 0x81258, 0x812c0, 0x81772, 0x81773, 0x81940, 0x81f59, 0x81f5b, 0x81f5d, 0x82070, + 0x82071, 0x82d27, 0x82d2d, 0x82d6f, 0x82d70, 0x8fb3e, 0x8fb40, 0x8fb41, 0x8fb43, + 0x8fb44, 0x8fffc, 0x8fffd, 0x9038c, 0x90589, 0x9058a, 0x9085e, 0x9098f, 0x90990, + 0x909b2, 0x909c7, 0x909c8, 0x909d7, 0x909dc, 0x909dd, 0x90a0f, 0x90a10, 0x90a32, + 0x90a33, 0x90a35, 0x90a36, 0x90a38, 0x90a39, 0x90a3c, 0x90a47, 0x90a48, 0x90a51, + 0x90a5e, 0x90ab2, 0x90ab3, 0x90ad0, 0x90b0f, 0x90b10, 0x90b32, 0x90b33, 0x90b47, + 0x90b48, 0x90b56, 0x90b57, 0x90b5c, 0x90b5d, 0x90b82, 0x90b83, 0x90b99, 0x90b9a, + 0x90b9c, 0x90b9e, 0x90b9f, 0x90ba3, 0x90ba4, 0x90bd0, 0x90bd7, 0x90c55, 0x90c56, + 0x90cd5, 0x90cd6, 0x90cde, 0x90cf1, 0x90cf2, 0x90d82, 0x90d83, 0x90dbd, 0x90dca, + 0x90dd6, 0x90e81, 0x90e82, 0x90e84, 0x90e87, 0x90e88, 0x90e8a, 0x90e8d, 0x90ea5, + 0x90ea7, 0x90eaa, 0x90eab, 0x90ec6, 0x910c7, 0x910cd, 0x91258, 0x912c0, 0x91772, + 0x91773, 0x91940, 0x91f59, 0x91f5b, 0x91f5d, 0x92070, 0x92071, 0x92d27, 0x92d2d, + 0x92d6f, 0x92d70, 0x9fb3e, 0x9fb40, 0x9fb41, 0x9fb43, 0x9fb44, 0x9fffc, 0x9fffd, + 0xa038c, 0xa0589, 0xa058a, 0xa085e, 0xa098f, 0xa0990, 0xa09b2, 0xa09c7, 0xa09c8, + 0xa09d7, 0xa09dc, 0xa09dd, 0xa0a0f, 0xa0a10, 0xa0a32, 0xa0a33, 0xa0a35, 0xa0a36, + 0xa0a38, 0xa0a39, 0xa0a3c, 0xa0a47, 0xa0a48, 0xa0a51, 0xa0a5e, 0xa0ab2, 0xa0ab3, + 0xa0ad0, 0xa0b0f, 0xa0b10, 0xa0b32, 0xa0b33, 0xa0b47, 0xa0b48, 0xa0b56, 0xa0b57, + 0xa0b5c, 0xa0b5d, 0xa0b82, 0xa0b83, 0xa0b99, 0xa0b9a, 0xa0b9c, 0xa0b9e, 0xa0b9f, + 0xa0ba3, 0xa0ba4, 0xa0bd0, 0xa0bd7, 0xa0c55, 0xa0c56, 0xa0cd5, 0xa0cd6, 0xa0cde, + 0xa0cf1, 0xa0cf2, 0xa0d82, 0xa0d83, 0xa0dbd, 0xa0dca, 0xa0dd6, 0xa0e81, 0xa0e82, + 0xa0e84, 0xa0e87, 0xa0e88, 0xa0e8a, 0xa0e8d, 0xa0ea5, 0xa0ea7, 0xa0eaa, 0xa0eab, + 0xa0ec6, 0xa10c7, 0xa10cd, 0xa1258, 0xa12c0, 0xa1772, 0xa1773, 0xa1940, 0xa1f59, + 0xa1f5b, 0xa1f5d, 0xa2070, 0xa2071, 0xa2d27, 0xa2d2d, 0xa2d6f, 0xa2d70, 0xafb3e, + 0xafb40, 0xafb41, 0xafb43, 0xafb44, 0xafffc, 0xafffd, 0xb038c, 0xb0589, 0xb058a, + 0xb085e, 0xb098f, 0xb0990, 0xb09b2, 0xb09c7, 0xb09c8, 0xb09d7, 0xb09dc, 0xb09dd, + 0xb0a0f, 0xb0a10, 0xb0a32, 0xb0a33, 0xb0a35, 0xb0a36, 0xb0a38, 0xb0a39, 0xb0a3c, + 0xb0a47, 0xb0a48, 0xb0a51, 0xb0a5e, 0xb0ab2, 0xb0ab3, 0xb0ad0, 0xb0b0f, 0xb0b10, + 0xb0b32, 0xb0b33, 0xb0b47, 0xb0b48, 0xb0b56, 0xb0b57, 0xb0b5c, 0xb0b5d, 0xb0b82, + 0xb0b83, 0xb0b99, 0xb0b9a, 0xb0b9c, 0xb0b9e, 0xb0b9f, 0xb0ba3, 0xb0ba4, 0xb0bd0, + 0xb0bd7, 0xb0c55, 0xb0c56, 0xb0cd5, 0xb0cd6, 0xb0cde, 0xb0cf1, 0xb0cf2, 0xb0d82, + 0xb0d83, 0xb0dbd, 0xb0dca, 0xb0dd6, 0xb0e81, 0xb0e82, 0xb0e84, 0xb0e87, 0xb0e88, + 0xb0e8a, 0xb0e8d, 0xb0ea5, 0xb0ea7, 0xb0eaa, 0xb0eab, 0xb0ec6, 0xb10c7, 0xb10cd, + 0xb1258, 0xb12c0, 0xb1772, 0xb1773, 0xb1940, 0xb1f59, 0xb1f5b, 0xb1f5d, 0xb2070, + 0xb2071, 0xb2d27, 0xb2d2d, 0xb2d6f, 0xb2d70, 0xbfb3e, 0xbfb40, 0xbfb41, 0xbfb43, + 0xbfb44, 0xbfffc, 0xbfffd, 0xc038c, 0xc0589, 0xc058a, 0xc085e, 0xc098f, 0xc0990, + 0xc09b2, 0xc09c7, 0xc09c8, 0xc09d7, 0xc09dc, 0xc09dd, 0xc0a0f, 0xc0a10, 0xc0a32, + 0xc0a33, 0xc0a35, 0xc0a36, 0xc0a38, 0xc0a39, 0xc0a3c, 0xc0a47, 0xc0a48, 0xc0a51, + 0xc0a5e, 0xc0ab2, 0xc0ab3, 0xc0ad0, 0xc0b0f, 0xc0b10, 0xc0b32, 0xc0b33, 0xc0b47, + 0xc0b48, 0xc0b56, 0xc0b57, 0xc0b5c, 0xc0b5d, 0xc0b82, 0xc0b83, 0xc0b99, 0xc0b9a, + 0xc0b9c, 0xc0b9e, 0xc0b9f, 0xc0ba3, 0xc0ba4, 0xc0bd0, 0xc0bd7, 0xc0c55, 0xc0c56, + 0xc0cd5, 0xc0cd6, 0xc0cde, 0xc0cf1, 0xc0cf2, 0xc0d82, 0xc0d83, 0xc0dbd, 0xc0dca, + 0xc0dd6, 0xc0e81, 0xc0e82, 0xc0e84, 0xc0e87, 0xc0e88, 0xc0e8a, 0xc0e8d, 0xc0ea5, + 0xc0ea7, 0xc0eaa, 0xc0eab, 0xc0ec6, 0xc10c7, 0xc10cd, 0xc1258, 0xc12c0, 0xc1772, + 0xc1773, 0xc1940, 0xc1f59, 0xc1f5b, 0xc1f5d, 0xc2070, 0xc2071, 0xc2d27, 0xc2d2d, + 0xc2d6f, 0xc2d70, 0xcfb3e, 0xcfb40, 0xcfb41, 0xcfb43, 0xcfb44, 0xcfffc, 0xcfffd, + 0xd038c, 0xd0589, 0xd058a, 0xd085e, 0xd098f, 0xd0990, 0xd09b2, 0xd09c7, 0xd09c8, + 0xd09d7, 0xd09dc, 0xd09dd, 0xd0a0f, 0xd0a10, 0xd0a32, 0xd0a33, 0xd0a35, 0xd0a36, + 0xd0a38, 0xd0a39, 0xd0a3c, 0xd0a47, 0xd0a48, 0xd0a51, 0xd0a5e, 0xd0ab2, 0xd0ab3, + 0xd0ad0, 0xd0b0f, 0xd0b10, 0xd0b32, 0xd0b33, 0xd0b47, 0xd0b48, 0xd0b56, 0xd0b57, + 0xd0b5c, 0xd0b5d, 0xd0b82, 0xd0b83, 0xd0b99, 0xd0b9a, 0xd0b9c, 0xd0b9e, 0xd0b9f, + 0xd0ba3, 0xd0ba4, 0xd0bd0, 0xd0bd7, 0xd0c55, 0xd0c56, 0xd0cd5, 0xd0cd6, 0xd0cde, + 0xd0cf1, 0xd0cf2, 0xd0d82, 0xd0d83, 0xd0dbd, 0xd0dca, 0xd0dd6, 0xd0e81, 0xd0e82, + 0xd0e84, 0xd0e87, 0xd0e88, 0xd0e8a, 0xd0e8d, 0xd0ea5, 0xd0ea7, 0xd0eaa, 0xd0eab, + 0xd0ec6, 0xd10c7, 0xd10cd, 0xd1258, 0xd12c0, 0xd1772, 0xd1773, 0xd1940, 0xd1f59, + 0xd1f5b, 0xd1f5d, 0xd2070, 0xd2071, 0xd2d27, 0xd2d2d, 0xd2d6f, 0xd2d70, 0xdfb3e, + 0xdfb40, 0xdfb41, 0xdfb43, 0xdfb44, 0xdfffc, 0xdfffd, 0xe038c, 0xe0589, 0xe058a, + 0xe085e, 0xe098f, 0xe0990, 0xe09b2, 0xe09c7, 0xe09c8, 0xe09d7, 0xe09dc, 0xe09dd, + 0xe0a0f, 0xe0a10, 0xe0a32, 0xe0a33, 0xe0a35, 0xe0a36, 0xe0a38, 0xe0a39, 0xe0a3c, + 0xe0a47, 0xe0a48, 0xe0a51, 0xe0a5e, 0xe0ab2, 0xe0ab3, 0xe0ad0, 0xe0b0f, 0xe0b10, + 0xe0b32, 0xe0b33, 0xe0b47, 0xe0b48, 0xe0b56, 0xe0b57, 0xe0b5c, 0xe0b5d, 0xe0b82, + 0xe0b83, 0xe0b99, 0xe0b9a, 0xe0b9c, 0xe0b9e, 0xe0b9f, 0xe0ba3, 0xe0ba4, 0xe0bd0, + 0xe0bd7, 0xe0c55, 0xe0c56, 0xe0cd5, 0xe0cd6, 0xe0cde, 0xe0cf1, 0xe0cf2, 0xe0d82, + 0xe0d83, 0xe0dbd, 0xe0dca, 0xe0dd6, 0xe0e81, 0xe0e82, 0xe0e84, 0xe0e87, 0xe0e88, + 0xe0e8a, 0xe0e8d, 0xe0ea5, 0xe0ea7, 0xe0eaa, 0xe0eab, 0xe0ec6, 0xe10c7, 0xe10cd, + 0xe1258, 0xe12c0, 0xe1772, 0xe1773, 0xe1940, 0xe1f59, 0xe1f5b, 0xe1f5d, 0xe2070, + 0xe2071, 0xe2d27, 0xe2d2d, 0xe2d6f, 0xe2d70, 0xefb3e, 0xefb40, 0xefb41, 0xefb43, + 0xefb44, 0xefffc, 0xefffd, 0xf038c, 0xf0589, 0xf058a, 0xf085e, 0xf098f, 0xf0990, + 0xf09b2, 0xf09c7, 0xf09c8, 0xf09d7, 0xf09dc, 0xf09dd, 0xf0a0f, 0xf0a10, 0xf0a32, + 0xf0a33, 0xf0a35, 0xf0a36, 0xf0a38, 0xf0a39, 0xf0a3c, 0xf0a47, 0xf0a48, 0xf0a51, + 0xf0a5e, 0xf0ab2, 0xf0ab3, 0xf0ad0, 0xf0b0f, 0xf0b10, 0xf0b32, 0xf0b33, 0xf0b47, + 0xf0b48, 0xf0b56, 0xf0b57, 0xf0b5c, 0xf0b5d, 0xf0b82, 0xf0b83, 0xf0b99, 0xf0b9a, + 0xf0b9c, 0xf0b9e, 0xf0b9f, 0xf0ba3, 0xf0ba4, 0xf0bd0, 0xf0bd7, 0xf0c55, 0xf0c56, + 0xf0cd5, 0xf0cd6, 0xf0cde, 0xf0cf1, 0xf0cf2, 0xf0d82, 0xf0d83, 0xf0dbd, 0xf0dca, + 0xf0dd6, 0xf0e81, 0xf0e82, 0xf0e84, 0xf0e87, 0xf0e88, 0xf0e8a, 0xf0e8d, 0xf0ea5, + 0xf0ea7, 0xf0eaa, 0xf0eab, 0xf0ec6, 0xf10c7, 0xf10cd, 0xf1258, 0xf12c0, 0xf1772, + 0xf1773, 0xf1940, 0xf1f59, 0xf1f5b, 0xf1f5d, 0xf2070, 0xf2071, 0xf2d27, 0xf2d2d, + 0xf2d6f, 0xf2d70, 0xffb3e, 0xffb40, 0xffb41, 0xffb43, 0xffb44, 0xffffc, 0xffffd, + 0x10038c, 0x100589, 0x10058a, 0x10085e, 0x10098f, 0x100990, 0x1009b2, 0x1009c7, 0x1009c8, + 0x1009d7, 0x1009dc, 0x1009dd, 0x100a0f, 0x100a10, 0x100a32, 0x100a33, 0x100a35, 0x100a36, + 0x100a38, 0x100a39, 0x100a3c, 0x100a47, 0x100a48, 0x100a51, 0x100a5e, 0x100ab2, 0x100ab3, + 0x100ad0, 0x100b0f, 0x100b10, 0x100b32, 0x100b33, 0x100b47, 0x100b48, 0x100b56, 0x100b57, + 0x100b5c, 0x100b5d, 0x100b82, 0x100b83, 0x100b99, 0x100b9a, 0x100b9c, 0x100b9e, 0x100b9f, + 0x100ba3, 0x100ba4, 0x100bd0, 0x100bd7, 0x100c55, 0x100c56, 0x100cd5, 0x100cd6, 0x100cde, + 0x100cf1, 0x100cf2, 0x100d82, 0x100d83, 0x100dbd, 0x100dca, 0x100dd6, 0x100e81, 0x100e82, + 0x100e84, 0x100e87, 0x100e88, 0x100e8a, 0x100e8d, 0x100ea5, 0x100ea7, 0x100eaa, 0x100eab, + 0x100ec6, 0x1010c7, 0x1010cd, 0x101258, 0x1012c0, 0x101772, 0x101773, 0x101940, 0x101f59, + 0x101f5b, 0x101f5d, 0x102070, 0x102071, 0x102d27, 0x102d2d, 0x102d6f, 0x102d70, 0x10fb3e, + 0x10fb40, 0x10fb41, 0x10fb43, 0x10fb44, 0x10fffc, 0x10fffd #endif }; diff --git a/generic/tclBinary.c b/generic/tclBinary.c index 72f1498..5772bc6 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -551,7 +551,7 @@ SetByteArrayFromAny( byteArrayPtr = ckalloc(BYTEARRAY_SIZE(length)); for (dst = byteArrayPtr->bytes; src < srcEnd; ) { - src += Tcl_UtfToUniChar(src, &ch); + src += TclUtfToUniChar(src, &ch); improper = improper || (ch > 255); *dst++ = UCHAR(ch); } @@ -1303,7 +1303,7 @@ BinaryFormatCmd( Tcl_UniChar ch; char buf[TCL_UTF_MAX + 1]; - Tcl_UtfToUniChar(errorString, &ch); + TclUtfToUniChar(errorString, &ch); buf[Tcl_UniCharToUtf(ch, buf)] = '\0'; Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad field specifier \"%s\"", buf)); @@ -1673,7 +1673,7 @@ BinaryScanCmd( Tcl_UniChar ch; char buf[TCL_UTF_MAX + 1]; - Tcl_UtfToUniChar(errorString, &ch); + TclUtfToUniChar(errorString, &ch); buf[Tcl_UniCharToUtf(ch, buf)] = '\0'; Tcl_SetObjResult(interp, Tcl_ObjPrintf( "bad field specifier \"%s\"", buf)); diff --git a/generic/tclCmdIL.c b/generic/tclCmdIL.c index a7a5f43..4a11c3b 100644 --- a/generic/tclCmdIL.c +++ b/generic/tclCmdIL.c @@ -3682,7 +3682,7 @@ Tcl_LsortObjCmd( int sortMode = SORTMODE_ASCII; int group, groupSize, groupOffset, idx, allocatedIndexVector = 0; Tcl_Obj *resultPtr, *cmdPtr, **listObjPtrs, *listObj, *indexPtr; - SortElement *elementArray, *elementPtr; + SortElement *elementArray = NULL, *elementPtr; SortInfo sortInfo; /* Information about this sort that needs to * be passed to the comparison function. */ # define NUM_LISTS 30 @@ -3728,7 +3728,7 @@ Tcl_LsortObjCmd( if (Tcl_GetIndexFromObj(interp, objv[i], switches, "option", 0, &index) != TCL_OK) { sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } switch ((enum Lsort_Switches) index) { case LSORT_ASCII: @@ -3741,7 +3741,7 @@ Tcl_LsortObjCmd( "by comparison command", -1)); Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL); sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } sortInfo.sortMode = SORTMODE_COMMAND; cmdPtr = objv[i+1]; @@ -3766,12 +3766,12 @@ Tcl_LsortObjCmd( -1)); Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL); sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } if (TclListObjGetElements(interp, objv[i+1], &indexc, &indexv) != TCL_OK) { sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } /* @@ -3788,7 +3788,7 @@ Tcl_LsortObjCmd( Tcl_AppendObjToErrorInfo(interp, Tcl_ObjPrintf( "\n (-index option item number %d)", j)); sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } } indexPtr = objv[i+1]; @@ -3817,11 +3817,11 @@ Tcl_LsortObjCmd( "followed by stride length", -1)); Tcl_SetErrorCode(interp, "TCL", "ARGUMENT", "MISSING", NULL); sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } if (Tcl_GetIntFromObj(interp, objv[i+1], &groupSize) != TCL_OK) { sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } if (groupSize < 2) { Tcl_SetObjResult(interp, Tcl_NewStringObj( @@ -3829,7 +3829,7 @@ Tcl_LsortObjCmd( Tcl_SetErrorCode(interp, "TCL", "OPERATION", "LSORT", "BADSTRIDE", NULL); sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } group = 1; i++; @@ -3884,7 +3884,7 @@ Tcl_LsortObjCmd( listObj = TclListObjCopy(interp, listObj); if (listObj == NULL) { sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } /* @@ -3902,7 +3902,7 @@ Tcl_LsortObjCmd( Tcl_IncrRefCount(newObjPtr); TclDecrRefCount(newObjPtr); sortInfo.resultCode = TCL_ERROR; - goto done2; + goto done; } Tcl_ListObjAppendElement(interp, newCommandPtr, Tcl_NewObj()); sortInfo.compareCmdPtr = newCommandPtr; @@ -3995,7 +3995,7 @@ Tcl_LsortObjCmd( * begins sorting it into the sublists as it appears. */ - elementArray = TclStackAlloc(interp, length * sizeof(SortElement)); + elementArray = ckalloc(length * sizeof(SortElement)); for (i=0; i < length; i++){ idx = groupSize * i + groupOffset; @@ -4005,7 +4005,7 @@ Tcl_LsortObjCmd( */ indexPtr = SelectObjFromSublist(listObjPtrs[idx], &sortInfo); if (sortInfo.resultCode != TCL_OK) { - goto done1; + goto done; } } else { indexPtr = listObjPtrs[idx]; @@ -4022,7 +4022,7 @@ Tcl_LsortObjCmd( if (TclGetWideIntFromObj(sortInfo.interp, indexPtr, &a) != TCL_OK) { sortInfo.resultCode = TCL_ERROR; - goto done1; + goto done; } elementArray[i].collationKey.wideValue = a; } else if (sortMode == SORTMODE_REAL) { @@ -4031,7 +4031,7 @@ Tcl_LsortObjCmd( if (Tcl_GetDoubleFromObj(sortInfo.interp, indexPtr, &a) != TCL_OK) { sortInfo.resultCode = TCL_ERROR; - goto done1; + goto done; } elementArray[i].collationKey.doubleValue = a; } else { @@ -4118,19 +4118,18 @@ Tcl_LsortObjCmd( Tcl_SetObjResult(interp, resultPtr); } - done1: - TclStackFree(interp, elementArray); - done: if (sortMode == SORTMODE_COMMAND) { TclDecrRefCount(sortInfo.compareCmdPtr); TclDecrRefCount(listObj); sortInfo.compareCmdPtr = NULL; } - done2: if (allocatedIndexVector) { TclStackFree(interp, sortInfo.indexv); } + if (elementArray) { + ckfree(elementArray); + } return sortInfo.resultCode; } @@ -4440,8 +4439,8 @@ DictionaryCompare( */ if ((*left != '\0') && (*right != '\0')) { - left += Tcl_UtfToUniChar(left, &uniLeft); - right += Tcl_UtfToUniChar(right, &uniRight); + left += TclUtfToUniChar(left, &uniLeft); + right += TclUtfToUniChar(right, &uniRight); /* * Convert both chars to lower for the comparison, because diff --git a/generic/tclCompExpr.c b/generic/tclCompExpr.c index 83bb883..24c8896 100644 --- a/generic/tclCompExpr.c +++ b/generic/tclCompExpr.c @@ -2064,13 +2064,13 @@ ParseLexeme( if (!TclIsBareword(*start) || *start == '_') { if (Tcl_UtfCharComplete(start, numBytes)) { - scanned = Tcl_UtfToUniChar(start, &ch); + scanned = TclUtfToUniChar(start, &ch); } else { char utfBytes[TCL_UTF_MAX]; memcpy(utfBytes, start, (size_t) numBytes); utfBytes[numBytes] = '\0'; - scanned = Tcl_UtfToUniChar(utfBytes, &ch); + scanned = TclUtfToUniChar(utfBytes, &ch); } *lexemePtr = INVALID; Tcl_DecrRefCount(literal); diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c index 91c2278..6c21287 100644 --- a/generic/tclEncoding.c +++ b/generic/tclEncoding.c @@ -2341,7 +2341,7 @@ UtfToUtfProc( src += 2; } else if (!Tcl_UtfCharComplete(src, srcEnd - src)) { /* - * Always check before using Tcl_UtfToUniChar. Not doing can so + * Always check before using TclUtfToUniChar. Not doing can so * cause it run beyond the endof the buffer! If we happen such an * incomplete char its byts are made to represent themselves. */ @@ -2350,7 +2350,7 @@ UtfToUtfProc( src += 1; dst += Tcl_UniCharToUtf(ch, dst); } else { - src += Tcl_UtfToUniChar(src, &ch); + src += TclUtfToUniChar(src, &ch); dst += Tcl_UniCharToUtf(ch, dst); } } diff --git a/generic/tclInt.h b/generic/tclInt.h index 975c685..9e73743 100644 --- a/generic/tclInt.h +++ b/generic/tclInt.h @@ -4797,9 +4797,9 @@ MODULE_SCOPE Tcl_PackageInitProc Procbodytest_SafeInit; #define TclSmallFreeEx(interp, memPtr) \ do { \ Tcl_Obj *_objPtr = (Tcl_Obj *) memPtr; \ - objPtr->bytes = NULL; \ - objPtr->typePtr = NULL; \ - objPtr->refCount = 1; \ + _objPtr->bytes = NULL; \ + _objPtr->typePtr = NULL; \ + _objPtr->refCount = 1; \ TclDecrRefCount(_objPtr); \ } while (0) #endif /* TCL_MEM_DEBUG */ diff --git a/generic/tclLoad.c b/generic/tclLoad.c index bcda420..66637da 100644 --- a/generic/tclLoad.c +++ b/generic/tclLoad.c @@ -336,7 +336,7 @@ Tcl_LoadObjCmd( } #endif /* __CYGWIN__ */ for (p = pkgGuess; *p != 0; p += offset) { - offset = Tcl_UtfToUniChar(p, &ch); + offset = TclUtfToUniChar(p, &ch); if ((ch > 0x100) || !(isalpha(UCHAR(ch)) /* INTL: ISO only */ || (UCHAR(ch) == '_'))) { diff --git a/generic/tclParse.c b/generic/tclParse.c index 8a28bf2..5d640dc 100644 --- a/generic/tclParse.c +++ b/generic/tclParse.c @@ -963,13 +963,13 @@ TclParseBackslash( */ if (Tcl_UtfCharComplete(p, numBytes - 1)) { - count = Tcl_UtfToUniChar(p, &unichar) + 1; /* +1 for '\' */ + count = TclUtfToUniChar(p, &unichar) + 1; /* +1 for '\' */ } else { char utfBytes[TCL_UTF_MAX]; memcpy(utfBytes, p, (size_t) (numBytes - 1)); utfBytes[numBytes - 1] = '\0'; - count = Tcl_UtfToUniChar(utfBytes, &unichar) + 1; + count = TclUtfToUniChar(utfBytes, &unichar) + 1; } result = unichar; break; diff --git a/generic/tclPkg.c b/generic/tclPkg.c index 9ad3cb7..3b0554a 100644 --- a/generic/tclPkg.c +++ b/generic/tclPkg.c @@ -224,6 +224,7 @@ static void PkgFilesCleanupProc(ClientData clientData, entry = Tcl_NextHashEntry(&search); } Tcl_DeleteHashTable(&pkgFiles->table); + ckfree(pkgFiles); return; } diff --git a/generic/tclScan.c b/generic/tclScan.c index 3edb8be..17069eb 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -78,11 +78,11 @@ BuildCharSet( memset(cset, 0, sizeof(CharSet)); - offset = Tcl_UtfToUniChar(format, &ch); + offset = TclUtfToUniChar(format, &ch); if (ch == '^') { cset->exclude = 1; format += offset; - offset = Tcl_UtfToUniChar(format, &ch); + offset = TclUtfToUniChar(format, &ch); } end = format + offset; @@ -91,14 +91,14 @@ BuildCharSet( */ if (ch == ']') { - end += Tcl_UtfToUniChar(end, &ch); + end += TclUtfToUniChar(end, &ch); } nranges = 0; while (ch != ']') { if (ch == '-') { nranges++; } - end += Tcl_UtfToUniChar(end, &ch); + end += TclUtfToUniChar(end, &ch); } cset->chars = ckalloc(sizeof(Tcl_UniChar) * (end - format - 1)); @@ -113,11 +113,11 @@ BuildCharSet( */ cset->nchars = cset->nranges = 0; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); start = ch; if (ch == ']' || ch == '-') { cset->chars[cset->nchars++] = ch; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } while (ch != ']') { if (*format == '-') { @@ -138,7 +138,7 @@ BuildCharSet( cset->chars[cset->nchars++] = start; cset->chars[cset->nchars++] = ch; } else { - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); /* * Check to see if the range is in reverse order. @@ -156,7 +156,7 @@ BuildCharSet( } else { cset->chars[cset->nchars++] = ch; } - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } return format; } @@ -279,20 +279,20 @@ ValidateFormat( xpgSize = objIndex = gotXpg = gotSequential = 0; while (*format != '\0') { - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); flags = 0; if (ch != '%') { continue; } - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); if (ch == '%') { continue; } if (ch == '*') { flags |= SCAN_SUPPRESS; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); goto xpgCheckDone; } @@ -308,7 +308,7 @@ ValidateFormat( goto notXpg; } format = end+1; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); gotXpg = 1; if (gotSequential) { goto mixedXPG; @@ -347,7 +347,7 @@ ValidateFormat( if ((ch < 0x80) && isdigit(UCHAR(ch))) { /* INTL: "C" locale. */ value = strtoul(format-1, (char **) &format, 10); /* INTL: "C" locale. */ flags |= SCAN_WIDTH; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } /* @@ -359,13 +359,13 @@ ValidateFormat( if (*format == 'l') { flags |= SCAN_BIG; format += 1; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); break; } case 'L': flags |= SCAN_LONGER; case 'h': - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } if (!(flags & SCAN_SUPPRESS) && numVars && (objIndex >= numVars)) { @@ -434,24 +434,24 @@ ValidateFormat( if (*format == '\0') { goto badSet; } - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); if (ch == '^') { if (*format == '\0') { goto badSet; } - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } if (ch == ']') { if (*format == '\0') { goto badSet; } - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } while (ch != ']') { if (*format == '\0') { goto badSet; } - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } break; badSet: @@ -630,7 +630,7 @@ Tcl_ScanObjCmd( nconversions = 0; while (*format != '\0') { int parseFlag = TCL_PARSE_NO_WHITESPACE; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); flags = 0; @@ -639,13 +639,13 @@ Tcl_ScanObjCmd( */ if (Tcl_UniCharIsSpace(ch)) { - offset = Tcl_UtfToUniChar(string, &sch); + offset = TclUtfToUniChar(string, &sch); while (Tcl_UniCharIsSpace(sch)) { if (*string == '\0') { goto done; } string += offset; - offset = Tcl_UtfToUniChar(string, &sch); + offset = TclUtfToUniChar(string, &sch); } continue; } @@ -656,14 +656,14 @@ Tcl_ScanObjCmd( underflow = 1; goto done; } - string += Tcl_UtfToUniChar(string, &sch); + string += TclUtfToUniChar(string, &sch); if (ch != sch) { goto done; } continue; } - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); if (ch == '%') { goto literal; } @@ -675,13 +675,13 @@ Tcl_ScanObjCmd( if (ch == '*') { flags |= SCAN_SUPPRESS; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } else if ((ch < 0x80) && isdigit(UCHAR(ch))) { /* INTL: "C" locale. */ char *formatEnd; value = strtoul(format-1, &formatEnd, 10);/* INTL: "C" locale. */ if (*formatEnd == '$') { format = formatEnd+1; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); objIndex = (int) value - 1; } } @@ -692,7 +692,7 @@ Tcl_ScanObjCmd( if ((ch < 0x80) && isdigit(UCHAR(ch))) { /* INTL: "C" locale. */ width = (int) strtoul(format-1, (char **) &format, 10);/* INTL: "C" locale. */ - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } else { width = 0; } @@ -706,7 +706,7 @@ Tcl_ScanObjCmd( if (*format == 'l') { flags |= SCAN_BIG; format += 1; - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); break; } case 'L': @@ -715,7 +715,7 @@ Tcl_ScanObjCmd( * Fall through so we skip to the next character. */ case 'h': - format += Tcl_UtfToUniChar(format, &ch); + format += TclUtfToUniChar(format, &ch); } /* @@ -799,7 +799,7 @@ Tcl_ScanObjCmd( if (!(flags & SCAN_NOSKIP)) { while (*string != '\0') { - offset = Tcl_UtfToUniChar(string, &sch); + offset = TclUtfToUniChar(string, &sch); if (!Tcl_UniCharIsSpace(sch)) { break; } @@ -826,7 +826,7 @@ Tcl_ScanObjCmd( } end = string; while (*end != '\0') { - offset = Tcl_UtfToUniChar(end, &sch); + offset = TclUtfToUniChar(end, &sch); if (Tcl_UniCharIsSpace(sch)) { break; } @@ -854,7 +854,7 @@ Tcl_ScanObjCmd( format = BuildCharSet(&cset, format); while (*end != '\0') { - offset = Tcl_UtfToUniChar(end, &sch); + offset = TclUtfToUniChar(end, &sch); if (!CharInSet(&cset, (int)sch)) { break; } @@ -885,7 +885,7 @@ Tcl_ScanObjCmd( * Scan a single Unicode character. */ - string += Tcl_UtfToUniChar(string, &sch); + string += TclUtfToUniChar(string, &sch); if (!(flags & SCAN_SUPPRESS)) { objPtr = Tcl_NewIntObj((int)sch); Tcl_IncrRefCount(objPtr); diff --git a/generic/tclStringObj.c b/generic/tclStringObj.c index 7c898b7..3478cbb 100644 --- a/generic/tclStringObj.c +++ b/generic/tclStringObj.c @@ -1678,7 +1678,7 @@ Tcl_AppendFormatToObj( int newXpg, numChars, allocSegment = 0, segmentLimit, segmentNumBytes; Tcl_Obj *segment; Tcl_UniChar ch; - int step = Tcl_UtfToUniChar(format, &ch); + int step = TclUtfToUniChar(format, &ch); format += step; if (ch != '%') { @@ -1702,7 +1702,7 @@ Tcl_AppendFormatToObj( * Step 0. Handle special case of escaped format marker (i.e., %%). */ - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); if (ch == '%') { span = format; numBytes = step; @@ -1722,7 +1722,7 @@ Tcl_AppendFormatToObj( newXpg = 1; objIndex = position - 1; format = end + 1; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } } if (newXpg) { @@ -1773,7 +1773,7 @@ Tcl_AppendFormatToObj( } if (sawFlag) { format += step; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } } while (sawFlag); @@ -1785,7 +1785,7 @@ Tcl_AppendFormatToObj( if (isdigit(UCHAR(ch))) { width = strtoul(format, &end, 10); format = end; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } else if (ch == '*') { if (objIndex >= objc - 1) { msg = badIndex[gotXpg]; @@ -1801,7 +1801,7 @@ Tcl_AppendFormatToObj( } objIndex++; format += step; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } if (width > limit) { msg = overflow; @@ -1817,12 +1817,12 @@ Tcl_AppendFormatToObj( if (ch == '.') { gotPrecision = 1; format += step; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } if (isdigit(UCHAR(ch))) { precision = strtoul(format, &end, 10); format = end; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } else if (ch == '*') { if (objIndex >= objc - 1) { msg = badIndex[gotXpg]; @@ -1843,7 +1843,7 @@ Tcl_AppendFormatToObj( } objIndex++; format += step; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } /* @@ -1853,14 +1853,14 @@ Tcl_AppendFormatToObj( if (ch == 'h') { useShort = 1; format += step; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); } else if (ch == 'l') { format += step; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); if (ch == 'l') { useBig = 1; format += step; - step = Tcl_UtfToUniChar(format, &ch); + step = TclUtfToUniChar(format, &ch); #ifndef TCL_WIDE_INT_IS_LONG } else { useWide = 1; @@ -3409,7 +3409,7 @@ TclStringObjReverse( * It's part of the contract for objPtr->bytes values. * Thus, we can skip calling Tcl_UtfCharComplete() here. */ - int bytesInChar = Tcl_UtfToUniChar(from, &ch); + int bytesInChar = TclUtfToUniChar(from, &ch); ReverseBytes((unsigned char *)to, (unsigned char *)from, bytesInChar); diff --git a/generic/tclUniData.c b/generic/tclUniData.c index d8b317a..9f05230 100644 --- a/generic/tclUniData.c +++ b/generic/tclUniData.c @@ -29,36 +29,36 @@ static const unsigned short pageMap[] = { 832, 864, 896, 928, 960, 992, 224, 1024, 224, 1056, 224, 224, 1088, 1120, 1152, 1184, 1216, 1248, 1280, 1312, 1344, 1376, 1408, 1344, 1344, 1440, 1472, 1504, 1536, 1568, 1344, 1344, 1600, 1632, 1664, 1696, 1728, - 1760, 1792, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, 2048, 2080, - 2112, 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, - 2496, 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, - 2880, 2912, 2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, - 3264, 1792, 3296, 3328, 3360, 1792, 3392, 3424, 3456, 3488, 3520, 3552, - 3584, 1792, 1344, 3616, 3648, 3680, 3712, 3744, 3776, 3808, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 3840, 1344, 3872, 3904, - 3936, 1344, 3968, 1344, 4000, 4032, 4064, 4096, 4096, 4128, 4160, 1344, + 1760, 1792, 1824, 1856, 1888, 1920, 1952, 1984, 2016, 2048, 2080, 2112, + 2144, 2176, 2208, 2240, 2272, 2304, 2336, 2368, 2400, 2432, 2464, 2496, + 2528, 2560, 2592, 2624, 2656, 2688, 2720, 2752, 2784, 2816, 2848, 2880, + 2912, 2944, 2976, 3008, 3040, 3072, 3104, 3136, 3168, 3200, 3232, 3264, + 3296, 1824, 3328, 3360, 3392, 1824, 3424, 3456, 3488, 3520, 3552, 3584, + 3616, 1824, 1344, 3648, 3680, 3712, 3744, 3776, 3808, 3840, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 3872, 1344, 3904, 3936, + 3968, 1344, 4000, 1344, 4032, 4064, 4096, 4128, 4128, 4160, 4192, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 4192, 4224, 1344, 1344, 4256, 4288, 4320, - 4352, 4384, 1344, 4416, 4448, 4480, 4512, 1344, 4544, 4576, 4608, 4640, - 1344, 4672, 4704, 4736, 4768, 4800, 1344, 4832, 4864, 4896, 4928, 1344, - 4960, 4992, 5024, 5056, 1792, 1792, 5088, 5120, 5152, 5184, 5216, 5248, - 1344, 5280, 1344, 5312, 5344, 5376, 5408, 1792, 5440, 5472, 5504, 5536, - 5568, 5600, 5632, 5568, 704, 5664, 224, 224, 224, 224, 5696, 224, 224, - 224, 5728, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, - 6080, 6112, 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, - 6464, 6496, 6496, 6496, 6496, 6496, 6496, 6496, 6496, 6528, 6560, 4896, - 6592, 6624, 6656, 6688, 6720, 4896, 6752, 6784, 6816, 6848, 6880, 6912, - 6944, 4896, 4896, 4896, 4896, 4896, 6976, 7008, 7040, 4896, 4896, 4896, - 7072, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 7104, 7136, 4896, 7168, - 7200, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 6496, 6496, 6496, - 6496, 7232, 6496, 7264, 7296, 6496, 6496, 6496, 6496, 6496, 6496, 6496, - 6496, 4896, 7328, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, - 7648, 224, 224, 224, 7680, 7712, 7744, 1344, 7776, 7808, 7840, 7840, - 704, 7872, 7904, 7936, 1792, 7968, 4896, 4896, 8000, 4896, 4896, 4896, - 4896, 4896, 4896, 8032, 8064, 8096, 8128, 3200, 1344, 8160, 4160, 1344, - 8192, 8224, 8256, 1344, 1344, 8288, 8320, 4896, 8352, 8384, 8416, 8448, - 4896, 8416, 8480, 4896, 8384, 4896, 4896, 4896, 4896, 4896, 4896, 4896, - 4896, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 4224, 4256, 1344, 1344, 4288, 4320, 4352, + 4384, 4416, 1344, 4448, 4480, 4512, 4544, 1344, 4576, 4608, 4640, 4672, + 1344, 4704, 4736, 4768, 4800, 4832, 1344, 4864, 4896, 4928, 4960, 1344, + 4992, 5024, 5056, 5088, 1824, 1824, 5120, 5152, 5184, 5216, 5248, 5280, + 1344, 5312, 1344, 5344, 5376, 5408, 5440, 1824, 5472, 5504, 5536, 5568, + 5600, 5632, 5664, 5600, 704, 5696, 224, 224, 224, 224, 5728, 224, 224, + 224, 5760, 5792, 5824, 5856, 5888, 5920, 5952, 5984, 6016, 6048, 6080, + 6112, 6144, 6176, 6208, 6240, 6272, 6304, 6336, 6368, 6400, 6432, 6464, + 6496, 6528, 6528, 6528, 6528, 6528, 6528, 6528, 6528, 6560, 6592, 4928, + 6624, 6656, 6688, 6720, 6752, 4928, 6784, 6816, 6848, 6880, 6912, 6944, + 6976, 4928, 4928, 4928, 4928, 4928, 7008, 7040, 7072, 4928, 4928, 4928, + 7104, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 7136, 7168, 4928, 7200, + 7232, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 6528, 6528, 6528, + 6528, 7264, 6528, 7296, 7328, 6528, 6528, 6528, 6528, 6528, 6528, 6528, + 6528, 4928, 7360, 7392, 7424, 7456, 7488, 7520, 7552, 7584, 7616, 7648, + 7680, 224, 224, 224, 7712, 7744, 7776, 1344, 7808, 7840, 7872, 7872, + 704, 7904, 7936, 7968, 1824, 8000, 4928, 4928, 8032, 4928, 4928, 4928, + 4928, 4928, 4928, 8064, 8096, 8128, 8160, 3232, 1344, 8192, 4192, 1344, + 8224, 8256, 8288, 1344, 1344, 8320, 8352, 4928, 8384, 8416, 8448, 8480, + 4928, 8448, 8512, 4928, 8416, 4928, 4928, 4928, 4928, 4928, 4928, 4928, + 4928, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, @@ -75,7 +75,7 @@ static const unsigned short pageMap[] = { 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 4672, 4896, 4896, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 4704, 4928, 4928, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, @@ -129,17 +129,16 @@ static const unsigned short pageMap[] = { 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 4672, - 1792, 8512, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1792, 8544, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 8544, 4896, 8576, 5376, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 8608, 8640, 224, 8672, 8704, 1344, 1344, 8736, 8768, 8800, 224, - 8832, 8864, 8896, 1792, 8928, 8960, 8992, 1344, 9024, 9056, 9088, 9120, - 9152, 1632, 9184, 9216, 9248, 1920, 9280, 9312, 9344, 1344, 9376, 9408, - 9440, 1344, 9472, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9696, 1344, - 9728, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 8576, 4928, 8608, 5408, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 8640, 8672, 224, 8704, 8736, 1344, 1344, 8768, 8800, 8832, 224, + 8864, 8896, 8928, 1824, 8960, 8992, 9024, 1344, 9056, 9088, 9120, 9152, + 9184, 1632, 9216, 9248, 9280, 1952, 9312, 9344, 9376, 1344, 9408, 9440, + 9472, 1344, 9504, 9536, 9568, 9600, 9632, 9664, 9696, 9728, 9728, 1344, + 9760, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, @@ -167,211 +166,216 @@ static const unsigned short pageMap[] = { 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 9760, 9792, 9824, 9856, 9856, 9856, 9856, 9856, 9856, 9856, - 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, - 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, - 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, - 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, - 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9856, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 9792, 9824, 9856, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, - 9888, 9888, 9888, 9888, 9888, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 9920, 1344, 1344, 9952, 1792, 9984, 10016, - 10048, 1344, 1344, 10080, 10112, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 10144, 10176, 1344, 10208, 1344, 10240, 10272, - 10304, 10336, 10368, 10400, 1344, 1344, 1344, 10432, 10464, 64, 10496, - 10528, 10560, 4704, 10592, 10624 + 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9888, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, 9920, + 9920, 9920, 9920, 9920, 9920, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 9952, 1344, 1344, 9984, 1824, 10016, 10048, + 10080, 1344, 1344, 10112, 10144, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 10176, 10208, 1344, 10240, 1344, 10272, 10304, + 10336, 10368, 10400, 10432, 1344, 1344, 1344, 10464, 10496, 64, 10528, + 10560, 10592, 4736, 10624, 10656 #if TCL_UTF_MAX > 3 - ,10656, 10688, 10720, 1792, 1344, 1344, 1344, 8320, 10752, 10784, 10816, - 10848, 10880, 10912, 10944, 10976, 1792, 1792, 1792, 1792, 9248, 1344, - 11008, 11040, 1344, 11072, 11104, 11136, 11168, 1344, 11200, 1792, - 11232, 11264, 11296, 1344, 11328, 11360, 11392, 11424, 1344, 11456, - 1344, 11488, 1792, 1792, 1792, 1792, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 7808, 4672, 10240, 1792, 1792, 1792, 1792, - 11520, 11552, 11584, 11616, 4704, 11648, 1792, 11680, 11712, 11744, - 1792, 1792, 1344, 11776, 11808, 6816, 11840, 11872, 11904, 11936, 11968, - 1792, 12000, 12032, 1344, 12064, 12096, 12128, 12160, 12192, 1792, - 1792, 1344, 1344, 12224, 1792, 12256, 12288, 12320, 12352, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 12384, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 12416, - 12448, 12480, 12512, 5216, 12544, 12576, 12608, 12640, 12672, 12704, - 12736, 5216, 12768, 12800, 12832, 12864, 12896, 1792, 1792, 12928, - 12960, 12992, 13024, 13056, 2336, 13088, 13120, 1792, 1792, 1792, 1792, - 1344, 13152, 13184, 1792, 1344, 13216, 13248, 1792, 1792, 1792, 1792, - 1792, 1344, 13280, 13312, 1792, 1344, 13344, 13376, 13408, 1344, 13440, - 13472, 1792, 13504, 13536, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 13568, 13600, 13632, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1344, 13664, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 13696, 13728, 13760, - 13792, 13824, 13856, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 9952, 1792, - 1792, 1792, 10816, 10816, 10816, 13888, 1344, 1344, 1344, 1344, 1344, - 1344, 13920, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 13952, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 13984, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 13664, 4704, 14016, 1792, 1792, 10176, 14048, 1344, - 14080, 14112, 14144, 14176, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1344, 1344, 14208, - 14240, 14272, 1792, 1792, 14304, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 14336, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 14368, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 14400, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1344, 1344, 1344, 14432, 14464, 14496, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 4896, 4896, - 4896, 4896, 4896, 4896, 4896, 8032, 4896, 14528, 4896, 14560, 14592, - 14624, 4896, 14656, 4896, 4896, 14688, 1792, 1792, 1792, 1792, 1792, - 4896, 4896, 14720, 14752, 1792, 1792, 1792, 1792, 14784, 14816, 14848, - 14880, 14912, 14944, 14976, 15008, 15040, 15072, 15104, 15136, 15168, - 14784, 14816, 15200, 14880, 15232, 15264, 15296, 15008, 15328, 15360, - 15392, 15424, 15456, 15488, 15520, 15552, 15584, 15616, 15648, 4896, - 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, - 4896, 4896, 4896, 704, 15680, 704, 15712, 15744, 15776, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 15808, 15840, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1344, 1344, 1344, - 1344, 1344, 1344, 15872, 1792, 15904, 15936, 15968, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 16000, - 16032, 16064, 16096, 16128, 16160, 1792, 16192, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 4896, 16224, 4896, 4896, 8000, 16256, 16288, - 8032, 16320, 16352, 4896, 16224, 4896, 16384, 1792, 16416, 16448, 16480, - 16512, 1792, 1792, 1792, 1792, 1792, 4896, 4896, 4896, 4896, 4896, - 4896, 4896, 16544, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, - 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, 4896, - 4896, 4896, 16576, 16608, 4896, 4896, 4896, 8000, 4896, 4896, 16640, - 1792, 16224, 4896, 16672, 4896, 16704, 16736, 1792, 1792, 16768, 16800, - 16832, 1792, 16864, 1792, 10912, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1344, 1344, 1344, 1344, 1344, + ,10688, 10720, 10752, 1824, 1344, 1344, 1344, 8352, 10784, 10816, 10848, + 10880, 10912, 10944, 10976, 11008, 1824, 1824, 1824, 1824, 9280, 1344, + 11040, 11072, 1344, 11104, 11136, 11168, 11200, 1344, 11232, 1824, + 11264, 11296, 11328, 1344, 11360, 11392, 11424, 11456, 1344, 11488, + 1344, 11520, 1824, 1824, 1824, 1824, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 7840, 4704, 10272, 1824, 1824, 1824, 1824, + 11552, 11584, 11616, 11648, 4736, 11680, 1824, 11712, 11744, 11776, + 1824, 1824, 1344, 11808, 11840, 6848, 11872, 11904, 11936, 11968, 12000, + 1824, 12032, 12064, 1344, 12096, 12128, 12160, 12192, 12224, 1824, + 1824, 1344, 1344, 12256, 1824, 12288, 12320, 12352, 12384, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 12416, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 12448, + 12480, 12512, 12544, 5248, 12576, 12608, 12640, 12672, 12704, 12736, + 12768, 5248, 12800, 12832, 12864, 12896, 12928, 1824, 1824, 12960, + 12992, 13024, 13056, 13088, 2368, 13120, 13152, 1824, 1824, 1824, 1824, + 1344, 13184, 13216, 1824, 1344, 13248, 13280, 1824, 1824, 1824, 1824, + 1824, 1344, 13312, 13344, 1824, 1344, 13376, 13408, 13440, 1344, 13472, + 13504, 1824, 13536, 13568, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 13600, 13632, 13664, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 13696, 13728, 13760, 1344, 13792, 13824, 1344, + 13856, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 13888, 13920, + 13952, 13984, 14016, 14048, 1824, 1824, 14080, 14112, 14144, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 9984, 1824, 1824, 1824, 10848, 10848, 10848, 14176, 1344, 1344, 1344, + 1344, 1344, 1344, 14208, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 14240, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 14272, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 13856, 4736, 14304, 1824, 1824, 10208, + 14336, 1344, 14368, 14400, 14432, 14464, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1344, 1344, + 14496, 14528, 14560, 1824, 1824, 14592, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 14624, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 14656, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 4736, 1824, 1824, 10208, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 9856, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1344, 1344, 1344, 14688, 14720, + 14752, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 4928, 4928, 4928, 4928, 4928, 4928, 4928, 8064, 4928, 14784, 4928, + 14816, 14848, 14880, 4928, 14912, 4928, 4928, 14944, 1824, 1824, 1824, + 1824, 1824, 4928, 4928, 14976, 15008, 1824, 1824, 1824, 1824, 15040, + 15072, 15104, 15136, 15168, 15200, 15232, 15264, 15296, 15328, 15360, + 15392, 15424, 15040, 15072, 15456, 15136, 15488, 15520, 15552, 15264, + 15584, 15616, 15648, 15680, 15712, 15744, 15776, 15808, 15840, 15872, + 15904, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, + 4928, 4928, 4928, 4928, 4928, 4928, 704, 15936, 704, 15968, 16000, + 16032, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 16064, 16096, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1344, 1344, 1344, 1344, 1344, 1344, 16128, 1824, 16160, 16192, + 16224, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 16256, 16288, 16320, 16352, 16384, 16416, 1824, 16448, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 4928, 16480, 4928, + 4928, 8032, 16512, 16544, 8064, 16576, 16608, 4928, 16480, 4928, 16640, + 1824, 16672, 16704, 16736, 16768, 16800, 1824, 1824, 1824, 1824, 4928, + 4928, 4928, 4928, 4928, 4928, 4928, 16832, 4928, 4928, 4928, 4928, + 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, 4928, + 4928, 4928, 4928, 4928, 4928, 4928, 16864, 16896, 4928, 4928, 4928, + 8032, 4928, 4928, 16864, 1824, 16480, 4928, 16928, 4928, 16960, 16992, + 1824, 1824, 16480, 8416, 17024, 17056, 17088, 1824, 17120, 6784, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, @@ -479,10 +483,10 @@ static const unsigned short pageMap[] = { 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 7840, 1824, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 7808, 1792, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, @@ -490,11 +494,10 @@ static const unsigned short pageMap[] = { 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 17152, 1344, 1344, 1344, 1344, 1344, 1344, 11360, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 16896, 1344, 1344, - 1344, 1344, 1344, 1344, 11328, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, @@ -506,39 +509,36 @@ static const unsigned short pageMap[] = { 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 17184, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 14400, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 1792, - 1792, 1792, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, - 1344, 1344, 1344, 1344, 1344, 1344, 11328 + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 17216, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, 1824, + 1824, 1824, 1824, 1824, 1824, 1824, 1344, 1344, 1344, 1344, 1344, 1344, + 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 1344, 11360 #endif /* TCL_UTF_MAX > 3 */ }; @@ -652,72 +652,74 @@ static const unsigned char groupMap[] = { 92, 92, 91, 92, 92, 92, 91, 92, 92, 92, 92, 92, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, - 92, 92, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, - 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 17, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 0, 0, 3, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 17, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 124, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 124, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 92, 124, 92, 15, 124, 124, 124, 92, 92, - 92, 92, 92, 92, 92, 92, 124, 124, 124, 124, 92, 124, 124, 15, 92, 92, - 92, 92, 92, 92, 92, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, - 3, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, 91, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 124, 124, 0, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, + 124, 92, 15, 124, 124, 124, 92, 92, 92, 92, 92, 92, 92, 92, 124, 124, + 124, 124, 92, 124, 124, 15, 92, 92, 92, 92, 92, 92, 92, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 92, 92, 3, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 3, 91, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 92, 124, 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 15, 15, 0, 0, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 0, 15, 0, 0, 0, + 15, 15, 15, 15, 0, 0, 92, 15, 124, 124, 124, 92, 92, 92, 92, 0, 0, + 124, 124, 0, 0, 124, 124, 92, 15, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, + 0, 0, 15, 15, 0, 15, 15, 15, 92, 92, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 15, 15, 4, 4, 18, 18, 18, 18, 18, 18, 14, 4, 15, 3, 0, 0, 0, + 92, 92, 124, 0, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 15, 15, 0, 0, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 0, 15, 15, + 0, 15, 15, 0, 0, 92, 0, 124, 124, 124, 92, 92, 0, 0, 0, 0, 92, 92, + 0, 0, 92, 92, 92, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, + 0, 15, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 92, 92, 15, + 15, 15, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 124, 0, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 0, 15, 15, 15, 15, 15, 0, 0, + 92, 15, 124, 124, 124, 92, 92, 92, 92, 92, 0, 92, 92, 124, 0, 124, + 124, 92, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 15, 92, 92, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, 4, 0, 0, 0, 0, 0, + 0, 0, 15, 92, 92, 92, 92, 92, 92, 0, 92, 124, 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 15, 15, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, - 15, 15, 15, 15, 15, 0, 15, 0, 0, 0, 15, 15, 15, 15, 0, 0, 92, 15, 124, - 124, 124, 92, 92, 92, 92, 0, 0, 124, 124, 0, 0, 124, 124, 92, 15, 0, - 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 15, 15, 0, 15, 15, 15, 92, 92, - 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 4, 4, 18, 18, 18, 18, 18, - 18, 14, 4, 0, 0, 0, 0, 0, 92, 92, 124, 0, 15, 15, 15, 15, 15, 15, 0, - 0, 0, 0, 15, 15, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, - 15, 15, 0, 15, 15, 0, 15, 15, 0, 15, 15, 0, 0, 92, 0, 124, 124, 124, - 92, 92, 0, 0, 0, 0, 92, 92, 0, 0, 92, 92, 92, 0, 0, 0, 92, 0, 0, 0, - 0, 0, 0, 0, 15, 15, 15, 15, 0, 15, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 92, 92, 15, 15, 15, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 92, 92, 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, - 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, - 0, 15, 15, 15, 15, 15, 0, 0, 92, 15, 124, 124, 124, 92, 92, 92, 92, - 92, 0, 92, 92, 124, 0, 124, 124, 92, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 92, 92, 0, 0, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 3, 4, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 92, 124, - 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 15, 15, 0, 0, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 0, 15, 15, 15, - 15, 15, 0, 0, 92, 15, 124, 92, 124, 92, 92, 92, 92, 0, 0, 124, 124, - 0, 0, 124, 124, 92, 0, 0, 0, 0, 0, 0, 0, 0, 92, 124, 0, 0, 0, 0, 15, - 15, 0, 15, 15, 15, 92, 92, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14, - 15, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 15, 0, - 15, 15, 15, 15, 15, 15, 0, 0, 0, 15, 15, 15, 0, 15, 15, 15, 15, 0, - 0, 0, 15, 15, 0, 15, 0, 15, 15, 0, 0, 0, 15, 15, 0, 0, 0, 15, 15, 15, - 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, - 124, 124, 92, 124, 124, 0, 0, 0, 124, 124, 124, 0, 124, 124, 124, 92, - 0, 0, 15, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 14, 14, 14, 14, 14, - 14, 4, 14, 0, 0, 0, 0, 0, 92, 124, 124, 124, 0, 15, 15, 15, 15, 15, - 15, 15, 15, 0, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 15, 92, - 92, 92, 124, 124, 124, 124, 0, 92, 92, 92, 0, 92, 92, 92, 92, 0, 0, - 0, 0, 0, 0, 0, 92, 92, 0, 15, 15, 15, 0, 0, 0, 0, 0, 15, 15, 92, 92, - 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, - 18, 18, 18, 18, 18, 14, 15, 92, 124, 124, 0, 15, 15, 15, 15, 15, 15, - 15, 15, 0, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 0, 0, 92, 15, 124, 92, - 124, 124, 124, 124, 124, 0, 92, 124, 124, 0, 124, 124, 92, 92, 0, 0, - 0, 0, 0, 0, 0, 124, 124, 0, 0, 0, 0, 0, 0, 0, 15, 0, 15, 15, 92, 92, - 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 92, 124, 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 0, 15, 15, 0, 15, 15, 15, 15, 15, 0, 0, 92, 15, + 124, 92, 124, 92, 92, 92, 92, 0, 0, 124, 124, 0, 0, 124, 124, 92, 0, + 0, 0, 0, 0, 0, 0, 0, 92, 124, 0, 0, 0, 0, 15, 15, 0, 15, 15, 15, 92, + 92, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14, 15, 18, 18, 18, 18, 18, + 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 15, 0, 15, 15, 15, 15, 15, 15, + 0, 0, 0, 15, 15, 15, 0, 15, 15, 15, 15, 0, 0, 0, 15, 15, 0, 15, 0, + 15, 15, 0, 0, 0, 15, 15, 0, 0, 0, 15, 15, 15, 0, 0, 0, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 124, 124, 92, 124, + 124, 0, 0, 0, 124, 124, 124, 0, 124, 124, 124, 92, 0, 0, 15, 0, 0, + 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 14, 14, 14, 14, 14, 14, 4, 14, 0, + 0, 0, 0, 0, 92, 124, 124, 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 15, 92, 92, 92, 124, + 124, 124, 124, 0, 92, 92, 92, 0, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, + 0, 92, 92, 0, 15, 15, 15, 0, 0, 0, 0, 0, 15, 15, 92, 92, 0, 0, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, + 18, 18, 14, 15, 92, 124, 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 0, 0, 92, 15, 124, 92, 124, + 124, 124, 124, 124, 0, 92, 124, 124, 0, 124, 124, 92, 92, 0, 0, 0, + 0, 0, 0, 0, 124, 124, 0, 0, 0, 0, 0, 0, 0, 15, 0, 15, 15, 92, 92, 0, + 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 92, 92, 124, 124, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 15, 124, 124, 124, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, 15, 124, 124, 124, 92, 92, 92, 92, 0, 124, 124, 124, 0, 124, 124, 124, 92, 15, 14, 0, 0, 0, 0, 15, 15, 15, 124, 18, 18, 18, 18, 18, 18, 18, 15, 15, 15, 92, 92, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 18, 18, 18, 18, @@ -857,7 +859,7 @@ static const unsigned char groupMap[] = { 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 3, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 124, 92, 92, 92, 92, 92, 92, 92, 15, 15, 15, 15, 92, 15, 15, 15, 15, - 124, 124, 92, 15, 15, 0, 92, 92, 0, 0, 0, 0, 0, 0, 21, 21, 21, 21, + 124, 124, 92, 15, 15, 124, 92, 92, 0, 0, 0, 0, 0, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, @@ -868,9 +870,9 @@ static const unsigned char groupMap[] = { 21, 21, 137, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 91, 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, - 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, - 24, 23, 24, 23, 24, 21, 21, 21, 21, 21, 138, 21, 21, 139, 21, 140, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 0, 92, 92, 92, 92, + 92, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, 23, 24, + 23, 24, 23, 24, 23, 24, 21, 21, 21, 21, 21, 138, 21, 21, 139, 21, 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, 141, 141, 141, 140, 140, 140, 140, 140, 140, 0, 0, 141, 141, 141, 141, 141, 141, 0, 0, 140, 140, 140, 140, 140, 140, 140, 140, 141, 141, 141, 141, 141, @@ -897,7 +899,7 @@ static const unsigned char groupMap[] = { 18, 18, 7, 7, 7, 5, 6, 91, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 7, 7, 7, 5, 6, 0, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 119, 119, 119, 119, 92, 119, 119, 119, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, @@ -930,7 +932,7 @@ static const unsigned char groupMap[] = { 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 7, 7, 7, 7, 7, 7, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, @@ -971,9 +973,9 @@ static const unsigned char groupMap[] = { 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, - 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, + 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 122, 0, 123, 123, 123, 123, @@ -996,7 +998,7 @@ static const unsigned char groupMap[] = { 0, 3, 3, 16, 20, 16, 20, 3, 3, 3, 16, 20, 3, 16, 20, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 3, 3, 8, 3, 16, 20, 3, 3, 16, 20, 5, 6, 5, 6, 5, 6, 5, 6, 3, 3, 3, 3, 3, 91, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 8, 8, 3, 3, - 3, 3, 8, 3, 5, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 3, 8, 3, 5, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, @@ -1014,7 +1016,7 @@ static const unsigned char groupMap[] = { 15, 15, 15, 15, 15, 3, 91, 91, 91, 15, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 14, 14, 18, 18, 18, 18, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, @@ -1173,245 +1175,269 @@ static const unsigned char groupMap[] = { 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 18, 18, 18, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 127, 15, 15, 15, 15, 15, 15, 15, - 15, 127, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 127, 15, 15, 15, 15, 15, 15, + 15, 15, 127, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, 92, 92, 92, 0, 0, 0, - 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 3, 15, 15, - 15, 15, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 3, 127, 127, 127, - 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 194, 194, 194, 194, 194, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, 92, 92, 92, 0, + 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 3, 15, 15, 15, 15, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 3, 127, + 127, 127, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, 195, 195, 195, + 194, 194, 194, 194, 194, 194, 194, 194, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 195, 195, 195, 195, 195, 195, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 194, 194, 194, + 15, 15, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 0, 0, 0, 0, 195, 195, 195, 195, 195, 195, + 194, 194, 194, 194, 194, 194, 194, 0, 0, 0, 0, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 195, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 0, 0, 15, - 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 0, 0, 0, 15, - 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 0, 3, 18, 18, 18, 18, 18, 18, 18, 18, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 14, 14, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, - 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 0, 0, 0, 0, 0, 18, 18, 18, - 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 18, 18, 18, 18, 18, 18, 0, 0, 0, 3, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 3, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 0, 0, 0, 0, 18, 18, 15, 15, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 15, 92, 92, 92, 0, 92, 92, 0, 0, 0, 0, 0, 92, - 92, 92, 92, 15, 15, 15, 15, 0, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 0, 0, 0, 0, 92, 92, 92, 0, 0, 0, 0, 92, 18, 18, 18, - 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 18, 18, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 18, - 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 14, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 92, 92, 0, 0, 0, 0, 18, 18, 18, 18, 18, 3, 3, 3, - 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, - 3, 3, 3, 3, 3, 3, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 18, 18, 18, 18, 18, 18, - 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 15, + 195, 195, 195, 195, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, + 15, 0, 0, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, + 0, 0, 0, 15, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 3, 18, 18, 18, 18, 18, + 18, 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 18, 18, 18, 18, 18, 18, + 18, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 0, 0, 0, + 0, 0, 18, 18, 18, 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 18, 18, 18, 18, 18, 18, + 0, 0, 0, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 3, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 18, 18, 15, 15, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 15, 92, 92, 92, 0, 92, 92, + 0, 0, 0, 0, 0, 92, 92, 92, 92, 15, 15, 15, 15, 0, 15, 15, 15, 0, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 92, 92, 92, 0, 0, 0, + 0, 92, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 18, 18, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 18, 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 14, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, 0, 0, 0, 0, 18, 18, 18, + 18, 18, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 18, 18, + 18, 18, 18, 18, 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, + 18, 18, 18, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 0, 0, 0, - 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 0, 124, 92, 124, 15, 15, 15, 15, 15, 15, 15, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 124, 92, 124, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 3, 3, 3, + 3, 3, 3, 3, 0, 0, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 124, 124, 124, 92, 92, 92, + 92, 124, 124, 92, 92, 3, 3, 17, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 92, 92, 92, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 3, 3, 3, 3, 3, 3, 3, 0, 0, - 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 92, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 124, 124, 124, 92, 92, 92, 92, 124, 124, 92, - 92, 3, 3, 17, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 92, 92, 92, 92, 124, 92, 92, 92, 92, 92, 92, 92, 92, 0, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 92, 92, 92, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, 92, 92, - 92, 124, 92, 92, 92, 92, 92, 92, 92, 92, 0, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, + 15, 92, 3, 3, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 124, 124, 124, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 124, 124, 15, 15, 15, 15, 3, 3, + 3, 3, 3, 92, 92, 92, 3, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 3, + 15, 3, 3, 3, 0, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 3, 3, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 124, 124, 124, 92, 92, 92, 124, 124, + 92, 124, 92, 92, 3, 3, 3, 3, 3, 3, 92, 0, 15, 15, 15, 15, 15, 15, 15, + 0, 15, 0, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 3, 0, + 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 92, 124, 124, 124, 92, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 92, 92, 124, 124, 0, 15, + 15, 15, 15, 15, 15, 15, 15, 0, 0, 15, 15, 0, 0, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 92, 124, 124, 124, 124, 0, 0, 124, + 124, 0, 0, 124, 124, 124, 0, 0, 15, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, + 0, 0, 15, 15, 15, 15, 15, 124, 124, 0, 0, 92, 92, 92, 92, 92, 92, 92, + 0, 0, 0, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 124, 124, 124, 92, 92, 92, 92, 92, 92, 92, 92, 124, 124, 92, + 92, 92, 124, 92, 15, 15, 15, 15, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 0, 3, 0, 3, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 124, 124, 124, 92, 92, 92, 92, 92, 92, 124, + 92, 124, 124, 124, 124, 92, 92, 124, 92, 92, 15, 15, 3, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 124, 124, 124, + 92, 92, 92, 92, 0, 0, 124, 124, 124, 124, 92, 92, 124, 92, 92, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 15, + 15, 15, 15, 92, 92, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 124, 124, 124, 92, 92, 92, 92, 92, 92, 92, 92, + 124, 124, 92, 124, 92, 92, 3, 3, 3, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 124, 92, + 124, 124, 92, 92, 92, 92, 92, 92, 124, 92, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 124, 124, 124, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 124, 124, 15, 15, 15, 15, 3, 3, 3, 3, 3, 92, 92, - 92, 3, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 3, 15, 3, 3, 3, 0, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 124, 124, 124, 92, 92, 92, 124, 124, 92, 124, 92, 92, 3, - 3, 3, 3, 3, 3, 92, 0, 15, 15, 15, 15, 15, 15, 15, 0, 15, 0, 15, 15, - 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 3, 0, 0, 0, 0, 0, 0, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 124, 124, 124, - 92, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 0, 0, 0, 0, 0, 0, 92, 92, 124, 124, 0, 15, 15, 15, 15, 15, - 15, 15, 15, 0, 0, 15, 15, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 92, 124, 124, 124, 124, 0, 0, 124, 124, 0, 0, 124, - 124, 124, 0, 0, 15, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 15, 15, 15, - 15, 15, 124, 124, 0, 0, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 92, 92, - 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 124, 124, - 124, 92, 92, 92, 92, 92, 92, 92, 92, 124, 124, 92, 92, 92, 124, 92, - 15, 15, 15, 15, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 3, - 0, 3, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 124, 124, 124, 92, 92, 92, 92, 92, 92, 124, 92, 124, 124, 124, - 124, 92, 92, 124, 92, 92, 15, 15, 3, 15, 0, 0, 0, 0, 0, 0, 0, 0, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 124, 124, 124, 92, 92, 92, 92, - 0, 0, 124, 124, 124, 124, 92, 92, 124, 92, 92, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 15, 15, 15, 15, 92, - 92, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 124, 124, 124, 92, 92, 92, 92, 92, 92, 92, 92, 124, 124, 92, 124, - 92, 92, 3, 3, 3, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 124, 92, 124, 124, 92, 92, - 92, 92, 92, 92, 124, 92, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 92, 92, 92, 124, - 124, 92, 92, 92, 92, 124, 92, 92, 92, 92, 92, 0, 0, 0, 0, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 18, 18, 3, 3, 3, 14, 10, 10, 10, 10, 10, 10, 10, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 0, 0, 92, 92, 92, 124, 124, 92, 92, 92, 92, 124, 92, 92, 92, 92, 92, + 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 3, 3, 3, 14, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, + 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 15, 92, 92, 92, 92, 92, 92, 124, 124, 92, 92, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 92, 92, 92, 92, 92, 92, 124, 15, 92, 92, 92, 92, 3, + 3, 3, 3, 3, 3, 3, 3, 92, 0, 0, 0, 0, 0, 0, 0, 0, 15, 92, 92, 92, 92, + 92, 92, 124, 124, 92, 92, 92, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, + 15, 15, 15, 15, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 124, 92, 92, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 124, 92, 92, 92, 92, 92, 92, 92, 0, 124, - 124, 124, 124, 92, 92, 124, 92, 15, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 18, 18, 18, 18, + 15, 15, 15, 15, 15, 15, 15, 124, 92, 92, 92, 92, 92, 92, 92, 0, 92, + 92, 92, 92, 92, 92, 124, 92, 15, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 3, 3, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 0, 124, 92, 92, 92, 92, 92, 92, 92, 124, 92, 92, 124, 92, 92, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 127, 127, 127, 127, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 0, 0, 92, 92, 92, 92, 92, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 92, 92, 92, - 92, 92, 92, 92, 3, 3, 3, 3, 3, 14, 14, 14, 14, 91, 91, 91, 91, 3, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 18, - 18, 18, 18, 18, 18, 18, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 15, 15, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 124, 124, 124, 124, 124, 124, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 92, 92, 92, 92, 92, 92, 0, 0, 0, 92, 0, 92, 92, 0, 92, + 92, 92, 92, 92, 92, 92, 15, 92, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 0, 0, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 0, 3, 3, 3, 3, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 0, 0, 92, 92, 92, 92, 92, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 92, 92, 92, 92, 92, 92, 92, 3, 3, 3, 3, 3, 14, 14, 14, 14, 91, 91, + 91, 91, 3, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 0, 18, 18, 18, 18, 18, 18, 18, 0, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, + 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, + 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 124, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 124, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, 91, 91, 91, - 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, 91, + 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, - 14, 92, 92, 3, 17, 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, - 14, 14, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 124, 124, 92, - 92, 92, 14, 14, 14, 124, 124, 124, 124, 124, 124, 17, 17, 17, 17, 17, - 17, 17, 17, 92, 92, 92, 92, 92, 92, 92, 92, 14, 14, 92, 92, 92, 92, - 92, 92, 92, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 92, - 92, 92, 92, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 92, 92, - 92, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 107, + 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 0, 0, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, + 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 14, 92, 92, 3, 17, + 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 124, 124, 92, 92, 92, 14, 14, 14, + 124, 124, 124, 124, 124, 124, 17, 17, 17, 17, 17, 17, 17, 17, 92, 92, + 92, 92, 92, 92, 92, 92, 14, 14, 92, 92, 92, 92, 92, 92, 92, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 92, 92, 92, 92, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 92, 92, 92, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, + 21, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 0, 107, 107, 0, 0, 107, + 0, 0, 107, 107, 0, 0, 107, 107, 107, 107, 0, 107, 107, 107, 107, 107, + 107, 107, 107, 21, 21, 21, 21, 0, 21, 0, 21, 21, 21, 21, 21, 21, 21, + 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 107, 107, 0, 107, 107, 107, 107, 0, 0, 107, 107, 107, 107, + 107, 107, 107, 107, 0, 107, 107, 107, 107, 107, 107, 107, 0, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 107, 107, 0, 107, 107, 107, 107, 0, 107, + 107, 107, 107, 107, 0, 107, 0, 0, 0, 107, 107, 107, 107, 107, 107, + 107, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 21, - 21, 21, 21, 21, 21, 21, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, + 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 107, 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 0, - 107, 107, 0, 0, 107, 0, 0, 107, 107, 0, 0, 107, 107, 107, 107, 0, 107, - 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, 21, 0, 21, 0, 21, 21, - 21, 21, 21, 21, 21, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 21, 21, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 107, 107, 0, 107, 107, 107, 107, 0, 0, - 107, 107, 107, 107, 107, 107, 107, 107, 0, 107, 107, 107, 107, 107, - 107, 107, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 0, 107, 107, - 107, 107, 0, 107, 107, 107, 107, 107, 0, 107, 0, 0, 0, 107, 107, 107, - 107, 107, 107, 107, 0, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, + 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, 0, 0, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, + 107, 107, 107, 107, 107, 107, 107, 107, 7, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 7, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, + 107, 107, 107, 107, 7, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 7, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 107, 107, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 21, 21, 21, 21, 21, 21, 0, 0, 107, + 7, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 7, 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 7, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, @@ -1419,89 +1445,81 @@ static const unsigned char groupMap[] = { 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 7, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 7, - 21, 21, 21, 21, 21, 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 7, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 7, 21, 21, 21, 21, 21, - 21, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 7, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 7, 21, 21, 21, 21, 21, 21, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, - 107, 107, 107, 107, 107, 107, 107, 107, 7, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 7, 21, 21, 21, 21, 21, 21, 107, 21, 0, 0, 9, 9, 9, 9, 9, 9, + 21, 21, 21, 21, 21, 21, 107, 21, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 92, + 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 14, 14, 14, 14, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 14, 14, 14, 14, 14, 14, 14, - 14, 92, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 92, - 14, 14, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 92, 92, 92, 92, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, - 92, 92, 92, 92, 92, 92, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 0, 0, 92, 92, 92, 92, 92, 92, 92, 0, 92, - 92, 0, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 92, 92, 14, 14, 14, 14, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 14, 14, 14, 14, 14, 14, 14, 14, 92, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 92, 14, 14, 3, + 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, + 92, 92, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 92, 92, + 92, 92, 92, 0, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 0, 0, 92, 92, 92, 92, 92, 92, 92, 0, 92, 92, 0, 92, + 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 15, 15, 15, 15, 15, 0, 0, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 92, 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, + 196, 196, 196, 196, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 92, - 92, 92, 92, 92, 92, 92, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 0, 0, 0, 0, 3, 3, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 0, 15, 15, 0, 15, 0, 0, 15, 0, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 0, 15, 15, 15, 15, 0, 15, 0, 15, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 0, 15, 0, 15, 0, 15, 0, 15, 15, 15, 0, 15, 15, 0, 15, 0, 0, - 15, 0, 15, 0, 15, 0, 15, 0, 15, 0, 15, 15, 0, 15, 0, 0, 15, 15, 15, - 15, 0, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 0, 15, 15, 15, - 15, 0, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, - 0, 15, 15, 15, 0, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, - 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18, 18, 18, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, 92, 92, 92, 92, 92, + 92, 92, 0, 0, 0, 0, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 0, 0, 0, 0, 3, + 3, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, + 15, 0, 15, 0, 0, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, + 15, 15, 15, 15, 0, 15, 0, 15, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 15, + 0, 15, 0, 15, 0, 15, 15, 15, 0, 15, 15, 0, 15, 0, 0, 15, 0, 15, 0, + 15, 0, 15, 0, 15, 0, 15, 15, 0, 15, 0, 0, 15, 15, 15, 15, 0, 15, 15, + 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 0, 15, 15, 15, 15, 0, 15, 0, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 15, 15, + 15, 0, 15, 15, 15, 15, 15, 0, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 18, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, - 0, 0, 0, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, + 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 14, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, - 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, - 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, + 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, + 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 15, 15, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0 #endif /* TCL_UTF_MAX > 3 */ }; diff --git a/library/http/http.tcl b/library/http/http.tcl index d950441..0350808 100644 --- a/library/http/http.tcl +++ b/library/http/http.tcl @@ -206,7 +206,7 @@ proc http::Finish {token {errormsg ""} {skipCB 0}} { set state(error) [list $errormsg $errorInfo $errorCode] set state(status) "error" } - if { ($state(status) eq "timeout") + if { ($state(status) eq "timeout") || ($state(status) eq "error") || ([info exists state(-keepalive)] && !$state(-keepalive)) || ([info exists state(connection)] && ($state(connection) eq "close")) diff --git a/tests/encoding.test b/tests/encoding.test index 4dddbb5..d9ba072 100644 --- a/tests/encoding.test +++ b/tests/encoding.test @@ -35,7 +35,7 @@ proc runtests {} { # Some tests require the testencoding command testConstraint testencoding [llength [info commands testencoding]] testConstraint exec [llength [info commands exec]] -testConstraint testgetdefenc [llength [info commands testgetdefenc]] +testConstraint testgetencpath [llength [info commands testgetencpath]] # TclInitEncodingSubsystem is tested by the rest of this file # TclFinalizeEncodingSubsystem is not currently tested @@ -570,15 +570,15 @@ foreach from {cp932 shiftjis euc-jp iso2022-jp} { } } -test encoding-26.0 {Tcl_GetDefaultEncodingDir} -constraints { - testgetdefenc +test encoding-26.0 {Tcl_GetEncodingSearchPath} -constraints { + testgetencpath } -setup { - set origDir [testgetdefenc] - testsetdefenc slappy + set origPath [testgetencpath] + testsetencpath slappy } -body { - testgetdefenc + testgetencpath } -cleanup { - testsetdefenc $origDir + testsetencpath $origPath } -result slappy file delete {*}[glob -directory [temporaryDirectory] *.chars *.tcltestout] diff --git a/tests/http.test b/tests/http.test index 025c32e..210c2fb 100644 --- a/tests/http.test +++ b/tests/http.test @@ -588,7 +588,7 @@ test http-4.15 {http::Event} -body { } -cleanup { catch {http::cleanup $token} } -returnCodes 1 -match glob -result "couldn't open socket*" -test http-1.15 {Leak with Close vs Keepalive (bug [6ca52aec14]} -body { +test http-4.16 {Leak with Close vs Keepalive (bug [6ca52aec14]} -body { set before [chan names] set token [http::geturl $url -headers {X-Connection keep-alive}] http::cleanup $token diff --git a/tests/unixInit.test b/tests/unixInit.test index 05338ed..0469ee8 100644 --- a/tests/unixInit.test +++ b/tests/unixInit.test @@ -15,6 +15,9 @@ namespace import ::tcltest::* unset -nocomplain path catch {set oldlang $env(LANG)} set env(LANG) C + +# Some tests require the testgetencpath command +testConstraint testgetencpath [llength [info commands testgetencpath]] test unixInit-1.1 {TclpInitPlatform: ignore SIGPIPE} {unix stdio} { set x {} @@ -87,13 +90,15 @@ test unixInit-1.2 {initialisation: standard channel type deduction} {unix stdio} skip [concat [skip] unixInit-2.*] -test unixInit-2.0 {TclpInitLibraryPath: setting tclDefaultEncodingDir} { - set origDir [testgetdefenc] - testsetdefenc slappy - set path [testgetdefenc] - testsetdefenc $origDir +test unixInit-2.0 {TclpInitLibraryPath: setting tclDefaultEncodingDir} -constraints { + testgetencpath +} -body { + set origPath [testgetencpath] + testsetencpath slappy + set path [testgetencpath] + testsetencpath $origPath set path -} {slappy} +} -result {slappy} test unixInit-2.1 {TclpInitLibraryPath: value of installLib, developLib} -setup { unset -nocomplain oldlibrary if {[info exists env(TCL_LIBRARY)]} { diff --git a/unix/Makefile.in b/unix/Makefile.in index e2a9523..91d9231 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -345,7 +345,7 @@ UNIX_OBJS = tclUnixChan.o tclUnixEvent.o tclUnixFCmd.o \ tclUnixTime.o tclUnixInit.o tclUnixThrd.o \ tclUnixCompat.o -NOTIFY_OBJS = tclUnixNotfy.o +NOTIFY_OBJS = tclEpollNotfy.o tclKqueueNotfy.o tclSelectNotfy.o MAC_OSX_OBJS = tclMacOSXBundle.o tclMacOSXFCmd.o tclMacOSXNotify.o @@ -567,7 +567,9 @@ UNIX_SRCS = \ $(UNIX_DIR)/tclUnixCompat.c NOTIFY_SRCS = \ - $(UNIX_DIR)/tclUnixNotfy.c + $(UNIX_DIR)/tclEpollNotfy.c \ + $(UNIX_DIR)/tclKqueueNotfy.c \ + $(UNIX_DIR)/tclSelectNotfy.c DL_SRCS = \ $(UNIX_DIR)/tclLoadAix.c \ @@ -1567,8 +1569,14 @@ tclUnixFCmd.o: $(UNIX_DIR)/tclUnixFCmd.c tclUnixFile.o: $(UNIX_DIR)/tclUnixFile.c $(FSHDR) $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixFile.c -tclUnixNotfy.o: $(UNIX_DIR)/tclUnixNotfy.c - $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixNotfy.c +tclEpollNotfy.o: $(UNIX_DIR)/tclEpollNotfy.c + $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclEpollNotfy.c + +tclKqueueNotfy.o: $(UNIX_DIR)/tclKqueueNotfy.c + $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclKqueueNotfy.c + +tclSelectNotfy.o: $(UNIX_DIR)/tclSelectNotfy.c + $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclSelectNotfy.c tclUnixPipe.o: $(UNIX_DIR)/tclUnixPipe.c $(CC) -c $(CC_SWITCHES) $(UNIX_DIR)/tclUnixPipe.c diff --git a/unix/configure b/unix/configure index 741ae47..dfeb036 100755 --- a/unix/configure +++ b/unix/configure @@ -4890,8 +4890,8 @@ if ${tcl_cv_sys_version+:} false; then : $as_echo_n "(cached) " >&6 else - if test -f /usr/lib/NextStep/software_version; then - tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + if test "${TEA_PLATFORM}" = "windows" ; then + tcl_cv_sys_version=windows else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then @@ -4899,12 +4899,6 @@ else $as_echo "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid` - fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi @@ -5090,8 +5084,10 @@ fi PLAT_OBJS="" PLAT_SRCS="" LDAIX_SRC="" - if test x"${SHLIB_VERSION}" = x; then : - SHLIB_VERSION="1.0" + if test "x${SHLIB_VERSION}" = x; then : + SHLIB_VERSION=".1.0" +else + SHLIB_VERSION=".${SHLIB_VERSION}" fi case $system in AIX-*) @@ -5302,9 +5298,9 @@ $as_echo "$ac_cv_cygwin" >&6; } fi do64bit_ok=yes if test "x${SHARED_BUILD}" = "x1"; then - echo "running cd ${TCL_SRC_DIR}/win; ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args" + echo "running cd ../win; ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args" # The eval makes quoting arguments work. - if cd ${TCL_SRC_DIR}/win; eval ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args; cd ../unix + if cd ../win; eval ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args; cd ../unix then : else { echo "configure: error: configure failed for ../win" 1>&2; exit 1; } @@ -5724,70 +5720,28 @@ fi LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' fi ;; - MP-RAS-02*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD='${CC} -G' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - MP-RAS-*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD='${CC} -G' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="$LDFLAGS -Wl,-Bexport" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; OpenBSD-*) arch=`arch -s` case "$arch" in - vax) - # Equivalent using configure option --disable-load - # Step 4 will set the necessary variables - DL_OBJS="" - SHLIB_LD_LIBS="" - LDFLAGS="" - ;; - *) - case "$arch" in - alpha|sparc|sparc64) - SHLIB_CFLAGS="-fPIC" - ;; - *) - SHLIB_CFLAGS="-fpic" - ;; - esac - SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - if test $doRpath = yes; then : - - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' -fi - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' - LDFLAGS="-Wl,-export-dynamic" - ;; - esac - case "$arch" in - vax) - CFLAGS_OPTIMIZE="-O1" - ;; - sh) - CFLAGS_OPTIMIZE="-O0" + alpha|sparc64) + SHLIB_CFLAGS="-fPIC" ;; *) - CFLAGS_OPTIMIZE="-O2" + SHLIB_CFLAGS="-fpic" ;; esac + SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + if test $doRpath = yes; then : + + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' +fi + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' + LDFLAGS="-Wl,-export-dynamic" + CFLAGS_OPTIMIZE="-O2" if test "${TCL_THREADS}" = "1"; then : # On OpenBSD: Compile with -pthread @@ -6170,16 +6124,6 @@ fi fi ;; - NEXTSTEP-*) - SHLIB_CFLAGS="" - SHLIB_LD='${CC} -nostdlib -r' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadNext.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; OS/390-*) SHLIB_LD_LIBS="" CFLAGS_OPTIMIZE="" # Optimizer is buggy @@ -6187,35 +6131,6 @@ fi $as_echo "#define _OE_SOCKETS 1" >>confdefs.h ;; - OSF1-1.0|OSF1-1.1|OSF1-1.2) - # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 - SHLIB_CFLAGS="" - # Hack: make package name same as library name - SHLIB_LD='ld -R -export :' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadOSF.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OSF1-1.*) - # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 - SHLIB_CFLAGS="-fPIC" - if test "$SHARED_BUILD" = 1; then : - SHLIB_LD="ld -shared" -else - - SHLIB_LD="ld -non_shared" - -fi - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; OSF1-V*) # Digital OSF/1 SHLIB_CFLAGS="" @@ -6297,35 +6212,6 @@ fi CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; - SINIX*5.4*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD='${CC} -G' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SunOS-4*) - SHLIB_CFLAGS="-PIC" - SHLIB_LD="ld" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - - # SunOS can't handle version numbers with dots in them in library - # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it - # requires an extra version number at the end of .so file names. - # So, the library has to have a name like libtcl75.so.1.0 - - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' - TCL_LIB_VERSIONS_OK=nodots - ;; SunOS-5.[0-6]) # Careful to not let 5.10+ fall into this case @@ -8439,6 +8325,84 @@ $as_echo "#define NO_FD_SET 1" >>confdefs.h fi +#------------------------------------------------------------------------ +# Options for the notifier. Checks for epoll(7) on Linux, and +# kqueue(2) on {DragonFly,Free,Net,Open}BSD +#------------------------------------------------------------------------ + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for advanced notifier support" >&5 +$as_echo_n "checking for advanced notifier support... " >&6; } +case x`uname -s` in + xLinux) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: epoll(7)" >&5 +$as_echo "epoll(7)" >&6; } + for ac_header in sys/epoll.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/epoll.h" "ac_cv_header_sys_epoll_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_epoll_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_EPOLL_H 1 +_ACEOF + +$as_echo "#define NOTIFIER_EPOLL 1" >>confdefs.h + +fi + +done + + for ac_header in sys/eventfd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/eventfd.h" "ac_cv_header_sys_eventfd_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_eventfd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_EVENTFD_H 1 +_ACEOF + +$as_echo "#define HAVE_EVENTFD 1" >>confdefs.h + +fi + +done +;; + xDragonFlyBSD|xFreeBSD|xNetBSD|xOpenBSD) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: kqueue(2)" >&5 +$as_echo "kqueue(2)" >&6; } + # Messy because we want to check if *all* the headers are present, and not + # just *any* + tcl_kqueue_headers=x + for ac_header in sys/types.h sys/event.h sys/time.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + tcl_kqueue_headers=${tcl_kqueue_headers}y +fi + +done + + if test $tcl_kqueue_headers = xyyy; then : + + +$as_echo "#define NOTIFIER_KQUEUE 1" >>confdefs.h + +fi;; + xDarwin) + # Assume that we've got CoreFoundation present (checked elsewhere because + # of wider impact). + { $as_echo "$as_me:${as_lineno-$LINENO}: result: OSX" >&5 +$as_echo "OSX" >&6; };; + *) + cat >>confdefs.h <<_ACEOF +#define NOTIFIER_SELECT 1 +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; };; +esac + #------------------------------------------------------------------------------ # Find out all about time handling differences. #------------------------------------------------------------------------------ @@ -9977,8 +9941,8 @@ if ${tcl_cv_sys_version+:} false; then : $as_echo_n "(cached) " >&6 else - if test -f /usr/lib/NextStep/software_version; then - tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + if test "${TEA_PLATFORM}" = "windows" ; then + tcl_cv_sys_version=windows else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then @@ -9986,12 +9950,6 @@ else $as_echo "$as_me: WARNING: can't find uname command" >&2;} tcl_cv_sys_version=unknown else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - tcl_cv_sys_version=MP-RAS-`awk '{print $3}' /etc/.relid` - fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi diff --git a/unix/configure.ac b/unix/configure.ac index bafb970..b43da6d 100644 --- a/unix/configure.ac +++ b/unix/configure.ac @@ -300,6 +300,37 @@ if test $tcl_ok = no; then AC_DEFINE(NO_FD_SET, 1, [Do we have fd_set?]) fi +#------------------------------------------------------------------------ +# Options for the notifier. Checks for epoll(7) on Linux, and +# kqueue(2) on {DragonFly,Free,Net,Open}BSD +#------------------------------------------------------------------------ + +AC_MSG_CHECKING([for advanced notifier support]) +case x`uname -s` in + xLinux) + AC_MSG_RESULT([epoll(7)]) + AC_CHECK_HEADERS([sys/epoll.h], + [AC_DEFINE(NOTIFIER_EPOLL, [1], [Is epoll(7) supported?])]) + AC_CHECK_HEADERS([sys/eventfd.h], + [AC_DEFINE(HAVE_EVENTFD, [1], [Is eventfd(2) supported?])]);; + xDragonFlyBSD|xFreeBSD|xNetBSD|xOpenBSD) + AC_MSG_RESULT([kqueue(2)]) + # Messy because we want to check if *all* the headers are present, and not + # just *any* + tcl_kqueue_headers=x + AC_CHECK_HEADERS([sys/types.h sys/event.h sys/time.h], + [tcl_kqueue_headers=${tcl_kqueue_headers}y]) + AS_IF([test $tcl_kqueue_headers = xyyy], [ + AC_DEFINE(NOTIFIER_KQUEUE, [1], [Is kqueue(2) supported?])]);; + xDarwin) + # Assume that we've got CoreFoundation present (checked elsewhere because + # of wider impact). + AC_MSG_RESULT([OSX]);; + *) + AC_DEFINE_UNQUOTED(NOTIFIER_SELECT) + AC_MSG_RESULT([none]);; +esac + #------------------------------------------------------------------------------ # Find out all about time handling differences. #------------------------------------------------------------------------------ diff --git a/unix/tcl.m4 b/unix/tcl.m4 index c1d7a7d..e21cc20 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -91,8 +91,9 @@ AC_DEFUN([SC_PATH_TCLCONFIG], [ for i in `ls -d ${libdir} 2>/dev/null` \ `ls -d ${exec_prefix}/lib 2>/dev/null` \ `ls -d ${prefix}/lib 2>/dev/null` \ - `ls -d /usr/local/lib 2>/dev/null` \ `ls -d /usr/contrib/lib 2>/dev/null` \ + `ls -d /usr/local/lib 2>/dev/null` \ + `ls -d /usr/pkg/lib 2>/dev/null` \ `ls -d /usr/lib 2>/dev/null` \ `ls -d /usr/lib64 2>/dev/null` \ ; do @@ -611,7 +612,6 @@ AC_DEFUN([SC_ENABLE_FRAMEWORK], [ # TCL_THREADS # _REENTRANT # _THREAD_SAFE -# #------------------------------------------------------------------------ AC_DEFUN([SC_ENABLE_THREADS], [ @@ -727,7 +727,6 @@ AC_DEFUN([SC_ENABLE_THREADS], [ # Sets to $(LDFLAGS_OPTIMIZE) if false # DBGX Formerly used as debug library extension; # always blank now. -# #------------------------------------------------------------------------ AC_DEFUN([SC_ENABLE_SYMBOLS], [ @@ -892,8 +891,7 @@ AC_DEFUN([SC_CONFIG_MANPAGES], [ # # Determine what the system is (some things cannot be easily checked # on a feature-driven basis, alas). This can usually be done via the -# "uname" command, but there are a few systems, like Next, where -# this doesn't work. +# "uname" command. # # Arguments: # none @@ -902,25 +900,18 @@ AC_DEFUN([SC_CONFIG_MANPAGES], [ # Defines the following var: # # system - System/platform/version identification code. -# #-------------------------------------------------------------------- AC_DEFUN([SC_CONFIG_SYSTEM], [ AC_CACHE_CHECK([system version], tcl_cv_sys_version, [ - if test -f /usr/lib/NextStep/software_version; then - tcl_cv_sys_version=NEXTSTEP-`awk '/3/,/3/' /usr/lib/NextStep/software_version` + if test "${TEA_PLATFORM}" = "windows" ; then + tcl_cv_sys_version=windows else tcl_cv_sys_version=`uname -s`-`uname -r` if test "$?" -ne 0 ; then AC_MSG_WARN([can't find uname command]) tcl_cv_sys_version=unknown else - # Special check for weird MP-RAS system (uname returns weird - # results, and the version is kept in special file). - - if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then - tcl_cv_sys_version=MP-RAS-`awk '{print $[3]}' /etc/.relid` - fi if test "`uname -s`" = "AIX" ; then tcl_cv_sys_version=AIX-`uname -v`.`uname -r` fi @@ -977,7 +968,7 @@ AC_DEFUN([SC_CONFIG_SYSTEM], [ # SHLIB_LD_LIBS - Dependent libraries for the linker to scan when # creating shared libraries. This symbol typically # goes at the end of the "ld" commands that build -# shared libraries. The value of the symbol is +# shared libraries. The value of the symbol defaults to # "${LIBS}" if all of the dependent libraries should # be specified when creating a shared library. If # dependent libraries should not be specified (as on @@ -1107,7 +1098,7 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ PLAT_OBJS="" PLAT_SRCS="" LDAIX_SRC="" - AS_IF([test x"${SHLIB_VERSION}" = x], [SHLIB_VERSION="1.0"]) + AS_IF([test "x${SHLIB_VERSION}" = x],[SHLIB_VERSION=".1.0"],[SHLIB_VERSION=".${SHLIB_VERSION}"]) case $system in AIX-*) AS_IF([test "${TCL_THREADS}" = "1" -a "$GCC" != "yes"], [ @@ -1236,9 +1227,9 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ fi do64bit_ok=yes if test "x${SHARED_BUILD}" = "x1"; then - echo "running cd ${TCL_SRC_DIR}/win; ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args" + echo "running cd ../win; ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args" # The eval makes quoting arguments work. - if cd ${TCL_SRC_DIR}/win; eval ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args; cd ../unix + if cd ../win; eval ${CONFIG_SHELL-/bin/sh} ./configure $ac_configure_args; cd ../unix then : else { echo "configure: error: configure failed for ../win" 1>&2; exit 1; } @@ -1443,68 +1434,26 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}' LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}']) ;; - MP-RAS-02*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD='${CC} -G' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - MP-RAS-*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD='${CC} -G' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - LDFLAGS="$LDFLAGS -Wl,-Bexport" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; OpenBSD-*) arch=`arch -s` case "$arch" in - vax) - # Equivalent using configure option --disable-load - # Step 4 will set the necessary variables - DL_OBJS="" - SHLIB_LD_LIBS="" - LDFLAGS="" - ;; - *) - case "$arch" in - alpha|sparc|sparc64) - SHLIB_CFLAGS="-fPIC" - ;; - *) - SHLIB_CFLAGS="-fpic" - ;; - esac - SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}' - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - AS_IF([test $doRpath = yes], [ - CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}']) - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' - LDFLAGS="-Wl,-export-dynamic" - ;; - esac - case "$arch" in - vax) - CFLAGS_OPTIMIZE="-O1" - ;; - sh) - CFLAGS_OPTIMIZE="-O0" + alpha|sparc64) + SHLIB_CFLAGS="-fPIC" ;; *) - CFLAGS_OPTIMIZE="-O2" + SHLIB_CFLAGS="-fpic" ;; esac + SHLIB_LD='${CC} -shared ${SHLIB_CFLAGS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="" + AS_IF([test $doRpath = yes], [ + CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}']) + LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} + SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' + LDFLAGS="-Wl,-export-dynamic" + CFLAGS_OPTIMIZE="-O2" AS_IF([test "${TCL_THREADS}" = "1"], [ # On OpenBSD: Compile with -pthread # Don't link with -lpthread @@ -1698,47 +1647,12 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ ]) ]) ;; - NEXTSTEP-*) - SHLIB_CFLAGS="" - SHLIB_LD='${CC} -nostdlib -r' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadNext.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; OS/390-*) SHLIB_LD_LIBS="" CFLAGS_OPTIMIZE="" # Optimizer is buggy AC_DEFINE(_OE_SOCKETS, 1, # needed in sys/socket.h [Should OS/390 do the right thing with sockets?]) ;; - OSF1-1.0|OSF1-1.1|OSF1-1.2) - # OSF/1 1.[012] from OSF, and derivatives, including Paragon OSF/1 - SHLIB_CFLAGS="" - # Hack: make package name same as library name - SHLIB_LD='ld -R -export $@:' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadOSF.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - OSF1-1.*) - # OSF/1 1.3 from OSF using ELF, and derivatives, including AD2 - SHLIB_CFLAGS="-fPIC" - AS_IF([test "$SHARED_BUILD" = 1], [SHLIB_LD="ld -shared"], [ - SHLIB_LD="ld -non_shared" - ]) - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; OSF1-V*) # Digital OSF/1 SHLIB_CFLAGS="" @@ -1800,35 +1714,6 @@ AC_DEFUN([SC_CONFIG_CFLAGS], [ CC_SEARCH_FLAGS="" LD_SEARCH_FLAGS="" ;; - SINIX*5.4*) - SHLIB_CFLAGS="-K PIC" - SHLIB_LD='${CC} -G' - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS="" - LD_SEARCH_FLAGS="" - ;; - SunOS-4*) - SHLIB_CFLAGS="-PIC" - SHLIB_LD="ld" - SHLIB_LD_LIBS="" - SHLIB_SUFFIX=".so" - DL_OBJS="tclLoadDl.o" - DL_LIBS="-ldl" - CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}' - LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS} - - # SunOS can't handle version numbers with dots in them in library - # specs, like -ltcl7.5, so use -ltcl75 instead. Also, it - # requires an extra version number at the end of .so file names. - # So, the library has to have a name like libtcl75.so.1.0 - - SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so.${SHLIB_VERSION}' - UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a' - TCL_LIB_VERSIONS_OK=nodots - ;; SunOS-5.[[0-6]]) # Careful to not let 5.10+ fall into this case diff --git a/unix/tclEpollNotfy.c b/unix/tclEpollNotfy.c new file mode 100644 index 0000000..5ed5d5d --- /dev/null +++ b/unix/tclEpollNotfy.c @@ -0,0 +1,804 @@ +/* + * tclEpollNotfy.c -- + * + * This file contains the implementation of the epoll()-based + * Linux-specific notifier, which is the lowest-level part of the + * Tcl event loop. This file works together with generic/tclNotify.c. + * + * Copyright (c) 1995-1997 Sun Microsystems, Inc. + * Copyright (c) 2016 Lucio Andrés Illanes Albornoz <l.illanes@gmx.de> + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ + +#ifdef NOTIFIER_EPOLL + +#define _GNU_SOURCE /* For pipe2(2) */ +#include "tclInt.h" +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is + * in tclMacOSXNotify.c */ +#include <fcntl.h> +#include <signal.h> +#include <sys/epoll.h> +#include <sys/eventfd.h> +#include <sys/queue.h> +#include <unistd.h> + +/* + * This structure is used to keep track of the notifier info for a registered + * file. + */ + +struct PlatformEventData; +typedef struct FileHandler { + int fd; + int mask; /* Mask of desired events: TCL_READABLE, + * etc. */ + int readyMask; /* Mask of events that have been seen since + * the last time file handlers were invoked + * for this file. */ + Tcl_FileProc *proc; /* Function to call, in the style of + * Tcl_CreateFileHandler. */ + ClientData clientData; /* Argument to pass to proc. */ + struct FileHandler *nextPtr;/* Next in list of all files we care about. */ + LIST_ENTRY(FileHandler) readyNode; + /* Next/previous in list of FileHandlers asso- + * ciated with regular files (S_IFREG) that are + * ready for I/O. */ + struct PlatformEventData *pedPtr; + /* Pointer to PlatformEventData associating this + * FileHandler with epoll(7) events. */ +} FileHandler; + +/* + * The following structure associates a FileHandler and the thread that owns it + * with the file descriptors of interest and their event masks passed to epoll_ctl(2) + * and their corresponding event(s) returned by epoll_wait(2). + */ + +struct ThreadSpecificData; +struct PlatformEventData { + FileHandler *filePtr; + struct ThreadSpecificData *tsdPtr; +}; + +/* + * The following structure is what is added to the Tcl event queue when file + * handlers are ready to fire. + */ + +typedef struct { + Tcl_Event header; /* Information that is standard for all + * events. */ + int fd; /* File descriptor that is ready. Used to find + * the FileHandler structure for the file + * (can't point directly to the FileHandler + * structure because it could go away while + * the event is queued). */ +} FileHandlerEvent; + +/* + * The following static structure contains the state information for the + * epoll based implementation of the Tcl notifier. One of these structures is + * created for each thread that is using the notifier. + */ + +LIST_HEAD(PlatformReadyFileHandlerList, FileHandler); +typedef struct ThreadSpecificData { + FileHandler *firstFileHandlerPtr; + /* Pointer to head of file handler list. */ + struct PlatformReadyFileHandlerList firstReadyFileHandlerPtr; + /* Pointer to head of list of FileHandlers + * associated with regular files (S_IFREG) + * that are ready for I/O. */ + pthread_mutex_t notifierMutex; + /* Mutex protecting notifier termination in + * PlatformEventsFinalize. */ +#ifdef HAVE_EVENTFD + int triggerEventFd; /* eventfd(2) used by other threads to wake + * up this thread for inter-thread IPC. */ +#else + int triggerPipe[2]; /* pipe(2) used by other threads to wake + * up this thread for inter-thread IPC. */ +#endif /* HAVE_EVENTFD */ + int eventsFd; /* epoll(7) file descriptor used to wait for fds */ + struct epoll_event *readyEvents; + /* Pointer to at most maxReadyEvents events + * returned by epoll_wait(2). */ + size_t maxReadyEvents; /* Count of epoll_events in readyEvents. */ +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + +void PlatformEventsControl(FileHandler *filePtr, ThreadSpecificData *tsdPtr, int op, int isNew); +static void PlatformEventsFinalize(void); +void PlatformEventsInit(void); +static int PlatformEventsTranslate(struct epoll_event *event); +static int PlatformEventsWait(struct epoll_event *events, size_t numEvents, struct timeval *timePtr); + +#include "tclUnixNotfy.c" + +/* + *---------------------------------------------------------------------- + * + * Tcl_InitNotifier -- + * + * Initializes the platform specific notifier state. + * + * Results: + * Returns a handle to the notifier state for this thread. + * + * Side effects: + * If no initNotifierProc notifier hook exists, PlatformEventsInit + * is called. + * + *---------------------------------------------------------------------- + */ + +ClientData +Tcl_InitNotifier(void) +{ + if (tclNotifierHooks.initNotifierProc) { + return tclNotifierHooks.initNotifierProc(); + } else { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + PlatformEventsInit(); + return tsdPtr; + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_FinalizeNotifier -- + * + * This function is called to cleanup the notifier state before a thread + * is terminated. + * + * Results: + * None. + * + * Side effects: + * If no finalizeNotifierProc notifier hook exists, PlatformEvents- + * Finalize is called. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_FinalizeNotifier( + ClientData clientData) /* Not used. */ +{ + if (tclNotifierHooks.finalizeNotifierProc) { + tclNotifierHooks.finalizeNotifierProc(clientData); + return; + } else { + PlatformEventsFinalize(); + } +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsControl -- + * + * This function registers interest for the file descriptor and the mask + * of TCL_* bits associated with filePtr on the epoll file descriptor + * associated with tsdPtr. + * Future calls to epoll_wait will return filePtr and tsdPtr alongside with + * the event registered here via the PlatformEventData struct. + * + * Results: + * None. + * + * Side effects: + * If adding a new file descriptor, a PlatformEventData struct will be + * allocated and associated with filePtr. + * fstat is called on the file descriptor; if it is associated with + * a regular file (S_IFREG,) filePtr is considered to be ready for I/O + * and added to or deleted from the corresponding list in tsdPtr. + * If it is not associated with a regular file, the file descriptor is + * added, modified concerning its mask of events of interest, or deleted + * from the epoll file descriptor of the calling thread. + * + *---------------------------------------------------------------------- + */ + +void +PlatformEventsControl( + FileHandler *filePtr, + ThreadSpecificData *tsdPtr, + int op, + int isNew) +{ + struct epoll_event newEvent; + struct PlatformEventData *newPedPtr; + struct stat fdStat; + + newEvent.events = 0; + if (filePtr->mask & (TCL_READABLE | TCL_EXCEPTION)) { + newEvent.events |= EPOLLIN; + } + if (filePtr->mask & TCL_WRITABLE) { + newEvent.events |= EPOLLOUT; + } + if (isNew) { + newPedPtr = ckalloc(sizeof(*newPedPtr)); + newPedPtr->filePtr = filePtr; + newPedPtr->tsdPtr = tsdPtr; + filePtr->pedPtr = newPedPtr; + } + newEvent.data.ptr = filePtr->pedPtr; + + /* + * N.B. As discussed in Tcl_WaitForEvent(), epoll(7) does not sup- + * port regular files (S_IFREG.) Therefore, filePtr is in these + * cases simply added or deleted from the list of FileHandlers + * associated with regular files belonging to tsdPtr. + */ + + if (fstat(filePtr->fd, &fdStat) == -1) { + Tcl_Panic("fstat: %s", strerror(errno)); + } else if ((fdStat.st_mode & S_IFMT) == S_IFREG) { + switch (op) { + case EPOLL_CTL_ADD: + if (isNew) { + LIST_INSERT_HEAD(&tsdPtr->firstReadyFileHandlerPtr, filePtr, readyNode); + } + break; + case EPOLL_CTL_DEL: + LIST_REMOVE(filePtr, readyNode); + break; + } + return; + } else if (epoll_ctl(tsdPtr->eventsFd, op, filePtr->fd, &newEvent) == -1) { + Tcl_Panic("epoll_ctl: %s", strerror(errno)); + } +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsFinalize -- + * + * This function closes the eventfd and the epoll file descriptor and + * frees the epoll_event structs owned by the thread of the caller. + * The above operations are protected by tsdPtr->notifierMutex, which + * is destroyed thereafter. + * + * Results: + * None. + * + * Side effects: + * While tsdPtr->notifierMutex is held: + * The per-thread eventfd(2) is closed, if non-zero, and set to -1. + * The per-thread epoll(7) fd is closed, if non-zero, and set to 0. + * The per-thread epoll_event structs are freed, if any, and set to 0. + * + * tsdPtr->notifierMutex is destroyed. + * + *---------------------------------------------------------------------- + */ + +void +PlatformEventsFinalize( + void) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + pthread_mutex_lock(&tsdPtr->notifierMutex); +#ifdef HAVE_EVENTFD + if (tsdPtr->triggerEventFd) { + close(tsdPtr->triggerEventFd); + tsdPtr->triggerEventFd = -1; + } +#else + if (tsdPtr->triggerPipe[0]) { + close(tsdPtr->triggerPipe[0]); + tsdPtr->triggerPipe[0] = -1; + } + if (tsdPtr->triggerPipe[1]) { + close(tsdPtr->triggerPipe[1]); + tsdPtr->triggerPipe[1] = -1; + } +#endif /* HAVE_EVENTFD */ + if (tsdPtr->eventsFd > 0) { + close(tsdPtr->eventsFd); + tsdPtr->eventsFd = 0; + } + if (tsdPtr->readyEvents) { + ckfree(tsdPtr->readyEvents); + tsdPtr->maxReadyEvents = 0; + } + pthread_mutex_unlock(&tsdPtr->notifierMutex); + if ((errno = pthread_mutex_destroy(&tsdPtr->notifierMutex))) { + Tcl_Panic("pthread_mutex_destroy: %s", strerror(errno)); + } +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsInit -- + * + * This function abstracts creating a kqueue fd via the epoll_create + * system call and allocating memory for the epoll_event structs in + * tsdPtr for the thread of the caller. + * + * Results: + * None. + * + * Side effects: + * The following per-thread entities are initialised: + * notifierMutex is initialised. + * The eventfd(2) is created w/ EFD_CLOEXEC and EFD_NONBLOCK. + * The epoll(7) fd is created w/ EPOLL_CLOEXEC. + * A FileHandler struct is allocated and initialised for the event- + * fd(2), registering interest for TCL_READABLE on it via Platform- + * EventsControl(). + * readyEvents and maxReadyEvents are initialised with 512 epoll_events. + * + *---------------------------------------------------------------------- + */ + +void +PlatformEventsInit( + void) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + FileHandler *filePtr; + + errno = pthread_mutex_init(&tsdPtr->notifierMutex, NULL); + if (errno) { + Tcl_Panic("Tcl_InitNotifier: %s", "could not create mutex"); + } + filePtr = ckalloc(sizeof(*filePtr)); +#ifdef HAVE_EVENTFD + if ((tsdPtr->triggerEventFd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK)) <= 0) { + Tcl_Panic("Tcl_InitNotifier: %s", "could not create trigger eventfd"); + } + filePtr->fd = tsdPtr->triggerEventFd; +#else + if (pipe2(tsdPtr->triggerPipe, O_CLOEXEC | O_NONBLOCK) != 0) { + Tcl_Panic("Tcl_InitNotifier: %s", "could not create trigger pipe"); + } + filePtr->fd = tsdPtr->triggerPipe[0]; +#endif + if ((tsdPtr->eventsFd = epoll_create1(EPOLL_CLOEXEC)) == -1) { + Tcl_Panic("epoll_create1: %s", strerror(errno)); + } + filePtr->mask = TCL_READABLE; + PlatformEventsControl(filePtr, tsdPtr, EPOLL_CTL_ADD, 1); + if (!tsdPtr->readyEvents) { + tsdPtr->maxReadyEvents = 512; + tsdPtr->readyEvents = ckalloc(tsdPtr->maxReadyEvents + * sizeof(tsdPtr->readyEvents[0])); + } + LIST_INIT(&tsdPtr->firstReadyFileHandlerPtr); +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsTranslate -- + * + * This function translates the platform-specific mask of returned + * events in eventPtr to a mask of TCL_* bits. + * + * Results: + * Returns the translated mask. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +PlatformEventsTranslate( + struct epoll_event *eventPtr) +{ + int mask; + + mask = 0; + if (eventPtr->events & (EPOLLIN | EPOLLHUP)) { + mask |= TCL_READABLE; + } + if (eventPtr->events & EPOLLOUT) { + mask |= TCL_WRITABLE; + } + if (eventPtr->events & EPOLLERR) { + mask |= TCL_EXCEPTION; + } + return mask; +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsWait -- + * + * This function abstracts waiting for I/O events via epoll_wait. + * + * Results: + * Returns -1 if epoll_wait failed. Returns 0 if polling and if no + * events became available whilst polling. Returns a pointer to and + * the count of all returned events in all other cases. + * + * Side effects: + * gettimeofday(2), epoll_wait(2), and gettimeofday(2) are called, + * in the specified order. + * If timePtr specifies a positive value, it is updated to reflect + * the amount of time that has passed; if its value would {under, + * over}flow, it is set to zero. + * + *---------------------------------------------------------------------- + */ + +int +PlatformEventsWait( + struct epoll_event *events, + size_t numEvents, + struct timeval *timePtr) +{ + int numFound; + struct timeval tv0, tv1, tv_delta; + int timeout; + + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + /* + * If timePtr is NULL, epoll_wait(2) will wait indefinitely. If it + * specifies a timeout of {0,0}, epoll_wait(2) will poll. Otherwise, + * the timeout will simply be converted to milliseconds. + */ + + if (!timePtr) { + timeout = -1; + } else if (!timePtr->tv_sec && !timePtr->tv_usec) { + timeout = 0; + } else { + timeout = (int)timePtr->tv_sec; + } + + /* + * Call (and possibly block on) epoll_wait(2) and substract the delta + * of gettimeofday(2) before and after the call from timePtr if the + * latter is not NULL. Return the number of events returned by epoll_wait(2). + */ + + gettimeofday(&tv0, NULL); + numFound = epoll_wait(tsdPtr->eventsFd, events, (int)numEvents, timeout); + gettimeofday(&tv1, NULL); + if (timePtr && (timePtr->tv_sec && timePtr->tv_usec)) { + timersub(&tv1, &tv0, &tv_delta); + if (!timercmp(&tv_delta, timePtr, >)) { + timersub(timePtr, &tv_delta, timePtr); + } else { + timePtr->tv_sec = 0; + timePtr->tv_usec = 0; + } + } + return numFound; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_CreateFileHandler -- + * + * This function registers a file handler with the epoll notifier + * of the thread of the caller. + * + * Results: + * None. + * + * Side effects: + * Creates a new file handler structure. + * PlatformEventsControl() is called for the new file handler structure. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_CreateFileHandler( + int fd, /* Handle of stream to watch. */ + int mask, /* OR'ed combination of TCL_READABLE, + * TCL_WRITABLE, and TCL_EXCEPTION: indicates + * conditions under which proc should be + * called. */ + Tcl_FileProc *proc, /* Function to call for each selected + * event. */ + ClientData clientData) /* Arbitrary data to pass to proc. */ +{ + int isNew; + + if (tclNotifierHooks.createFileHandlerProc) { + tclNotifierHooks.createFileHandlerProc(fd, mask, proc, clientData); + return; + } else { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + FileHandler *filePtr; + + for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; + filePtr = filePtr->nextPtr) { + if (filePtr->fd == fd) { + break; + } + } + if (filePtr == NULL) { + filePtr = ckalloc(sizeof(FileHandler)); + filePtr->fd = fd; + filePtr->readyMask = 0; + filePtr->nextPtr = tsdPtr->firstFileHandlerPtr; + tsdPtr->firstFileHandlerPtr = filePtr; + isNew = 1; + } else { + isNew = 0; + } + filePtr->proc = proc; + filePtr->clientData = clientData; + filePtr->mask = mask; + + PlatformEventsControl(filePtr, tsdPtr, isNew ? + EPOLL_CTL_ADD : EPOLL_CTL_MOD, isNew); + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_DeleteFileHandler -- + * + * Cancel a previously-arranged callback arrangement for a file on + * the epoll file descriptor of the thread of the caller. + * + * Results: + * None. + * + * Side effects: + * If a callback was previously registered on file, remove it. + * PlatformEventsControl() is called for the file handler structure. + * The PlatformEventData struct associated with the new file handler + * structure is freed. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_DeleteFileHandler( + int fd) /* Stream id for which to remove callback + * function. */ +{ + if (tclNotifierHooks.deleteFileHandlerProc) { + tclNotifierHooks.deleteFileHandlerProc(fd); + return; + } else { + FileHandler *filePtr, *prevPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + /* + * Find the entry for the given file (and return if there isn't one). + */ + + for (prevPtr = NULL, filePtr = tsdPtr->firstFileHandlerPtr; ; + prevPtr = filePtr, filePtr = filePtr->nextPtr) { + if (filePtr == NULL) { + return; + } + if (filePtr->fd == fd) { + break; + } + } + + /* + * Update the check masks for this file. + */ + + PlatformEventsControl(filePtr, tsdPtr, EPOLL_CTL_DEL, 0); + if (filePtr->pedPtr) { + ckfree(filePtr->pedPtr); + } + + /* + * Clean up information in the callback record. + */ + + if (prevPtr == NULL) { + tsdPtr->firstFileHandlerPtr = filePtr->nextPtr; + } else { + prevPtr->nextPtr = filePtr->nextPtr; + } + ckfree(filePtr); + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_WaitForEvent -- + * + * This function is called by Tcl_DoOneEvent to wait for new events on + * the message queue. If the block time is 0, then Tcl_WaitForEvent just + * polls without blocking. + * The waiting logic is implemented in PlatformEventsWait. + * + * Results: + * Returns -1 if PlatformEventsWait() would block forever, otherwise + * returns 0. + * + * Side effects: + * Queues file events that are detected by PlatformEventsWait(). + * + *---------------------------------------------------------------------- + */ + +int +Tcl_WaitForEvent( + const Tcl_Time *timePtr) /* Maximum block time, or NULL. */ +{ + if (tclNotifierHooks.waitForEventProc) { + return tclNotifierHooks.waitForEventProc(timePtr); + } else { + FileHandler *filePtr; + int mask; + Tcl_Time vTime; + /* + * Impl. notes: timeout & timeoutPtr are used if, and only if threads + * are not enabled. They are the arguments for the regular epoll_wait() + * used when the core is not thread-enabled. + */ + + struct timeval timeout, *timeoutPtr; + int numFound, numEvent; + struct PlatformEventData *pedPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + int numQueued; + ssize_t i; + + /* + * Set up the timeout structure. Note that if there are no events to + * check for, we return with a negative result rather than blocking + * forever. + */ + + if (timePtr != NULL) { + /* + * TIP #233 (Virtualized Time). Is virtual time in effect? And do + * we actually have something to scale? If yes to both then we + * call the handler to do this scaling. + */ + + if (timePtr->sec != 0 || timePtr->usec != 0) { + vTime = *timePtr; + tclScaleTimeProcPtr(&vTime, tclTimeClientData); + timePtr = &vTime; + } + timeout.tv_sec = timePtr->sec; + timeout.tv_usec = timePtr->usec; + timeoutPtr = &timeout; + } else { + timeoutPtr = NULL; + } + + /* + * Walk the list of FileHandlers associated with regular files + * (S_IFREG) belonging to tsdPtr, queue Tcl events for them, and + * update their mask of events of interest. + * As epoll(7) does not support regular files, the behaviour of + * {select,poll}(2) is simply simulated here: fds associated with + * regular files are added to this list by PlatformEventsControl() + * and processed here before calling (and possibly blocking) on + * PlatformEventsWait(). + */ + + numQueued = 0; + LIST_FOREACH(filePtr, &tsdPtr->firstReadyFileHandlerPtr, readyNode) { + mask = 0; + if (filePtr->mask & TCL_READABLE) { + mask |= TCL_READABLE; + } + if (filePtr->mask & TCL_WRITABLE) { + mask |= TCL_WRITABLE; + } + + /* + * Don't bother to queue an event if the mask was previously + * non-zero since an event must still be on the queue. + */ + + if (filePtr->readyMask == 0) { + FileHandlerEvent *fileEvPtr = + ckalloc(sizeof(FileHandlerEvent)); + + fileEvPtr->header.proc = FileHandlerEventProc; + fileEvPtr->fd = filePtr->fd; + Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + numQueued++; + } + filePtr->readyMask = mask; + } + + /* + * If any events were queued in the above loop, force PlatformEvents- + * Wait() to poll as there already are events that need to be processed + * at this point. + */ + + if (numQueued) { + timeout.tv_sec = 0; + timeout.tv_usec = 0; + timeoutPtr = &timeout; + } + + /* + * Wait or poll for new events, queue Tcl events for the FileHandlers + * corresponding to them, and update the FileHandlers' mask of events + * of interest registered by the last call to Tcl_CreateFileHandler(). + * + * Events for the eventfd(2)/trigger pipe are processed here in order + * to facilitate inter-thread IPC. If another thread intends to wake + * up this thread whilst it's blocking on PlatformEventsWait(), it + * write(2)s to the eventfd(2)/trigger pipe (see Tcl_AlertNotifier(),) + * which in turn will cause PlatformEventsWait() to return immediately. + */ + + numFound = PlatformEventsWait(tsdPtr->readyEvents, tsdPtr->maxReadyEvents, timeoutPtr); + for (numEvent = 0; numEvent < numFound; numEvent++) { + pedPtr = tsdPtr->readyEvents[numEvent].data.ptr; + filePtr = pedPtr->filePtr; + mask = PlatformEventsTranslate(&tsdPtr->readyEvents[numEvent]); +#ifdef HAVE_EVENTFD + if (filePtr->fd == tsdPtr->triggerEventFd) { + uint64_t eventFdVal; + i = read(tsdPtr->triggerEventFd, &eventFdVal, sizeof(eventFdVal)); + if ((i != sizeof(eventFdVal)) && (errno != EAGAIN)) { +#else + if (filePtr->fd == tsdPtr->triggerPipe[0]) { + char triggerPipeVal; + i = read(tsdPtr->triggerPipe[0], &triggerPipeVal, sizeof(triggerPipeVal)); + if ((i != sizeof(triggerPipeVal)) && (errno != EAGAIN)) { +#endif + Tcl_Panic("Tcl_WaitForEvent: " + "read from %p->triggerEventFd: %s", + (void *)tsdPtr, strerror(errno)); + } else { + continue; + } + } + if (!mask) { + continue; + } + + /* + * Don't bother to queue an event if the mask was previously + * non-zero since an event must still be on the queue. + */ + + if (filePtr->readyMask == 0) { + FileHandlerEvent *fileEvPtr = + ckalloc(sizeof(FileHandlerEvent)); + + fileEvPtr->header.proc = FileHandlerEventProc; + fileEvPtr->fd = filePtr->fd; + Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + } + filePtr->readyMask = mask; + } + return 0; + } +} + +#endif /* !HAVE_COREFOUNDATION */ + +#endif /* NOTIFIER_EPOLL */ + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ diff --git a/unix/tclKqueueNotfy.c b/unix/tclKqueueNotfy.c new file mode 100644 index 0000000..049829e --- /dev/null +++ b/unix/tclKqueueNotfy.c @@ -0,0 +1,842 @@ +/* + * tclKqueueNotfy.c -- + * + * This file contains the implementation of the kqueue()-based + * DragonFly/Free/Net/OpenBSD-specific notifier, which is the lowest- + * level part of the Tcl event loop. This file works together with + * generic/tclNotify.c. + * + * Copyright (c) 1995-1997 Sun Microsystems, Inc. + * Copyright (c) 2016 Lucio Andrés Illanes Albornoz <l.illanes@gmx.de> + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ + +#ifdef NOTIFIER_KQUEUE + +#include "tclInt.h" +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is + * in tclMacOSXNotify.c */ +#include <signal.h> +#include <sys/types.h> +#include <sys/event.h> +#include <sys/queue.h> +#include <sys/time.h> + +/* + * This structure is used to keep track of the notifier info for a registered + * file. + */ + +struct PlatformEventData; +typedef struct FileHandler { + int fd; + int mask; /* Mask of desired events: TCL_READABLE, + * etc. */ + int readyMask; /* Mask of events that have been seen since + * the last time file handlers were invoked + * for this file. */ + Tcl_FileProc *proc; /* Function to call, in the style of + * Tcl_CreateFileHandler. */ + ClientData clientData; /* Argument to pass to proc. */ + struct FileHandler *nextPtr;/* Next in list of all files we care about. */ + LIST_ENTRY(FileHandler) readyNode; + /* Next/previous in list of FileHandlers asso- + * ciated with regular files (S_IFREG) that are + * ready for I/O. */ + struct PlatformEventData *pedPtr; + /* Pointer to PlatformEventData associating this + * FileHandler with kevent(2) events. */ +} FileHandler; + +/* + * The following structure associates a FileHandler and the thread that owns it + * with the file descriptors of interest and their event masks passed to kevent(2) + * and their corresponding event(s) returned by kevent(2). + */ + +struct ThreadSpecificData; +struct PlatformEventData { + FileHandler *filePtr; + struct ThreadSpecificData *tsdPtr; +}; + +/* + * The following structure is what is added to the Tcl event queue when file + * handlers are ready to fire. + */ + +typedef struct { + Tcl_Event header; /* Information that is standard for all + * events. */ + int fd; /* File descriptor that is ready. Used to find + * the FileHandler structure for the file + * (can't point directly to the FileHandler + * structure because it could go away while + * the event is queued). */ +} FileHandlerEvent; + +/* + * The following static structure contains the state information for the + * kqueue based implementation of the Tcl notifier. One of these structures is + * created for each thread that is using the notifier. + */ + +LIST_HEAD(PlatformReadyFileHandlerList, FileHandler); +typedef struct ThreadSpecificData { + FileHandler *firstFileHandlerPtr; + /* Pointer to head of file handler list. */ + struct PlatformReadyFileHandlerList firstReadyFileHandlerPtr; + /* Pointer to head of list of FileHandlers + * associated with regular files (S_IFREG) + * that are ready for I/O. */ + pthread_mutex_t notifierMutex; + /* Mutex protecting notifier termination in + * PlatformEventsFinalize. */ + int triggerPipe[2]; /* pipe(2) used by other threads to wake + * up this thread for inter-thread IPC. */ + int eventsFd; /* kqueue(2) file descriptor used to wait for fds. */ + struct kevent *readyEvents; /* Pointer to at most maxReadyEvents events + * returned by kevent(2). */ + size_t maxReadyEvents; /* Count of kevents in readyEvents. */ +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + +void PlatformEventsControl(FileHandler *filePtr, ThreadSpecificData *tsdPtr, int op, int isNew); +static void PlatformEventsFinalize(void); +void PlatformEventsInit(void); +static int PlatformEventsTranslate(struct kevent *eventPtr); +static int PlatformEventsWait(struct kevent *events, size_t numEvents, struct timeval *timePtr); + +#include "tclUnixNotfy.c" + +/* + *---------------------------------------------------------------------- + * + * Tcl_InitNotifier -- + * + * Initializes the platform specific notifier state. + * + * Results: + * Returns a handle to the notifier state for this thread. + * + * Side effects: + * If no initNotifierProc notifier hook exists, PlatformEventsInit + * is called. + * + *---------------------------------------------------------------------- + */ + +ClientData +Tcl_InitNotifier(void) +{ + if (tclNotifierHooks.initNotifierProc) { + return tclNotifierHooks.initNotifierProc(); + } else { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + PlatformEventsInit(); + return tsdPtr; + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_FinalizeNotifier -- + * + * This function is called to cleanup the notifier state before a thread + * is terminated. + * + * Results: + * None. + * + * Side effects: + * If no finalizeNotifierProc notifier hook exists, PlatformEvents- + * Finalize is called. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_FinalizeNotifier( + ClientData clientData) /* Not used. */ +{ + if (tclNotifierHooks.finalizeNotifierProc) { + tclNotifierHooks.finalizeNotifierProc(clientData); + return; + } else { + PlatformEventsFinalize(); + } +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsControl -- + * + * This function registers interest for the file descriptor and the mask + * of TCL_* bits associated with filePtr on the kqueue file descriptor + * associated with tsdPtr. + * Future calls to kevent will return filePtr and tsdPtr alongside with + * the event registered here via the PlatformEventData struct. + * + * Results: + * None. + * + * Side effects: + * If adding a new file descriptor, a PlatformEventData struct will be + * allocated and associated with filePtr. + * fstat is called on the file descriptor; if it is associated with + * a regular file (S_IFREG,) filePtr is considered to be ready for I/O + * and added to or deleted from the corresponding list in tsdPtr. + * If it is not associated with a regular file, the file descriptor is + * added, modified concerning its mask of events of interest, or deleted + * from the epoll file descriptor of the calling thread. + * If deleting a file descriptor, kevent(2) is called twice specifying + * EVFILT_READ first and then EVFILT_WRITE (see note below.) + * + *---------------------------------------------------------------------- + */ + +void +PlatformEventsControl( + FileHandler *filePtr, + ThreadSpecificData *tsdPtr, + int op, + int isNew) +{ + int numChanges; + struct kevent changeList[2]; + struct PlatformEventData *newPedPtr; + struct stat fdStat; + + if (isNew) { + newPedPtr = ckalloc(sizeof(*newPedPtr)); + newPedPtr->filePtr = filePtr; + newPedPtr->tsdPtr = tsdPtr; + filePtr->pedPtr = newPedPtr; + } + + /* + * N.B. As discussed in Tcl_WaitForEvent(), kqueue(2) does not repro- + * duce the `always ready' {select,poll}(2) behaviour for regular + * files (S_IFREG) prior to FreeBSD 11.0-RELEASE. Therefore, file- + * Ptr is in these cases simply added or deleted from the list of + * FileHandlers associated with regular files belonging to tsdPtr. + */ + + if (fstat(filePtr->fd, &fdStat) == -1) { + Tcl_Panic("fstat: %s", strerror(errno)); + } else if ((fdStat.st_mode & S_IFMT) == S_IFREG) { + switch (op) { + case EV_ADD: + if (isNew) { + LIST_INSERT_HEAD(&tsdPtr->firstReadyFileHandlerPtr, filePtr, readyNode); + } + break; + case EV_DELETE: + LIST_REMOVE(filePtr, readyNode); + break; + } + return; + } + + numChanges = 0; + switch (op) { + case EV_ADD: + if (filePtr->mask & (TCL_READABLE | TCL_EXCEPTION)) { + EV_SET(&changeList[numChanges], (uintptr_t)filePtr->fd, EVFILT_READ, + op, 0, 0, filePtr->pedPtr); + numChanges++; + } + if (filePtr->mask & TCL_WRITABLE) { + EV_SET(&changeList[numChanges], (uintptr_t)filePtr->fd, EVFILT_WRITE, + op, 0, 0, filePtr->pedPtr); + numChanges++; + } + if (numChanges) { + if (kevent(tsdPtr->eventsFd, changeList, numChanges, NULL, 0, NULL) == -1) { + Tcl_Panic("kevent: %s", strerror(errno)); + } + } + break; + case EV_DELETE: + /* + * N.B. kqueue(2) has separate filters for readability and writabi- + * lity fd events. We therefore need to ensure that fds are + * ompletely removed from the kqueue(2) fd when deleting. + * This is exacerbated by changes to filePtr->mask w/o calls + * to PlatforEventsControl() after e.g. an exec(3) in a child + * process. + * As one of these calls can fail, two separate kevent(2) calls + * are made for EVFILT_{READ,WRITE}. + */ + EV_SET(&changeList[0], (uintptr_t)filePtr->fd, EVFILT_READ, op, 0, 0, NULL); + if ((kevent(tsdPtr->eventsFd, changeList, 1, NULL, 0, NULL) == -1) + && (errno != ENOENT)) { + Tcl_Panic("kevent: %s", strerror(errno)); + } + EV_SET(&changeList[0], (uintptr_t)filePtr->fd, EVFILT_WRITE, op, 0, 0, NULL); + if ((kevent(tsdPtr->eventsFd, changeList, 1, NULL, 0, NULL) == -1) + && (errno != ENOENT)) { + Tcl_Panic("kevent: %s", strerror(errno)); + } + break; + } +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsFinalize -- + * + * This function closes the pipe and the kqueue file descriptors + * and frees the kevent structs owned by the thread of the caller. + * The above operations are protected by tsdPtr->notifierMutex, which + * is destroyed thereafter. + * + * Results: + * None. + * + * Side effects: + * While tsdPtr->notifierMutex is held: + * The per-thread pipe(2) fds are closed, if non-zero, and set to -1. + * The per-thread kqueue(2) fd is closed, if non-zero, and set to 0. + * The per-thread kevent structs are freed, if any, and set to 0. + * + * tsdPtr->notifierMutex is destroyed. + * + *---------------------------------------------------------------------- + */ + +void +PlatformEventsFinalize( + void) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + pthread_mutex_lock(&tsdPtr->notifierMutex); + if (tsdPtr->triggerPipe[0]) { + close(tsdPtr->triggerPipe[0]); + tsdPtr->triggerPipe[0] = -1; + } + if (tsdPtr->triggerPipe[1]) { + close(tsdPtr->triggerPipe[1]); + tsdPtr->triggerPipe[1] = -1; + } + if (tsdPtr->eventsFd > 0) { + close(tsdPtr->eventsFd); + tsdPtr->eventsFd = 0; + } + if (tsdPtr->readyEvents) { + ckfree(tsdPtr->readyEvents); + tsdPtr->maxReadyEvents = 0; + } + pthread_mutex_unlock(&tsdPtr->notifierMutex); + if ((errno = pthread_mutex_destroy(&tsdPtr->notifierMutex))) { + Tcl_Panic("pthread_mutex_destroy: %s", strerror(errno)); + } +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsInit -- + * + * This function abstracts creating a kqueue fd via the kqueue + * system call and allocating memory for the kevents structs in + * tsdPtr for the thread of the caller. + * + * Results: + * None. + * + * Side effects: + * The following per-thread entities are initialised: + * notifierMutex is initialised. + * The pipe(2) is created; fcntl(2) is called on both fds to set + * FD_CLOEXEC and O_NONBLOCK. + * The kqueue(2) fd is created; fcntl(2) is called on it to set + * FD_CLOEXEC. + * A FileHandler struct is allocated and initialised for the event- + * fd(2), registering interest for TCL_READABLE on it via Platform- + * EventsControl(). + * readyEvents and maxReadyEvents are initialised with 512 kevents. + + *---------------------------------------------------------------------- + */ + +void +PlatformEventsInit( + void) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + int i, fdFl; + FileHandler *filePtr; + + errno = pthread_mutex_init(&tsdPtr->notifierMutex, NULL); + if (errno) { + Tcl_Panic("Tcl_InitNotifier: %s", "could not create mutex"); + } + if (pipe(tsdPtr->triggerPipe) != 0) { + Tcl_Panic("Tcl_InitNotifier: %s", "could not create trigger pipe"); + } else for (i = 0; i < 2; i++) { + if (fcntl(tsdPtr->triggerPipe[i], F_SETFD, FD_CLOEXEC) == -1) { + Tcl_Panic("fcntl: %s", strerror(errno)); + } else { + fdFl = fcntl(tsdPtr->triggerPipe[i], F_GETFL); + fdFl |= O_NONBLOCK; + } + if (fcntl(tsdPtr->triggerPipe[i], F_SETFL, fdFl) == -1) { + Tcl_Panic("fcntl: %s", strerror(errno)); + } + } + if ((tsdPtr->eventsFd = kqueue()) == -1) { + Tcl_Panic("kqueue: %s", strerror(errno)); + } else if (fcntl(tsdPtr->eventsFd, F_SETFD, FD_CLOEXEC) == -1) { + Tcl_Panic("fcntl: %s", strerror(errno)); + } + filePtr = ckalloc(sizeof(*filePtr)); + filePtr->fd = tsdPtr->triggerPipe[0]; + filePtr->mask = TCL_READABLE; + PlatformEventsControl(filePtr, tsdPtr, EV_ADD, 1); + if (!tsdPtr->readyEvents) { + tsdPtr->maxReadyEvents = 512; + tsdPtr->readyEvents = ckalloc(tsdPtr->maxReadyEvents + * sizeof(tsdPtr->readyEvents[0])); + } + LIST_INIT(&tsdPtr->firstReadyFileHandlerPtr); +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsTranslate -- + * + * This function translates the platform-specific mask of returned + * events in eventPtr to a mask of TCL_* bits. + * + * Results: + * Returns the translated mask. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +int +PlatformEventsTranslate( + struct kevent *eventPtr) +{ + int mask; + + mask = 0; + if (eventPtr->filter == EVFILT_READ) { + mask |= TCL_READABLE; + if (eventPtr->flags & EV_ERROR) { + mask |= TCL_EXCEPTION; + } + } + if (eventPtr->filter == EVFILT_WRITE) { + mask |= TCL_WRITABLE; + if (eventPtr->flags & EV_ERROR) { + mask |= TCL_EXCEPTION; + } + } + return mask; +} + +/* + *---------------------------------------------------------------------- + * + * PlatformEventsWait -- + * + * This function abstracts waiting for I/O events via the kevent + * system call. + * + * Results: + * Returns -1 if kevent failed. Returns 0 if polling and if no events + * became available whilst polling. Returns a pointer to and the count + * of all returned events in all other cases. + * + * Side effects: + * gettimeofday(2), kevent(2), and gettimeofday(2) are called, + * in the specified order. + * If timePtr specifies a positive value, it is updated to reflect + * the amount of time that has passed; if its value would {under, + * over}flow, it is set to zero. + * + *---------------------------------------------------------------------- + */ + +int +PlatformEventsWait( + struct kevent *events, + size_t numEvents, + struct timeval *timePtr) +{ + int numFound; + struct timeval tv0, tv1, tv_delta; + struct timespec timeout, *timeoutPtr; + + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + /* + * If timePtr is NULL, kevent(2) will wait indefinitely. If it speci- + * fies a timeout of {0,0}, kevent(2) will poll. Otherwise, the time- + * out will simply be converted to a timespec. + */ + + if (!timePtr) { + timeoutPtr = NULL; + } else if (!timePtr->tv_sec && !timePtr->tv_usec) { + timeout.tv_sec = 0; + timeout.tv_nsec = 0; + timeoutPtr = &timeout; + } else { + timeout.tv_sec = timePtr->tv_sec; + timeout.tv_nsec = timePtr->tv_usec * 1000; + timeoutPtr = &timeout; + } + + /* + * Call (and possibly block on) kevent(2) and substract the delta of + * gettimeofday(2) before and after the call from timePtr if the latter + * is not NULL. Return the number of events returned by kevent(2). + */ + + gettimeofday(&tv0, NULL); + numFound = kevent(tsdPtr->eventsFd, NULL, 0, events, (int)numEvents, timeoutPtr); + gettimeofday(&tv1, NULL); + if (timePtr && (timePtr->tv_sec && timePtr->tv_usec)) { + timersub(&tv1, &tv0, &tv_delta); + if (!timercmp(&tv_delta, timePtr, >)) { + timersub(timePtr, &tv_delta, timePtr); + } else { + timePtr->tv_sec = 0; + timePtr->tv_usec = 0; + } + } + return numFound; +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_CreateFileHandler -- + * + * This function registers a file handler with the kqueue notifier + * of the thread of the caller. + * + * Results: + * None. + * + * Side effects: + * Creates a new file handler structure. + * PlatformEventsControl() is called for the new file handler structure. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_CreateFileHandler( + int fd, /* Handle of stream to watch. */ + int mask, /* OR'ed combination of TCL_READABLE, + * TCL_WRITABLE, and TCL_EXCEPTION: indicates + * conditions under which proc should be + * called. */ + Tcl_FileProc *proc, /* Function to call for each selected + * event. */ + ClientData clientData) /* Arbitrary data to pass to proc. */ +{ + int isNew; + + if (tclNotifierHooks.createFileHandlerProc) { + tclNotifierHooks.createFileHandlerProc(fd, mask, proc, clientData); + return; + } else { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + FileHandler *filePtr; + + for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; + filePtr = filePtr->nextPtr) { + if (filePtr->fd == fd) { + break; + } + } + if (filePtr == NULL) { + filePtr = ckalloc(sizeof(FileHandler)); + filePtr->fd = fd; + filePtr->readyMask = 0; + filePtr->nextPtr = tsdPtr->firstFileHandlerPtr; + tsdPtr->firstFileHandlerPtr = filePtr; + isNew = 1; + } else { + isNew = 0; + } + filePtr->proc = proc; + filePtr->clientData = clientData; + filePtr->mask = mask; + + PlatformEventsControl(filePtr, tsdPtr, EV_ADD, isNew); + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_DeleteFileHandler -- + * + * Cancel a previously-arranged callback arrangement for a file on + * the kqueue of the thread of the caller. + * + * Results: + * None. + * + * Side effects: + * If a callback was previously registered on file, remove it. + * PlatformEventsControl() is called for the file handler structure. + * The PlatformEventData struct associated with the new file handler + * structure is freed. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_DeleteFileHandler( + int fd) /* Stream id for which to remove callback + * function. */ +{ + if (tclNotifierHooks.deleteFileHandlerProc) { + tclNotifierHooks.deleteFileHandlerProc(fd); + return; + } else { + FileHandler *filePtr, *prevPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + /* + * Find the entry for the given file (and return if there isn't one). + */ + + for (prevPtr = NULL, filePtr = tsdPtr->firstFileHandlerPtr; ; + prevPtr = filePtr, filePtr = filePtr->nextPtr) { + if (filePtr == NULL) { + return; + } + if (filePtr->fd == fd) { + break; + } + } + + /* + * Update the check masks for this file. + */ + + PlatformEventsControl(filePtr, tsdPtr, EV_DELETE, 0); + if (filePtr->pedPtr) { + ckfree(filePtr->pedPtr); + } + + /* + * Clean up information in the callback record. + */ + + if (prevPtr == NULL) { + tsdPtr->firstFileHandlerPtr = filePtr->nextPtr; + } else { + prevPtr->nextPtr = filePtr->nextPtr; + } + ckfree(filePtr); + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_WaitForEvent -- + * + * This function is called by Tcl_DoOneEvent to wait for new events on + * the message queue. If the block time is 0, then Tcl_WaitForEvent just + * polls without blocking. + * The waiting logic is implemented in PlatformEventsWait. + * + * Results: + * Returns -1 if PlatformEventsWait() would block forever, otherwise + * returns 0. + * + * Side effects: + * Queues file events that are detected by PlatformEventsWait(). + * + *---------------------------------------------------------------------- + */ + +int +Tcl_WaitForEvent( + const Tcl_Time *timePtr) /* Maximum block time, or NULL. */ +{ + if (tclNotifierHooks.waitForEventProc) { + return tclNotifierHooks.waitForEventProc(timePtr); + } else { + FileHandler *filePtr; + int mask; + Tcl_Time vTime; + /* + * Impl. notes: timeout & timeoutPtr are used if, and only if threads + * are not enabled. They are the arguments for the regular epoll_wait() + * used when the core is not thread-enabled. + */ + + struct timeval timeout, *timeoutPtr; + int numFound, numEvent; + struct PlatformEventData *pedPtr; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + int numQueued; + ssize_t i; + char buf[1]; + + /* + * Set up the timeout structure. Note that if there are no events to + * check for, we return with a negative result rather than blocking + * forever. + */ + + if (timePtr != NULL) { + /* + * TIP #233 (Virtualized Time). Is virtual time in effect? And do + * we actually have something to scale? If yes to both then we + * call the handler to do this scaling. + */ + + if (timePtr->sec != 0 || timePtr->usec != 0) { + vTime = *timePtr; + tclScaleTimeProcPtr(&vTime, tclTimeClientData); + timePtr = &vTime; + } + timeout.tv_sec = timePtr->sec; + timeout.tv_usec = timePtr->usec; + timeoutPtr = &timeout; + } else { + timeoutPtr = NULL; + } + + /* + * Walk the list of FileHandlers associated with regular files + * (S_IFREG) belonging to tsdPtr, queue Tcl events for them, and + * update their mask of events of interest. + * kqueue(2), unlike epoll(7), does support regular files, but + * EVFILT_READ only `[r]eturns when the file pointer is not at + * the end of file' as opposed to unconditionally. While FreeBSD + * 11.0-RELEASE adds support for this mode (NOTE_FILE_POLL,) this + * is not used for reasons of compatibility. + * Therefore, the behaviour of {select,poll}(2) is simply simulated + * here: fds associated with regular files are added to this list by + * PlatformEventsControl() and processed here before calling (and + * possibly blocking) on PlatformEventsWait(). + */ + + numQueued = 0; + LIST_FOREACH(filePtr, &tsdPtr->firstReadyFileHandlerPtr, readyNode) { + mask = 0; + if (filePtr->mask & TCL_READABLE) { + mask |= TCL_READABLE; + } + if (filePtr->mask & TCL_WRITABLE) { + mask |= TCL_WRITABLE; + } + + /* + * Don't bother to queue an event if the mask was previously + * non-zero since an event must still be on the queue. + */ + + if (filePtr->readyMask == 0) { + FileHandlerEvent *fileEvPtr = + ckalloc(sizeof(FileHandlerEvent)); + + fileEvPtr->header.proc = FileHandlerEventProc; + fileEvPtr->fd = filePtr->fd; + Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + numQueued++; + } + filePtr->readyMask = mask; + } + + /* + * If any events were queued in the above loop, force PlatformEvents- + * Wait() to poll as there already are events that need to be processed + * at this point. + */ + + if (numQueued) { + timeout.tv_sec = 0; + timeout.tv_usec = 0; + timeoutPtr = &timeout; + } + + /* + * Wait or poll for new events, queue Tcl events for the FileHandlers + * corresponding to them, and update the FileHandlers' mask of events + * of interest registered by the last call to Tcl_CreateFileHandler(). + * + * Events for the trigger pipe are processed here in order to facilitate + * inter-thread IPC. If another thread intends to wake up this thread + * whilst it's blocking on PlatformEventsWait(), it write(2)s to the + * other end of the pipe (see Tcl_AlertNotifier(),) which in turn will + * cause PlatformEventsWait() to return immediately. + */ + + numFound = PlatformEventsWait(tsdPtr->readyEvents, tsdPtr->maxReadyEvents, timeoutPtr); + for (numEvent = 0; numEvent < numFound; numEvent++) { + pedPtr = (struct PlatformEventData *)tsdPtr->readyEvents[numEvent].udata; + filePtr = pedPtr->filePtr; + mask = PlatformEventsTranslate(&tsdPtr->readyEvents[numEvent]); + if (filePtr->fd == tsdPtr->triggerPipe[0]) { + do { + i = read(tsdPtr->triggerPipe[0], buf, 1); + if ((i == -1) && (errno != EAGAIN)) { + Tcl_Panic("Tcl_WaitForEvent: " + "read from %p->triggerPipe: %s", + (void *)tsdPtr, strerror(errno)); + } else { + break; + } + } while (1); + continue; + } + if (!mask) { + continue; + } + + /* + * Don't bother to queue an event if the mask was previously + * non-zero since an event must still be on the queue. + */ + + if (filePtr->readyMask == 0) { + FileHandlerEvent *fileEvPtr = + ckalloc(sizeof(FileHandlerEvent)); + + fileEvPtr->header.proc = FileHandlerEventProc; + fileEvPtr->fd = filePtr->fd; + Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + } + filePtr->readyMask |= mask; + } + return 0; + } +} + +#endif /* !HAVE_COREFOUNDATION */ + +#endif /* NOTIFIER_KQUEUE */ + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ diff --git a/unix/tclSelectNotfy.c b/unix/tclSelectNotfy.c new file mode 100644 index 0000000..cf21b85 --- /dev/null +++ b/unix/tclSelectNotfy.c @@ -0,0 +1,1117 @@ +/* + * tclSelectNotfy.c -- + * + * This file contains the implementation of the select()-based + * generic Unix notifier, which is the lowest-level part of the + * Tcl event loop. This file works together with generic/tclNotify.c. + * + * Copyright (c) 1995-1997 Sun Microsystems, Inc. + * + * See the file "license.terms" for information on usage and redistribution + * of this file, and for a DISCLAIMER OF ALL WARRANTIES. + */ + +#if !defined(NOTIFIER_EPOLL) && !defined(NOTIFIER_KQUEUE) + +#include "tclInt.h" +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is + * in tclMacOSXNotify.c */ +#include <signal.h> + +/* + * This structure is used to keep track of the notifier info for a registered + * file. + */ + +typedef struct FileHandler { + int fd; + int mask; /* Mask of desired events: TCL_READABLE, + * etc. */ + int readyMask; /* Mask of events that have been seen since + * the last time file handlers were invoked + * for this file. */ + Tcl_FileProc *proc; /* Function to call, in the style of + * Tcl_CreateFileHandler. */ + ClientData clientData; /* Argument to pass to proc. */ + struct FileHandler *nextPtr;/* Next in list of all files we care about. */ +} FileHandler; + +/* + * The following structure contains a set of select() masks to track readable, + * writable, and exception conditions. + */ + +typedef struct { + fd_set readable; + fd_set writable; + fd_set exception; +} SelectMasks; + +/* + * The following structure is what is added to the Tcl event queue when file + * handlers are ready to fire. + */ + +typedef struct { + Tcl_Event header; /* Information that is standard for all + * events. */ + int fd; /* File descriptor that is ready. Used to find + * the FileHandler structure for the file + * (can't point directly to the FileHandler + * structure because it could go away while + * the event is queued). */ +} FileHandlerEvent; + +/* + * The following static structure contains the state information for the + * select based implementation of the Tcl notifier. One of these structures is + * created for each thread that is using the notifier. + */ + +typedef struct ThreadSpecificData { + FileHandler *firstFileHandlerPtr; + /* Pointer to head of file handler list. */ + SelectMasks checkMasks; /* This structure is used to build up the + * masks to be used in the next call to + * select. Bits are set in response to calls + * to Tcl_CreateFileHandler. */ + SelectMasks readyMasks; /* This array reflects the readable/writable + * conditions that were found to exist by the + * last call to select. */ + int numFdBits; /* Number of valid bits in checkMasks (one + * more than highest fd for which + * Tcl_WatchFile has been called). */ +#ifdef TCL_THREADS + int onList; /* True if it is in this list */ + unsigned int pollState; /* pollState is used to implement a polling + * handshake between each thread and the + * notifier thread. Bits defined below. */ + struct ThreadSpecificData *nextPtr, *prevPtr; + /* All threads that are currently waiting on + * an event have their ThreadSpecificData + * structure on a doubly-linked listed formed + * from these pointers. You must hold the + * notifierMutex lock before accessing these + * fields. */ +#ifdef __CYGWIN__ + void *event; /* Any other thread alerts a notifier + * that an event is ready to be processed + * by sending this event. */ + void *hwnd; /* Messaging window. */ +#else /* !__CYGWIN__ */ + pthread_cond_t waitCV; /* Any other thread alerts a notifier that an + * event is ready to be processed by signaling + * this condition variable. */ +#endif /* __CYGWIN__ */ + int waitCVinitialized; /* Variable to flag initialization of the structure */ + int eventReady; /* True if an event is ready to be processed. + * Used as condition flag together with waitCV + * above. */ +#endif /* TCL_THREADS */ +} ThreadSpecificData; + +static Tcl_ThreadDataKey dataKey; + +#ifdef TCL_THREADS +/* + * The following static indicates the number of threads that have initialized + * notifiers. + * + * You must hold the notifierMutex lock before accessing this variable. + */ + +static int notifierCount = 0; + +/* + * The following variable points to the head of a doubly-linked list of + * ThreadSpecificData structures for all threads that are currently waiting on + * an event. + * + * You must hold the notifierMutex lock before accessing this list. + */ + +static ThreadSpecificData *waitingListPtr = NULL; + +/* + * The notifier thread spends all its time in select() waiting for a file + * descriptor associated with one of the threads on the waitingListPtr list to + * do something interesting. But if the contents of the waitingListPtr list + * ever changes, we need to wake up and restart the select() system call. You + * can wake up the notifier thread by writing a single byte to the file + * descriptor defined below. This file descriptor is the input-end of a pipe + * and the notifier thread is listening for data on the output-end of the same + * pipe. Hence writing to this file descriptor will cause the select() system + * call to return and wake up the notifier thread. + * + * You must hold the notifierMutex lock before writing to the pipe. + */ + +static int triggerPipe = -1; + +/* + * The notifierMutex locks access to all of the global notifier state. + */ + +static pthread_mutex_t notifierInitMutex = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t notifierMutex = PTHREAD_MUTEX_INITIALIZER; +/* + * The following static indicates if the notifier thread is running. + * + * You must hold the notifierInitMutex before accessing this variable. + */ + +static int notifierThreadRunning = 0; + +/* + * The notifier thread signals the notifierCV when it has finished + * initializing the triggerPipe and right before the notifier thread + * terminates. + */ + +static pthread_cond_t notifierCV = PTHREAD_COND_INITIALIZER; + +/* + * The pollState bits + * POLL_WANT is set by each thread before it waits on its condition + * variable. It is checked by the notifier before it does select. + * POLL_DONE is set by the notifier if it goes into select after seeing + * POLL_WANT. The idea is to ensure it tries a select with the + * same bits the initial thread had set. + */ + +#define POLL_WANT 0x1 +#define POLL_DONE 0x2 + +/* + * This is the thread ID of the notifier thread that does select. + */ + +static Tcl_ThreadId notifierThread; +#endif /* TCL_THREADS */ + +/* + * Static routines defined in this file. + */ + +#ifdef TCL_THREADS +static TCL_NORETURN void NotifierThreadProc(ClientData clientData); +#if defined(HAVE_PTHREAD_ATFORK) +static int atForkInit = 0; +static void AtForkChild(void); +#endif /* HAVE_PTHREAD_ATFORK */ +#endif /* TCL_THREADS */ +static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); + +/* + * Import of Windows API when building threaded with Cygwin. + */ + +#if defined(TCL_THREADS) && defined(__CYGWIN__) +typedef struct { + void *hwnd; + unsigned int *message; + int wParam; + int lParam; + int time; + int x; + int y; +} MSG; + +typedef struct { + unsigned int style; + void *lpfnWndProc; + int cbClsExtra; + int cbWndExtra; + void *hInstance; + void *hIcon; + void *hCursor; + void *hbrBackground; + void *lpszMenuName; + const void *lpszClassName; +} WNDCLASS; + +extern void __stdcall CloseHandle(void *); +extern void *__stdcall CreateEventW(void *, unsigned char, unsigned char, + void *); +extern void * __stdcall CreateWindowExW(void *, const void *, const void *, + DWORD, int, int, int, int, void *, void *, void *, void *); +extern DWORD __stdcall DefWindowProcW(void *, int, void *, void *); +extern unsigned char __stdcall DestroyWindow(void *); +extern int __stdcall DispatchMessageW(const MSG *); +extern unsigned char __stdcall GetMessageW(MSG *, void *, int, int); +extern void __stdcall MsgWaitForMultipleObjects(DWORD, void *, + unsigned char, DWORD, DWORD); +extern unsigned char __stdcall PeekMessageW(MSG *, void *, int, int, int); +extern unsigned char __stdcall PostMessageW(void *, unsigned int, void *, + void *); +extern void __stdcall PostQuitMessage(int); +extern void *__stdcall RegisterClassW(const WNDCLASS *); +extern unsigned char __stdcall ResetEvent(void *); +extern unsigned char __stdcall TranslateMessage(const MSG *); + +/* + * Threaded-cygwin specific constants and functions in this file: + */ + +static const WCHAR className[] = L"TclNotifier"; +static DWORD __stdcall NotifierProc(void *hwnd, unsigned int message, + void *wParam, void *lParam); +#endif /* TCL_THREADS && __CYGWIN__ */ + + +#include "tclUnixNotfy.c" + +/* + *---------------------------------------------------------------------- + * + * Tcl_InitNotifier -- + * + * Initializes the platform specific notifier state. + * + * Results: + * Returns a handle to the notifier state for this thread. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +ClientData +Tcl_InitNotifier(void) +{ + if (tclNotifierHooks.initNotifierProc) { + return tclNotifierHooks.initNotifierProc(); + } else { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + +#ifdef TCL_THREADS + tsdPtr->eventReady = 0; + + /* + * Initialize thread specific condition variable for this thread. + */ + if (tsdPtr->waitCVinitialized == 0) { +#ifdef __CYGWIN__ + WNDCLASS class; + + class.style = 0; + class.cbClsExtra = 0; + class.cbWndExtra = 0; + class.hInstance = TclWinGetTclInstance(); + class.hbrBackground = NULL; + class.lpszMenuName = NULL; + class.lpszClassName = className; + class.lpfnWndProc = NotifierProc; + class.hIcon = NULL; + class.hCursor = NULL; + + RegisterClassW(&class); + tsdPtr->hwnd = CreateWindowExW(NULL, class.lpszClassName, + class.lpszClassName, 0, 0, 0, 0, 0, NULL, NULL, + TclWinGetTclInstance(), NULL); + tsdPtr->event = CreateEventW(NULL, 1 /* manual */, + 0 /* !signaled */, NULL); +#else + pthread_cond_init(&tsdPtr->waitCV, NULL); +#endif /* __CYGWIN__ */ + tsdPtr->waitCVinitialized = 1; + } + + pthread_mutex_lock(¬ifierInitMutex); +#if defined(HAVE_PTHREAD_ATFORK) + /* + * Install pthread_atfork handlers to clean up the notifier in the + * child of a fork. + */ + + if (!atForkInit) { + int result = pthread_atfork(NULL, NULL, AtForkChild); + + if (result) { + Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed"); + } + atForkInit = 1; + } +#endif /* HAVE_PTHREAD_ATFORK */ + + notifierCount++; + + pthread_mutex_unlock(¬ifierInitMutex); + +#endif /* TCL_THREADS */ + return tsdPtr; + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_FinalizeNotifier -- + * + * This function is called to cleanup the notifier state before a thread + * is terminated. + * + * Results: + * None. + * + * Side effects: + * May terminate the background notifier thread if this is the last + * notifier instance. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_FinalizeNotifier( + ClientData clientData) /* Not used. */ +{ + if (tclNotifierHooks.finalizeNotifierProc) { + tclNotifierHooks.finalizeNotifierProc(clientData); + return; + } else { +#ifdef TCL_THREADS + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + pthread_mutex_lock(¬ifierInitMutex); + notifierCount--; + + /* + * If this is the last thread to use the notifier, close the notifier + * pipe and wait for the background thread to terminate. + */ + + if (notifierCount == 0) { + + if (triggerPipe != -1) { + if (write(triggerPipe, "q", 1) != 1) { + Tcl_Panic("Tcl_FinalizeNotifier: %s", + "unable to write q to triggerPipe"); + } + close(triggerPipe); + pthread_mutex_lock(¬ifierMutex); + while(triggerPipe != -1) { + pthread_cond_wait(¬ifierCV, ¬ifierMutex); + } + pthread_mutex_unlock(¬ifierMutex); + if (notifierThreadRunning) { + int result = pthread_join((pthread_t) notifierThread, NULL); + + if (result) { + Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier " + "thread"); + } + notifierThreadRunning = 0; + } + } + } + + /* + * Clean up any synchronization objects in the thread local storage. + */ + +#ifdef __CYGWIN__ + DestroyWindow(tsdPtr->hwnd); + CloseHandle(tsdPtr->event); +#else /* __CYGWIN__ */ + pthread_cond_destroy(&tsdPtr->waitCV); +#endif /* __CYGWIN__ */ + tsdPtr->waitCVinitialized = 0; + + pthread_mutex_unlock(¬ifierInitMutex); +#endif /* TCL_THREADS */ + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_CreateFileHandler -- + * + * This function registers a file handler with the select notifier. + * + * Results: + * None. + * + * Side effects: + * Creates a new file handler structure. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_CreateFileHandler( + int fd, /* Handle of stream to watch. */ + int mask, /* OR'ed combination of TCL_READABLE, + * TCL_WRITABLE, and TCL_EXCEPTION: indicates + * conditions under which proc should be + * called. */ + Tcl_FileProc *proc, /* Function to call for each selected + * event. */ + ClientData clientData) /* Arbitrary data to pass to proc. */ +{ + if (tclNotifierHooks.createFileHandlerProc) { + tclNotifierHooks.createFileHandlerProc(fd, mask, proc, clientData); + return; + } else { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + FileHandler *filePtr; + + for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; + filePtr = filePtr->nextPtr) { + if (filePtr->fd == fd) { + break; + } + } + if (filePtr == NULL) { + filePtr = ckalloc(sizeof(FileHandler)); + filePtr->fd = fd; + filePtr->readyMask = 0; + filePtr->nextPtr = tsdPtr->firstFileHandlerPtr; + tsdPtr->firstFileHandlerPtr = filePtr; + } + filePtr->proc = proc; + filePtr->clientData = clientData; + filePtr->mask = mask; + + /* + * Update the check masks for this file. + */ + + if (mask & TCL_READABLE) { + FD_SET(fd, &tsdPtr->checkMasks.readable); + } else { + FD_CLR(fd, &tsdPtr->checkMasks.readable); + } + if (mask & TCL_WRITABLE) { + FD_SET(fd, &tsdPtr->checkMasks.writable); + } else { + FD_CLR(fd, &tsdPtr->checkMasks.writable); + } + if (mask & TCL_EXCEPTION) { + FD_SET(fd, &tsdPtr->checkMasks.exception); + } else { + FD_CLR(fd, &tsdPtr->checkMasks.exception); + } + if (tsdPtr->numFdBits <= fd) { + tsdPtr->numFdBits = fd+1; + } + } +} + +/* + *---------------------------------------------------------------------- + * + * Tcl_DeleteFileHandler -- + * + * Cancel a previously-arranged callback arrangement for a file. + * + * Results: + * None. + * + * Side effects: + * If a callback was previously registered on file, remove it. + * + *---------------------------------------------------------------------- + */ + +void +Tcl_DeleteFileHandler( + int fd) /* Stream id for which to remove callback + * function. */ +{ + if (tclNotifierHooks.deleteFileHandlerProc) { + tclNotifierHooks.deleteFileHandlerProc(fd); + return; + } else { + FileHandler *filePtr, *prevPtr; + int i; + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + /* + * Find the entry for the given file (and return if there isn't one). + */ + + for (prevPtr = NULL, filePtr = tsdPtr->firstFileHandlerPtr; ; + prevPtr = filePtr, filePtr = filePtr->nextPtr) { + if (filePtr == NULL) { + return; + } + if (filePtr->fd == fd) { + break; + } + } + + /* + * Update the check masks for this file. + */ + + if (filePtr->mask & TCL_READABLE) { + FD_CLR(fd, &tsdPtr->checkMasks.readable); + } + if (filePtr->mask & TCL_WRITABLE) { + FD_CLR(fd, &tsdPtr->checkMasks.writable); + } + if (filePtr->mask & TCL_EXCEPTION) { + FD_CLR(fd, &tsdPtr->checkMasks.exception); + } + + /* + * Find current max fd. + */ + + if (fd+1 == tsdPtr->numFdBits) { + int numFdBits = 0; + + for (i = fd-1; i >= 0; i--) { + if (FD_ISSET(i, &tsdPtr->checkMasks.readable) + || FD_ISSET(i, &tsdPtr->checkMasks.writable) + || FD_ISSET(i, &tsdPtr->checkMasks.exception)) { + numFdBits = i+1; + break; + } + } + tsdPtr->numFdBits = numFdBits; + } + + /* + * Clean up information in the callback record. + */ + + if (prevPtr == NULL) { + tsdPtr->firstFileHandlerPtr = filePtr->nextPtr; + } else { + prevPtr->nextPtr = filePtr->nextPtr; + } + ckfree(filePtr); + } +} + +#if defined(TCL_THREADS) && defined(__CYGWIN__) + +static DWORD __stdcall +NotifierProc( + void *hwnd, + unsigned int message, + void *wParam, + void *lParam) +{ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + if (message != 1024) { + return DefWindowProcW(hwnd, message, wParam, lParam); + } + + /* + * Process all of the runnable events. + */ + + tsdPtr->eventReady = 1; + Tcl_ServiceAll(); + return 0; +} +#endif /* TCL_THREADS && __CYGWIN__ */ + +/* + *---------------------------------------------------------------------- + * + * Tcl_WaitForEvent -- + * + * This function is called by Tcl_DoOneEvent to wait for new events on + * the message queue. If the block time is 0, then Tcl_WaitForEvent just + * polls without blocking. + * + * Results: + * Returns -1 if the select would block forever, otherwise returns 0. + * + * Side effects: + * Queues file events that are detected by the select. + * + *---------------------------------------------------------------------- + */ + +int +Tcl_WaitForEvent( + const Tcl_Time *timePtr) /* Maximum block time, or NULL. */ +{ + if (tclNotifierHooks.waitForEventProc) { + return tclNotifierHooks.waitForEventProc(timePtr); + } else { + FileHandler *filePtr; + int mask; + Tcl_Time vTime; +#ifdef TCL_THREADS + int waitForFiles; +# ifdef __CYGWIN__ + MSG msg; +# endif /* __CYGWIN__ */ +#else + /* + * Impl. notes: timeout & timeoutPtr are used if, and only if threads + * are not enabled. They are the arguments for the regular select() + * used when the core is not thread-enabled. + */ + + struct timeval timeout, *timeoutPtr; + int numFound; +#endif /* TCL_THREADS */ + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + + /* + * Set up the timeout structure. Note that if there are no events to + * check for, we return with a negative result rather than blocking + * forever. + */ + + if (timePtr != NULL) { + /* + * TIP #233 (Virtualized Time). Is virtual time in effect? And do + * we actually have something to scale? If yes to both then we + * call the handler to do this scaling. + */ + + if (timePtr->sec != 0 || timePtr->usec != 0) { + vTime = *timePtr; + tclScaleTimeProcPtr(&vTime, tclTimeClientData); + timePtr = &vTime; + } +#ifndef TCL_THREADS + timeout.tv_sec = timePtr->sec; + timeout.tv_usec = timePtr->usec; + timeoutPtr = &timeout; + } else if (tsdPtr->numFdBits == 0) { + /* + * If there are no threads, no timeout, and no fds registered, + * then there are no events possible and we must avoid deadlock. + * Note that this is not entirely correct because there might be a + * signal that could interrupt the select call, but we don't + * handle that case if we aren't using threads. + */ + + return -1; + } else { + timeoutPtr = NULL; +#endif /* !TCL_THREADS */ + } + +#ifdef TCL_THREADS + /* + * Start notifier thread and place this thread on the list of + * interested threads, signal the notifier thread, and wait for a + * response or a timeout. + */ + StartNotifierThread("Tcl_WaitForEvent"); + + pthread_mutex_lock(¬ifierMutex); + + if (timePtr != NULL && timePtr->sec == 0 && (timePtr->usec == 0 +#if defined(__APPLE__) && defined(__LP64__) + /* + * On 64-bit Darwin, pthread_cond_timedwait() appears to have + * a bug that causes it to wait forever when passed an + * absolute time which has already been exceeded by the system + * time; as a workaround, when given a very brief timeout, + * just do a poll. [Bug 1457797] + */ + || timePtr->usec < 10 +#endif /* __APPLE__ && __LP64__ */ + )) { + /* + * Cannot emulate a polling select with a polling condition + * variable. Instead, pretend to wait for files and tell the + * notifier thread what we are doing. The notifier thread makes + * sure it goes through select with its select mask in the same + * state as ours currently is. We block until that happens. + */ + + waitForFiles = 1; + tsdPtr->pollState = POLL_WANT; + timePtr = NULL; + } else { + waitForFiles = (tsdPtr->numFdBits > 0); + tsdPtr->pollState = 0; + } + + if (waitForFiles) { + /* + * Add the ThreadSpecificData structure of this thread to the list + * of ThreadSpecificData structures of all threads that are + * waiting on file events. + */ + + tsdPtr->nextPtr = waitingListPtr; + if (waitingListPtr) { + waitingListPtr->prevPtr = tsdPtr; + } + tsdPtr->prevPtr = 0; + waitingListPtr = tsdPtr; + tsdPtr->onList = 1; + + if ((write(triggerPipe, "", 1) == -1) && (errno != EAGAIN)) { + Tcl_Panic("Tcl_WaitForEvent: %s", + "unable to write to triggerPipe"); + } + } + + FD_ZERO(&tsdPtr->readyMasks.readable); + FD_ZERO(&tsdPtr->readyMasks.writable); + FD_ZERO(&tsdPtr->readyMasks.exception); + + if (!tsdPtr->eventReady) { +#ifdef __CYGWIN__ + if (!PeekMessageW(&msg, NULL, 0, 0, 0)) { + DWORD timeout; + + if (timePtr) { + timeout = timePtr->sec * 1000 + timePtr->usec / 1000; + } else { + timeout = 0xFFFFFFFF; + } + pthread_mutex_unlock(¬ifierMutex); + MsgWaitForMultipleObjects(1, &tsdPtr->event, 0, timeout, 1279); + pthread_mutex_lock(¬ifierMutex); + } +#else + if (timePtr != NULL) { + Tcl_Time now; + struct timespec ptime; + + Tcl_GetTime(&now); + ptime.tv_sec = timePtr->sec + now.sec + (timePtr->usec + now.usec) / 1000000; + ptime.tv_nsec = 1000 * ((timePtr->usec + now.usec) % 1000000); + + pthread_cond_timedwait(&tsdPtr->waitCV, ¬ifierMutex, &ptime); + } else { + pthread_cond_wait(&tsdPtr->waitCV, ¬ifierMutex); + } +#endif /* __CYGWIN__ */ + } + tsdPtr->eventReady = 0; + +#ifdef __CYGWIN__ + while (PeekMessageW(&msg, NULL, 0, 0, 0)) { + /* + * Retrieve and dispatch the message. + */ + + DWORD result = GetMessageW(&msg, NULL, 0, 0); + + if (result == 0) { + PostQuitMessage(msg.wParam); + /* What to do here? */ + } else if (result != (DWORD) -1) { + TranslateMessage(&msg); + DispatchMessageW(&msg); + } + } + ResetEvent(tsdPtr->event); +#endif /* __CYGWIN__ */ + + if (waitForFiles && tsdPtr->onList) { + /* + * Remove the ThreadSpecificData structure of this thread from the + * waiting list. Alert the notifier thread to recompute its select + * masks - skipping this caused a hang when trying to close a pipe + * which the notifier thread was still doing a select on. + */ + + if (tsdPtr->prevPtr) { + tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; + } else { + waitingListPtr = tsdPtr->nextPtr; + } + if (tsdPtr->nextPtr) { + tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; + } + tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; + tsdPtr->onList = 0; + if ((write(triggerPipe, "", 1) == -1) && (errno != EAGAIN)) { + Tcl_Panic("Tcl_WaitForEvent: %s", + "unable to write to triggerPipe"); + } + } + +#else + tsdPtr->readyMasks = tsdPtr->checkMasks; + numFound = select(tsdPtr->numFdBits, &tsdPtr->readyMasks.readable, + &tsdPtr->readyMasks.writable, &tsdPtr->readyMasks.exception, + timeoutPtr); + + /* + * Some systems don't clear the masks after an error, so we have to do + * it here. + */ + + if (numFound == -1) { + FD_ZERO(&tsdPtr->readyMasks.readable); + FD_ZERO(&tsdPtr->readyMasks.writable); + FD_ZERO(&tsdPtr->readyMasks.exception); + } +#endif /* TCL_THREADS */ + + /* + * Queue all detected file events before returning. + */ + + for (filePtr = tsdPtr->firstFileHandlerPtr; (filePtr != NULL); + filePtr = filePtr->nextPtr) { + mask = 0; + if (FD_ISSET(filePtr->fd, &tsdPtr->readyMasks.readable)) { + mask |= TCL_READABLE; + } + if (FD_ISSET(filePtr->fd, &tsdPtr->readyMasks.writable)) { + mask |= TCL_WRITABLE; + } + if (FD_ISSET(filePtr->fd, &tsdPtr->readyMasks.exception)) { + mask |= TCL_EXCEPTION; + } + + if (!mask) { + continue; + } + + /* + * Don't bother to queue an event if the mask was previously + * non-zero since an event must still be on the queue. + */ + + if (filePtr->readyMask == 0) { + FileHandlerEvent *fileEvPtr = + ckalloc(sizeof(FileHandlerEvent)); + + fileEvPtr->header.proc = FileHandlerEventProc; + fileEvPtr->fd = filePtr->fd; + Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); + } + filePtr->readyMask = mask; + } +#ifdef TCL_THREADS + pthread_mutex_unlock(¬ifierMutex); +#endif /* TCL_THREADS */ + return 0; + } +} + +#ifdef TCL_THREADS + +/* + *---------------------------------------------------------------------- + * + * NotifierThreadProc -- + * + * This routine is the initial (and only) function executed by the + * special notifier thread. Its job is to wait for file descriptors to + * become readable or writable or to have an exception condition and then + * to notify other threads who are interested in this information by + * signalling a condition variable. Other threads can signal this + * notifier thread of a change in their interests by writing a single + * byte to a special pipe that the notifier thread is monitoring. + * + * Result: + * None. Once started, this routine never exits. It dies with the overall + * process. + * + * Side effects: + * The trigger pipe used to signal the notifier thread is created when + * the notifier thread first starts. + * + *---------------------------------------------------------------------- + */ + +static TCL_NORETURN void +NotifierThreadProc( + ClientData clientData) /* Not used. */ +{ + ThreadSpecificData *tsdPtr; + fd_set readableMask; + fd_set writableMask; + fd_set exceptionMask; + int i; + int fds[2], receivePipe; + long found; + struct timeval poll = {0., 0.}, *timePtr; + char buf[2]; + int numFdBits = 0; + + if (pipe(fds) != 0) { + Tcl_Panic("NotifierThreadProc: %s", "could not create trigger pipe"); + } + + receivePipe = fds[0]; + + if (TclUnixSetBlockingMode(receivePipe, TCL_MODE_NONBLOCKING) < 0) { + Tcl_Panic("NotifierThreadProc: %s", + "could not make receive pipe non blocking"); + } + if (TclUnixSetBlockingMode(fds[1], TCL_MODE_NONBLOCKING) < 0) { + Tcl_Panic("NotifierThreadProc: %s", + "could not make trigger pipe non blocking"); + } + if (fcntl(receivePipe, F_SETFD, FD_CLOEXEC) < 0) { + Tcl_Panic("NotifierThreadProc: %s", + "could not make receive pipe close-on-exec"); + } + if (fcntl(fds[1], F_SETFD, FD_CLOEXEC) < 0) { + Tcl_Panic("NotifierThreadProc: %s", + "could not make trigger pipe close-on-exec"); + } + + /* + * Install the write end of the pipe into the global variable. + */ + + pthread_mutex_lock(¬ifierMutex); + triggerPipe = fds[1]; + + /* + * Signal any threads that are waiting. + */ + + pthread_cond_broadcast(¬ifierCV); + pthread_mutex_unlock(¬ifierMutex); + + /* + * Look for file events and report them to interested threads. + */ + + while (1) { + FD_ZERO(&readableMask); + FD_ZERO(&writableMask); + FD_ZERO(&exceptionMask); + + /* + * Compute the logical OR of the masks from all the waiting + * notifiers. + */ + + pthread_mutex_lock(¬ifierMutex); + timePtr = NULL; + for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { + for (i = tsdPtr->numFdBits-1; i >= 0; --i) { + if (FD_ISSET(i, &tsdPtr->checkMasks.readable)) { + FD_SET(i, &readableMask); + } + if (FD_ISSET(i, &tsdPtr->checkMasks.writable)) { + FD_SET(i, &writableMask); + } + if (FD_ISSET(i, &tsdPtr->checkMasks.exception)) { + FD_SET(i, &exceptionMask); + } + } + if (tsdPtr->numFdBits > numFdBits) { + numFdBits = tsdPtr->numFdBits; + } + if (tsdPtr->pollState & POLL_WANT) { + /* + * Here we make sure we go through select() with the same mask + * bits that were present when the thread tried to poll. + */ + + tsdPtr->pollState |= POLL_DONE; + timePtr = &poll; + } + } + pthread_mutex_unlock(¬ifierMutex); + + /* + * Set up the mask to include the receive pipe. + */ + + if (receivePipe >= numFdBits) { + numFdBits = receivePipe + 1; + } + FD_SET(receivePipe, &readableMask); + + if (select(numFdBits, &readableMask, &writableMask, &exceptionMask, + timePtr) == -1) { + /* + * Try again immediately on an error. + */ + + continue; + } + + /* + * Alert any threads that are waiting on a ready file descriptor. + */ + + pthread_mutex_lock(¬ifierMutex); + for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { + found = 0; + + for (i = tsdPtr->numFdBits-1; i >= 0; --i) { + if (FD_ISSET(i, &tsdPtr->checkMasks.readable) + && FD_ISSET(i, &readableMask)) { + FD_SET(i, &tsdPtr->readyMasks.readable); + found = 1; + } + if (FD_ISSET(i, &tsdPtr->checkMasks.writable) + && FD_ISSET(i, &writableMask)) { + FD_SET(i, &tsdPtr->readyMasks.writable); + found = 1; + } + if (FD_ISSET(i, &tsdPtr->checkMasks.exception) + && FD_ISSET(i, &exceptionMask)) { + FD_SET(i, &tsdPtr->readyMasks.exception); + found = 1; + } + } + + if (found || (tsdPtr->pollState & POLL_DONE)) { + AlertSingleThread(tsdPtr); + } + } + pthread_mutex_unlock(¬ifierMutex); + + /* + * Consume the next byte from the notifier pipe if the pipe was + * readable. Note that there may be multiple bytes pending, but to + * avoid a race condition we only read one at a time. + */ + + do { + i = read(receivePipe, buf, 1); + if (i <= 0) { + break; + } else if ((i == 0) || ((i == 1) && (buf[0] == 'q'))) { + /* + * Someone closed the write end of the pipe or sent us a Quit + * message [Bug: 4139] and then closed the write end of the + * pipe so we need to shut down the notifier thread. + */ + + break; + } + } while (1); + if ((i == 0) || (buf[0] == 'q')) { + break; + } + } + + /* + * Clean up the read end of the pipe and signal any threads waiting on + * termination of the notifier thread. + */ + + close(receivePipe); + pthread_mutex_lock(¬ifierMutex); + triggerPipe = -1; + pthread_cond_broadcast(¬ifierCV); + pthread_mutex_unlock(¬ifierMutex); + + TclpThreadExit(0); +} + +#endif /* TCL_THREADS */ + +#endif /* !HAVE_COREFOUNDATION */ + +#endif /* !NOTIFIER_EPOLL && !NOTIFIER_KQUEUE */ + +/* + * Local Variables: + * mode: c + * c-basic-offset: 4 + * fill-column: 78 + * End: + */ diff --git a/unix/tclUnixChan.c b/unix/tclUnixChan.c index 3bf64d6..ced684a 100644 --- a/unix/tclUnixChan.c +++ b/unix/tclUnixChan.c @@ -1725,166 +1725,6 @@ Tcl_GetOpenFile( return TCL_ERROR; } -#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is - * in tclMacOSXNotify.c */ -/* - *---------------------------------------------------------------------- - * - * TclUnixWaitForFile -- - * - * This function waits synchronously for a file to become readable or - * writable, with an optional timeout. - * - * Results: - * The return value is an OR'ed combination of TCL_READABLE, - * TCL_WRITABLE, and TCL_EXCEPTION, indicating the conditions that are - * present on file at the time of the return. This function will not - * return until either "timeout" milliseconds have elapsed or at least - * one of the conditions given by mask has occurred for file (a return - * value of 0 means that a timeout occurred). No normal events will be - * serviced during the execution of this function. - * - * Side effects: - * Time passes. - * - *---------------------------------------------------------------------- - */ - -int -TclUnixWaitForFile( - int fd, /* Handle for file on which to wait. */ - int mask, /* What to wait for: OR'ed combination of - * TCL_READABLE, TCL_WRITABLE, and - * TCL_EXCEPTION. */ - int timeout) /* Maximum amount of time to wait for one of - * the conditions in mask to occur, in - * milliseconds. A value of 0 means don't wait - * at all, and a value of -1 means wait - * forever. */ -{ - Tcl_Time abortTime = {0, 0}, now; /* silence gcc 4 warning */ - struct timeval blockTime, *timeoutPtr; - int numFound, result = 0; - fd_set readableMask; - fd_set writableMask; - fd_set exceptionMask; - -#ifndef _DARWIN_C_SOURCE - /* - * Sanity check fd. - */ - - if (fd >= FD_SETSIZE) { - Tcl_Panic("TclUnixWaitForFile can't handle file id %d", fd); - /* must never get here, or select masks overrun will occur below */ - } -#endif - - /* - * If there is a non-zero finite timeout, compute the time when we give - * up. - */ - - if (timeout > 0) { - Tcl_GetTime(&now); - abortTime.sec = now.sec + timeout/1000; - abortTime.usec = now.usec + (timeout%1000)*1000; - if (abortTime.usec >= 1000000) { - abortTime.usec -= 1000000; - abortTime.sec += 1; - } - timeoutPtr = &blockTime; - } else if (timeout == 0) { - timeoutPtr = &blockTime; - blockTime.tv_sec = 0; - blockTime.tv_usec = 0; - } else { - timeoutPtr = NULL; - } - - /* - * Initialize the select masks. - */ - - FD_ZERO(&readableMask); - FD_ZERO(&writableMask); - FD_ZERO(&exceptionMask); - - /* - * Loop in a mini-event loop of our own, waiting for either the file to - * become ready or a timeout to occur. - */ - - while (1) { - if (timeout > 0) { - blockTime.tv_sec = abortTime.sec - now.sec; - blockTime.tv_usec = abortTime.usec - now.usec; - if (blockTime.tv_usec < 0) { - blockTime.tv_sec -= 1; - blockTime.tv_usec += 1000000; - } - if (blockTime.tv_sec < 0) { - blockTime.tv_sec = 0; - blockTime.tv_usec = 0; - } - } - - /* - * Setup the select masks for the fd. - */ - - if (mask & TCL_READABLE) { - FD_SET(fd, &readableMask); - } - if (mask & TCL_WRITABLE) { - FD_SET(fd, &writableMask); - } - if (mask & TCL_EXCEPTION) { - FD_SET(fd, &exceptionMask); - } - - /* - * Wait for the event or a timeout. - */ - - numFound = select(fd + 1, &readableMask, &writableMask, - &exceptionMask, timeoutPtr); - if (numFound == 1) { - if (FD_ISSET(fd, &readableMask)) { - SET_BITS(result, TCL_READABLE); - } - if (FD_ISSET(fd, &writableMask)) { - SET_BITS(result, TCL_WRITABLE); - } - if (FD_ISSET(fd, &exceptionMask)) { - SET_BITS(result, TCL_EXCEPTION); - } - result &= mask; - if (result) { - break; - } - } - if (timeout == 0) { - break; - } - if (timeout < 0) { - continue; - } - - /* - * The select returned early, so we need to recompute the timeout. - */ - - Tcl_GetTime(&now); - if ((abortTime.sec < now.sec) - || (abortTime.sec==now.sec && abortTime.usec<=now.usec)) { - break; - } - } - return result; -} -#endif /* HAVE_COREFOUNDATION */ - /* *---------------------------------------------------------------------- * diff --git a/unix/tclUnixNotfy.c b/unix/tclUnixNotfy.c index 6b7669d..5bc753a 100644 --- a/unix/tclUnixNotfy.c +++ b/unix/tclUnixNotfy.c @@ -1,262 +1,33 @@ /* * tclUnixNotfy.c -- * - * This file contains the implementation of the select()-based - * Unix-specific notifier, which is the lowest-level part of the Tcl - * event loop. This file works together with generic/tclNotify.c. + * This file contains subroutines shared by all notifier backend + * implementations on *nix platforms. * * Copyright (c) 1995-1997 Sun Microsystems, Inc. + * Copyright (c) 2016 Lucio Andrés Illanes Albornoz <l.illanes@gmx.de> * * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. */ -#include "tclInt.h" -#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is - * in tclMacOSXNotify.c */ -#include <signal.h> - -/* - * This structure is used to keep track of the notifier info for a registered - * file. - */ - -typedef struct FileHandler { - int fd; - int mask; /* Mask of desired events: TCL_READABLE, - * etc. */ - int readyMask; /* Mask of events that have been seen since - * the last time file handlers were invoked - * for this file. */ - Tcl_FileProc *proc; /* Function to call, in the style of - * Tcl_CreateFileHandler. */ - ClientData clientData; /* Argument to pass to proc. */ - struct FileHandler *nextPtr;/* Next in list of all files we care about. */ -} FileHandler; - -/* - * The following structure is what is added to the Tcl event queue when file - * handlers are ready to fire. - */ - -typedef struct { - Tcl_Event header; /* Information that is standard for all - * events. */ - int fd; /* File descriptor that is ready. Used to find - * the FileHandler structure for the file - * (can't point directly to the FileHandler - * structure because it could go away while - * the event is queued). */ -} FileHandlerEvent; - -/* - * The following structure contains a set of select() masks to track readable, - * writable, and exception conditions. - */ - -typedef struct { - fd_set readable; - fd_set writable; - fd_set exception; -} SelectMasks; - -/* - * The following static structure contains the state information for the - * select based implementation of the Tcl notifier. One of these structures is - * created for each thread that is using the notifier. - */ - -typedef struct ThreadSpecificData { - FileHandler *firstFileHandlerPtr; - /* Pointer to head of file handler list. */ - SelectMasks checkMasks; /* This structure is used to build up the - * masks to be used in the next call to - * select. Bits are set in response to calls - * to Tcl_CreateFileHandler. */ - SelectMasks readyMasks; /* This array reflects the readable/writable - * conditions that were found to exist by the - * last call to select. */ - int numFdBits; /* Number of valid bits in checkMasks (one - * more than highest fd for which - * Tcl_WatchFile has been called). */ -#ifdef TCL_THREADS - int onList; /* True if it is in this list */ - unsigned int pollState; /* pollState is used to implement a polling - * handshake between each thread and the - * notifier thread. Bits defined below. */ - struct ThreadSpecificData *nextPtr, *prevPtr; - /* All threads that are currently waiting on - * an event have their ThreadSpecificData - * structure on a doubly-linked listed formed - * from these pointers. You must hold the - * notifierMutex lock before accessing these - * fields. */ -#ifdef __CYGWIN__ - void *event; /* Any other thread alerts a notifier - * that an event is ready to be processed - * by sending this event. */ - void *hwnd; /* Messaging window. */ -#else /* !__CYGWIN__ */ - pthread_cond_t waitCV; /* Any other thread alerts a notifier that an - * event is ready to be processed by signaling - * this condition variable. */ -#endif /* __CYGWIN__ */ - int waitCVinitialized; /* Variable to flag initialization of the structure */ - int eventReady; /* True if an event is ready to be processed. - * Used as condition flag together with waitCV - * above. */ -#endif /* TCL_THREADS */ -} ThreadSpecificData; - -static Tcl_ThreadDataKey dataKey; - -#ifdef TCL_THREADS -/* - * The following static indicates the number of threads that have initialized - * notifiers. - * - * You must hold the notifierMutex lock before accessing this variable. - */ - -static int notifierCount = 0; - -/* - * The following variable points to the head of a doubly-linked list of - * ThreadSpecificData structures for all threads that are currently waiting on - * an event. - * - * You must hold the notifierMutex lock before accessing this list. - */ - -static ThreadSpecificData *waitingListPtr = NULL; - -/* - * The notifier thread spends all its time in select() waiting for a file - * descriptor associated with one of the threads on the waitingListPtr list to - * do something interesting. But if the contents of the waitingListPtr list - * ever changes, we need to wake up and restart the select() system call. You - * can wake up the notifier thread by writing a single byte to the file - * descriptor defined below. This file descriptor is the input-end of a pipe - * and the notifier thread is listening for data on the output-end of the same - * pipe. Hence writing to this file descriptor will cause the select() system - * call to return and wake up the notifier thread. - * - * You must hold the notifierMutex lock before writing to the pipe. - */ - -static int triggerPipe = -1; - -/* - * The notifierMutex locks access to all of the global notifier state. - */ - -static pthread_mutex_t notifierInitMutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t notifierMutex = PTHREAD_MUTEX_INITIALIZER; -/* - * The following static indicates if the notifier thread is running. - * - * You must hold the notifierInitMutex before accessing this variable. - */ - -static int notifierThreadRunning = 0; - -/* - * The notifier thread signals the notifierCV when it has finished - * initializing the triggerPipe and right before the notifier thread - * terminates. - */ - -static pthread_cond_t notifierCV = PTHREAD_COND_INITIALIZER; - -/* - * The pollState bits - * POLL_WANT is set by each thread before it waits on its condition - * variable. It is checked by the notifier before it does select. - * POLL_DONE is set by the notifier if it goes into select after seeing - * POLL_WANT. The idea is to ensure it tries a select with the - * same bits the initial thread had set. - */ - -#define POLL_WANT 0x1 -#define POLL_DONE 0x2 - -/* - * This is the thread ID of the notifier thread that does select. - */ - -static Tcl_ThreadId notifierThread; - -#endif /* TCL_THREADS */ +#include <poll.h> /* * Static routines defined in this file. */ +#ifdef NOTIFIER_SELECT #ifdef TCL_THREADS static TCL_NORETURN void NotifierThreadProc(ClientData clientData); #if defined(HAVE_PTHREAD_ATFORK) -static int atForkInit = 0; static void AtForkChild(void); #endif /* HAVE_PTHREAD_ATFORK */ #endif /* TCL_THREADS */ +#endif /* NOTIFIER_SELECT */ static int FileHandlerEventProc(Tcl_Event *evPtr, int flags); -/* - * Import of Windows API when building threaded with Cygwin. - */ - -#if defined(TCL_THREADS) && defined(__CYGWIN__) -typedef struct { - void *hwnd; - unsigned int *message; - int wParam; - int lParam; - int time; - int x; - int y; -} MSG; - -typedef struct { - unsigned int style; - void *lpfnWndProc; - int cbClsExtra; - int cbWndExtra; - void *hInstance; - void *hIcon; - void *hCursor; - void *hbrBackground; - void *lpszMenuName; - const void *lpszClassName; -} WNDCLASS; - -extern void __stdcall CloseHandle(void *); -extern void *__stdcall CreateEventW(void *, unsigned char, unsigned char, - void *); -extern void * __stdcall CreateWindowExW(void *, const void *, const void *, - DWORD, int, int, int, int, void *, void *, void *, void *); -extern DWORD __stdcall DefWindowProcW(void *, int, void *, void *); -extern unsigned char __stdcall DestroyWindow(void *); -extern int __stdcall DispatchMessageW(const MSG *); -extern unsigned char __stdcall GetMessageW(MSG *, void *, int, int); -extern void __stdcall MsgWaitForMultipleObjects(DWORD, void *, - unsigned char, DWORD, DWORD); -extern unsigned char __stdcall PeekMessageW(MSG *, void *, int, int, int); -extern unsigned char __stdcall PostMessageW(void *, unsigned int, void *, - void *); -extern void __stdcall PostQuitMessage(int); -extern void *__stdcall RegisterClassW(const WNDCLASS *); -extern unsigned char __stdcall ResetEvent(void *); -extern unsigned char __stdcall TranslateMessage(const MSG *); - -/* - * Threaded-cygwin specific constants and functions in this file: - */ - -static const WCHAR className[] = L"TclNotifier"; -static DWORD __stdcall NotifierProc(void *hwnd, unsigned int message, - void *wParam, void *lParam); -#endif /* TCL_THREADS && __CYGWIN__ */ - +#ifdef NOTIFIER_SELECT #if TCL_THREADS /* *---------------------------------------------------------------------- @@ -300,168 +71,7 @@ StartNotifierThread(const char *proc) } } #endif /* TCL_THREADS */ - -/* - *---------------------------------------------------------------------- - * - * Tcl_InitNotifier -- - * - * Initializes the platform specific notifier state. - * - * Results: - * Returns a handle to the notifier state for this thread. - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ - -ClientData -Tcl_InitNotifier(void) -{ - if (tclNotifierHooks.initNotifierProc) { - return tclNotifierHooks.initNotifierProc(); - } else { - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - -#ifdef TCL_THREADS - tsdPtr->eventReady = 0; - - /* - * Initialize thread specific condition variable for this thread. - */ - if (tsdPtr->waitCVinitialized == 0) { -#ifdef __CYGWIN__ - WNDCLASS class; - - class.style = 0; - class.cbClsExtra = 0; - class.cbWndExtra = 0; - class.hInstance = TclWinGetTclInstance(); - class.hbrBackground = NULL; - class.lpszMenuName = NULL; - class.lpszClassName = className; - class.lpfnWndProc = NotifierProc; - class.hIcon = NULL; - class.hCursor = NULL; - - RegisterClassW(&class); - tsdPtr->hwnd = CreateWindowExW(NULL, class.lpszClassName, - class.lpszClassName, 0, 0, 0, 0, 0, NULL, NULL, - TclWinGetTclInstance(), NULL); - tsdPtr->event = CreateEventW(NULL, 1 /* manual */, - 0 /* !signaled */, NULL); -#else - pthread_cond_init(&tsdPtr->waitCV, NULL); -#endif /* __CYGWIN__ */ - tsdPtr->waitCVinitialized = 1; - } - - pthread_mutex_lock(¬ifierInitMutex); -#if defined(HAVE_PTHREAD_ATFORK) - /* - * Install pthread_atfork handlers to clean up the notifier in the - * child of a fork. - */ - - if (!atForkInit) { - int result = pthread_atfork(NULL, NULL, AtForkChild); - - if (result) { - Tcl_Panic("Tcl_InitNotifier: pthread_atfork failed"); - } - atForkInit = 1; - } -#endif /* HAVE_PTHREAD_ATFORK */ - - notifierCount++; - - pthread_mutex_unlock(¬ifierInitMutex); - -#endif /* TCL_THREADS */ - return tsdPtr; - } -} - -/* - *---------------------------------------------------------------------- - * - * Tcl_FinalizeNotifier -- - * - * This function is called to cleanup the notifier state before a thread - * is terminated. - * - * Results: - * None. - * - * Side effects: - * May terminate the background notifier thread if this is the last - * notifier instance. - * - *---------------------------------------------------------------------- - */ - -void -Tcl_FinalizeNotifier( - ClientData clientData) /* Not used. */ -{ - if (tclNotifierHooks.finalizeNotifierProc) { - tclNotifierHooks.finalizeNotifierProc(clientData); - return; - } else { -#ifdef TCL_THREADS - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - - pthread_mutex_lock(¬ifierInitMutex); - notifierCount--; - - /* - * If this is the last thread to use the notifier, close the notifier - * pipe and wait for the background thread to terminate. - */ - - if (notifierCount == 0) { - - if (triggerPipe != -1) { - if (write(triggerPipe, "q", 1) != 1) { - Tcl_Panic("Tcl_FinalizeNotifier: %s", - "unable to write q to triggerPipe"); - } - close(triggerPipe); - pthread_mutex_lock(¬ifierMutex); - while(triggerPipe != -1) { - pthread_cond_wait(¬ifierCV, ¬ifierMutex); - } - pthread_mutex_unlock(¬ifierMutex); - if (notifierThreadRunning) { - int result = pthread_join((pthread_t) notifierThread, NULL); - - if (result) { - Tcl_Panic("Tcl_FinalizeNotifier: unable to join notifier " - "thread"); - } - notifierThreadRunning = 0; - } - } - } - - /* - * Clean up any synchronization objects in the thread local storage. - */ - -#ifdef __CYGWIN__ - DestroyWindow(tsdPtr->hwnd); - CloseHandle(tsdPtr->event); -#else /* __CYGWIN__ */ - pthread_cond_destroy(&tsdPtr->waitCV); -#endif /* __CYGWIN__ */ - tsdPtr->waitCVinitialized = 0; - - pthread_mutex_unlock(¬ifierInitMutex); -#endif /* TCL_THREADS */ - } -} +#endif /* NOTIFIER_SELECT */ /* *---------------------------------------------------------------------- @@ -477,7 +87,13 @@ Tcl_FinalizeNotifier( * None. * * Side effects: - * Signals the notifier condition variable for the specified notifier. + * select(2) notifier: + * signals the notifier condition variable for the specified + * notifier. + * epoll(7) notifier: + * write(2)s to the eventfd(2) of the specified thread. + * kqueue(2) notifier: + * write(2)s to the trigger pipe(2) of the specified thread. * *---------------------------------------------------------------------- */ @@ -490,6 +106,7 @@ Tcl_AlertNotifier( tclNotifierHooks.alertNotifierProc(clientData); return; } else { +#ifdef NOTIFIER_SELECT #ifdef TCL_THREADS ThreadSpecificData *tsdPtr = clientData; @@ -503,6 +120,21 @@ Tcl_AlertNotifier( # endif /* __CYGWIN__ */ pthread_mutex_unlock(¬ifierMutex); #endif /* TCL_THREADS */ +#else + ThreadSpecificData *tsdPtr = clientData; +#if defined(NOTIFIER_EPOLL) && defined(HAVE_EVENTFD) + uint64_t eventFdVal = 1; + if (write(tsdPtr->triggerEventFd, &eventFdVal, + sizeof(eventFdVal)) != sizeof(eventFdVal)) { + Tcl_Panic("Tcl_AlertNotifier: unable to write to %p->triggerEventFd", + (void *)tsdPtr); +#else + if (write(tsdPtr->triggerPipe[1], "", 1) != 1) { + Tcl_Panic("Tcl_AlertNotifier: unable to write to %p->triggerPipe", + (void *)tsdPtr); +#endif /* NOTIFIER_EPOLL && HAVE_EVENTFD */ + } +#endif /* NOTIFIER_SELECT */ } } @@ -565,173 +197,11 @@ Tcl_ServiceModeHook( tclNotifierHooks.serviceModeHookProc(mode); return; } else if (mode == TCL_SERVICE_ALL) { +#ifdef NOTIFIER_SELECT #if TCL_THREADS StartNotifierThread("Tcl_ServiceModeHook"); #endif - } -} - -/* - *---------------------------------------------------------------------- - * - * Tcl_CreateFileHandler -- - * - * This function registers a file handler with the select notifier. - * - * Results: - * None. - * - * Side effects: - * Creates a new file handler structure. - * - *---------------------------------------------------------------------- - */ - -void -Tcl_CreateFileHandler( - int fd, /* Handle of stream to watch. */ - int mask, /* OR'ed combination of TCL_READABLE, - * TCL_WRITABLE, and TCL_EXCEPTION: indicates - * conditions under which proc should be - * called. */ - Tcl_FileProc *proc, /* Function to call for each selected - * event. */ - ClientData clientData) /* Arbitrary data to pass to proc. */ -{ - if (tclNotifierHooks.createFileHandlerProc) { - tclNotifierHooks.createFileHandlerProc(fd, mask, proc, clientData); - return; - } else { - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - FileHandler *filePtr; - - for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL; - filePtr = filePtr->nextPtr) { - if (filePtr->fd == fd) { - break; - } - } - if (filePtr == NULL) { - filePtr = ckalloc(sizeof(FileHandler)); - filePtr->fd = fd; - filePtr->readyMask = 0; - filePtr->nextPtr = tsdPtr->firstFileHandlerPtr; - tsdPtr->firstFileHandlerPtr = filePtr; - } - filePtr->proc = proc; - filePtr->clientData = clientData; - filePtr->mask = mask; - - /* - * Update the check masks for this file. - */ - - if (mask & TCL_READABLE) { - FD_SET(fd, &tsdPtr->checkMasks.readable); - } else { - FD_CLR(fd, &tsdPtr->checkMasks.readable); - } - if (mask & TCL_WRITABLE) { - FD_SET(fd, &tsdPtr->checkMasks.writable); - } else { - FD_CLR(fd, &tsdPtr->checkMasks.writable); - } - if (mask & TCL_EXCEPTION) { - FD_SET(fd, &tsdPtr->checkMasks.exception); - } else { - FD_CLR(fd, &tsdPtr->checkMasks.exception); - } - if (tsdPtr->numFdBits <= fd) { - tsdPtr->numFdBits = fd+1; - } - } -} - -/* - *---------------------------------------------------------------------- - * - * Tcl_DeleteFileHandler -- - * - * Cancel a previously-arranged callback arrangement for a file. - * - * Results: - * None. - * - * Side effects: - * If a callback was previously registered on file, remove it. - * - *---------------------------------------------------------------------- - */ - -void -Tcl_DeleteFileHandler( - int fd) /* Stream id for which to remove callback - * function. */ -{ - if (tclNotifierHooks.deleteFileHandlerProc) { - tclNotifierHooks.deleteFileHandlerProc(fd); - return; - } else { - FileHandler *filePtr, *prevPtr; - int i; - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - - /* - * Find the entry for the given file (and return if there isn't one). - */ - - for (prevPtr = NULL, filePtr = tsdPtr->firstFileHandlerPtr; ; - prevPtr = filePtr, filePtr = filePtr->nextPtr) { - if (filePtr == NULL) { - return; - } - if (filePtr->fd == fd) { - break; - } - } - - /* - * Update the check masks for this file. - */ - - if (filePtr->mask & TCL_READABLE) { - FD_CLR(fd, &tsdPtr->checkMasks.readable); - } - if (filePtr->mask & TCL_WRITABLE) { - FD_CLR(fd, &tsdPtr->checkMasks.writable); - } - if (filePtr->mask & TCL_EXCEPTION) { - FD_CLR(fd, &tsdPtr->checkMasks.exception); - } - - /* - * Find current max fd. - */ - - if (fd+1 == tsdPtr->numFdBits) { - int numFdBits = 0; - - for (i = fd-1; i >= 0; i--) { - if (FD_ISSET(i, &tsdPtr->checkMasks.readable) - || FD_ISSET(i, &tsdPtr->checkMasks.writable) - || FD_ISSET(i, &tsdPtr->checkMasks.exception)) { - numFdBits = i+1; - break; - } - } - tsdPtr->numFdBits = numFdBits; - } - - /* - * Clean up information in the callback record. - */ - - if (prevPtr == NULL) { - tsdPtr->firstFileHandlerPtr = filePtr->nextPtr; - } else { - prevPtr->nextPtr = filePtr->nextPtr; - } - ckfree(filePtr); +#endif /* NOTIFIER_SELECT */ } } @@ -809,538 +279,56 @@ FileHandlerEventProc( return 1; } -#if defined(TCL_THREADS) && defined(__CYGWIN__) - -static DWORD __stdcall -NotifierProc( - void *hwnd, - unsigned int message, - void *wParam, - void *lParam) -{ - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - - if (message != 1024) { - return DefWindowProcW(hwnd, message, wParam, lParam); - } - - /* - * Process all of the runnable events. - */ - - tsdPtr->eventReady = 1; - Tcl_ServiceAll(); - return 0; -} -#endif /* TCL_THREADS && __CYGWIN__ */ - -/* - *---------------------------------------------------------------------- - * - * Tcl_WaitForEvent -- - * - * This function is called by Tcl_DoOneEvent to wait for new events on - * the message queue. If the block time is 0, then Tcl_WaitForEvent just - * polls without blocking. - * - * Results: - * Returns -1 if the select would block forever, otherwise returns 0. - * - * Side effects: - * Queues file events that are detected by the select. - * - *---------------------------------------------------------------------- - */ - -int -Tcl_WaitForEvent( - const Tcl_Time *timePtr) /* Maximum block time, or NULL. */ -{ - if (tclNotifierHooks.waitForEventProc) { - return tclNotifierHooks.waitForEventProc(timePtr); - } else { - FileHandler *filePtr; - int mask; - Tcl_Time vTime; -#ifdef TCL_THREADS - int waitForFiles; -# ifdef __CYGWIN__ - MSG msg; -# endif /* __CYGWIN__ */ -#else - /* - * Impl. notes: timeout & timeoutPtr are used if, and only if threads - * are not enabled. They are the arguments for the regular select() - * used when the core is not thread-enabled. - */ - - struct timeval timeout, *timeoutPtr; - int numFound; -#endif /* TCL_THREADS */ - ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); - - /* - * Set up the timeout structure. Note that if there are no events to - * check for, we return with a negative result rather than blocking - * forever. - */ - - if (timePtr != NULL) { - /* - * TIP #233 (Virtualized Time). Is virtual time in effect? And do - * we actually have something to scale? If yes to both then we - * call the handler to do this scaling. - */ - - if (timePtr->sec != 0 || timePtr->usec != 0) { - vTime = *timePtr; - tclScaleTimeProcPtr(&vTime, tclTimeClientData); - timePtr = &vTime; - } -#ifndef TCL_THREADS - timeout.tv_sec = timePtr->sec; - timeout.tv_usec = timePtr->usec; - timeoutPtr = &timeout; - } else if (tsdPtr->numFdBits == 0) { - /* - * If there are no threads, no timeout, and no fds registered, - * then there are no events possible and we must avoid deadlock. - * Note that this is not entirely correct because there might be a - * signal that could interrupt the select call, but we don't - * handle that case if we aren't using threads. - */ - - return -1; - } else { - timeoutPtr = NULL; -#endif /* !TCL_THREADS */ - } - -#ifdef TCL_THREADS - /* - * Start notifier thread and place this thread on the list of - * interested threads, signal the notifier thread, and wait for a - * response or a timeout. - */ - StartNotifierThread("Tcl_WaitForEvent"); - - pthread_mutex_lock(¬ifierMutex); - - if (timePtr != NULL && timePtr->sec == 0 && (timePtr->usec == 0 -#if defined(__APPLE__) && defined(__LP64__) - /* - * On 64-bit Darwin, pthread_cond_timedwait() appears to have - * a bug that causes it to wait forever when passed an - * absolute time which has already been exceeded by the system - * time; as a workaround, when given a very brief timeout, - * just do a poll. [Bug 1457797] - */ - || timePtr->usec < 10 -#endif /* __APPLE__ && __LP64__ */ - )) { - /* - * Cannot emulate a polling select with a polling condition - * variable. Instead, pretend to wait for files and tell the - * notifier thread what we are doing. The notifier thread makes - * sure it goes through select with its select mask in the same - * state as ours currently is. We block until that happens. - */ - - waitForFiles = 1; - tsdPtr->pollState = POLL_WANT; - timePtr = NULL; - } else { - waitForFiles = (tsdPtr->numFdBits > 0); - tsdPtr->pollState = 0; - } - - if (waitForFiles) { - /* - * Add the ThreadSpecificData structure of this thread to the list - * of ThreadSpecificData structures of all threads that are - * waiting on file events. - */ - - tsdPtr->nextPtr = waitingListPtr; - if (waitingListPtr) { - waitingListPtr->prevPtr = tsdPtr; - } - tsdPtr->prevPtr = 0; - waitingListPtr = tsdPtr; - tsdPtr->onList = 1; - - if ((write(triggerPipe, "", 1) == -1) && (errno != EAGAIN)) { - Tcl_Panic("Tcl_WaitForEvent: %s", - "unable to write to triggerPipe"); - } - } - - FD_ZERO(&tsdPtr->readyMasks.readable); - FD_ZERO(&tsdPtr->readyMasks.writable); - FD_ZERO(&tsdPtr->readyMasks.exception); - - if (!tsdPtr->eventReady) { -#ifdef __CYGWIN__ - if (!PeekMessageW(&msg, NULL, 0, 0, 0)) { - DWORD timeout; - - if (timePtr) { - timeout = timePtr->sec * 1000 + timePtr->usec / 1000; - } else { - timeout = 0xFFFFFFFF; - } - pthread_mutex_unlock(¬ifierMutex); - MsgWaitForMultipleObjects(1, &tsdPtr->event, 0, timeout, 1279); - pthread_mutex_lock(¬ifierMutex); - } -#else - if (timePtr != NULL) { - Tcl_Time now; - struct timespec ptime; - - Tcl_GetTime(&now); - ptime.tv_sec = timePtr->sec + now.sec + (timePtr->usec + now.usec) / 1000000; - ptime.tv_nsec = 1000 * ((timePtr->usec + now.usec) % 1000000); - - pthread_cond_timedwait(&tsdPtr->waitCV, ¬ifierMutex, &ptime); - } else { - pthread_cond_wait(&tsdPtr->waitCV, ¬ifierMutex); - } -#endif /* __CYGWIN__ */ - } - tsdPtr->eventReady = 0; - -#ifdef __CYGWIN__ - while (PeekMessageW(&msg, NULL, 0, 0, 0)) { - /* - * Retrieve and dispatch the message. - */ - - DWORD result = GetMessageW(&msg, NULL, 0, 0); - - if (result == 0) { - PostQuitMessage(msg.wParam); - /* What to do here? */ - } else if (result != (DWORD) -1) { - TranslateMessage(&msg); - DispatchMessageW(&msg); - } - } - ResetEvent(tsdPtr->event); -#endif /* __CYGWIN__ */ - - if (waitForFiles && tsdPtr->onList) { - /* - * Remove the ThreadSpecificData structure of this thread from the - * waiting list. Alert the notifier thread to recompute its select - * masks - skipping this caused a hang when trying to close a pipe - * which the notifier thread was still doing a select on. - */ - - if (tsdPtr->prevPtr) { - tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; - } else { - waitingListPtr = tsdPtr->nextPtr; - } - if (tsdPtr->nextPtr) { - tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; - } - tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; - tsdPtr->onList = 0; - if ((write(triggerPipe, "", 1) == -1) && (errno != EAGAIN)) { - Tcl_Panic("Tcl_WaitForEvent: %s", - "unable to write to triggerPipe"); - } - } - -#else - tsdPtr->readyMasks = tsdPtr->checkMasks; - numFound = select(tsdPtr->numFdBits, &tsdPtr->readyMasks.readable, - &tsdPtr->readyMasks.writable, &tsdPtr->readyMasks.exception, - timeoutPtr); - - /* - * Some systems don't clear the masks after an error, so we have to do - * it here. - */ - - if (numFound == -1) { - FD_ZERO(&tsdPtr->readyMasks.readable); - FD_ZERO(&tsdPtr->readyMasks.writable); - FD_ZERO(&tsdPtr->readyMasks.exception); - } -#endif /* TCL_THREADS */ - - /* - * Queue all detected file events before returning. - */ - - for (filePtr = tsdPtr->firstFileHandlerPtr; (filePtr != NULL); - filePtr = filePtr->nextPtr) { - mask = 0; - if (FD_ISSET(filePtr->fd, &tsdPtr->readyMasks.readable)) { - mask |= TCL_READABLE; - } - if (FD_ISSET(filePtr->fd, &tsdPtr->readyMasks.writable)) { - mask |= TCL_WRITABLE; - } - if (FD_ISSET(filePtr->fd, &tsdPtr->readyMasks.exception)) { - mask |= TCL_EXCEPTION; - } - - if (!mask) { - continue; - } - - /* - * Don't bother to queue an event if the mask was previously - * non-zero since an event must still be on the queue. - */ - - if (filePtr->readyMask == 0) { - FileHandlerEvent *fileEvPtr = - ckalloc(sizeof(FileHandlerEvent)); - - fileEvPtr->header.proc = FileHandlerEventProc; - fileEvPtr->fd = filePtr->fd; - Tcl_QueueEvent((Tcl_Event *) fileEvPtr, TCL_QUEUE_TAIL); - } - filePtr->readyMask = mask; - } -#ifdef TCL_THREADS - pthread_mutex_unlock(¬ifierMutex); -#endif /* TCL_THREADS */ - return 0; - } -} - +#ifdef NOTIFIER_SELECT #ifdef TCL_THREADS /* *---------------------------------------------------------------------- * - * NotifierThreadProc -- + * AlertSingleThread -- * - * This routine is the initial (and only) function executed by the - * special notifier thread. Its job is to wait for file descriptors to - * become readable or writable or to have an exception condition and then - * to notify other threads who are interested in this information by - * signalling a condition variable. Other threads can signal this - * notifier thread of a change in their interests by writing a single - * byte to a special pipe that the notifier thread is monitoring. + * Notify a single thread that is waiting on a file descriptor to become + * readable or writable or to have an exception condition. + * notifierMutex must be held. * * Result: - * None. Once started, this routine never exits. It dies with the overall - * process. + * None. * * Side effects: - * The trigger pipe used to signal the notifier thread is created when - * the notifier thread first starts. + * The condition variable associated with the thread is broadcasted. * *---------------------------------------------------------------------- */ -static TCL_NORETURN void -NotifierThreadProc( - ClientData clientData) /* Not used. */ +static void +AlertSingleThread( + ThreadSpecificData *tsdPtr) { - ThreadSpecificData *tsdPtr; - fd_set readableMask; - fd_set writableMask; - fd_set exceptionMask; - int fds[2]; - int i, numFdBits = 0, receivePipe; - long found; - struct timeval poll = {0., 0.}, *timePtr; - char buf[2]; - - if (pipe(fds) != 0) { - Tcl_Panic("NotifierThreadProc: %s", "could not create trigger pipe"); - } - - receivePipe = fds[0]; - - if (TclUnixSetBlockingMode(receivePipe, TCL_MODE_NONBLOCKING) < 0) { - Tcl_Panic("NotifierThreadProc: %s", - "could not make receive pipe non blocking"); - } - if (TclUnixSetBlockingMode(fds[1], TCL_MODE_NONBLOCKING) < 0) { - Tcl_Panic("NotifierThreadProc: %s", - "could not make trigger pipe non blocking"); - } - if (fcntl(receivePipe, F_SETFD, FD_CLOEXEC) < 0) { - Tcl_Panic("NotifierThreadProc: %s", - "could not make receive pipe close-on-exec"); - } - if (fcntl(fds[1], F_SETFD, FD_CLOEXEC) < 0) { - Tcl_Panic("NotifierThreadProc: %s", - "could not make trigger pipe close-on-exec"); + tsdPtr->eventReady = 1; + if (tsdPtr->onList) { + /* + * Remove the ThreadSpecificData structure of this thread + * from the waiting list. This prevents us from + * continuously spinning on epoll_wait until the other + * threads runs and services the file event. + */ + + if (tsdPtr->prevPtr) { + tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; + } else { + waitingListPtr = tsdPtr->nextPtr; + } + if (tsdPtr->nextPtr) { + tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; + } + tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; + tsdPtr->onList = 0; + tsdPtr->pollState = 0; } - - /* - * Install the write end of the pipe into the global variable. - */ - - pthread_mutex_lock(¬ifierMutex); - triggerPipe = fds[1]; - - /* - * Signal any threads that are waiting. - */ - - pthread_cond_broadcast(¬ifierCV); - pthread_mutex_unlock(¬ifierMutex); - - /* - * Look for file events and report them to interested threads. - */ - - while (1) { - FD_ZERO(&readableMask); - FD_ZERO(&writableMask); - FD_ZERO(&exceptionMask); - - /* - * Compute the logical OR of the select masks from all the waiting - * notifiers. - */ - - pthread_mutex_lock(¬ifierMutex); - timePtr = NULL; - for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { - for (i = tsdPtr->numFdBits-1; i >= 0; --i) { - if (FD_ISSET(i, &tsdPtr->checkMasks.readable)) { - FD_SET(i, &readableMask); - } - if (FD_ISSET(i, &tsdPtr->checkMasks.writable)) { - FD_SET(i, &writableMask); - } - if (FD_ISSET(i, &tsdPtr->checkMasks.exception)) { - FD_SET(i, &exceptionMask); - } - } - if (tsdPtr->numFdBits > numFdBits) { - numFdBits = tsdPtr->numFdBits; - } - if (tsdPtr->pollState & POLL_WANT) { - /* - * Here we make sure we go through select() with the same mask - * bits that were present when the thread tried to poll. - */ - - tsdPtr->pollState |= POLL_DONE; - timePtr = &poll; - } - } - pthread_mutex_unlock(¬ifierMutex); - - /* - * Set up the select mask to include the receive pipe. - */ - - if (receivePipe >= numFdBits) { - numFdBits = receivePipe + 1; - } - FD_SET(receivePipe, &readableMask); - - if (select(numFdBits, &readableMask, &writableMask, &exceptionMask, - timePtr) == -1) { - /* - * Try again immediately on an error. - */ - - continue; - } - - /* - * Alert any threads that are waiting on a ready file descriptor. - */ - - pthread_mutex_lock(¬ifierMutex); - for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) { - found = 0; - - for (i = tsdPtr->numFdBits-1; i >= 0; --i) { - if (FD_ISSET(i, &tsdPtr->checkMasks.readable) - && FD_ISSET(i, &readableMask)) { - FD_SET(i, &tsdPtr->readyMasks.readable); - found = 1; - } - if (FD_ISSET(i, &tsdPtr->checkMasks.writable) - && FD_ISSET(i, &writableMask)) { - FD_SET(i, &tsdPtr->readyMasks.writable); - found = 1; - } - if (FD_ISSET(i, &tsdPtr->checkMasks.exception) - && FD_ISSET(i, &exceptionMask)) { - FD_SET(i, &tsdPtr->readyMasks.exception); - found = 1; - } - } - - if (found || (tsdPtr->pollState & POLL_DONE)) { - tsdPtr->eventReady = 1; - if (tsdPtr->onList) { - /* - * Remove the ThreadSpecificData structure of this thread - * from the waiting list. This prevents us from - * continuously spining on select until the other threads - * runs and services the file event. - */ - - if (tsdPtr->prevPtr) { - tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr; - } else { - waitingListPtr = tsdPtr->nextPtr; - } - if (tsdPtr->nextPtr) { - tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr; - } - tsdPtr->nextPtr = tsdPtr->prevPtr = NULL; - tsdPtr->onList = 0; - tsdPtr->pollState = 0; - } #ifdef __CYGWIN__ - PostMessageW(tsdPtr->hwnd, 1024, 0, 0); + PostMessageW(tsdPtr->hwnd, 1024, 0, 0); #else /* __CYGWIN__ */ - pthread_cond_broadcast(&tsdPtr->waitCV); + pthread_cond_broadcast(&tsdPtr->waitCV); #endif /* __CYGWIN__ */ - } - } - pthread_mutex_unlock(¬ifierMutex); - - /* - * Consume the next byte from the notifier pipe if the pipe was - * readable. Note that there may be multiple bytes pending, but to - * avoid a race condition we only read one at a time. - */ - - if (FD_ISSET(receivePipe, &readableMask)) { - i = read(receivePipe, buf, 1); - - if ((i == 0) || ((i == 1) && (buf[0] == 'q'))) { - /* - * Someone closed the write end of the pipe or sent us a Quit - * message [Bug: 4139] and then closed the write end of the - * pipe so we need to shut down the notifier thread. - */ - - break; - } - } - } - - /* - * Clean up the read end of the pipe and signal any threads waiting on - * termination of the notifier thread. - */ - - close(receivePipe); - pthread_mutex_lock(¬ifierMutex); - triggerPipe = -1; - pthread_cond_broadcast(¬ifierCV); - pthread_mutex_unlock(¬ifierMutex); - - TclpThreadExit(0); } #if defined(HAVE_PTHREAD_ATFORK) @@ -1407,6 +395,7 @@ AtForkChild(void) pthread_cond_destroy(&tsdPtr->waitCV); pthread_cond_init(&tsdPtr->waitCV, NULL); #endif + /* * In case, we had multiple threads running before the fork, * make sure, we don't try to reach out to their thread local data. @@ -1426,8 +415,157 @@ AtForkChild(void) #endif /* TCL_THREADS */ +#endif /* NOTIFIER_SELECT */ +#ifndef HAVE_COREFOUNDATION /* Darwin/Mac OS X CoreFoundation notifier is + * in tclMacOSXNotify.c */ +/* + *---------------------------------------------------------------------- + * + * TclUnixWaitForFile -- + * + * This function waits synchronously for a file to become readable or + * writable, with an optional timeout. + * + * Results: + * The return value is an OR'ed combination of TCL_READABLE, + * TCL_WRITABLE, and TCL_EXCEPTION, indicating the conditions that are + * present on file at the time of the return. This function will not + * return until either "timeout" milliseconds have elapsed or at least + * one of the conditions given by mask has occurred for file (a return + * value of 0 means that a timeout occurred). No normal events will be + * serviced during the execution of this function. + * + * Side effects: + * Time passes. + * + *---------------------------------------------------------------------- + */ + +int +TclUnixWaitForFile( + int fd, /* Handle for file on which to wait. */ + int mask, /* What to wait for: OR'ed combination of + * TCL_READABLE, TCL_WRITABLE, and + * TCL_EXCEPTION. */ + int timeout) /* Maximum amount of time to wait for one of + * the conditions in mask to occur, in + * milliseconds. A value of 0 means don't wait + * at all, and a value of -1 means wait + * forever. */ +{ + Tcl_Time abortTime = {0, 0}, now; /* silence gcc 4 warning */ + struct timeval blockTime, *timeoutPtr; + struct pollfd pollFds[1]; + int numFound, result = 0, pollTimeout; + + /* + * If there is a non-zero finite timeout, compute the time when we give + * up. + */ + + if (timeout > 0) { + Tcl_GetTime(&now); + abortTime.sec = now.sec + timeout/1000; + abortTime.usec = now.usec + (timeout%1000)*1000; + if (abortTime.usec >= 1000000) { + abortTime.usec -= 1000000; + abortTime.sec += 1; + } + timeoutPtr = &blockTime; + } else if (timeout == 0) { + timeoutPtr = &blockTime; + blockTime.tv_sec = 0; + blockTime.tv_usec = 0; + } else { + timeoutPtr = NULL; + } + + /* + * Setup the pollfd structure for the fd. + */ + + pollFds[0].fd = fd; + pollFds[0].events = pollFds[0].revents = 0; + if (mask & TCL_READABLE) { + pollFds[0].events |= (POLLIN | POLLHUP); + } + if (mask & TCL_WRITABLE) { + pollFds[0].events |= POLLOUT; + } + if (mask & TCL_EXCEPTION) { + pollFds[0].events |= POLLERR; + } + + /* + * Loop in a mini-event loop of our own, waiting for either the file to + * become ready or a timeout to occur. + */ + + while (1) { + if (timeout > 0) { + blockTime.tv_sec = abortTime.sec - now.sec; + blockTime.tv_usec = abortTime.usec - now.usec; + if (blockTime.tv_usec < 0) { + blockTime.tv_sec -= 1; + blockTime.tv_usec += 1000000; + } + if (blockTime.tv_sec < 0) { + blockTime.tv_sec = 0; + blockTime.tv_usec = 0; + } + } + + /* + * Wait for the event or a timeout. + */ + + if (!timeoutPtr) { + pollTimeout = -1; + } else if (!timeoutPtr->tv_sec && !timeoutPtr->tv_usec) { + pollTimeout = 0; + } else { + pollTimeout = (int)timeoutPtr->tv_sec * 1000; + if (timeoutPtr->tv_usec) { + pollTimeout += ((int)timeoutPtr->tv_usec / 1000); + } + } + numFound = poll(pollFds, 1, pollTimeout); + if (numFound == 1) { + result = 0; + if (pollFds[0].events & (POLLIN | POLLHUP)) { + result |= TCL_READABLE; + } + if (pollFds[0].events & POLLOUT) { + result |= TCL_WRITABLE; + } + if (pollFds[0].events & POLLERR) { + result |= TCL_EXCEPTION; + } + if (result) { + break; + } + } + if (timeout == 0) { + break; + } + if (timeout < 0) { + continue; + } + + /* + * The select returned early, so we need to recompute the timeout. + */ + + Tcl_GetTime(&now); + if ((abortTime.sec < now.sec) + || (abortTime.sec==now.sec && abortTime.usec<=now.usec)) { + break; + } + } + return result; +} #endif /* !HAVE_COREFOUNDATION */ - + /* * Local Variables: * mode: c diff --git a/unix/tclUnixTest.c b/unix/tclUnixTest.c index 86e0925..ceb64d9 100644 --- a/unix/tclUnixTest.c +++ b/unix/tclUnixTest.c @@ -68,10 +68,10 @@ static Tcl_CmdProc TestfilehandlerCmd; static Tcl_CmdProc TestfilewaitCmd; static Tcl_CmdProc TestfindexecutableCmd; static Tcl_ObjCmdProc TestforkObjCmd; -static Tcl_CmdProc TestgetdefencdirCmd; +static Tcl_ObjCmdProc TestgetencpathObjCmd; static Tcl_CmdProc TestgetopenfileCmd; static Tcl_CmdProc TestgotsigCmd; -static Tcl_CmdProc TestsetdefencdirCmd; +static Tcl_ObjCmdProc TestsetencpathObjCmd; static Tcl_FileProc TestFileHandlerProc; static void AlarmHandler(int signum); @@ -108,9 +108,9 @@ TclplatformtestInit( NULL, NULL); Tcl_CreateCommand(interp, "testgetopenfile", TestgetopenfileCmd, NULL, NULL); - Tcl_CreateCommand(interp, "testgetdefenc", TestgetdefencdirCmd, + Tcl_CreateObjCommand(interp, "testgetencpath", TestgetencpathObjCmd, NULL, NULL); - Tcl_CreateCommand(interp, "testsetdefenc", TestsetdefencdirCmd, + Tcl_CreateObjCommand(interp, "testsetencpath", TestsetencpathObjCmd, NULL, NULL); Tcl_CreateCommand(interp, "testalarm", TestalarmCmd, NULL, NULL); @@ -499,9 +499,9 @@ TestgetopenfileCmd( /* *---------------------------------------------------------------------- * - * TestsetdefencdirCmd -- + * TestsetencpathCmd -- * - * This function implements the "testsetdefenc" command. It is used to + * This function implements the "testsetencpath" command. It is used to * test Tcl_SetDefaultEncodingDir(). * * Results: @@ -514,19 +514,18 @@ TestgetopenfileCmd( */ static int -TestsetdefencdirCmd( +TestsetencpathObjCmd( ClientData clientData, /* Not used. */ Tcl_Interp *interp, /* Current interpreter. */ - int argc, /* Number of arguments. */ - const char **argv) /* Argument strings. */ + int objc, /* Number of arguments. */ + Tcl_Obj *const *objv) /* Argument strings. */ { - if (argc != 2) { - Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], - " defaultDir\"", NULL); + if (objc != 2) { + Tcl_WrongNumArgs(interp, 1, objv, "defaultDir"); return TCL_ERROR; } - Tcl_SetDefaultEncodingDir(argv[1]); + Tcl_SetEncodingSearchPath(objv[1]); return TCL_OK; } @@ -552,7 +551,7 @@ TestforkObjCmd( ClientData clientData, /* Not used. */ Tcl_Interp *interp, /* Current interpreter. */ int objc, /* Number of arguments. */ - Tcl_Obj *const *objv) /* Argument strings. */ + Tcl_Obj *const *objv) /* Argument strings. */ { pid_t pid; @@ -578,10 +577,10 @@ TestforkObjCmd( /* *---------------------------------------------------------------------- * - * TestgetdefencdirCmd -- + * TestgetencpathObjCmd -- * - * This function implements the "testgetdefenc" command. It is used to - * test Tcl_GetDefaultEncodingDir(). + * This function implements the "testgetencpath" command. It is used to + * test Tcl_GetEncodingSearchPath(). * * Results: * A standard Tcl result. @@ -593,18 +592,18 @@ TestforkObjCmd( */ static int -TestgetdefencdirCmd( +TestgetencpathObjCmd( ClientData clientData, /* Not used. */ Tcl_Interp *interp, /* Current interpreter. */ - int argc, /* Number of arguments. */ - const char **argv) /* Argument strings. */ + int objc, /* Number of arguments. */ + Tcl_Obj *const *objv) /* Argument strings. */ { - if (argc != 1) { - Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], NULL); + if (objc != 1) { + Tcl_WrongNumArgs(interp, 1, objv, ""); return TCL_ERROR; } - Tcl_AppendResult(interp, Tcl_GetDefaultEncodingDir(), NULL); + Tcl_SetObjResult(interp, Tcl_GetEncodingSearchPath()); return TCL_OK; } diff --git a/win/tclWinPipe.c b/win/tclWinPipe.c index 5246d53..fe0ed2d 100644 --- a/win/tclWinPipe.c +++ b/win/tclWinPipe.c @@ -1482,7 +1482,7 @@ BuildCommandLine( Tcl_UniChar ch; for (start = arg; *start != '\0'; start += count) { - count = Tcl_UtfToUniChar(start, &ch); + count = TclUtfToUniChar(start, &ch); if (Tcl_UniCharIsSpace(ch)) { /* INTL: ISO space. */ quote = 1; break; |