root/main/trunk/greenstone2/common-src/indexers/mgpp/lib/unitool.cpp @ 25194

Revision 25194, 113.2 KB (checked in by mdewsnip, 8 years ago)

Fixed problem in Greenstone's unitool::create_unicat_data() causing crashes on 64-bit machines (when Greenstone is compiled in 64-bit mode). The old malloc() parameter calculation assumed that an unsigned long was always 4 bytes, but this isn't true on 64-bit machines. Although the space required for this structure is actually the same on 64-bit machines (2 bits are needed for each of 65536 values), the rest of the code assumes the machine is 32-bit and there are 16 values per array entry. Rather than trying to change the rest of the code to work on both 32-bit and 64-bit machines, I've just changed this calculation so the block allocated is twice the size on 64-bit machines. This is a bit wasteful because half the space isn't used, but it's only 16KB so I don't think it's worth worrying about.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
Line 
1#include "unitool.h"
2#include "sysfuncs.h"
3
4
5/* unicode_cat_data is a combination of the letter, digit, and
6 * space information in a form that is quick to look up.
7 * The information about each byte is stored in two bits
8 *
9 * 00 - neither letter, digit or space
10 * 01 - letter
11 * 10 - space
12 * 11 - digit
13 *
14 * You can test for letter | space by looking at the right
15 * column
16 */
17static mg_u_long *unicode_cat_data=NULL;
18
19
20typedef struct unidecompose {
21  unsigned short ch;
22  unsigned short str[3];
23} unidecompose;
24
25typedef struct unirelate {
26  unsigned short ch1;
27  unsigned short ch2;
28} unirelate;
29
30typedef struct unirange {
31  unsigned short first;
32  unsigned short last;
33} unirange;
34
35
36
37/* This decomposition data only includes canonical decompositional
38 * characters.  Any unused bytes are set to 0x0. */
39
40#define NUM_DECOMPOSE_INFO 1269
41static const unidecompose decompose_info[NUM_DECOMPOSE_INFO] = {
42  {0xC0,{0x41,0x300,0x0}}, {0xC1,{0x41,0x301,0x0}}, {0xC2,{0x41,0x302,0x0}},
43  {0xC3,{0x41,0x303,0x0}}, {0xC4,{0x41,0x308,0x0}}, {0xC5,{0x41,0x30A,0x0}},
44  {0xC7,{0x43,0x327,0x0}}, {0xC8,{0x45,0x300,0x0}}, {0xC9,{0x45,0x301,0x0}},
45  {0xCA,{0x45,0x302,0x0}}, {0xCB,{0x45,0x308,0x0}}, {0xCC,{0x49,0x300,0x0}},
46  {0xCD,{0x49,0x301,0x0}}, {0xCE,{0x49,0x302,0x0}}, {0xCF,{0x49,0x308,0x0}},
47  {0xD1,{0x4E,0x303,0x0}}, {0xD2,{0x4F,0x300,0x0}}, {0xD3,{0x4F,0x301,0x0}},
48  {0xD4,{0x4F,0x302,0x0}}, {0xD5,{0x4F,0x303,0x0}}, {0xD6,{0x4F,0x308,0x0}},
49  {0xD9,{0x55,0x300,0x0}}, {0xDA,{0x55,0x301,0x0}}, {0xDB,{0x55,0x302,0x0}},
50  {0xDC,{0x55,0x308,0x0}}, {0xDD,{0x59,0x301,0x0}}, {0xE0,{0x61,0x300,0x0}},
51  {0xE1,{0x61,0x301,0x0}}, {0xE2,{0x61,0x302,0x0}}, {0xE3,{0x61,0x303,0x0}},
52  {0xE4,{0x61,0x308,0x0}}, {0xE5,{0x61,0x30A,0x0}}, {0xE7,{0x63,0x327,0x0}},
53  {0xE8,{0x65,0x300,0x0}}, {0xE9,{0x65,0x301,0x0}}, {0xEA,{0x65,0x302,0x0}},
54  {0xEB,{0x65,0x308,0x0}}, {0xEC,{0x69,0x300,0x0}}, {0xED,{0x69,0x301,0x0}},
55  {0xEE,{0x69,0x302,0x0}}, {0xEF,{0x69,0x308,0x0}}, {0xF1,{0x6E,0x303,0x0}},
56  {0xF2,{0x6F,0x300,0x0}}, {0xF3,{0x6F,0x301,0x0}}, {0xF4,{0x6F,0x302,0x0}},
57  {0xF5,{0x6F,0x303,0x0}}, {0xF6,{0x6F,0x308,0x0}}, {0xF9,{0x75,0x300,0x0}},
58  {0xFA,{0x75,0x301,0x0}}, {0xFB,{0x75,0x302,0x0}}, {0xFC,{0x75,0x308,0x0}},
59  {0xFD,{0x79,0x301,0x0}}, {0xFF,{0x79,0x308,0x0}}, {0x100,{0x41,0x304,0x0}},
60  {0x101,{0x61,0x304,0x0}}, {0x102,{0x41,0x306,0x0}}, {0x103,{0x61,0x306,0x0}},
61  {0x104,{0x41,0x328,0x0}}, {0x105,{0x61,0x328,0x0}}, {0x106,{0x43,0x301,0x0}},
62  {0x107,{0x63,0x301,0x0}}, {0x108,{0x43,0x302,0x0}}, {0x109,{0x63,0x302,0x0}},
63  {0x10A,{0x43,0x307,0x0}}, {0x10B,{0x63,0x307,0x0}}, {0x10C,{0x43,0x30C,0x0}},
64  {0x10D,{0x63,0x30C,0x0}}, {0x10E,{0x44,0x30C,0x0}}, {0x10F,{0x64,0x30C,0x0}},
65  {0x112,{0x45,0x304,0x0}}, {0x113,{0x65,0x304,0x0}}, {0x114,{0x45,0x306,0x0}},
66  {0x115,{0x65,0x306,0x0}}, {0x116,{0x45,0x307,0x0}}, {0x117,{0x65,0x307,0x0}},
67  {0x118,{0x45,0x328,0x0}}, {0x119,{0x65,0x328,0x0}}, {0x11A,{0x45,0x30C,0x0}},
68  {0x11B,{0x65,0x30C,0x0}}, {0x11C,{0x47,0x302,0x0}}, {0x11D,{0x67,0x302,0x0}},
69  {0x11E,{0x47,0x306,0x0}}, {0x11F,{0x67,0x306,0x0}}, {0x120,{0x47,0x307,0x0}},
70  {0x121,{0x67,0x307,0x0}}, {0x122,{0x47,0x327,0x0}}, {0x123,{0x67,0x327,0x0}},
71  {0x124,{0x48,0x302,0x0}}, {0x125,{0x68,0x302,0x0}}, {0x128,{0x49,0x303,0x0}},
72  {0x129,{0x69,0x303,0x0}}, {0x12A,{0x49,0x304,0x0}}, {0x12B,{0x69,0x304,0x0}},
73  {0x12C,{0x49,0x306,0x0}}, {0x12D,{0x69,0x306,0x0}}, {0x12E,{0x49,0x328,0x0}},
74  {0x12F,{0x69,0x328,0x0}}, {0x130,{0x49,0x307,0x0}}, {0x134,{0x4A,0x302,0x0}},
75  {0x135,{0x6A,0x302,0x0}}, {0x136,{0x4B,0x327,0x0}}, {0x137,{0x6B,0x327,0x0}},
76  {0x139,{0x4C,0x301,0x0}}, {0x13A,{0x6C,0x301,0x0}}, {0x13B,{0x4C,0x327,0x0}},
77  {0x13C,{0x6C,0x327,0x0}}, {0x13D,{0x4C,0x30C,0x0}}, {0x13E,{0x6C,0x30C,0x0}},
78  {0x143,{0x4E,0x301,0x0}}, {0x144,{0x6E,0x301,0x0}}, {0x145,{0x4E,0x327,0x0}},
79  {0x146,{0x6E,0x327,0x0}}, {0x147,{0x4E,0x30C,0x0}}, {0x148,{0x6E,0x30C,0x0}},
80  {0x14C,{0x4F,0x304,0x0}}, {0x14D,{0x6F,0x304,0x0}}, {0x14E,{0x4F,0x306,0x0}},
81  {0x14F,{0x6F,0x306,0x0}}, {0x150,{0x4F,0x30B,0x0}}, {0x151,{0x6F,0x30B,0x0}},
82  {0x154,{0x52,0x301,0x0}}, {0x155,{0x72,0x301,0x0}}, {0x156,{0x52,0x327,0x0}},
83  {0x157,{0x72,0x327,0x0}}, {0x158,{0x52,0x30C,0x0}}, {0x159,{0x72,0x30C,0x0}},
84  {0x15A,{0x53,0x301,0x0}}, {0x15B,{0x73,0x301,0x0}}, {0x15C,{0x53,0x302,0x0}},
85  {0x15D,{0x73,0x302,0x0}}, {0x15E,{0x53,0x327,0x0}}, {0x15F,{0x73,0x327,0x0}},
86  {0x160,{0x53,0x30C,0x0}}, {0x161,{0x73,0x30C,0x0}}, {0x162,{0x54,0x327,0x0}},
87  {0x163,{0x74,0x327,0x0}}, {0x164,{0x54,0x30C,0x0}}, {0x165,{0x74,0x30C,0x0}},
88  {0x168,{0x55,0x303,0x0}}, {0x169,{0x75,0x303,0x0}}, {0x16A,{0x55,0x304,0x0}},
89  {0x16B,{0x75,0x304,0x0}}, {0x16C,{0x55,0x306,0x0}}, {0x16D,{0x75,0x306,0x0}},
90  {0x16E,{0x55,0x30A,0x0}}, {0x16F,{0x75,0x30A,0x0}}, {0x170,{0x55,0x30B,0x0}},
91  {0x171,{0x75,0x30B,0x0}}, {0x172,{0x55,0x328,0x0}}, {0x173,{0x75,0x328,0x0}},
92  {0x174,{0x57,0x302,0x0}}, {0x175,{0x77,0x302,0x0}}, {0x176,{0x59,0x302,0x0}},
93  {0x177,{0x79,0x302,0x0}}, {0x178,{0x59,0x308,0x0}}, {0x179,{0x5A,0x301,0x0}},
94  {0x17A,{0x7A,0x301,0x0}}, {0x17B,{0x5A,0x307,0x0}}, {0x17C,{0x7A,0x307,0x0}},
95  {0x17D,{0x5A,0x30C,0x0}}, {0x17E,{0x7A,0x30C,0x0}}, {0x1A0,{0x4F,0x31B,0x0}},
96  {0x1A1,{0x6F,0x31B,0x0}}, {0x1AF,{0x55,0x31B,0x0}}, {0x1B0,{0x75,0x31B,0x0}},
97  {0x1CD,{0x41,0x30C,0x0}}, {0x1CE,{0x61,0x30C,0x0}}, {0x1CF,{0x49,0x30C,0x0}},
98  {0x1D0,{0x69,0x30C,0x0}}, {0x1D1,{0x4F,0x30C,0x0}}, {0x1D2,{0x6F,0x30C,0x0}},
99  {0x1D3,{0x55,0x30C,0x0}}, {0x1D4,{0x75,0x30C,0x0}}, {0x1D5,{0xDC,0x304,0x0}},
100  {0x1D6,{0xFC,0x304,0x0}}, {0x1D7,{0xDC,0x301,0x0}}, {0x1D8,{0xFC,0x301,0x0}},
101  {0x1D9,{0xDC,0x30C,0x0}}, {0x1DA,{0xFC,0x30C,0x0}}, {0x1DB,{0xDC,0x300,0x0}},
102  {0x1DC,{0xFC,0x300,0x0}}, {0x1DE,{0xC4,0x304,0x0}}, {0x1DF,{0xE4,0x304,0x0}},
103  {0x1E0,{0x41,0x307,0x304}}, {0x1E1,{0x61,0x307,0x304}}, {0x1E2,{0xC6,0x304,0x0}},
104  {0x1E3,{0xE6,0x304,0x0}}, {0x1E6,{0x47,0x30C,0x0}}, {0x1E7,{0x67,0x30C,0x0}},
105  {0x1E8,{0x4B,0x30C,0x0}}, {0x1E9,{0x6B,0x30C,0x0}}, {0x1EA,{0x4F,0x328,0x0}},
106  {0x1EB,{0x6F,0x328,0x0}}, {0x1EC,{0x1EA,0x304,0x0}}, {0x1ED,{0x1EB,0x304,0x0}},
107  {0x1EE,{0x1B7,0x30C,0x0}}, {0x1EF,{0x292,0x30C,0x0}}, {0x1F0,{0x6A,0x30C,0x0}},
108  {0x1F4,{0x47,0x301,0x0}}, {0x1F5,{0x67,0x301,0x0}}, {0x1FA,{0xC5,0x301,0x0}},
109  {0x1FB,{0xE5,0x301,0x0}}, {0x1FC,{0xC6,0x301,0x0}}, {0x1FD,{0xE6,0x301,0x0}},
110  {0x1FE,{0xD8,0x301,0x0}}, {0x1FF,{0xF8,0x301,0x0}}, {0x200,{0x41,0x30F,0x0}},
111  {0x201,{0x61,0x30F,0x0}}, {0x202,{0x41,0x311,0x0}}, {0x203,{0x61,0x311,0x0}},
112  {0x204,{0x45,0x30F,0x0}}, {0x205,{0x65,0x30F,0x0}}, {0x206,{0x45,0x311,0x0}},
113  {0x207,{0x65,0x311,0x0}}, {0x208,{0x49,0x30F,0x0}}, {0x209,{0x69,0x30F,0x0}},
114  {0x20A,{0x49,0x311,0x0}}, {0x20B,{0x69,0x311,0x0}}, {0x20C,{0x4F,0x30F,0x0}},
115  {0x20D,{0x6F,0x30F,0x0}}, {0x20E,{0x4F,0x311,0x0}}, {0x20F,{0x6F,0x311,0x0}},
116  {0x210,{0x52,0x30F,0x0}}, {0x211,{0x72,0x30F,0x0}}, {0x212,{0x52,0x311,0x0}},
117  {0x213,{0x72,0x311,0x0}}, {0x214,{0x55,0x30F,0x0}}, {0x215,{0x75,0x30F,0x0}},
118  {0x216,{0x55,0x311,0x0}}, {0x217,{0x75,0x311,0x0}}, {0x310,{0x306,0x307,0x0}},
119  {0x340,{0x300,0x0,0x0}}, {0x341,{0x301,0x0,0x0}}, {0x343,{0x313,0x0,0x0}},
120  {0x344,{0x308,0x30D,0x0}}, {0x374,{0x2B9,0x0,0x0}}, {0x37E,{0x3B,0x0,0x0}},
121  {0x385,{0xA8,0x30D,0x0}}, {0x386,{0x391,0x30D,0x0}}, {0x387,{0xB7,0x0,0x0}},
122  {0x388,{0x395,0x30D,0x0}}, {0x389,{0x397,0x30D,0x0}}, {0x38A,{0x399,0x30D,0x0}},
123  {0x38C,{0x39F,0x30D,0x0}}, {0x38E,{0x3A5,0x30D,0x0}}, {0x38F,{0x3A9,0x30D,0x0}},
124  {0x390,{0x3B9,0x344,0x0}}, {0x3AA,{0x399,0x308,0x0}}, {0x3AB,{0x3A5,0x308,0x0}},
125  {0x3AC,{0x3B1,0x30D,0x0}}, {0x3AD,{0x3B5,0x30D,0x0}}, {0x3AE,{0x3B7,0x30D,0x0}},
126  {0x3AF,{0x3B9,0x30D,0x0}}, {0x3B0,{0x3C5,0x344,0x0}}, {0x3CA,{0x3B9,0x308,0x0}},
127  {0x3CB,{0x3C5,0x308,0x0}}, {0x3CC,{0x3BF,0x30D,0x0}}, {0x3CD,{0x3C5,0x30D,0x0}},
128  {0x3CE,{0x3C9,0x30D,0x0}}, {0x3D3,{0x3D2,0x30D,0x0}}, {0x3D4,{0x3D2,0x308,0x0}},
129  {0x401,{0x415,0x308,0x0}}, {0x403,{0x413,0x301,0x0}}, {0x407,{0x406,0x308,0x0}},
130  {0x40C,{0x41A,0x301,0x0}}, {0x40E,{0x423,0x306,0x0}}, {0x419,{0x418,0x306,0x0}},
131  {0x439,{0x438,0x306,0x0}}, {0x451,{0x435,0x308,0x0}}, {0x453,{0x433,0x301,0x0}},
132  {0x457,{0x456,0x308,0x0}}, {0x45C,{0x43A,0x301,0x0}}, {0x45E,{0x443,0x306,0x0}},
133  {0x476,{0x474,0x30F,0x0}}, {0x477,{0x475,0x30F,0x0}}, {0x4C1,{0x416,0x306,0x0}},
134  {0x4C2,{0x436,0x306,0x0}}, {0x4D0,{0x410,0x306,0x0}}, {0x4D1,{0x430,0x306,0x0}},
135  {0x4D2,{0x410,0x308,0x0}}, {0x4D3,{0x430,0x308,0x0}}, {0x4D6,{0x415,0x306,0x0}},
136  {0x4D7,{0x435,0x306,0x0}}, {0x4DA,{0x4D8,0x308,0x0}}, {0x4DB,{0x4D9,0x308,0x0}},
137  {0x4DC,{0x416,0x308,0x0}}, {0x4DD,{0x436,0x308,0x0}}, {0x4DE,{0x417,0x308,0x0}},
138  {0x4DF,{0x437,0x308,0x0}}, {0x4E2,{0x418,0x304,0x0}}, {0x4E3,{0x438,0x304,0x0}},
139  {0x4E4,{0x418,0x308,0x0}}, {0x4E5,{0x438,0x308,0x0}}, {0x4E6,{0x41E,0x308,0x0}},
140  {0x4E7,{0x43E,0x308,0x0}}, {0x4EA,{0x4E8,0x308,0x0}}, {0x4EB,{0x4E9,0x308,0x0}},
141  {0x4EE,{0x423,0x304,0x0}}, {0x4EF,{0x443,0x304,0x0}}, {0x4F0,{0x423,0x308,0x0}},
142  {0x4F1,{0x443,0x308,0x0}}, {0x4F2,{0x423,0x30B,0x0}}, {0x4F3,{0x443,0x30B,0x0}},
143  {0x4F4,{0x427,0x308,0x0}}, {0x4F5,{0x447,0x308,0x0}}, {0x4F8,{0x42B,0x308,0x0}},
144  {0x4F9,{0x44B,0x308,0x0}}, {0x929,{0x928,0x93C,0x0}}, {0x931,{0x930,0x93C,0x0}},
145  {0x934,{0x933,0x93C,0x0}}, {0x958,{0x915,0x93C,0x0}}, {0x959,{0x916,0x93C,0x0}},
146  {0x95A,{0x917,0x93C,0x0}}, {0x95B,{0x91C,0x93C,0x0}}, {0x95C,{0x921,0x93C,0x0}},
147  {0x95D,{0x922,0x93C,0x0}}, {0x95E,{0x92B,0x93C,0x0}}, {0x95F,{0x92F,0x93C,0x0}},
148  {0x9B0,{0x9AC,0x9BC,0x0}}, {0x9CB,{0x9C7,0x9BE,0x0}}, {0x9CC,{0x9C7,0x9D7,0x0}},
149  {0x9DC,{0x9A1,0x9BC,0x0}}, {0x9DD,{0x9A2,0x9BC,0x0}}, {0x9DF,{0x9AF,0x9BC,0x0}},
150  {0xA59,{0xA16,0xA3C,0x0}}, {0xA5A,{0xA17,0xA3C,0x0}}, {0xA5B,{0xA1C,0xA3C,0x0}},
151  {0xA5C,{0xA21,0xA3C,0x0}}, {0xA5E,{0xA2B,0xA3C,0x0}}, {0xB48,{0xB47,0xB56,0x0}},
152  {0xB4B,{0xB47,0xB3E,0x0}}, {0xB4C,{0xB47,0xB57,0x0}}, {0xB5C,{0xB21,0xB3C,0x0}},
153  {0xB5D,{0xB22,0xB3C,0x0}}, {0xB5F,{0xB2F,0xB3C,0x0}}, {0xB94,{0xB92,0xBD7,0x0}},
154  {0xBCA,{0xBC6,0xBBE,0x0}}, {0xBCB,{0xBC7,0xBBE,0x0}}, {0xBCC,{0xBC6,0xBD7,0x0}},
155  {0xC48,{0xC46,0xC56,0x0}}, {0xCC0,{0xCBF,0xCD5,0x0}}, {0xCC7,{0xCC6,0xCD5,0x0}},
156  {0xCC8,{0xCC6,0xCD6,0x0}}, {0xCCA,{0xCC6,0xCC2,0x0}}, {0xCCB,{0xCC6,0xCC2,0xCD5}},
157  {0xD4A,{0xD46,0xD3E,0x0}}, {0xD4B,{0xD47,0xD3E,0x0}}, {0xD4C,{0xD46,0xD57,0x0}},
158  {0xE33,{0xE4D,0xE32,0x0}}, {0xEB3,{0xECD,0xEB2,0x0}}, {0xF43,{0xF42,0xFB7,0x0}},
159  {0xF4D,{0xF4C,0xFB7,0x0}}, {0xF52,{0xF51,0xFB7,0x0}}, {0xF57,{0xF56,0xFB7,0x0}},
160  {0xF5C,{0xF5B,0xFB7,0x0}}, {0xF69,{0xF40,0xFB5,0x0}}, {0xF73,{0xF72,0xF71,0x0}},
161  {0xF75,{0xF71,0xF74,0x0}}, {0xF76,{0xFB2,0xF80,0x0}}, {0xF77,{0xF76,0xF71,0x0}},
162  {0xF78,{0xFB3,0xF80,0x0}}, {0xF79,{0xF78,0xF71,0x0}}, {0xF81,{0xF80,0xF71,0x0}},
163  {0xF93,{0xF92,0xFB7,0x0}}, {0xF9D,{0xF9C,0xFB7,0x0}}, {0xFA2,{0xFA1,0xFB7,0x0}},
164  {0xFA7,{0xFA6,0xFB7,0x0}}, {0xFAC,{0xFAB,0xFB7,0x0}}, {0xFB9,{0xF90,0xFB5,0x0}},
165  {0x1E00,{0x41,0x325,0x0}}, {0x1E01,{0x61,0x325,0x0}}, {0x1E02,{0x42,0x307,0x0}},
166  {0x1E03,{0x62,0x307,0x0}}, {0x1E04,{0x42,0x323,0x0}}, {0x1E05,{0x62,0x323,0x0}},
167  {0x1E06,{0x42,0x331,0x0}}, {0x1E07,{0x62,0x331,0x0}}, {0x1E08,{0xC7,0x301,0x0}},
168  {0x1E09,{0xE7,0x301,0x0}}, {0x1E0A,{0x44,0x307,0x0}}, {0x1E0B,{0x64,0x307,0x0}},
169  {0x1E0C,{0x44,0x323,0x0}}, {0x1E0D,{0x64,0x323,0x0}}, {0x1E0E,{0x44,0x331,0x0}},
170  {0x1E0F,{0x64,0x331,0x0}}, {0x1E10,{0x44,0x327,0x0}}, {0x1E11,{0x64,0x327,0x0}},
171  {0x1E12,{0x44,0x32D,0x0}}, {0x1E13,{0x64,0x32D,0x0}}, {0x1E14,{0x112,0x300,0x0}},
172  {0x1E15,{0x113,0x300,0x0}}, {0x1E16,{0x112,0x301,0x0}}, {0x1E17,{0x113,0x301,0x0}},
173  {0x1E18,{0x45,0x32D,0x0}}, {0x1E19,{0x65,0x32D,0x0}}, {0x1E1A,{0x45,0x330,0x0}},
174  {0x1E1B,{0x65,0x330,0x0}}, {0x1E1C,{0x114,0x327,0x0}}, {0x1E1D,{0x115,0x327,0x0}},
175  {0x1E1E,{0x46,0x307,0x0}}, {0x1E1F,{0x66,0x307,0x0}}, {0x1E20,{0x47,0x304,0x0}},
176  {0x1E21,{0x67,0x304,0x0}}, {0x1E22,{0x48,0x307,0x0}}, {0x1E23,{0x68,0x307,0x0}},
177  {0x1E24,{0x48,0x323,0x0}}, {0x1E25,{0x68,0x323,0x0}}, {0x1E26,{0x48,0x308,0x0}},
178  {0x1E27,{0x68,0x308,0x0}}, {0x1E28,{0x48,0x327,0x0}}, {0x1E29,{0x68,0x327,0x0}},
179  {0x1E2A,{0x48,0x32E,0x0}}, {0x1E2B,{0x68,0x32E,0x0}}, {0x1E2C,{0x49,0x330,0x0}},
180  {0x1E2D,{0x69,0x330,0x0}}, {0x1E2E,{0xCF,0x301,0x0}}, {0x1E2F,{0xEF,0x301,0x0}},
181  {0x1E30,{0x4B,0x301,0x0}}, {0x1E31,{0x6B,0x301,0x0}}, {0x1E32,{0x4B,0x323,0x0}},
182  {0x1E33,{0x6B,0x323,0x0}}, {0x1E34,{0x4B,0x331,0x0}}, {0x1E35,{0x6B,0x331,0x0}},
183  {0x1E36,{0x4C,0x323,0x0}}, {0x1E37,{0x6C,0x323,0x0}}, {0x1E38,{0x1E36,0x304,0x0}},
184  {0x1E39,{0x1E37,0x304,0x0}}, {0x1E3A,{0x4C,0x331,0x0}}, {0x1E3B,{0x6C,0x331,0x0}},
185  {0x1E3C,{0x4C,0x32D,0x0}}, {0x1E3D,{0x6C,0x32D,0x0}}, {0x1E3E,{0x4D,0x301,0x0}},
186  {0x1E3F,{0x6D,0x301,0x0}}, {0x1E40,{0x4D,0x307,0x0}}, {0x1E41,{0x6D,0x307,0x0}},
187  {0x1E42,{0x4D,0x323,0x0}}, {0x1E43,{0x6D,0x323,0x0}}, {0x1E44,{0x4E,0x307,0x0}},
188  {0x1E45,{0x6E,0x307,0x0}}, {0x1E46,{0x4E,0x323,0x0}}, {0x1E47,{0x6E,0x323,0x0}},
189  {0x1E48,{0x4E,0x331,0x0}}, {0x1E49,{0x6E,0x331,0x0}}, {0x1E4A,{0x4E,0x32D,0x0}},
190  {0x1E4B,{0x6E,0x32D,0x0}}, {0x1E4C,{0xD5,0x301,0x0}}, {0x1E4D,{0xF5,0x301,0x0}},
191  {0x1E4E,{0xD5,0x308,0x0}}, {0x1E4F,{0xF5,0x308,0x0}}, {0x1E50,{0x14C,0x300,0x0}},
192  {0x1E51,{0x14D,0x300,0x0}}, {0x1E52,{0x14C,0x301,0x0}}, {0x1E53,{0x14D,0x301,0x0}},
193  {0x1E54,{0x50,0x301,0x0}}, {0x1E55,{0x70,0x301,0x0}}, {0x1E56,{0x50,0x307,0x0}},
194  {0x1E57,{0x70,0x307,0x0}}, {0x1E58,{0x52,0x307,0x0}}, {0x1E59,{0x72,0x307,0x0}},
195  {0x1E5A,{0x52,0x323,0x0}}, {0x1E5B,{0x72,0x323,0x0}}, {0x1E5C,{0x1E5A,0x304,0x0}},
196  {0x1E5D,{0x1E5B,0x304,0x0}}, {0x1E5E,{0x52,0x331,0x0}}, {0x1E5F,{0x72,0x331,0x0}},
197  {0x1E60,{0x53,0x307,0x0}}, {0x1E61,{0x73,0x307,0x0}}, {0x1E62,{0x53,0x323,0x0}},
198  {0x1E63,{0x73,0x323,0x0}}, {0x1E64,{0x15A,0x307,0x0}}, {0x1E65,{0x15B,0x307,0x0}},
199  {0x1E66,{0x160,0x307,0x0}}, {0x1E67,{0x161,0x307,0x0}}, {0x1E68,{0x1E62,0x307,0x0}},
200  {0x1E69,{0x1E63,0x307,0x0}}, {0x1E6A,{0x54,0x307,0x0}}, {0x1E6B,{0x74,0x307,0x0}},
201  {0x1E6C,{0x54,0x323,0x0}}, {0x1E6D,{0x74,0x323,0x0}}, {0x1E6E,{0x54,0x331,0x0}},
202  {0x1E6F,{0x74,0x331,0x0}}, {0x1E70,{0x54,0x32D,0x0}}, {0x1E71,{0x74,0x32D,0x0}},
203  {0x1E72,{0x55,0x324,0x0}}, {0x1E73,{0x75,0x324,0x0}}, {0x1E74,{0x55,0x330,0x0}},
204  {0x1E75,{0x75,0x330,0x0}}, {0x1E76,{0x55,0x32D,0x0}}, {0x1E77,{0x75,0x32D,0x0}},
205  {0x1E78,{0x168,0x301,0x0}}, {0x1E79,{0x169,0x301,0x0}}, {0x1E7A,{0x16A,0x308,0x0}},
206  {0x1E7B,{0x16B,0x308,0x0}}, {0x1E7C,{0x56,0x303,0x0}}, {0x1E7D,{0x76,0x303,0x0}},
207  {0x1E7E,{0x56,0x323,0x0}}, {0x1E7F,{0x76,0x323,0x0}}, {0x1E80,{0x57,0x300,0x0}},
208  {0x1E81,{0x77,0x300,0x0}}, {0x1E82,{0x57,0x301,0x0}}, {0x1E83,{0x77,0x301,0x0}},
209  {0x1E84,{0x57,0x308,0x0}}, {0x1E85,{0x77,0x308,0x0}}, {0x1E86,{0x57,0x307,0x0}},
210  {0x1E87,{0x77,0x307,0x0}}, {0x1E88,{0x57,0x323,0x0}}, {0x1E89,{0x77,0x323,0x0}},
211  {0x1E8A,{0x58,0x307,0x0}}, {0x1E8B,{0x78,0x307,0x0}}, {0x1E8C,{0x58,0x308,0x0}},
212  {0x1E8D,{0x78,0x308,0x0}}, {0x1E8E,{0x59,0x307,0x0}}, {0x1E8F,{0x79,0x307,0x0}},
213  {0x1E90,{0x5A,0x302,0x0}}, {0x1E91,{0x7A,0x302,0x0}}, {0x1E92,{0x5A,0x323,0x0}},
214  {0x1E93,{0x7A,0x323,0x0}}, {0x1E94,{0x5A,0x331,0x0}}, {0x1E95,{0x7A,0x331,0x0}},
215  {0x1E96,{0x68,0x331,0x0}}, {0x1E97,{0x74,0x308,0x0}}, {0x1E98,{0x77,0x30A,0x0}},
216  {0x1E99,{0x79,0x30A,0x0}}, {0x1E9B,{0x17F,0x307,0x0}}, {0x1EA0,{0x41,0x323,0x0}},
217  {0x1EA1,{0x61,0x323,0x0}}, {0x1EA2,{0x41,0x309,0x0}}, {0x1EA3,{0x61,0x309,0x0}},
218  {0x1EA4,{0xC2,0x301,0x0}}, {0x1EA5,{0xE2,0x301,0x0}}, {0x1EA6,{0xC2,0x300,0x0}},
219  {0x1EA7,{0xE2,0x300,0x0}}, {0x1EA8,{0xC2,0x309,0x0}}, {0x1EA9,{0xE2,0x309,0x0}},
220  {0x1EAA,{0xC2,0x303,0x0}}, {0x1EAB,{0xE2,0x303,0x0}}, {0x1EAC,{0xC2,0x323,0x0}},
221  {0x1EAD,{0xE2,0x323,0x0}}, {0x1EAE,{0x102,0x301,0x0}}, {0x1EAF,{0x103,0x301,0x0}},
222  {0x1EB0,{0x102,0x300,0x0}}, {0x1EB1,{0x103,0x300,0x0}}, {0x1EB2,{0x102,0x309,0x0}},
223  {0x1EB3,{0x103,0x309,0x0}}, {0x1EB4,{0x102,0x303,0x0}}, {0x1EB5,{0x103,0x303,0x0}},
224  {0x1EB6,{0x102,0x323,0x0}}, {0x1EB7,{0x103,0x323,0x0}}, {0x1EB8,{0x45,0x323,0x0}},
225  {0x1EB9,{0x65,0x323,0x0}}, {0x1EBA,{0x45,0x309,0x0}}, {0x1EBB,{0x65,0x309,0x0}},
226  {0x1EBC,{0x45,0x303,0x0}}, {0x1EBD,{0x65,0x303,0x0}}, {0x1EBE,{0xCA,0x301,0x0}},
227  {0x1EBF,{0xEA,0x301,0x0}}, {0x1EC0,{0xCA,0x300,0x0}}, {0x1EC1,{0xEA,0x300,0x0}},
228  {0x1EC2,{0xCA,0x309,0x0}}, {0x1EC3,{0xEA,0x309,0x0}}, {0x1EC4,{0xCA,0x303,0x0}},
229  {0x1EC5,{0xEA,0x303,0x0}}, {0x1EC6,{0xCA,0x323,0x0}}, {0x1EC7,{0xEA,0x323,0x0}},
230  {0x1EC8,{0x49,0x309,0x0}}, {0x1EC9,{0x69,0x309,0x0}}, {0x1ECA,{0x49,0x323,0x0}},
231  {0x1ECB,{0x69,0x323,0x0}}, {0x1ECC,{0x4F,0x323,0x0}}, {0x1ECD,{0x6F,0x323,0x0}},
232  {0x1ECE,{0x4F,0x309,0x0}}, {0x1ECF,{0x6F,0x309,0x0}}, {0x1ED0,{0xD4,0x301,0x0}},
233  {0x1ED1,{0xF4,0x301,0x0}}, {0x1ED2,{0xD4,0x300,0x0}}, {0x1ED3,{0xF4,0x300,0x0}},
234  {0x1ED4,{0xD4,0x309,0x0}}, {0x1ED5,{0xF4,0x309,0x0}}, {0x1ED6,{0xD4,0x303,0x0}},
235  {0x1ED7,{0xF4,0x303,0x0}}, {0x1ED8,{0xD4,0x323,0x0}}, {0x1ED9,{0xF4,0x323,0x0}},
236  {0x1EDA,{0x1A0,0x301,0x0}}, {0x1EDB,{0x1A1,0x301,0x0}}, {0x1EDC,{0x1A0,0x300,0x0}},
237  {0x1EDD,{0x1A1,0x300,0x0}}, {0x1EDE,{0x1A0,0x309,0x0}}, {0x1EDF,{0x1A1,0x309,0x0}},
238  {0x1EE0,{0x1A0,0x303,0x0}}, {0x1EE1,{0x1A1,0x303,0x0}}, {0x1EE2,{0x1A0,0x323,0x0}},
239  {0x1EE3,{0x1A1,0x323,0x0}}, {0x1EE4,{0x55,0x323,0x0}}, {0x1EE5,{0x75,0x323,0x0}},
240  {0x1EE6,{0x55,0x309,0x0}}, {0x1EE7,{0x75,0x309,0x0}}, {0x1EE8,{0x1AF,0x301,0x0}},
241  {0x1EE9,{0x1B0,0x301,0x0}}, {0x1EEA,{0x1AF,0x300,0x0}}, {0x1EEB,{0x1B0,0x300,0x0}},
242  {0x1EEC,{0x1AF,0x309,0x0}}, {0x1EED,{0x1B0,0x309,0x0}}, {0x1EEE,{0x1AF,0x303,0x0}},
243  {0x1EEF,{0x1B0,0x303,0x0}}, {0x1EF0,{0x1AF,0x323,0x0}}, {0x1EF1,{0x1B0,0x323,0x0}},
244  {0x1EF2,{0x59,0x300,0x0}}, {0x1EF3,{0x79,0x300,0x0}}, {0x1EF4,{0x59,0x323,0x0}},
245  {0x1EF5,{0x79,0x323,0x0}}, {0x1EF6,{0x59,0x309,0x0}}, {0x1EF7,{0x79,0x309,0x0}},
246  {0x1EF8,{0x59,0x303,0x0}}, {0x1EF9,{0x79,0x303,0x0}}, {0x1F00,{0x3B1,0x313,0x0}},
247  {0x1F01,{0x3B1,0x314,0x0}}, {0x1F02,{0x1F00,0x300,0x0}}, {0x1F03,{0x1F01,0x300,0x0}},
248  {0x1F04,{0x1F00,0x301,0x0}}, {0x1F05,{0x1F01,0x301,0x0}}, {0x1F06,{0x1F00,0x342,0x0}},
249  {0x1F07,{0x1F01,0x342,0x0}}, {0x1F08,{0x391,0x313,0x0}}, {0x1F09,{0x391,0x314,0x0}},
250  {0x1F0A,{0x1F08,0x300,0x0}}, {0x1F0B,{0x1F09,0x300,0x0}}, {0x1F0C,{0x1F08,0x301,0x0}},
251  {0x1F0D,{0x1F09,0x301,0x0}}, {0x1F0E,{0x1F08,0x342,0x0}}, {0x1F0F,{0x1F09,0x342,0x0}},
252  {0x1F10,{0x3B5,0x313,0x0}}, {0x1F11,{0x3B5,0x314,0x0}}, {0x1F12,{0x1F10,0x300,0x0}},
253  {0x1F13,{0x1F11,0x300,0x0}}, {0x1F14,{0x1F10,0x301,0x0}}, {0x1F15,{0x1F11,0x301,0x0}},
254  {0x1F18,{0x395,0x313,0x0}}, {0x1F19,{0x395,0x314,0x0}}, {0x1F1A,{0x1F18,0x300,0x0}},
255  {0x1F1B,{0x1F19,0x300,0x0}}, {0x1F1C,{0x1F18,0x301,0x0}}, {0x1F1D,{0x1F19,0x301,0x0}},
256  {0x1F20,{0x3B7,0x313,0x0}}, {0x1F21,{0x3B7,0x314,0x0}}, {0x1F22,{0x1F20,0x300,0x0}},
257  {0x1F23,{0x1F21,0x300,0x0}}, {0x1F24,{0x1F20,0x301,0x0}}, {0x1F25,{0x1F21,0x301,0x0}},
258  {0x1F26,{0x1F20,0x342,0x0}}, {0x1F27,{0x1F21,0x342,0x0}}, {0x1F28,{0x397,0x313,0x0}},
259  {0x1F29,{0x397,0x314,0x0}}, {0x1F2A,{0x1F28,0x300,0x0}}, {0x1F2B,{0x1F29,0x300,0x0}},
260  {0x1F2C,{0x1F28,0x301,0x0}}, {0x1F2D,{0x1F29,0x301,0x0}}, {0x1F2E,{0x1F28,0x342,0x0}},
261  {0x1F2F,{0x1F29,0x342,0x0}}, {0x1F30,{0x3B9,0x313,0x0}}, {0x1F31,{0x3B9,0x314,0x0}},
262  {0x1F32,{0x1F30,0x300,0x0}}, {0x1F33,{0x1F31,0x300,0x0}}, {0x1F34,{0x1F30,0x301,0x0}},
263  {0x1F35,{0x1F31,0x301,0x0}}, {0x1F36,{0x1F30,0x342,0x0}}, {0x1F37,{0x1F31,0x342,0x0}},
264  {0x1F38,{0x399,0x313,0x0}}, {0x1F39,{0x399,0x314,0x0}}, {0x1F3A,{0x1F38,0x300,0x0}},
265  {0x1F3B,{0x1F39,0x300,0x0}}, {0x1F3C,{0x1F38,0x301,0x0}}, {0x1F3D,{0x1F39,0x301,0x0}},
266  {0x1F3E,{0x1F38,0x342,0x0}}, {0x1F3F,{0x1F39,0x342,0x0}}, {0x1F40,{0x3BF,0x313,0x0}},
267  {0x1F41,{0x3BF,0x314,0x0}}, {0x1F42,{0x1F40,0x300,0x0}}, {0x1F43,{0x1F41,0x300,0x0}},
268  {0x1F44,{0x1F40,0x301,0x0}}, {0x1F45,{0x1F41,0x301,0x0}}, {0x1F48,{0x39F,0x313,0x0}},
269  {0x1F49,{0x39F,0x314,0x0}}, {0x1F4A,{0x1F48,0x300,0x0}}, {0x1F4B,{0x1F49,0x300,0x0}},
270  {0x1F4C,{0x1F48,0x301,0x0}}, {0x1F4D,{0x1F49,0x301,0x0}}, {0x1F50,{0x3C5,0x313,0x0}},
271  {0x1F51,{0x3C5,0x314,0x0}}, {0x1F52,{0x1F50,0x300,0x0}}, {0x1F53,{0x1F51,0x300,0x0}},
272  {0x1F54,{0x1F50,0x301,0x0}}, {0x1F55,{0x1F51,0x301,0x0}}, {0x1F56,{0x1F50,0x342,0x0}},
273  {0x1F57,{0x1F51,0x342,0x0}}, {0x1F59,{0x3A5,0x314,0x0}}, {0x1F5B,{0x1F59,0x300,0x0}},
274  {0x1F5D,{0x1F59,0x301,0x0}}, {0x1F5F,{0x1F59,0x342,0x0}}, {0x1F60,{0x3C9,0x313,0x0}},
275  {0x1F61,{0x3C9,0x314,0x0}}, {0x1F62,{0x1F60,0x300,0x0}}, {0x1F63,{0x1F61,0x300,0x0}},
276  {0x1F64,{0x1F60,0x301,0x0}}, {0x1F65,{0x1F61,0x301,0x0}}, {0x1F66,{0x1F60,0x342,0x0}},
277  {0x1F67,{0x1F61,0x342,0x0}}, {0x1F68,{0x3A9,0x313,0x0}}, {0x1F69,{0x3A9,0x314,0x0}},
278  {0x1F6A,{0x1F68,0x300,0x0}}, {0x1F6B,{0x1F69,0x300,0x0}}, {0x1F6C,{0x1F68,0x301,0x0}},
279  {0x1F6D,{0x1F69,0x301,0x0}}, {0x1F6E,{0x1F68,0x342,0x0}}, {0x1F6F,{0x1F69,0x342,0x0}},
280  {0x1F70,{0x3B1,0x300,0x0}}, {0x1F71,{0x3B1,0x301,0x0}}, {0x1F72,{0x3B5,0x300,0x0}},
281  {0x1F73,{0x3B5,0x301,0x0}}, {0x1F74,{0x3B7,0x300,0x0}}, {0x1F75,{0x3B7,0x301,0x0}},
282  {0x1F76,{0x3B9,0x300,0x0}}, {0x1F77,{0x3B9,0x301,0x0}}, {0x1F78,{0x3BF,0x300,0x0}},
283  {0x1F79,{0x3BF,0x301,0x0}}, {0x1F7A,{0x3C5,0x300,0x0}}, {0x1F7B,{0x3C5,0x301,0x0}},
284  {0x1F7C,{0x3C9,0x300,0x0}}, {0x1F7D,{0x3C9,0x301,0x0}}, {0x1F80,{0x1F00,0x345,0x0}},
285  {0x1F81,{0x1F01,0x345,0x0}}, {0x1F82,{0x1F02,0x345,0x0}}, {0x1F83,{0x1F03,0x345,0x0}},
286  {0x1F84,{0x1F04,0x345,0x0}}, {0x1F85,{0x1F05,0x345,0x0}}, {0x1F86,{0x1F06,0x345,0x0}},
287  {0x1F87,{0x1F07,0x345,0x0}}, {0x1F88,{0x1F08,0x345,0x0}}, {0x1F89,{0x1F09,0x345,0x0}},
288  {0x1F8A,{0x1F0A,0x345,0x0}}, {0x1F8B,{0x1F0B,0x345,0x0}}, {0x1F8C,{0x1F0C,0x345,0x0}},
289  {0x1F8D,{0x1F0D,0x345,0x0}}, {0x1F8E,{0x1F0E,0x345,0x0}}, {0x1F8F,{0x1F0F,0x345,0x0}},
290  {0x1F90,{0x1F20,0x345,0x0}}, {0x1F91,{0x1F21,0x345,0x0}}, {0x1F92,{0x1F22,0x345,0x0}},
291  {0x1F93,{0x1F23,0x345,0x0}}, {0x1F94,{0x1F24,0x345,0x0}}, {0x1F95,{0x1F25,0x345,0x0}},
292  {0x1F96,{0x1F26,0x345,0x0}}, {0x1F97,{0x1F27,0x345,0x0}}, {0x1F98,{0x1F28,0x345,0x0}},
293  {0x1F99,{0x1F29,0x345,0x0}}, {0x1F9A,{0x1F2A,0x345,0x0}}, {0x1F9B,{0x1F2B,0x345,0x0}},
294  {0x1F9C,{0x1F2C,0x345,0x0}}, {0x1F9D,{0x1F2D,0x345,0x0}}, {0x1F9E,{0x1F2E,0x345,0x0}},
295  {0x1F9F,{0x1F2F,0x345,0x0}}, {0x1FA0,{0x1F60,0x345,0x0}}, {0x1FA1,{0x1F61,0x345,0x0}},
296  {0x1FA2,{0x1F62,0x345,0x0}}, {0x1FA3,{0x1F63,0x345,0x0}}, {0x1FA4,{0x1F64,0x345,0x0}},
297  {0x1FA5,{0x1F65,0x345,0x0}}, {0x1FA6,{0x1F66,0x345,0x0}}, {0x1FA7,{0x1F67,0x345,0x0}},
298  {0x1FA8,{0x1F68,0x345,0x0}}, {0x1FA9,{0x1F69,0x345,0x0}}, {0x1FAA,{0x1F6A,0x345,0x0}},
299  {0x1FAB,{0x1F6B,0x345,0x0}}, {0x1FAC,{0x1F6C,0x345,0x0}}, {0x1FAD,{0x1F6D,0x345,0x0}},
300  {0x1FAE,{0x1F6E,0x345,0x0}}, {0x1FAF,{0x1F6F,0x345,0x0}}, {0x1FB0,{0x3B1,0x306,0x0}},
301  {0x1FB1,{0x3B1,0x304,0x0}}, {0x1FB2,{0x1F70,0x345,0x0}}, {0x1FB3,{0x3B1,0x345,0x0}},
302  {0x1FB4,{0x1F71,0x345,0x0}}, {0x1FB6,{0x3B1,0x342,0x0}}, {0x1FB7,{0x1FB6,0x345,0x0}},
303  {0x1FB8,{0x391,0x306,0x0}}, {0x1FB9,{0x391,0x304,0x0}}, {0x1FBA,{0x391,0x300,0x0}},
304  {0x1FBB,{0x391,0x301,0x0}}, {0x1FBC,{0x391,0x345,0x0}}, {0x1FBE,{0x3B9,0x0,0x0}},
305  {0x1FC1,{0xA8,0x342,0x0}}, {0x1FC2,{0x1F74,0x345,0x0}}, {0x1FC3,{0x3B7,0x345,0x0}},
306  {0x1FC4,{0x1F75,0x345,0x0}}, {0x1FC6,{0x3B7,0x342,0x0}}, {0x1FC7,{0x1FC6,0x345,0x0}},
307  {0x1FC8,{0x395,0x300,0x0}}, {0x1FC9,{0x395,0x301,0x0}}, {0x1FCA,{0x397,0x300,0x0}},
308  {0x1FCB,{0x397,0x301,0x0}}, {0x1FCC,{0x397,0x345,0x0}}, {0x1FCD,{0x1FBF,0x300,0x0}},
309  {0x1FCE,{0x1FBF,0x301,0x0}}, {0x1FCF,{0x1FBF,0x342,0x0}}, {0x1FD0,{0x3B9,0x306,0x0}},
310  {0x1FD1,{0x3B9,0x304,0x0}}, {0x1FD2,{0x3CA,0x300,0x0}}, {0x1FD3,{0x3CA,0x301,0x0}},
311  {0x1FD6,{0x3B9,0x342,0x0}}, {0x1FD7,{0x3CA,0x342,0x0}}, {0x1FD8,{0x399,0x306,0x0}},
312  {0x1FD9,{0x399,0x304,0x0}}, {0x1FDA,{0x399,0x300,0x0}}, {0x1FDB,{0x399,0x301,0x0}},
313  {0x1FDD,{0x1FFE,0x300,0x0}}, {0x1FDE,{0x1FFE,0x301,0x0}}, {0x1FDF,{0x1FFE,0x342,0x0}},
314  {0x1FE0,{0x3C5,0x306,0x0}}, {0x1FE1,{0x3C5,0x304,0x0}}, {0x1FE2,{0x3CB,0x300,0x0}},
315  {0x1FE3,{0x3CB,0x301,0x0}}, {0x1FE4,{0x3C1,0x313,0x0}}, {0x1FE5,{0x3C1,0x314,0x0}},
316  {0x1FE6,{0x3C5,0x342,0x0}}, {0x1FE7,{0x3CB,0x342,0x0}}, {0x1FE8,{0x3A5,0x306,0x0}},
317  {0x1FE9,{0x3A5,0x304,0x0}}, {0x1FEA,{0x3A5,0x300,0x0}}, {0x1FEB,{0x3A5,0x301,0x0}},
318  {0x1FEC,{0x3A1,0x314,0x0}}, {0x1FED,{0xA8,0x300,0x0}}, {0x1FEE,{0xA8,0x301,0x0}},
319  {0x1FEF,{0x60,0x0,0x0}}, {0x1FF2,{0x1F7C,0x345,0x0}}, {0x1FF3,{0x3C9,0x345,0x0}},
320  {0x1FF4,{0x1F79,0x345,0x0}}, {0x1FF6,{0x3C9,0x342,0x0}}, {0x1FF7,{0x1FF6,0x345,0x0}},
321  {0x1FF8,{0x39F,0x300,0x0}}, {0x1FF9,{0x39F,0x301,0x0}}, {0x1FFA,{0x3A9,0x300,0x0}},
322  {0x1FFB,{0x3A9,0x301,0x0}}, {0x1FFC,{0x3A9,0x345,0x0}}, {0x1FFD,{0xB4,0x0,0x0}},
323  {0x2000,{0x2002,0x0,0x0}}, {0x2001,{0x2003,0x0,0x0}}, {0x2126,{0x3A9,0x0,0x0}},
324  {0x212A,{0x4B,0x0,0x0}}, {0x212B,{0xC5,0x0,0x0}}, {0x2204,{0x2203,0x338,0x0}},
325  {0x2209,{0x2208,0x338,0x0}}, {0x220C,{0x220B,0x338,0x0}}, {0x2224,{0x2223,0x338,0x0}},
326  {0x2226,{0x2225,0x338,0x0}}, {0x2241,{0x7E,0x338,0x0}}, {0x2244,{0x2243,0x338,0x0}},
327  {0x2247,{0x2245,0x338,0x0}}, {0x2249,{0x2248,0x338,0x0}}, {0x2260,{0x3D,0x338,0x0}},
328  {0x2262,{0x2261,0x338,0x0}}, {0x226D,{0x224D,0x338,0x0}}, {0x226E,{0x3C,0x338,0x0}},
329  {0x226F,{0x3E,0x338,0x0}}, {0x2270,{0x2264,0x338,0x0}}, {0x2271,{0x2265,0x338,0x0}},
330  {0x2274,{0x2272,0x338,0x0}}, {0x2275,{0x2273,0x338,0x0}}, {0x2278,{0x2276,0x338,0x0}},
331  {0x2279,{0x2277,0x338,0x0}}, {0x2280,{0x227A,0x338,0x0}}, {0x2281,{0x227B,0x338,0x0}},
332  {0x2284,{0x2282,0x338,0x0}}, {0x2285,{0x2283,0x338,0x0}}, {0x2288,{0x2286,0x338,0x0}},
333  {0x2289,{0x2287,0x338,0x0}}, {0x22AC,{0x22A2,0x338,0x0}}, {0x22AD,{0x22A8,0x338,0x0}},
334  {0x22AE,{0x22A9,0x338,0x0}}, {0x22AF,{0x22AB,0x338,0x0}}, {0x22E0,{0x227C,0x338,0x0}},
335  {0x22E1,{0x227D,0x338,0x0}}, {0x22E2,{0x2291,0x338,0x0}}, {0x22E3,{0x2292,0x338,0x0}},
336  {0x22EA,{0x22B2,0x338,0x0}}, {0x22EB,{0x22B3,0x338,0x0}}, {0x22EC,{0x22B4,0x338,0x0}},
337  {0x22ED,{0x22B5,0x338,0x0}}, {0x2329,{0x3008,0x0,0x0}}, {0x232A,{0x3009,0x0,0x0}},
338  {0x304C,{0x304B,0x3099,0x0}}, {0x304E,{0x304D,0x3099,0x0}}, {0x3050,{0x304F,0x3099,0x0}},
339  {0x3052,{0x3051,0x3099,0x0}}, {0x3054,{0x3053,0x3099,0x0}}, {0x3056,{0x3055,0x3099,0x0}},
340  {0x3058,{0x3057,0x3099,0x0}}, {0x305A,{0x3059,0x3099,0x0}}, {0x305C,{0x305B,0x3099,0x0}},
341  {0x305E,{0x305D,0x3099,0x0}}, {0x3060,{0x305F,0x3099,0x0}}, {0x3062,{0x3061,0x3099,0x0}},
342  {0x3065,{0x3064,0x3099,0x0}}, {0x3067,{0x3066,0x3099,0x0}}, {0x3069,{0x3068,0x3099,0x0}},
343  {0x3070,{0x306F,0x3099,0x0}}, {0x3071,{0x306F,0x309A,0x0}}, {0x3073,{0x3072,0x3099,0x0}},
344  {0x3074,{0x3072,0x309A,0x0}}, {0x3076,{0x3075,0x3099,0x0}}, {0x3077,{0x3075,0x309A,0x0}},
345  {0x3079,{0x3078,0x3099,0x0}}, {0x307A,{0x3078,0x309A,0x0}}, {0x307C,{0x307B,0x3099,0x0}},
346  {0x307D,{0x307B,0x309A,0x0}}, {0x3094,{0x3046,0x3099,0x0}}, {0x309E,{0x309D,0x3099,0x0}},
347  {0x30AC,{0x30AB,0x3099,0x0}}, {0x30AE,{0x30AD,0x3099,0x0}}, {0x30B0,{0x30AF,0x3099,0x0}},
348  {0x30B2,{0x30B1,0x3099,0x0}}, {0x30B4,{0x30B3,0x3099,0x0}}, {0x30B6,{0x30B5,0x3099,0x0}},
349  {0x30B8,{0x30B7,0x3099,0x0}}, {0x30BA,{0x30B9,0x3099,0x0}}, {0x30BC,{0x30BB,0x3099,0x0}},
350  {0x30BE,{0x30BD,0x3099,0x0}}, {0x30C0,{0x30BF,0x3099,0x0}}, {0x30C2,{0x30C1,0x3099,0x0}},
351  {0x30C5,{0x30C4,0x3099,0x0}}, {0x30C7,{0x30C6,0x3099,0x0}}, {0x30C9,{0x30C8,0x3099,0x0}},
352  {0x30D0,{0x30CF,0x3099,0x0}}, {0x30D1,{0x30CF,0x309A,0x0}}, {0x30D3,{0x30D2,0x3099,0x0}},
353  {0x30D4,{0x30D2,0x309A,0x0}}, {0x30D6,{0x30D5,0x3099,0x0}}, {0x30D7,{0x30D5,0x309A,0x0}},
354  {0x30D9,{0x30D8,0x3099,0x0}}, {0x30DA,{0x30D8,0x309A,0x0}}, {0x30DC,{0x30DB,0x3099,0x0}},
355  {0x30DD,{0x30DB,0x309A,0x0}}, {0x30F4,{0x30A6,0x3099,0x0}}, {0x30F7,{0x30EF,0x3099,0x0}},
356  {0x30F8,{0x30F0,0x3099,0x0}}, {0x30F9,{0x30F1,0x3099,0x0}}, {0x30FA,{0x30F2,0x3099,0x0}},
357  {0x30FE,{0x30FD,0x3099,0x0}}, {0xF900,{0x8C48,0x0,0x0}}, {0xF901,{0x66F4,0x0,0x0}},
358  {0xF902,{0x8ECA,0x0,0x0}}, {0xF903,{0x8CC8,0x0,0x0}}, {0xF904,{0x6ED1,0x0,0x0}},
359  {0xF905,{0x4E32,0x0,0x0}}, {0xF906,{0x53E5,0x0,0x0}}, {0xF907,{0x9F9C,0x0,0x0}},
360  {0xF908,{0x9F9C,0x0,0x0}}, {0xF909,{0x5951,0x0,0x0}}, {0xF90A,{0x91D1,0x0,0x0}},
361  {0xF90B,{0x5587,0x0,0x0}}, {0xF90C,{0x5948,0x0,0x0}}, {0xF90D,{0x61F6,0x0,0x0}},
362  {0xF90E,{0x7669,0x0,0x0}}, {0xF90F,{0x7F85,0x0,0x0}}, {0xF910,{0x863F,0x0,0x0}},
363  {0xF911,{0x87BA,0x0,0x0}}, {0xF912,{0x88F8,0x0,0x0}}, {0xF913,{0x908F,0x0,0x0}},
364  {0xF914,{0x6A02,0x0,0x0}}, {0xF915,{0x6D1B,0x0,0x0}}, {0xF916,{0x70D9,0x0,0x0}},
365  {0xF917,{0x73DE,0x0,0x0}}, {0xF918,{0x843D,0x0,0x0}}, {0xF919,{0x916A,0x0,0x0}},
366  {0xF91A,{0x99F1,0x0,0x0}}, {0xF91B,{0x4E82,0x0,0x0}}, {0xF91C,{0x5375,0x0,0x0}},
367  {0xF91D,{0x6B04,0x0,0x0}}, {0xF91E,{0x721B,0x0,0x0}}, {0xF91F,{0x862D,0x0,0x0}},
368  {0xF920,{0x9E1E,0x0,0x0}}, {0xF921,{0x5D50,0x0,0x0}}, {0xF922,{0x6FEB,0x0,0x0}},
369  {0xF923,{0x85CD,0x0,0x0}}, {0xF924,{0x8964,0x0,0x0}}, {0xF925,{0x62C9,0x0,0x0}},
370  {0xF926,{0x81D8,0x0,0x0}}, {0xF927,{0x881F,0x0,0x0}}, {0xF928,{0x5ECA,0x0,0x0}},
371  {0xF929,{0x6717,0x0,0x0}}, {0xF92A,{0x6D6A,0x0,0x0}}, {0xF92B,{0x72FC,0x0,0x0}},
372  {0xF92C,{0x90CE,0x0,0x0}}, {0xF92D,{0x4F86,0x0,0x0}}, {0xF92E,{0x51B7,0x0,0x0}},
373  {0xF92F,{0x52DE,0x0,0x0}}, {0xF930,{0x64C4,0x0,0x0}}, {0xF931,{0x6AD3,0x0,0x0}},
374  {0xF932,{0x7210,0x0,0x0}}, {0xF933,{0x76E7,0x0,0x0}}, {0xF934,{0x8001,0x0,0x0}},
375  {0xF935,{0x8606,0x0,0x0}}, {0xF936,{0x865C,0x0,0x0}}, {0xF937,{0x8DEF,0x0,0x0}},
376  {0xF938,{0x9732,0x0,0x0}}, {0xF939,{0x9B6F,0x0,0x0}}, {0xF93A,{0x9DFA,0x0,0x0}},
377  {0xF93B,{0x788C,0x0,0x0}}, {0xF93C,{0x797F,0x0,0x0}}, {0xF93D,{0x7DA0,0x0,0x0}},
378  {0xF93E,{0x83C9,0x0,0x0}}, {0xF93F,{0x9304,0x0,0x0}}, {0xF940,{0x9E7F,0x0,0x0}},
379  {0xF941,{0x8AD6,0x0,0x0}}, {0xF942,{0x58DF,0x0,0x0}}, {0xF943,{0x5F04,0x0,0x0}},
380  {0xF944,{0x7C60,0x0,0x0}}, {0xF945,{0x807E,0x0,0x0}}, {0xF946,{0x7262,0x0,0x0}},
381  {0xF947,{0x78CA,0x0,0x0}}, {0xF948,{0x8CC2,0x0,0x0}}, {0xF949,{0x96F7,0x0,0x0}},
382  {0xF94A,{0x58D8,0x0,0x0}}, {0xF94B,{0x5C62,0x0,0x0}}, {0xF94C,{0x6A13,0x0,0x0}},
383  {0xF94D,{0x6DDA,0x0,0x0}}, {0xF94E,{0x6F0F,0x0,0x0}}, {0xF94F,{0x7D2F,0x0,0x0}},
384  {0xF950,{0x7E37,0x0,0x0}}, {0xF951,{0x96FB,0x0,0x0}}, {0xF952,{0x52D2,0x0,0x0}},
385  {0xF953,{0x808B,0x0,0x0}}, {0xF954,{0x51DC,0x0,0x0}}, {0xF955,{0x51CC,0x0,0x0}},
386  {0xF956,{0x7A1C,0x0,0x0}}, {0xF957,{0x7DBE,0x0,0x0}}, {0xF958,{0x83F1,0x0,0x0}},
387  {0xF959,{0x9675,0x0,0x0}}, {0xF95A,{0x8B80,0x0,0x0}}, {0xF95B,{0x62CF,0x0,0x0}},
388  {0xF95C,{0x6A02,0x0,0x0}}, {0xF95D,{0x8AFE,0x0,0x0}}, {0xF95E,{0x4E39,0x0,0x0}},
389  {0xF95F,{0x5BE7,0x0,0x0}}, {0xF960,{0x6012,0x0,0x0}}, {0xF961,{0x7387,0x0,0x0}},
390  {0xF962,{0x7570,0x0,0x0}}, {0xF963,{0x5317,0x0,0x0}}, {0xF964,{0x78FB,0x0,0x0}},
391  {0xF965,{0x4FBF,0x0,0x0}}, {0xF966,{0x5FA9,0x0,0x0}}, {0xF967,{0x4E0D,0x0,0x0}},
392  {0xF968,{0x6CCC,0x0,0x0}}, {0xF969,{0x6578,0x0,0x0}}, {0xF96A,{0x7D22,0x0,0x0}},
393  {0xF96B,{0x53C3,0x0,0x0}}, {0xF96C,{0x585E,0x0,0x0}}, {0xF96D,{0x7701,0x0,0x0}},
394  {0xF96E,{0x8449,0x0,0x0}}, {0xF96F,{0x8AAA,0x0,0x0}}, {0xF970,{0x6BBA,0x0,0x0}},
395  {0xF971,{0x8FB0,0x0,0x0}}, {0xF972,{0x6C88,0x0,0x0}}, {0xF973,{0x62FE,0x0,0x0}},
396  {0xF974,{0x82E5,0x0,0x0}}, {0xF975,{0x63A0,0x0,0x0}}, {0xF976,{0x7565,0x0,0x0}},
397  {0xF977,{0x4EAE,0x0,0x0}}, {0xF978,{0x5169,0x0,0x0}}, {0xF979,{0x51C9,0x0,0x0}},
398  {0xF97A,{0x6881,0x0,0x0}}, {0xF97B,{0x7CE7,0x0,0x0}}, {0xF97C,{0x826F,0x0,0x0}},
399  {0xF97D,{0x8AD2,0x0,0x0}}, {0xF97E,{0x91CF,0x0,0x0}}, {0xF97F,{0x52F5,0x0,0x0}},
400  {0xF980,{0x5442,0x0,0x0}}, {0xF981,{0x5973,0x0,0x0}}, {0xF982,{0x5EEC,0x0,0x0}},
401  {0xF983,{0x65C5,0x0,0x0}}, {0xF984,{0x6FFE,0x0,0x0}}, {0xF985,{0x792A,0x0,0x0}},
402  {0xF986,{0x95AD,0x0,0x0}}, {0xF987,{0x9A6A,0x0,0x0}}, {0xF988,{0x9E97,0x0,0x0}},
403  {0xF989,{0x9ECE,0x0,0x0}}, {0xF98A,{0x529B,0x0,0x0}}, {0xF98B,{0x66C6,0x0,0x0}},
404  {0xF98C,{0x6B77,0x0,0x0}}, {0xF98D,{0x8F62,0x0,0x0}}, {0xF98E,{0x5E74,0x0,0x0}},
405  {0xF98F,{0x6190,0x0,0x0}}, {0xF990,{0x6200,0x0,0x0}}, {0xF991,{0x649A,0x0,0x0}},
406  {0xF992,{0x6F23,0x0,0x0}}, {0xF993,{0x7149,0x0,0x0}}, {0xF994,{0x7489,0x0,0x0}},
407  {0xF995,{0x79CA,0x0,0x0}}, {0xF996,{0x7DF4,0x0,0x0}}, {0xF997,{0x806F,0x0,0x0}},
408  {0xF998,{0x8F26,0x0,0x0}}, {0xF999,{0x84EE,0x0,0x0}}, {0xF99A,{0x9023,0x0,0x0}},
409  {0xF99B,{0x934A,0x0,0x0}}, {0xF99C,{0x5217,0x0,0x0}}, {0xF99D,{0x52A3,0x0,0x0}},
410  {0xF99E,{0x54BD,0x0,0x0}}, {0xF99F,{0x70C8,0x0,0x0}}, {0xF9A0,{0x88C2,0x0,0x0}},
411  {0xF9A1,{0x8AAA,0x0,0x0}}, {0xF9A2,{0x5EC9,0x0,0x0}}, {0xF9A3,{0x5FF5,0x0,0x0}},
412  {0xF9A4,{0x637B,0x0,0x0}}, {0xF9A5,{0x6BAE,0x0,0x0}}, {0xF9A6,{0x7C3E,0x0,0x0}},
413  {0xF9A7,{0x7375,0x0,0x0}}, {0xF9A8,{0x4EE4,0x0,0x0}}, {0xF9A9,{0x56F9,0x0,0x0}},
414  {0xF9AA,{0x5BE7,0x0,0x0}}, {0xF9AB,{0x5DBA,0x0,0x0}}, {0xF9AC,{0x601C,0x0,0x0}},
415  {0xF9AD,{0x73B2,0x0,0x0}}, {0xF9AE,{0x7469,0x0,0x0}}, {0xF9AF,{0x7F9A,0x0,0x0}},
416  {0xF9B0,{0x8046,0x0,0x0}}, {0xF9B1,{0x9234,0x0,0x0}}, {0xF9B2,{0x96F6,0x0,0x0}},
417  {0xF9B3,{0x9748,0x0,0x0}}, {0xF9B4,{0x9818,0x0,0x0}}, {0xF9B5,{0x4F8B,0x0,0x0}},
418  {0xF9B6,{0x79AE,0x0,0x0}}, {0xF9B7,{0x91B4,0x0,0x0}}, {0xF9B8,{0x96B8,0x0,0x0}},
419  {0xF9B9,{0x60E1,0x0,0x0}}, {0xF9BA,{0x4E86,0x0,0x0}}, {0xF9BB,{0x50DA,0x0,0x0}},
420  {0xF9BC,{0x5BEE,0x0,0x0}}, {0xF9BD,{0x5C3F,0x0,0x0}}, {0xF9BE,{0x6599,0x0,0x0}},
421  {0xF9BF,{0x6A02,0x0,0x0}}, {0xF9C0,{0x71CE,0x0,0x0}}, {0xF9C1,{0x7642,0x0,0x0}},
422  {0xF9C2,{0x84FC,0x0,0x0}}, {0xF9C3,{0x907C,0x0,0x0}}, {0xF9C4,{0x9F8D,0x0,0x0}},
423  {0xF9C5,{0x6688,0x0,0x0}}, {0xF9C6,{0x962E,0x0,0x0}}, {0xF9C7,{0x5289,0x0,0x0}},
424  {0xF9C8,{0x677B,0x0,0x0}}, {0xF9C9,{0x67F3,0x0,0x0}}, {0xF9CA,{0x6D41,0x0,0x0}},
425  {0xF9CB,{0x6E9C,0x0,0x0}}, {0xF9CC,{0x7409,0x0,0x0}}, {0xF9CD,{0x7559,0x0,0x0}},
426  {0xF9CE,{0x786B,0x0,0x0}}, {0xF9CF,{0x7D10,0x0,0x0}}, {0xF9D0,{0x985E,0x0,0x0}},
427  {0xF9D1,{0x516D,0x0,0x0}}, {0xF9D2,{0x622E,0x0,0x0}}, {0xF9D3,{0x9678,0x0,0x0}},
428  {0xF9D4,{0x502B,0x0,0x0}}, {0xF9D5,{0x5D19,0x0,0x0}}, {0xF9D6,{0x6DEA,0x0,0x0}},
429  {0xF9D7,{0x8F2A,0x0,0x0}}, {0xF9D8,{0x5F8B,0x0,0x0}}, {0xF9D9,{0x6144,0x0,0x0}},
430  {0xF9DA,{0x6817,0x0,0x0}}, {0xF9DB,{0x7387,0x0,0x0}}, {0xF9DC,{0x9686,0x0,0x0}},
431  {0xF9DD,{0x5229,0x0,0x0}}, {0xF9DE,{0x540F,0x0,0x0}}, {0xF9DF,{0x5C65,0x0,0x0}},
432  {0xF9E0,{0x6613,0x0,0x0}}, {0xF9E1,{0x674E,0x0,0x0}}, {0xF9E2,{0x68A8,0x0,0x0}},
433  {0xF9E3,{0x6CE5,0x0,0x0}}, {0xF9E4,{0x7406,0x0,0x0}}, {0xF9E5,{0x75E2,0x0,0x0}},
434  {0xF9E6,{0x7F79,0x0,0x0}}, {0xF9E7,{0x88CF,0x0,0x0}}, {0xF9E8,{0x88E1,0x0,0x0}},
435  {0xF9E9,{0x91CC,0x0,0x0}}, {0xF9EA,{0x96E2,0x0,0x0}}, {0xF9EB,{0x533F,0x0,0x0}},
436  {0xF9EC,{0x6EBA,0x0,0x0}}, {0xF9ED,{0x541D,0x0,0x0}}, {0xF9EE,{0x71D0,0x0,0x0}},
437  {0xF9EF,{0x7498,0x0,0x0}}, {0xF9F0,{0x85FA,0x0,0x0}}, {0xF9F1,{0x96A3,0x0,0x0}},
438  {0xF9F2,{0x9C57,0x0,0x0}}, {0xF9F3,{0x9E9F,0x0,0x0}}, {0xF9F4,{0x6797,0x0,0x0}},
439  {0xF9F5,{0x6DCB,0x0,0x0}}, {0xF9F6,{0x81E8,0x0,0x0}}, {0xF9F7,{0x7ACB,0x0,0x0}},
440  {0xF9F8,{0x7B20,0x0,0x0}}, {0xF9F9,{0x7C92,0x0,0x0}}, {0xF9FA,{0x72C0,0x0,0x0}},
441  {0xF9FB,{0x7099,0x0,0x0}}, {0xF9FC,{0x8B58,0x0,0x0}}, {0xF9FD,{0x4EC0,0x0,0x0}},
442  {0xF9FE,{0x8336,0x0,0x0}}, {0xF9FF,{0x523A,0x0,0x0}}, {0xFA00,{0x5207,0x0,0x0}},
443  {0xFA01,{0x5EA6,0x0,0x0}}, {0xFA02,{0x62D3,0x0,0x0}}, {0xFA03,{0x7CD6,0x0,0x0}},
444  {0xFA04,{0x5B85,0x0,0x0}}, {0xFA05,{0x6D1E,0x0,0x0}}, {0xFA06,{0x66B4,0x0,0x0}},
445  {0xFA07,{0x8F3B,0x0,0x0}}, {0xFA08,{0x884C,0x0,0x0}}, {0xFA09,{0x964D,0x0,0x0}},
446  {0xFA0A,{0x898B,0x0,0x0}}, {0xFA0B,{0x5ED3,0x0,0x0}}, {0xFA0C,{0x5140,0x0,0x0}},
447  {0xFA0D,{0x55C0,0x0,0x0}}, {0xFA10,{0x585A,0x0,0x0}}, {0xFA12,{0x6674,0x0,0x0}},
448  {0xFA15,{0x51DE,0x0,0x0}}, {0xFA16,{0x732A,0x0,0x0}}, {0xFA17,{0x76CA,0x0,0x0}},
449  {0xFA18,{0x793C,0x0,0x0}}, {0xFA19,{0x795E,0x0,0x0}}, {0xFA1A,{0x7965,0x0,0x0}},
450  {0xFA1B,{0x798F,0x0,0x0}}, {0xFA1C,{0x9756,0x0,0x0}}, {0xFA1D,{0x7CBE,0x0,0x0}},
451  {0xFA1E,{0x7FBD,0x0,0x0}}, {0xFA20,{0x8612,0x0,0x0}}, {0xFA22,{0x8AF8,0x0,0x0}},
452  {0xFA25,{0x9038,0x0,0x0}}, {0xFA26,{0x90FD,0x0,0x0}}, {0xFA2A,{0x98EF,0x0,0x0}},
453  {0xFA2B,{0x98FC,0x0,0x0}}, {0xFA2C,{0x9928,0x0,0x0}}, {0xFA2D,{0x9DB4,0x0,0x0}},
454  {0xFB1F,{0x5F2,0x5B7,0x0}}, {0xFB2A,{0x5E9,0x5C1,0x0}}, {0xFB2B,{0x5E9,0x5C2,0x0}},
455  {0xFB2C,{0x5E9,0x5BC,0x5C1}}, {0xFB2D,{0x5E9,0x5BC,0x5C2}}, {0xFB2E,{0x5D0,0x5B7,0x0}},
456  {0xFB2F,{0x5D0,0x5B8,0x0}}, {0xFB30,{0x5D0,0x5BC,0x0}}, {0xFB31,{0x5D1,0x5BC,0x0}},
457  {0xFB32,{0x5D2,0x5BC,0x0}}, {0xFB33,{0x5D3,0x5BC,0x0}}, {0xFB34,{0x5D4,0x5BC,0x0}},
458  {0xFB35,{0x5D5,0x5BC,0x0}}, {0xFB36,{0x5D6,0x5BC,0x0}}, {0xFB38,{0x5D8,0x5BC,0x0}},
459  {0xFB39,{0x5D9,0x5BC,0x0}}, {0xFB3A,{0x5DA,0x5BC,0x0}}, {0xFB3B,{0x5DB,0x5BC,0x0}},
460  {0xFB3C,{0x5DC,0x5BC,0x0}}, {0xFB3E,{0x5DE,0x5BC,0x0}}, {0xFB40,{0x5E0,0x5BC,0x0}},
461  {0xFB41,{0x5E1,0x5BC,0x0}}, {0xFB43,{0x5E3,0x5BC,0x0}}, {0xFB44,{0x5E4,0x5BC,0x0}},
462  {0xFB46,{0x5E6,0x5BC,0x0}}, {0xFB47,{0x5E7,0x5BC,0x0}}, {0xFB48,{0x5E8,0x5BC,0x0}},
463  {0xFB49,{0x5E9,0x5BC,0x0}}, {0xFB4A,{0x5EA,0x5BC,0x0}}, {0xFB4B,{0x5D5,0x5B9,0x0}},
464  {0xFB4C,{0x5D1,0x5BF,0x0}}, {0xFB4D,{0x5DB,0x5BF,0x0}}, {0xFB4E,{0x5E4,0x5BF,0x0}}
465};
466
467
468/* All upper-case translations are included here */
469
470#define NUM_TOUPPER_INFO 677
471static const unirelate toupper_info[NUM_TOUPPER_INFO] = {
472  {0x61,0x41}, {0x62,0x42}, {0x63,0x43}, {0x64,0x44}, {0x65,0x45},
473  {0x66,0x46}, {0x67,0x47}, {0x68,0x48}, {0x69,0x49}, {0x6A,0x4A},
474  {0x6B,0x4B}, {0x6C,0x4C}, {0x6D,0x4D}, {0x6E,0x4E}, {0x6F,0x4F},
475  {0x70,0x50}, {0x71,0x51}, {0x72,0x52}, {0x73,0x53}, {0x74,0x54},
476  {0x75,0x55}, {0x76,0x56}, {0x77,0x57}, {0x78,0x58}, {0x79,0x59},
477  {0x7A,0x5A}, {0xE0,0xC0}, {0xE1,0xC1}, {0xE2,0xC2}, {0xE3,0xC3},
478  {0xE4,0xC4}, {0xE5,0xC5}, {0xE6,0xC6}, {0xE7,0xC7}, {0xE8,0xC8},
479  {0xE9,0xC9}, {0xEA,0xCA}, {0xEB,0xCB}, {0xEC,0xCC}, {0xED,0xCD},
480  {0xEE,0xCE}, {0xEF,0xCF}, {0xF0,0xD0}, {0xF1,0xD1}, {0xF2,0xD2},
481  {0xF3,0xD3}, {0xF4,0xD4}, {0xF5,0xD5}, {0xF6,0xD6}, {0xF8,0xD8},
482  {0xF9,0xD9}, {0xFA,0xDA}, {0xFB,0xDB}, {0xFC,0xDC}, {0xFD,0xDD},
483  {0xFE,0xDE}, {0xFF,0x178}, {0x101,0x100}, {0x103,0x102}, {0x105,0x104},
484  {0x107,0x106}, {0x109,0x108}, {0x10B,0x10A}, {0x10D,0x10C}, {0x10F,0x10E},
485  {0x111,0x110}, {0x113,0x112}, {0x115,0x114}, {0x117,0x116}, {0x119,0x118},
486  {0x11B,0x11A}, {0x11D,0x11C}, {0x11F,0x11E}, {0x121,0x120}, {0x123,0x122},
487  {0x125,0x124}, {0x127,0x126}, {0x129,0x128}, {0x12B,0x12A}, {0x12D,0x12C},
488  {0x12F,0x12E}, {0x131,0x49}, {0x133,0x132}, {0x135,0x134}, {0x137,0x136},
489  {0x13A,0x139}, {0x13C,0x13B}, {0x13E,0x13D}, {0x140,0x13F}, {0x142,0x141},
490  {0x144,0x143}, {0x146,0x145}, {0x148,0x147}, {0x14B,0x14A}, {0x14D,0x14C},
491  {0x14F,0x14E}, {0x151,0x150}, {0x153,0x152}, {0x155,0x154}, {0x157,0x156},
492  {0x159,0x158}, {0x15B,0x15A}, {0x15D,0x15C}, {0x15F,0x15E}, {0x161,0x160},
493  {0x163,0x162}, {0x165,0x164}, {0x167,0x166}, {0x169,0x168}, {0x16B,0x16A},
494  {0x16D,0x16C}, {0x16F,0x16E}, {0x171,0x170}, {0x173,0x172}, {0x175,0x174},
495  {0x177,0x176}, {0x17A,0x179}, {0x17C,0x17B}, {0x17E,0x17D}, {0x17F,0x53},
496  {0x183,0x182}, {0x185,0x184}, {0x188,0x187}, {0x18C,0x18B}, {0x192,0x191},
497  {0x199,0x198}, {0x1A1,0x1A0}, {0x1A3,0x1A2}, {0x1A5,0x1A4}, {0x1A8,0x1A7},
498  {0x1AD,0x1AC}, {0x1B0,0x1AF}, {0x1B4,0x1B3}, {0x1B6,0x1B5}, {0x1B9,0x1B8},
499  {0x1BD,0x1BC}, {0x1C5,0x1C4}, {0x1C6,0x1C4}, {0x1C8,0x1C7}, {0x1C9,0x1C7},
500  {0x1CB,0x1CA}, {0x1CC,0x1CA}, {0x1CE,0x1CD}, {0x1D0,0x1CF}, {0x1D2,0x1D1},
501  {0x1D4,0x1D3}, {0x1D6,0x1D5}, {0x1D8,0x1D7}, {0x1DA,0x1D9}, {0x1DC,0x1DB},
502  {0x1DD,0x18E}, {0x1DF,0x1DE}, {0x1E1,0x1E0}, {0x1E3,0x1E2}, {0x1E5,0x1E4},
503  {0x1E7,0x1E6}, {0x1E9,0x1E8}, {0x1EB,0x1EA}, {0x1ED,0x1EC}, {0x1EF,0x1EE},
504  {0x1F2,0x1F1}, {0x1F3,0x1F1}, {0x1F5,0x1F4}, {0x1FB,0x1FA}, {0x1FD,0x1FC},
505  {0x1FF,0x1FE}, {0x201,0x200}, {0x203,0x202}, {0x205,0x204}, {0x207,0x206},
506  {0x209,0x208}, {0x20B,0x20A}, {0x20D,0x20C}, {0x20F,0x20E}, {0x211,0x210},
507  {0x213,0x212}, {0x215,0x214}, {0x217,0x216}, {0x253,0x181}, {0x254,0x186},
508  {0x256,0x189}, {0x257,0x18A}, {0x259,0x18F}, {0x25B,0x190}, {0x260,0x193},
509  {0x263,0x194}, {0x268,0x197}, {0x269,0x196}, {0x26F,0x19C}, {0x272,0x19D},
510  {0x275,0x19F}, {0x283,0x1A9}, {0x288,0x1AE}, {0x28A,0x1B1}, {0x28B,0x1B2},
511  {0x292,0x1B7}, {0x3AC,0x386}, {0x3AD,0x388}, {0x3AE,0x389}, {0x3AF,0x38A},
512  {0x3B1,0x391}, {0x3B2,0x392}, {0x3B3,0x393}, {0x3B4,0x394}, {0x3B5,0x395},
513  {0x3B6,0x396}, {0x3B7,0x397}, {0x3B8,0x398}, {0x3B9,0x399}, {0x3BA,0x39A},
514  {0x3BB,0x39B}, {0x3BC,0x39C}, {0x3BD,0x39D}, {0x3BE,0x39E}, {0x3BF,0x39F},
515  {0x3C0,0x3A0}, {0x3C1,0x3A1}, {0x3C2,0x3A3}, {0x3C3,0x3A3}, {0x3C4,0x3A4},
516  {0x3C5,0x3A5}, {0x3C6,0x3A6}, {0x3C7,0x3A7}, {0x3C8,0x3A8}, {0x3C9,0x3A9},
517  {0x3CA,0x3AA}, {0x3CB,0x3AB}, {0x3CC,0x38C}, {0x3CD,0x38E}, {0x3CE,0x38F},
518  {0x3D0,0x392}, {0x3D1,0x398}, {0x3D5,0x3A6}, {0x3D6,0x3A0}, {0x3E3,0x3E2},
519  {0x3E5,0x3E4}, {0x3E7,0x3E6}, {0x3E9,0x3E8}, {0x3EB,0x3EA}, {0x3ED,0x3EC},
520  {0x3EF,0x3EE}, {0x3F0,0x39A}, {0x3F1,0x3A1}, {0x3F2,0x3A3}, {0x430,0x410},
521  {0x431,0x411}, {0x432,0x412}, {0x433,0x413}, {0x434,0x414}, {0x435,0x415},
522  {0x436,0x416}, {0x437,0x417}, {0x438,0x418}, {0x439,0x419}, {0x43A,0x41A},
523  {0x43B,0x41B}, {0x43C,0x41C}, {0x43D,0x41D}, {0x43E,0x41E}, {0x43F,0x41F},
524  {0x440,0x420}, {0x441,0x421}, {0x442,0x422}, {0x443,0x423}, {0x444,0x424},
525  {0x445,0x425}, {0x446,0x426}, {0x447,0x427}, {0x448,0x428}, {0x449,0x429},
526  {0x44A,0x42A}, {0x44B,0x42B}, {0x44C,0x42C}, {0x44D,0x42D}, {0x44E,0x42E},
527  {0x44F,0x42F}, {0x451,0x401}, {0x452,0x402}, {0x453,0x403}, {0x454,0x404},
528  {0x455,0x405}, {0x456,0x406}, {0x457,0x407}, {0x458,0x408}, {0x459,0x409},
529  {0x45A,0x40A}, {0x45B,0x40B}, {0x45C,0x40C}, {0x45E,0x40E}, {0x45F,0x40F},
530  {0x461,0x460}, {0x463,0x462}, {0x465,0x464}, {0x467,0x466}, {0x469,0x468},
531  {0x46B,0x46A}, {0x46D,0x46C}, {0x46F,0x46E}, {0x471,0x470}, {0x473,0x472},
532  {0x475,0x474}, {0x477,0x476}, {0x479,0x478}, {0x47B,0x47A}, {0x47D,0x47C},
533  {0x47F,0x47E}, {0x481,0x480}, {0x491,0x490}, {0x493,0x492}, {0x495,0x494},
534  {0x497,0x496}, {0x499,0x498}, {0x49B,0x49A}, {0x49D,0x49C}, {0x49F,0x49E},
535  {0x4A1,0x4A0}, {0x4A3,0x4A2}, {0x4A5,0x4A4}, {0x4A7,0x4A6}, {0x4A9,0x4A8},
536  {0x4AB,0x4AA}, {0x4AD,0x4AC}, {0x4AF,0x4AE}, {0x4B1,0x4B0}, {0x4B3,0x4B2},
537  {0x4B5,0x4B4}, {0x4B7,0x4B6}, {0x4B9,0x4B8}, {0x4BB,0x4BA}, {0x4BD,0x4BC},
538  {0x4BF,0x4BE}, {0x4C2,0x4C1}, {0x4C4,0x4C3}, {0x4C8,0x4C7}, {0x4CC,0x4CB},
539  {0x4D1,0x4D0}, {0x4D3,0x4D2}, {0x4D5,0x4D4}, {0x4D7,0x4D6}, {0x4D9,0x4D8},
540  {0x4DB,0x4DA}, {0x4DD,0x4DC}, {0x4DF,0x4DE}, {0x4E1,0x4E0}, {0x4E3,0x4E2},
541  {0x4E5,0x4E4}, {0x4E7,0x4E6}, {0x4E9,0x4E8}, {0x4EB,0x4EA}, {0x4EF,0x4EE},
542  {0x4F1,0x4F0}, {0x4F3,0x4F2}, {0x4F5,0x4F4}, {0x4F9,0x4F8}, {0x561,0x531},
543  {0x562,0x532}, {0x563,0x533}, {0x564,0x534}, {0x565,0x535}, {0x566,0x536},
544  {0x567,0x537}, {0x568,0x538}, {0x569,0x539}, {0x56A,0x53A}, {0x56B,0x53B},
545  {0x56C,0x53C}, {0x56D,0x53D}, {0x56E,0x53E}, {0x56F,0x53F}, {0x570,0x540},
546  {0x571,0x541}, {0x572,0x542}, {0x573,0x543}, {0x574,0x544}, {0x575,0x545},
547  {0x576,0x546}, {0x577,0x547}, {0x578,0x548}, {0x579,0x549}, {0x57A,0x54A},
548  {0x57B,0x54B}, {0x57C,0x54C}, {0x57D,0x54D}, {0x57E,0x54E}, {0x57F,0x54F},
549  {0x580,0x550}, {0x581,0x551}, {0x582,0x552}, {0x583,0x553}, {0x584,0x554},
550  {0x585,0x555}, {0x586,0x556}, {0x1E01,0x1E00}, {0x1E03,0x1E02}, {0x1E05,0x1E04},
551  {0x1E07,0x1E06}, {0x1E09,0x1E08}, {0x1E0B,0x1E0A}, {0x1E0D,0x1E0C}, {0x1E0F,0x1E0E},
552  {0x1E11,0x1E10}, {0x1E13,0x1E12}, {0x1E15,0x1E14}, {0x1E17,0x1E16}, {0x1E19,0x1E18},
553  {0x1E1B,0x1E1A}, {0x1E1D,0x1E1C}, {0x1E1F,0x1E1E}, {0x1E21,0x1E20}, {0x1E23,0x1E22},
554  {0x1E25,0x1E24}, {0x1E27,0x1E26}, {0x1E29,0x1E28}, {0x1E2B,0x1E2A}, {0x1E2D,0x1E2C},
555  {0x1E2F,0x1E2E}, {0x1E31,0x1E30}, {0x1E33,0x1E32}, {0x1E35,0x1E34}, {0x1E37,0x1E36},
556  {0x1E39,0x1E38}, {0x1E3B,0x1E3A}, {0x1E3D,0x1E3C}, {0x1E3F,0x1E3E}, {0x1E41,0x1E40},
557  {0x1E43,0x1E42}, {0x1E45,0x1E44}, {0x1E47,0x1E46}, {0x1E49,0x1E48}, {0x1E4B,0x1E4A},
558  {0x1E4D,0x1E4C}, {0x1E4F,0x1E4E}, {0x1E51,0x1E50}, {0x1E53,0x1E52}, {0x1E55,0x1E54},
559  {0x1E57,0x1E56}, {0x1E59,0x1E58}, {0x1E5B,0x1E5A}, {0x1E5D,0x1E5C}, {0x1E5F,0x1E5E},
560  {0x1E61,0x1E60}, {0x1E63,0x1E62}, {0x1E65,0x1E64}, {0x1E67,0x1E66}, {0x1E69,0x1E68},
561  {0x1E6B,0x1E6A}, {0x1E6D,0x1E6C}, {0x1E6F,0x1E6E}, {0x1E71,0x1E70}, {0x1E73,0x1E72},
562  {0x1E75,0x1E74}, {0x1E77,0x1E76}, {0x1E79,0x1E78}, {0x1E7B,0x1E7A}, {0x1E7D,0x1E7C},
563  {0x1E7F,0x1E7E}, {0x1E81,0x1E80}, {0x1E83,0x1E82}, {0x1E85,0x1E84}, {0x1E87,0x1E86},
564  {0x1E89,0x1E88}, {0x1E8B,0x1E8A}, {0x1E8D,0x1E8C}, {0x1E8F,0x1E8E}, {0x1E91,0x1E90},
565  {0x1E93,0x1E92}, {0x1E95,0x1E94}, {0x1E9B,0x1E60}, {0x1EA1,0x1EA0}, {0x1EA3,0x1EA2},
566  {0x1EA5,0x1EA4}, {0x1EA7,0x1EA6}, {0x1EA9,0x1EA8}, {0x1EAB,0x1EAA}, {0x1EAD,0x1EAC},
567  {0x1EAF,0x1EAE}, {0x1EB1,0x1EB0}, {0x1EB3,0x1EB2}, {0x1EB5,0x1EB4}, {0x1EB7,0x1EB6},
568  {0x1EB9,0x1EB8}, {0x1EBB,0x1EBA}, {0x1EBD,0x1EBC}, {0x1EBF,0x1EBE}, {0x1EC1,0x1EC0},
569  {0x1EC3,0x1EC2}, {0x1EC5,0x1EC4}, {0x1EC7,0x1EC6}, {0x1EC9,0x1EC8}, {0x1ECB,0x1ECA},
570  {0x1ECD,0x1ECC}, {0x1ECF,0x1ECE}, {0x1ED1,0x1ED0}, {0x1ED3,0x1ED2}, {0x1ED5,0x1ED4},
571  {0x1ED7,0x1ED6}, {0x1ED9,0x1ED8}, {0x1EDB,0x1EDA}, {0x1EDD,0x1EDC}, {0x1EDF,0x1EDE},
572  {0x1EE1,0x1EE0}, {0x1EE3,0x1EE2}, {0x1EE5,0x1EE4}, {0x1EE7,0x1EE6}, {0x1EE9,0x1EE8},
573  {0x1EEB,0x1EEA}, {0x1EED,0x1EEC}, {0x1EEF,0x1EEE}, {0x1EF1,0x1EF0}, {0x1EF3,0x1EF2},
574  {0x1EF5,0x1EF4}, {0x1EF7,0x1EF6}, {0x1EF9,0x1EF8}, {0x1F00,0x1F08}, {0x1F01,0x1F09},
575  {0x1F02,0x1F0A}, {0x1F03,0x1F0B}, {0x1F04,0x1F0C}, {0x1F05,0x1F0D}, {0x1F06,0x1F0E},
576  {0x1F07,0x1F0F}, {0x1F10,0x1F18}, {0x1F11,0x1F19}, {0x1F12,0x1F1A}, {0x1F13,0x1F1B},
577  {0x1F14,0x1F1C}, {0x1F15,0x1F1D}, {0x1F20,0x1F28}, {0x1F21,0x1F29}, {0x1F22,0x1F2A},
578  {0x1F23,0x1F2B}, {0x1F24,0x1F2C}, {0x1F25,0x1F2D}, {0x1F26,0x1F2E}, {0x1F27,0x1F2F},
579  {0x1F30,0x1F38}, {0x1F31,0x1F39}, {0x1F32,0x1F3A}, {0x1F33,0x1F3B}, {0x1F34,0x1F3C},
580  {0x1F35,0x1F3D}, {0x1F36,0x1F3E}, {0x1F37,0x1F3F}, {0x1F40,0x1F48}, {0x1F41,0x1F49},
581  {0x1F42,0x1F4A}, {0x1F43,0x1F4B}, {0x1F44,0x1F4C}, {0x1F45,0x1F4D}, {0x1F51,0x1F59},
582  {0x1F53,0x1F5B}, {0x1F55,0x1F5D}, {0x1F57,0x1F5F}, {0x1F60,0x1F68}, {0x1F61,0x1F69},
583  {0x1F62,0x1F6A}, {0x1F63,0x1F6B}, {0x1F64,0x1F6C}, {0x1F65,0x1F6D}, {0x1F66,0x1F6E},
584  {0x1F67,0x1F6F}, {0x1F70,0x1FBA}, {0x1F71,0x1FBB}, {0x1F72,0x1FC8}, {0x1F73,0x1FC9},
585  {0x1F74,0x1FCA}, {0x1F75,0x1FCB}, {0x1F76,0x1FDA}, {0x1F77,0x1FDB}, {0x1F78,0x1FF8},
586  {0x1F79,0x1FF9}, {0x1F7A,0x1FEA}, {0x1F7B,0x1FEB}, {0x1F7C,0x1FFA}, {0x1F7D,0x1FFB},
587  {0x1F80,0x1F88}, {0x1F81,0x1F89}, {0x1F82,0x1F8A}, {0x1F83,0x1F8B}, {0x1F84,0x1F8C},
588  {0x1F85,0x1F8D}, {0x1F86,0x1F8E}, {0x1F87,0x1F8F}, {0x1F90,0x1F98}, {0x1F91,0x1F99},
589  {0x1F92,0x1F9A}, {0x1F93,0x1F9B}, {0x1F94,0x1F9C}, {0x1F95,0x1F9D}, {0x1F96,0x1F9E},
590  {0x1F97,0x1F9F}, {0x1FA0,0x1FA8}, {0x1FA1,0x1FA9}, {0x1FA2,0x1FAA}, {0x1FA3,0x1FAB},
591  {0x1FA4,0x1FAC}, {0x1FA5,0x1FAD}, {0x1FA6,0x1FAE}, {0x1FA7,0x1FAF}, {0x1FB0,0x1FB8},
592  {0x1FB1,0x1FB9}, {0x1FB3,0x1FBC}, {0x1FC3,0x1FCC}, {0x1FD0,0x1FD8}, {0x1FD1,0x1FD9},
593  {0x1FE0,0x1FE8}, {0x1FE1,0x1FE9}, {0x1FE5,0x1FEC}, {0x1FF3,0x1FFC}, {0x2170,0x2160},
594  {0x2171,0x2161}, {0x2172,0x2162}, {0x2173,0x2163}, {0x2174,0x2164}, {0x2175,0x2165},
595  {0x2176,0x2166}, {0x2177,0x2167}, {0x2178,0x2168}, {0x2179,0x2169}, {0x217A,0x216A},
596  {0x217B,0x216B}, {0x217C,0x216C}, {0x217D,0x216D}, {0x217E,0x216E}, {0x217F,0x216F},
597  {0x24D0,0x24B6}, {0x24D1,0x24B7}, {0x24D2,0x24B8}, {0x24D3,0x24B9}, {0x24D4,0x24BA},
598  {0x24D5,0x24BB}, {0x24D6,0x24BC}, {0x24D7,0x24BD}, {0x24D8,0x24BE}, {0x24D9,0x24BF},
599  {0x24DA,0x24C0}, {0x24DB,0x24C1}, {0x24DC,0x24C2}, {0x24DD,0x24C3}, {0x24DE,0x24C4},
600  {0x24DF,0x24C5}, {0x24E0,0x24C6}, {0x24E1,0x24C7}, {0x24E2,0x24C8}, {0x24E3,0x24C9},
601  {0x24E4,0x24CA}, {0x24E5,0x24CB}, {0x24E6,0x24CC}, {0x24E7,0x24CD}, {0x24E8,0x24CE},
602  {0x24E9,0x24CF}, {0xFF41,0xFF21}, {0xFF42,0xFF22}, {0xFF43,0xFF23}, {0xFF44,0xFF24},
603  {0xFF45,0xFF25}, {0xFF46,0xFF26}, {0xFF47,0xFF27}, {0xFF48,0xFF28}, {0xFF49,0xFF29},
604  {0xFF4A,0xFF2A}, {0xFF4B,0xFF2B}, {0xFF4C,0xFF2C}, {0xFF4D,0xFF2D}, {0xFF4E,0xFF2E},
605  {0xFF4F,0xFF2F}, {0xFF50,0xFF30}, {0xFF51,0xFF31}, {0xFF52,0xFF32}, {0xFF53,0xFF33},
606  {0xFF54,0xFF34}, {0xFF55,0xFF35}, {0xFF56,0xFF36}, {0xFF57,0xFF37}, {0xFF58,0xFF38},
607  {0xFF59,0xFF39}, {0xFF5A,0xFF3A}
608};
609
610
611
612/* All lower-case translations are included here */
613
614#define NUM_TOLOWER_INFO 705
615static const unirelate tolower_info[NUM_TOLOWER_INFO] = {
616  {0x41,0x61}, {0x42,0x62}, {0x43,0x63}, {0x44,0x64}, {0x45,0x65},
617  {0x46,0x66}, {0x47,0x67}, {0x48,0x68}, {0x49,0x69}, {0x4A,0x6A},
618  {0x4B,0x6B}, {0x4C,0x6C}, {0x4D,0x6D}, {0x4E,0x6E}, {0x4F,0x6F},
619  {0x50,0x70}, {0x51,0x71}, {0x52,0x72}, {0x53,0x73}, {0x54,0x74},
620  {0x55,0x75}, {0x56,0x76}, {0x57,0x77}, {0x58,0x78}, {0x59,0x79},
621  {0x5A,0x7A}, {0xC0,0xE0}, {0xC1,0xE1}, {0xC2,0xE2}, {0xC3,0xE3},
622  {0xC4,0xE4}, {0xC5,0xE5}, {0xC6,0xE6}, {0xC7,0xE7}, {0xC8,0xE8},
623  {0xC9,0xE9}, {0xCA,0xEA}, {0xCB,0xEB}, {0xCC,0xEC}, {0xCD,0xED},
624  {0xCE,0xEE}, {0xCF,0xEF}, {0xD0,0xF0}, {0xD1,0xF1}, {0xD2,0xF2},
625  {0xD3,0xF3}, {0xD4,0xF4}, {0xD5,0xF5}, {0xD6,0xF6}, {0xD8,0xF8},
626  {0xD9,0xF9}, {0xDA,0xFA}, {0xDB,0xFB}, {0xDC,0xFC}, {0xDD,0xFD},
627  {0xDE,0xFE}, {0x100,0x101}, {0x102,0x103}, {0x104,0x105}, {0x106,0x107},
628  {0x108,0x109}, {0x10A,0x10B}, {0x10C,0x10D}, {0x10E,0x10F}, {0x110,0x111},
629  {0x112,0x113}, {0x114,0x115}, {0x116,0x117}, {0x118,0x119}, {0x11A,0x11B},
630  {0x11C,0x11D}, {0x11E,0x11F}, {0x120,0x121}, {0x122,0x123}, {0x124,0x125},
631  {0x126,0x127}, {0x128,0x129}, {0x12A,0x12B}, {0x12C,0x12D}, {0x12E,0x12F},
632  {0x130,0x69}, {0x132,0x133}, {0x134,0x135}, {0x136,0x137}, {0x139,0x13A},
633  {0x13B,0x13C}, {0x13D,0x13E}, {0x13F,0x140}, {0x141,0x142}, {0x143,0x144},
634  {0x145,0x146}, {0x147,0x148}, {0x14A,0x14B}, {0x14C,0x14D}, {0x14E,0x14F},
635  {0x150,0x151}, {0x152,0x153}, {0x154,0x155}, {0x156,0x157}, {0x158,0x159},
636  {0x15A,0x15B}, {0x15C,0x15D}, {0x15E,0x15F}, {0x160,0x161}, {0x162,0x163},
637  {0x164,0x165}, {0x166,0x167}, {0x168,0x169}, {0x16A,0x16B}, {0x16C,0x16D},
638  {0x16E,0x16F}, {0x170,0x171}, {0x172,0x173}, {0x174,0x175}, {0x176,0x177},
639  {0x178,0xFF}, {0x179,0x17A}, {0x17B,0x17C}, {0x17D,0x17E}, {0x181,0x253},
640  {0x182,0x183}, {0x184,0x185}, {0x186,0x254}, {0x187,0x188}, {0x189,0x256},
641  {0x18A,0x257}, {0x18B,0x18C}, {0x18E,0x1DD}, {0x18F,0x259}, {0x190,0x25B},
642  {0x191,0x192}, {0x193,0x260}, {0x194,0x263}, {0x196,0x269}, {0x197,0x268},
643  {0x198,0x199}, {0x19C,0x26F}, {0x19D,0x272}, {0x19F,0x275}, {0x1A0,0x1A1},
644  {0x1A2,0x1A3}, {0x1A4,0x1A5}, {0x1A7,0x1A8}, {0x1A9,0x283}, {0x1AC,0x1AD},
645  {0x1AE,0x288}, {0x1AF,0x1B0}, {0x1B1,0x28A}, {0x1B2,0x28B}, {0x1B3,0x1B4},
646  {0x1B5,0x1B6}, {0x1B7,0x292}, {0x1B8,0x1B9}, {0x1BC,0x1BD}, {0x1C4,0x1C6},
647  {0x1C5,0x1C6}, {0x1C7,0x1C9}, {0x1C8,0x1C9}, {0x1CA,0x1CC}, {0x1CB,0x1CC},
648  {0x1CD,0x1CE}, {0x1CF,0x1D0}, {0x1D1,0x1D2}, {0x1D3,0x1D4}, {0x1D5,0x1D6},
649  {0x1D7,0x1D8}, {0x1D9,0x1DA}, {0x1DB,0x1DC}, {0x1DE,0x1DF}, {0x1E0,0x1E1},
650  {0x1E2,0x1E3}, {0x1E4,0x1E5}, {0x1E6,0x1E7}, {0x1E8,0x1E9}, {0x1EA,0x1EB},
651  {0x1EC,0x1ED}, {0x1EE,0x1EF}, {0x1F1,0x1F3}, {0x1F2,0x1F3}, {0x1F4,0x1F5},
652  {0x1FA,0x1FB}, {0x1FC,0x1FD}, {0x1FE,0x1FF}, {0x200,0x201}, {0x202,0x203},
653  {0x204,0x205}, {0x206,0x207}, {0x208,0x209}, {0x20A,0x20B}, {0x20C,0x20D},
654  {0x20E,0x20F}, {0x210,0x211}, {0x212,0x213}, {0x214,0x215}, {0x216,0x217},
655  {0x386,0x3AC}, {0x388,0x3AD}, {0x389,0x3AE}, {0x38A,0x3AF}, {0x38C,0x3CC},
656  {0x38E,0x3CD}, {0x38F,0x3CE}, {0x391,0x3B1}, {0x392,0x3B2}, {0x393,0x3B3},
657  {0x394,0x3B4}, {0x395,0x3B5}, {0x396,0x3B6}, {0x397,0x3B7}, {0x398,0x3B8},
658  {0x399,0x3B9}, {0x39A,0x3BA}, {0x39B,0x3BB}, {0x39C,0x3BC}, {0x39D,0x3BD},
659  {0x39E,0x3BE}, {0x39F,0x3BF}, {0x3A0,0x3C0}, {0x3A1,0x3C1}, {0x3A3,0x3C3},
660  {0x3A4,0x3C4}, {0x3A5,0x3C5}, {0x3A6,0x3C6}, {0x3A7,0x3C7}, {0x3A8,0x3C8},
661  {0x3A9,0x3C9}, {0x3AA,0x3CA}, {0x3AB,0x3CB}, {0x3E2,0x3E3}, {0x3E4,0x3E5},
662  {0x3E6,0x3E7}, {0x3E8,0x3E9}, {0x3EA,0x3EB}, {0x3EC,0x3ED}, {0x3EE,0x3EF},
663  {0x401,0x451}, {0x402,0x452}, {0x403,0x453}, {0x404,0x454}, {0x405,0x455},
664  {0x406,0x456}, {0x407,0x457}, {0x408,0x458}, {0x409,0x459}, {0x40A,0x45A},
665  {0x40B,0x45B}, {0x40C,0x45C}, {0x40E,0x45E}, {0x40F,0x45F}, {0x410,0x430},
666  {0x411,0x431}, {0x412,0x432}, {0x413,0x433}, {0x414,0x434}, {0x415,0x435},
667  {0x416,0x436}, {0x417,0x437}, {0x418,0x438}, {0x419,0x439}, {0x41A,0x43A},
668  {0x41B,0x43B}, {0x41C,0x43C}, {0x41D,0x43D}, {0x41E,0x43E}, {0x41F,0x43F},
669  {0x420,0x440}, {0x421,0x441}, {0x422,0x442}, {0x423,0x443}, {0x424,0x444},
670  {0x425,0x445}, {0x426,0x446}, {0x427,0x447}, {0x428,0x448}, {0x429,0x449},
671  {0x42A,0x44A}, {0x42B,0x44B}, {0x42C,0x44C}, {0x42D,0x44D}, {0x42E,0x44E},
672  {0x42F,0x44F}, {0x460,0x461}, {0x462,0x463}, {0x464,0x465}, {0x466,0x467},
673  {0x468,0x469}, {0x46A,0x46B}, {0x46C,0x46D}, {0x46E,0x46F}, {0x470,0x471},
674  {0x472,0x473}, {0x474,0x475}, {0x476,0x477}, {0x478,0x479}, {0x47A,0x47B},
675  {0x47C,0x47D}, {0x47E,0x47F}, {0x480,0x481}, {0x490,0x491}, {0x492,0x493},
676  {0x494,0x495}, {0x496,0x497}, {0x498,0x499}, {0x49A,0x49B}, {0x49C,0x49D},
677  {0x49E,0x49F}, {0x4A0,0x4A1}, {0x4A2,0x4A3}, {0x4A4,0x4A5}, {0x4A6,0x4A7},
678  {0x4A8,0x4A9}, {0x4AA,0x4AB}, {0x4AC,0x4AD}, {0x4AE,0x4AF}, {0x4B0,0x4B1},
679  {0x4B2,0x4B3}, {0x4B4,0x4B5}, {0x4B6,0x4B7}, {0x4B8,0x4B9}, {0x4BA,0x4BB},
680  {0x4BC,0x4BD}, {0x4BE,0x4BF}, {0x4C1,0x4C2}, {0x4C3,0x4C4}, {0x4C7,0x4C8},
681  {0x4CB,0x4CC}, {0x4D0,0x4D1}, {0x4D2,0x4D3}, {0x4D4,0x4D5}, {0x4D6,0x4D7},
682  {0x4D8,0x4D9}, {0x4DA,0x4DB}, {0x4DC,0x4DD}, {0x4DE,0x4DF}, {0x4E0,0x4E1},
683  {0x4E2,0x4E3}, {0x4E4,0x4E5}, {0x4E6,0x4E7}, {0x4E8,0x4E9}, {0x4EA,0x4EB},
684  {0x4EE,0x4EF}, {0x4F0,0x4F1}, {0x4F2,0x4F3}, {0x4F4,0x4F5}, {0x4F8,0x4F9},
685  {0x531,0x561}, {0x532,0x562}, {0x533,0x563}, {0x534,0x564}, {0x535,0x565},
686  {0x536,0x566}, {0x537,0x567}, {0x538,0x568}, {0x539,0x569}, {0x53A,0x56A},
687  {0x53B,0x56B}, {0x53C,0x56C}, {0x53D,0x56D}, {0x53E,0x56E}, {0x53F,0x56F},
688  {0x540,0x570}, {0x541,0x571}, {0x542,0x572}, {0x543,0x573}, {0x544,0x574},
689  {0x545,0x575}, {0x546,0x576}, {0x547,0x577}, {0x548,0x578}, {0x549,0x579},
690  {0x54A,0x57A}, {0x54B,0x57B}, {0x54C,0x57C}, {0x54D,0x57D}, {0x54E,0x57E},
691  {0x54F,0x57F}, {0x550,0x580}, {0x551,0x581}, {0x552,0x582}, {0x553,0x583},
692  {0x554,0x584}, {0x555,0x585}, {0x556,0x586}, {0x10A0,0x10D0}, {0x10A1,0x10D1},
693  {0x10A2,0x10D2}, {0x10A3,0x10D3}, {0x10A4,0x10D4}, {0x10A5,0x10D5}, {0x10A6,0x10D6},
694  {0x10A7,0x10D7}, {0x10A8,0x10D8}, {0x10A9,0x10D9}, {0x10AA,0x10DA}, {0x10AB,0x10DB},
695  {0x10AC,0x10DC}, {0x10AD,0x10DD}, {0x10AE,0x10DE}, {0x10AF,0x10DF}, {0x10B0,0x10E0},
696  {0x10B1,0x10E1}, {0x10B2,0x10E2}, {0x10B3,0x10E3}, {0x10B4,0x10E4}, {0x10B5,0x10E5},
697  {0x10B6,0x10E6}, {0x10B7,0x10E7}, {0x10B8,0x10E8}, {0x10B9,0x10E9}, {0x10BA,0x10EA},
698  {0x10BB,0x10EB}, {0x10BC,0x10EC}, {0x10BD,0x10ED}, {0x10BE,0x10EE}, {0x10BF,0x10EF},
699  {0x10C0,0x10F0}, {0x10C1,0x10F1}, {0x10C2,0x10F2}, {0x10C3,0x10F3}, {0x10C4,0x10F4},
700  {0x10C5,0x10F5}, {0x1E00,0x1E01}, {0x1E02,0x1E03}, {0x1E04,0x1E05}, {0x1E06,0x1E07},
701  {0x1E08,0x1E09}, {0x1E0A,0x1E0B}, {0x1E0C,0x1E0D}, {0x1E0E,0x1E0F}, {0x1E10,0x1E11},
702  {0x1E12,0x1E13}, {0x1E14,0x1E15}, {0x1E16,0x1E17}, {0x1E18,0x1E19}, {0x1E1A,0x1E1B},
703  {0x1E1C,0x1E1D}, {0x1E1E,0x1E1F}, {0x1E20,0x1E21}, {0x1E22,0x1E23}, {0x1E24,0x1E25},
704  {0x1E26,0x1E27}, {0x1E28,0x1E29}, {0x1E2A,0x1E2B}, {0x1E2C,0x1E2D}, {0x1E2E,0x1E2F},
705  {0x1E30,0x1E31}, {0x1E32,0x1E33}, {0x1E34,0x1E35}, {0x1E36,0x1E37}, {0x1E38,0x1E39},
706  {0x1E3A,0x1E3B}, {0x1E3C,0x1E3D}, {0x1E3E,0x1E3F}, {0x1E40,0x1E41}, {0x1E42,0x1E43},
707  {0x1E44,0x1E45}, {0x1E46,0x1E47}, {0x1E48,0x1E49}, {0x1E4A,0x1E4B}, {0x1E4C,0x1E4D},
708  {0x1E4E,0x1E4F}, {0x1E50,0x1E51}, {0x1E52,0x1E53}, {0x1E54,0x1E55}, {0x1E56,0x1E57},
709  {0x1E58,0x1E59}, {0x1E5A,0x1E5B}, {0x1E5C,0x1E5D}, {0x1E5E,0x1E5F}, {0x1E60,0x1E61},
710  {0x1E62,0x1E63}, {0x1E64,0x1E65}, {0x1E66,0x1E67}, {0x1E68,0x1E69}, {0x1E6A,0x1E6B},
711  {0x1E6C,0x1E6D}, {0x1E6E,0x1E6F}, {0x1E70,0x1E71}, {0x1E72,0x1E73}, {0x1E74,0x1E75},
712  {0x1E76,0x1E77}, {0x1E78,0x1E79}, {0x1E7A,0x1E7B}, {0x1E7C,0x1E7D}, {0x1E7E,0x1E7F},
713  {0x1E80,0x1E81}, {0x1E82,0x1E83}, {0x1E84,0x1E85}, {0x1E86,0x1E87}, {0x1E88,0x1E89},
714  {0x1E8A,0x1E8B}, {0x1E8C,0x1E8D}, {0x1E8E,0x1E8F}, {0x1E90,0x1E91}, {0x1E92,0x1E93},
715  {0x1E94,0x1E95}, {0x1EA0,0x1EA1}, {0x1EA2,0x1EA3}, {0x1EA4,0x1EA5}, {0x1EA6,0x1EA7},
716  {0x1EA8,0x1EA9}, {0x1EAA,0x1EAB}, {0x1EAC,0x1EAD}, {0x1EAE,0x1EAF}, {0x1EB0,0x1EB1},
717  {0x1EB2,0x1EB3}, {0x1EB4,0x1EB5}, {0x1EB6,0x1EB7}, {0x1EB8,0x1EB9}, {0x1EBA,0x1EBB},
718  {0x1EBC,0x1EBD}, {0x1EBE,0x1EBF}, {0x1EC0,0x1EC1}, {0x1EC2,0x1EC3}, {0x1EC4,0x1EC5},
719  {0x1EC6,0x1EC7}, {0x1EC8,0x1EC9}, {0x1ECA,0x1ECB}, {0x1ECC,0x1ECD}, {0x1ECE,0x1ECF},
720  {0x1ED0,0x1ED1}, {0x1ED2,0x1ED3}, {0x1ED4,0x1ED5}, {0x1ED6,0x1ED7}, {0x1ED8,0x1ED9},
721  {0x1EDA,0x1EDB}, {0x1EDC,0x1EDD}, {0x1EDE,0x1EDF}, {0x1EE0,0x1EE1}, {0x1EE2,0x1EE3},
722  {0x1EE4,0x1EE5}, {0x1EE6,0x1EE7}, {0x1EE8,0x1EE9}, {0x1EEA,0x1EEB}, {0x1EEC,0x1EED},
723  {0x1EEE,0x1EEF}, {0x1EF0,0x1EF1}, {0x1EF2,0x1EF3}, {0x1EF4,0x1EF5}, {0x1EF6,0x1EF7},
724  {0x1EF8,0x1EF9}, {0x1F08,0x1F00}, {0x1F09,0x1F01}, {0x1F0A,0x1F02}, {0x1F0B,0x1F03},
725  {0x1F0C,0x1F04}, {0x1F0D,0x1F05}, {0x1F0E,0x1F06}, {0x1F0F,0x1F07}, {0x1F18,0x1F10},
726  {0x1F19,0x1F11}, {0x1F1A,0x1F12}, {0x1F1B,0x1F13}, {0x1F1C,0x1F14}, {0x1F1D,0x1F15},
727  {0x1F28,0x1F20}, {0x1F29,0x1F21}, {0x1F2A,0x1F22}, {0x1F2B,0x1F23}, {0x1F2C,0x1F24},
728  {0x1F2D,0x1F25}, {0x1F2E,0x1F26}, {0x1F2F,0x1F27}, {0x1F38,0x1F30}, {0x1F39,0x1F31},
729  {0x1F3A,0x1F32}, {0x1F3B,0x1F33}, {0x1F3C,0x1F34}, {0x1F3D,0x1F35}, {0x1F3E,0x1F36},
730  {0x1F3F,0x1F37}, {0x1F48,0x1F40}, {0x1F49,0x1F41}, {0x1F4A,0x1F42}, {0x1F4B,0x1F43},
731  {0x1F4C,0x1F44}, {0x1F4D,0x1F45}, {0x1F59,0x1F51}, {0x1F5B,0x1F53}, {0x1F5D,0x1F55},
732  {0x1F5F,0x1F57}, {0x1F68,0x1F60}, {0x1F69,0x1F61}, {0x1F6A,0x1F62}, {0x1F6B,0x1F63},
733  {0x1F6C,0x1F64}, {0x1F6D,0x1F65}, {0x1F6E,0x1F66}, {0x1F6F,0x1F67}, {0x1F88,0x1F80},
734  {0x1F89,0x1F81}, {0x1F8A,0x1F82}, {0x1F8B,0x1F83}, {0x1F8C,0x1F84}, {0x1F8D,0x1F85},
735  {0x1F8E,0x1F86}, {0x1F8F,0x1F87}, {0x1F98,0x1F90}, {0x1F99,0x1F91}, {0x1F9A,0x1F92},
736  {0x1F9B,0x1F93}, {0x1F9C,0x1F94}, {0x1F9D,0x1F95}, {0x1F9E,0x1F96}, {0x1F9F,0x1F97},
737  {0x1FA8,0x1FA0}, {0x1FA9,0x1FA1}, {0x1FAA,0x1FA2}, {0x1FAB,0x1FA3}, {0x1FAC,0x1FA4},
738  {0x1FAD,0x1FA5}, {0x1FAE,0x1FA6}, {0x1FAF,0x1FA7}, {0x1FB8,0x1FB0}, {0x1FB9,0x1FB1},
739  {0x1FBA,0x1F70}, {0x1FBB,0x1F71}, {0x1FBC,0x1FB3}, {0x1FC8,0x1F72}, {0x1FC9,0x1F73},
740  {0x1FCA,0x1F74}, {0x1FCB,0x1F75}, {0x1FCC,0x1FC3}, {0x1FD8,0x1FD0}, {0x1FD9,0x1FD1},
741  {0x1FDA,0x1F76}, {0x1FDB,0x1F77}, {0x1FE8,0x1FE0}, {0x1FE9,0x1FE1}, {0x1FEA,0x1F7A},
742  {0x1FEB,0x1F7B}, {0x1FEC,0x1FE5}, {0x1FF8,0x1F78}, {0x1FF9,0x1F79}, {0x1FFA,0x1F7C},
743  {0x1FFB,0x1F7D}, {0x1FFC,0x1FF3}, {0x2160,0x2170}, {0x2161,0x2171}, {0x2162,0x2172},
744  {0x2163,0x2173}, {0x2164,0x2174}, {0x2165,0x2175}, {0x2166,0x2176}, {0x2167,0x2177},
745  {0x2168,0x2178}, {0x2169,0x2179}, {0x216A,0x217A}, {0x216B,0x217B}, {0x216C,0x217C},
746  {0x216D,0x217D}, {0x216E,0x217E}, {0x216F,0x217F}, {0x24B6,0x24D0}, {0x24B7,0x24D1},
747  {0x24B8,0x24D2}, {0x24B9,0x24D3}, {0x24BA,0x24D4}, {0x24BB,0x24D5}, {0x24BC,0x24D6},
748  {0x24BD,0x24D7}, {0x24BE,0x24D8}, {0x24BF,0x24D9}, {0x24C0,0x24DA}, {0x24C1,0x24DB},
749  {0x24C2,0x24DC}, {0x24C3,0x24DD}, {0x24C4,0x24DE}, {0x24C5,0x24DF}, {0x24C6,0x24E0},
750  {0x24C7,0x24E1}, {0x24C8,0x24E2}, {0x24C9,0x24E3}, {0x24CA,0x24E4}, {0x24CB,0x24E5},
751  {0x24CC,0x24E6}, {0x24CD,0x24E7}, {0x24CE,0x24E8}, {0x24CF,0x24E9}, {0xFF21,0xFF41},
752  {0xFF22,0xFF42}, {0xFF23,0xFF43}, {0xFF24,0xFF44}, {0xFF25,0xFF45}, {0xFF26,0xFF46},
753  {0xFF27,0xFF47}, {0xFF28,0xFF48}, {0xFF29,0xFF49}, {0xFF2A,0xFF4A}, {0xFF2B,0xFF4B},
754  {0xFF2C,0xFF4C}, {0xFF2D,0xFF4D}, {0xFF2E,0xFF4E}, {0xFF2F,0xFF4F}, {0xFF30,0xFF50},
755  {0xFF31,0xFF51}, {0xFF32,0xFF52}, {0xFF33,0xFF53}, {0xFF34,0xFF54}, {0xFF35,0xFF55},
756  {0xFF36,0xFF56}, {0xFF37,0xFF57}, {0xFF38,0xFF58}, {0xFF39,0xFF59}, {0xFF3A,0xFF5A}
757};
758
759
760
761#define NUM_TOSIMPLIFIED_INFO 2145
762static const unirelate tosimplified_info[NUM_TOSIMPLIFIED_INFO] = {
763  {0x4E48,0x9EBD}, {0x4E82,0x4E71}, {0x4E9E,0x4E9A}, {0x4F47,0x4F2B}, {0x4F59,0x9980},
764  {0x4F86,0x6765}, {0x4F96,0x4ED1}, {0x4FE0,0x4FA0}, {0x5000,0x4F25}, {0x5006,0x4FE9},
765  {0x5009,0x4ED3}, {0x500B,0x4E2A}, {0x5011,0x4EEC}, {0x502B,0x4F26}, {0x5049,0x4F1F},
766  {0x5074,0x4FA7}, {0x5075,0x4FA6}, {0x5096,0x4F27}, {0x5098,0x4F1E}, {0x5099,0x5907},
767  {0x50AD,0x4F63}, {0x50B3,0x4F20}, {0x50B4,0x4F1B}, {0x50B5,0x503A}, {0x50B7,0x4F24},
768  {0x50BE,0x503E}, {0x50C2,0x507B}, {0x50C5,0x4EC5}, {0x50C9,0x4F65}, {0x50D1,0x4FA8},
769  {0x50D5,0x4EC6}, {0x50DE,0x4F2A}, {0x50E5,0x4FA5}, {0x50E8,0x507E}, {0x50F9,0x4EF7},
770  {0x5100,0x4EEA}, {0x5102,0x4FAC}, {0x5104,0x4EBF}, {0x5108,0x4FA9}, {0x5109,0x4FED},
771  {0x5110,0x50A7}, {0x5114,0x4FE6}, {0x5115,0x4FAA}, {0x511F,0x507F}, {0x512A,0x4F18},
772  {0x5132,0x50A8}, {0x5137,0x4FEA}, {0x513A,0x50A9}, {0x513B,0x50A5}, {0x513C,0x4FE8},
773  {0x5152,0x513F}, {0x5169,0x4E24}, {0x51C8,0x51C0}, {0x51CD,0x51BB}, {0x51F1,0x51EF},
774  {0x5244,0x522D}, {0x5247,0x5219}, {0x525B,0x521A}, {0x526E,0x5250}, {0x5274,0x5240},
775  {0x5275,0x521B}, {0x5283,0x5212}, {0x5287,0x5267}, {0x5289,0x5218}, {0x528A,0x523D},
776  {0x528C,0x523F}, {0x528D,0x5251}, {0x5291,0x5242}, {0x52C1,0x52B2}, {0x52D5,0x52A8},
777  {0x52D9,0x52A1}, {0x52DB,0x52CB}, {0x52DD,0x80DC}, {0x52DE,0x52B3}, {0x52E2,0x52BF},
778  {0x52F1,0x52A2}, {0x52F5,0x52B1}, {0x52F8,0x529D}, {0x532D,0x5326}, {0x532F,0x6C47},
779  {0x5331,0x532E}, {0x5340,0x533A}, {0x5354,0x534F}, {0x5399,0x538D}, {0x53A0,0x5395},
780  {0x53AD,0x538C}, {0x53B2,0x5389}, {0x53B4,0x53A3}, {0x53C3,0x53C2}, {0x53E2,0x4E1B},
781  {0x540E,0x5F8C}, {0x54BC,0x5459}, {0x54E1,0x5458}, {0x5504,0x5457}, {0x554F,0x95EE},
782  {0x5553,0x542F}, {0x555E,0x54D1}, {0x559A,0x5524}, {0x55AA,0x4E27}, {0x55AC,0x4E54},
783  {0x55AE,0x5355}, {0x55B2,0x54DF}, {0x55C6,0x545B}, {0x55C7,0x556C}, {0x55CE,0x5417},
784  {0x55DA,0x545C}, {0x55E9,0x5522}, {0x55F6,0x54D4}, {0x5606,0x53F9}, {0x560D,0x55BD},
785  {0x5614,0x5455}, {0x5616,0x5567}, {0x5617,0x5C1D}, {0x561C,0x551B}, {0x5629,0x54D7},
786  {0x562E,0x5520}, {0x562F,0x5578}, {0x5630,0x53FD}, {0x5635,0x54D3}, {0x5638,0x5452},
787  {0x565D,0x549D}, {0x5660,0x54D2}, {0x5665,0x54DD}, {0x5666,0x54D5}, {0x566F,0x55F3},
788  {0x5672,0x54D9}, {0x5674,0x55B7}, {0x5678,0x5428}, {0x5680,0x549B}, {0x5687,0x5413},
789  {0x568C,0x54DC}, {0x5695,0x565C}, {0x5699,0x556E}, {0x56A6,0x5456}, {0x56A8,0x5499},
790  {0x56B3,0x55BE}, {0x56B4,0x4E25}, {0x56B6,0x5624}, {0x56C0,0x556D}, {0x56C1,0x55EB},
791  {0x56C2,0x56A3}, {0x56C5,0x5181}, {0x56C8,0x5453}, {0x56D1,0x5631}, {0x5707,0x56F5},
792  {0x570B,0x56FD}, {0x570D,0x56F4}, {0x5712,0x56ED}, {0x5713,0x5706}, {0x5716,0x56FE},
793  {0x5718,0x56E2}, {0x57E1,0x57AD}, {0x57F7,0x6267}, {0x5805,0x575A}, {0x580A,0x57A9},
794  {0x5816,0x57B4}, {0x581D,0x57DA}, {0x582F,0x5C27}, {0x5831,0x62A5}, {0x5834,0x573A},
795  {0x584A,0x5757}, {0x584B,0x8314}, {0x584F,0x57B2}, {0x5852,0x57D8}, {0x5857,0x6D82},
796  {0x5862,0x575E}, {0x5864,0x57D9}, {0x5875,0x5C18}, {0x5879,0x5811}, {0x588A,0x57AB},
797  {0x589C,0x5760}, {0x58AE,0x5815}, {0x58B3,0x575F}, {0x58BB,0x5899}, {0x58BE,0x57A6},
798  {0x58C7,0x575B}, {0x58D3,0x538B}, {0x58D8,0x5792}, {0x58D9,0x5739}, {0x58DA,0x5786},
799  {0x58DE,0x574F}, {0x58DF,0x5784}, {0x58E0,0x5785}, {0x58E2,0x575C}, {0x58E9,0x575D},
800  {0x58EF,0x58EE}, {0x58FA,0x58F6}, {0x58FD,0x5BFF}, {0x5922,0x68A6}, {0x593E,0x5939},
801  {0x5950,0x5942}, {0x5969,0x5941}, {0x596A,0x593A}, {0x596C,0x5956}, {0x596E,0x594B},
802  {0x599D,0x5986}, {0x5A41,0x5A04}, {0x5A66,0x5987}, {0x5A6D,0x5A05}, {0x5AA7,0x5A32},
803  {0x5ABD,0x5988}, {0x5AD7,0x59AA}, {0x5AF5,0x59A9}, {0x5AFB,0x5A34}, {0x5B00,0x59AB},
804  {0x5B08,0x5A06}, {0x5B0B,0x5A75}, {0x5B0C,0x5A07}, {0x5B19,0x5AF1}, {0x5B21,0x5AD2},
805  {0x5B2A,0x5AD4}, {0x5B30,0x5A74}, {0x5B38,0x5A76}, {0x5B4C,0x5A08}, {0x5B6B,0x5B59},
806  {0x5B78,0x5B66}, {0x5B7F,0x5B6A}, {0x5BE2,0x5BDD}, {0x5BE6,0x5B9E}, {0x5BE7,0x5B81},
807  {0x5BE9,0x5BA1}, {0x5BEB,0x5199}, {0x5BEC,0x5BBD}, {0x5BF5,0x5BA0}, {0x5BF6,0x5B9D},
808  {0x5C07,0x5C06}, {0x5C08,0x4E13}, {0x5C0B,0x5BFB}, {0x5C0D,0x5BF9}, {0x5C0E,0x5BFC},
809  {0x5C37,0x5C34}, {0x5C62,0x5C61}, {0x5C64,0x5C42}, {0x5C68,0x5C66}, {0x5C6C,0x5C5E},
810  {0x5CA1,0x5188}, {0x5CF4,0x5C98}, {0x5CF6,0x5C9B}, {0x5CFD,0x5CE1}, {0x5D0D,0x5D03},
811  {0x5D17,0x5C97}, {0x5D22,0x5CE5}, {0x5D2C,0x5CBD}, {0x5D50,0x5C9A}, {0x5D81,0x5D5D},
812  {0x5D84,0x5D2D}, {0x5D87,0x5C96}, {0x5D97,0x5D02}, {0x5DA0,0x5CE4}, {0x5DA7,0x5CC4},
813  {0x5DB8,0x5D58}, {0x5DBA,0x5CAD}, {0x5DBC,0x5C7F}, {0x5DCB,0x5CBF}, {0x5DD2,0x5CE6},
814  {0x5DD4,0x5DC5}, {0x5DF0,0x5DEF}, {0x5E25,0x5E05}, {0x5E2B,0x5E08}, {0x5E33,0x5E10},
815  {0x5E36,0x5E26}, {0x5E40,0x5E27}, {0x5E43,0x5E0F}, {0x5E57,0x5E3C}, {0x5E58,0x5E3B},
816  {0x5E5F,0x5E1C}, {0x5E63,0x5E01}, {0x5E6B,0x5E2E}, {0x5E6C,0x5E31}, {0x5E79,0x5E72},
817  {0x5E7E,0x51E0}, {0x5EAB,0x5E93}, {0x5EDF,0x5E99}, {0x5EE0,0x5382}, {0x5EE1,0x5E91},
818  {0x5EE2,0x5E9F}, {0x5EE3,0x5E7F}, {0x5EEC,0x5E90}, {0x5EF3,0x5385}, {0x5F33,0x5F2A},
819  {0x5F35,0x5F20}, {0x5F48,0x5F39}, {0x5F4C,0x5F25}, {0x5F4E,0x5F2F}, {0x5F8C,0x540E},
820  {0x5F91,0x5F84}, {0x5F9E,0x4ECE}, {0x5FA0,0x5F95}, {0x5FA9,0x590D}, {0x5FB9,0x5F7B},
821  {0x60B5,0x6005}, {0x60B6,0x95F7}, {0x60E1,0x6076}, {0x60F1,0x607C}, {0x60F2,0x607D},
822  {0x60FB,0x607B}, {0x611B,0x7231}, {0x611C,0x60EC}, {0x6134,0x6006}, {0x6137,0x607A},
823  {0x613E,0x5FFE}, {0x614B,0x6001}, {0x6158,0x60E8}, {0x615A,0x60ED}, {0x615F,0x6078},
824  {0x6163,0x60EF}, {0x6164,0x60AB}, {0x616A,0x6004}, {0x616B,0x6002}, {0x616E,0x8651},
825  {0x6173,0x60AD}, {0x6176,0x5E86}, {0x6182,0x5FE7}, {0x618A,0x60EB}, {0x6190,0x601C},
826  {0x6191,0x51ED}, {0x6192,0x6126}, {0x619A,0x60EE}, {0x61A4,0x6124}, {0x61AB,0x60AF},
827  {0x61AE,0x6003}, {0x61B2,0x5BAA}, {0x61B6,0x5FC6}, {0x61C7,0x6073}, {0x61C9,0x5E94},
828  {0x61CC,0x603F}, {0x61DF,0x603C}, {0x61E3,0x61D1}, {0x61E8,0x6079}, {0x61F2,0x60E9},
829  {0x61F6,0x61D2}, {0x61F7,0x6000}, {0x61F8,0x60AC}, {0x61FA,0x5FCF}, {0x61FC,0x60E7},
830  {0x61FE,0x6151}, {0x6200,0x604B}, {0x6207,0x6206}, {0x6214,0x620B}, {0x6227,0x6217},
831  {0x6229,0x622C}, {0x6230,0x6218}, {0x6232,0x620F}, {0x633E,0x631F}, {0x6368,0x820D},
832  {0x636B,0x626A}, {0x6383,0x626B}, {0x6384,0x62A1}, {0x6399,0x6323}, {0x63C0,0x62E3},
833  {0x63DA,0x626C}, {0x63DB,0x6362}, {0x63EE,0x6325}, {0x640D,0x635F}, {0x6417,0x6363},
834  {0x6436,0x62A2}, {0x6451,0x63B4}, {0x645C,0x63BC}, {0x645F,0x6402}, {0x646F,0x631A},
835  {0x6473,0x62A0}, {0x6476,0x629F}, {0x647B,0x63BA}, {0x6488,0x635E}, {0x6493,0x6320},
836  {0x649F,0x6322}, {0x64A3,0x63B8}, {0x64A5,0x62E8}, {0x64AB,0x629A}, {0x64B2,0x6251},
837  {0x64B3,0x63FF}, {0x64BB,0x631E}, {0x64BE,0x631D}, {0x64BF,0x6361}, {0x64C1,0x62E5},
838  {0x64C4,0x63B3}, {0x64C7,0x62E9}, {0x64CA,0x51FB}, {0x64CB,0x6321}, {0x64D4,0x62C5},
839  {0x64DA,0x636E}, {0x64E0,0x6324}, {0x64EC,0x62DF}, {0x64EF,0x6448}, {0x64F0,0x62E7},
840  {0x64F1,0x6401}, {0x64F2,0x63B7}, {0x64F4,0x6269}, {0x64F7,0x64B7}, {0x64FA,0x6446},
841  {0x64FB,0x64DE}, {0x64FC,0x64B8}, {0x64FE,0x6270}, {0x6504,0x6445}, {0x6506,0x64B5},
842  {0x650F,0x62E2}, {0x6514,0x62E6}, {0x6516,0x6484}, {0x6519,0x6400}, {0x651B,0x64BA},
843  {0x651D,0x6444}, {0x6522,0x6512}, {0x6523,0x631B}, {0x6524,0x644A}, {0x652A,0x6405},
844  {0x652C,0x63FD}, {0x6557,0x8D25}, {0x6575,0x654C}, {0x6578,0x6570}, {0x6582,0x655B},
845  {0x6583,0x6BD9}, {0x6595,0x6593}, {0x65AC,0x65A9}, {0x65B7,0x65AD}, {0x6642,0x65F6},
846  {0x6649,0x664B}, {0x665D,0x663C}, {0x6688,0x6655}, {0x6689,0x6656}, {0x66A2,0x7545},
847  {0x66AB,0x6682}, {0x66C4,0x6654}, {0x66C7,0x6619}, {0x66C9,0x6653}, {0x66D6,0x66A7},
848  {0x66E0,0x65F7}, {0x66EC,0x6652}, {0x66F8,0x4E66}, {0x6703,0x4F1A}, {0x6727,0x80E7},
849  {0x6771,0x4E1C}, {0x6898,0x67A7}, {0x689D,0x6761}, {0x689F,0x67AD}, {0x68C4,0x5F03},
850  {0x68D6,0x67A8}, {0x68D7,0x67A3}, {0x68DF,0x680B}, {0x68E7,0x6808}, {0x68F2,0x6816},
851  {0x690F,0x6860}, {0x694A,0x6768}, {0x6953,0x67AB}, {0x6968,0x6862}, {0x696D,0x4E1A},
852  {0x6975,0x6781}, {0x69AA,0x6769}, {0x69AE,0x8363}, {0x69BF,0x6864}, {0x69CB,0x6784},
853  {0x69CD,0x67AA}, {0x69E7,0x6920}, {0x69F3,0x6868}, {0x6A01,0x6869}, {0x6A02,0x4E50},
854  {0x6A05,0x679E}, {0x6A13,0x697C}, {0x6A19,0x6807}, {0x6A1E,0x67A2}, {0x6A23,0x6837},
855  {0x6A38,0x6734}, {0x6A39,0x6811}, {0x6A3A,0x6866}, {0x6A48,0x6861}, {0x6A4B,0x6865},
856  {0x6A5F,0x673A}, {0x6A62,0x692D}, {0x6A89,0x67FD}, {0x6A94,0x6863}, {0x6A9C,0x6867},
857  {0x6AA2,0x68C0}, {0x6AA3,0x6A2F}, {0x6AB3,0x69DF}, {0x6AB8,0x67E0}, {0x6ABB,0x69DB},
858  {0x6AC3,0x67DC}, {0x6AD3,0x6A79}, {0x6ADA,0x6988}, {0x6ADB,0x6809}, {0x6ADD,0x691F},
859  {0x6ADE,0x6A7C}, {0x6ADF,0x680E}, {0x6AE7,0x69E0}, {0x6AE8,0x680C}, {0x6AEA,0x67A5},
860  {0x6AEC,0x6987}, {0x6AF3,0x680A}, {0x6AF8,0x6989}, {0x6AFB,0x6A31}, {0x6B04,0x680F},
861  {0x6B0A,0x6743}, {0x6B0F,0x6924}, {0x6B12,0x683E}, {0x6B16,0x6984}, {0x6B1E,0x68C2},
862  {0x6B3D,0x94A6}, {0x6B50,0x6B27}, {0x6B5F,0x6B24}, {0x6B61,0x6B22}, {0x6B72,0x5C81},
863  {0x6B77,0x5386}, {0x6B78,0x5F52}, {0x6B98,0x6B8B}, {0x6B9E,0x6B92}, {0x6BA4,0x6B87},
864  {0x6BAB,0x6B9A}, {0x6BAE,0x6B93}, {0x6BAF,0x6BA1}, {0x6BB2,0x6B7C}, {0x6BBA,0x6740},
865  {0x6BBB,0x58F3}, {0x6BC6,0x6BB4}, {0x6BFF,0x6BF5}, {0x6C08,0x6BE1}, {0x6C0C,0x6C07},
866  {0x6C23,0x6C14}, {0x6C2B,0x6C22}, {0x6C2C,0x6C29}, {0x6D79,0x6D43}, {0x6D87,0x6CFE},
867  {0x6DEA,0x6CA6}, {0x6DF5,0x6E0A}, {0x6DF6,0x6D9E}, {0x6DFA,0x6D45}, {0x6E19,0x6DA3},
868  {0x6E26,0x6DA1}, {0x6E2C,0x6D4B}, {0x6E3E,0x6D51}, {0x6E5E,0x6D48}, {0x6E6F,0x6C64},
869  {0x6E96,0x51C6}, {0x6E9D,0x6C9F}, {0x6EC4,0x6CA7}, {0x6EC5,0x706D}, {0x6ECC,0x6DA4},
870  {0x6ECE,0x8365}, {0x6EEC,0x6CAA}, {0x6EEF,0x6EDE}, {0x6EF2,0x6E17}, {0x6EF7,0x5364},
871  {0x6EF8,0x6D52}, {0x6EFF,0x6EE1}, {0x6F01,0x6E14}, {0x6F1A,0x6CA4}, {0x6F22,0x6C49},
872  {0x6F23,0x6D9F}, {0x6F2C,0x6E0D}, {0x6F32,0x6DA8}, {0x6F38,0x6E10}, {0x6F3F,0x6D46},
873  {0x6F41,0x988D}, {0x6F51,0x6CFC}, {0x6F54,0x6D01}, {0x6F59,0x6CA9}, {0x6F5B,0x6F5C},
874  {0x6F64,0x6DA6}, {0x6F6F,0x6D54}, {0x6F70,0x6E83}, {0x6F77,0x6ED7}, {0x6F7F,0x6DA0},
875  {0x6F80,0x6DA9}, {0x6F86,0x6D47}, {0x6F87,0x6D9D}, {0x6F97,0x6DA7}, {0x6FA0,0x6E11},
876  {0x6FA4,0x6CFD}, {0x6FA9,0x6CF6}, {0x6FAE,0x6D4D}, {0x6FB1,0x6DC0}, {0x6FC1,0x6D4A},
877  {0x6FC3,0x6D53}, {0x6FD5,0x6E7F}, {0x6FD8,0x6CDE}, {0x6FDF,0x6D4E}, {0x6FE4,0x6D9B},
878  {0x6FEB,0x6EE5}, {0x6FF0,0x6F4D}, {0x6FF1,0x6EE8}, {0x6FFA,0x6E85}, {0x6FFC,0x6CFA},
879  {0x6FFE,0x6EE4}, {0x7005,0x6EE2}, {0x7006,0x6E0E}, {0x7009,0x6CFB}, {0x700B,0x6E16},
880  {0x700F,0x6D4F}, {0x7015,0x6FD2}, {0x7018,0x6CF8}, {0x701D,0x6CA5}, {0x701F,0x6F47},
881  {0x7020,0x6F46}, {0x7027,0x6CF7}, {0x7028,0x6FD1}, {0x7032,0x6F4B}, {0x703E,0x6F9C},
882  {0x7043,0x6CA3}, {0x7044,0x6EE0}, {0x7051,0x6D12}, {0x7055,0x6F13}, {0x7058,0x6EE9},
883  {0x705D,0x704F}, {0x7063,0x6E7E}, {0x7064,0x6EE6}, {0x7067,0x6EDF}, {0x70CF,0x4E4C},
884  {0x70F4,0x70C3}, {0x7121,0x65E0}, {0x7149,0x70BC}, {0x7152,0x709C}, {0x7162,0x8315},
885  {0x7165,0x7115}, {0x7169,0x70E6}, {0x716C,0x7080}, {0x7192,0x8367}, {0x7197,0x709D},
886  {0x71B1,0x70ED}, {0x71BE,0x70BD}, {0x71C1,0x70E8}, {0x71C8,0x706F}, {0x71D2,0x70E7},
887  {0x71D9,0x70EB}, {0x71DC,0x7116}, {0x71DF,0x8425}, {0x71E6,0x707F}, {0x71ED,0x70DB},
888  {0x71F4,0x70E9}, {0x71FC,0x70EC}, {0x71FE,0x7118}, {0x720D,0x70C1}, {0x7210,0x7089},
889  {0x721B,0x70C2}, {0x722D,0x4E89}, {0x7232,0x4E3A}, {0x723A,0x7237}, {0x723E,0x5C14},
890  {0x7258,0x724D}, {0x727D,0x7275}, {0x7296,0x8366}, {0x72A2,0x728A}, {0x72A7,0x727A},
891  {0x72C0,0x72B6}, {0x72F9,0x72ED}, {0x72FD,0x72C8}, {0x7319,0x72F0}, {0x7336,0x72B9},
892  {0x733B,0x72F2}, {0x7341,0x72B8}, {0x7344,0x72F1}, {0x7345,0x72EE}, {0x7368,0x72EC},
893  {0x736A,0x72EF}, {0x736B,0x7303}, {0x7370,0x72DE}, {0x7372,0x83B7}, {0x7375,0x730E},
894  {0x7377,0x72B7}, {0x7378,0x517D}, {0x737A,0x736D}, {0x737B,0x732E}, {0x737C,0x7315},
895  {0x7380,0x7321}, {0x73FE,0x73B0}, {0x743F,0x73F2}, {0x744B,0x73AE}, {0x7463,0x7410},
896  {0x7469,0x83B9}, {0x746A,0x739B}, {0x7489,0x740F}, {0x74A3,0x7391}, {0x74A6,0x7477},
897  {0x74B0,0x73AF}, {0x74BD,0x73BA}, {0x74CA,0x743C}, {0x74CF,0x73D1}, {0x74D4,0x748E},
898  {0x74DA,0x74D2}, {0x750C,0x74EF}, {0x7523,0x4EA7}, {0x755D,0x4EA9}, {0x7562,0x6BD5},
899  {0x756B,0x753B}, {0x7576,0x5F53}, {0x7587,0x7574}, {0x758A,0x53E0}, {0x75D9,0x75C9},
900  {0x7602,0x75D6}, {0x760B,0x75AF}, {0x760D,0x75A1}, {0x7613,0x75EA}, {0x761E,0x7617},
901  {0x7621,0x75AE}, {0x7627,0x759F}, {0x763B,0x7618}, {0x7642,0x7597}, {0x7646,0x75E8},
902  {0x7647,0x75EB}, {0x7649,0x7605}, {0x7658,0x75A0}, {0x765F,0x762A}, {0x7662,0x75D2},
903  {0x7664,0x7596}, {0x7665,0x75C7}, {0x7667,0x75AC}, {0x7669,0x765E}, {0x766C,0x7663},
904  {0x766D,0x763F}, {0x766E,0x763E}, {0x7670,0x75C8}, {0x7671,0x762B}, {0x7672,0x766B},
905  {0x767C,0x53D1}, {0x769A,0x7691}, {0x76B8,0x76B2}, {0x76BA,0x76B1}, {0x76DE,0x76CF},
906  {0x76E1,0x5C3D}, {0x76E3,0x76D1}, {0x76E4,0x76D8}, {0x76E7,0x5362}, {0x775C,0x7741},
907  {0x775E,0x7750}, {0x7798,0x770D}, {0x779E,0x7792}, {0x77BC,0x7751}, {0x77DA,0x77A9},
908  {0x77EF,0x77EB}, {0x7864,0x7856}, {0x7868,0x7817}, {0x786F,0x781A}, {0x78A9,0x7855},
909  {0x78AD,0x7800}, {0x78B8,0x781C}, {0x78BA,0x786E}, {0x78BC,0x7801}, {0x78DA,0x7816},
910  {0x78E3,0x789C}, {0x78E7,0x789B}, {0x78EF,0x77F6}, {0x78FD,0x7857}, {0x790E,0x7840},
911  {0x7919,0x788D}, {0x7926,0x77FF}, {0x792A,0x783A}, {0x792B,0x783E}, {0x792C,0x77FE},
912  {0x7931,0x783B}, {0x798D,0x7978}, {0x798E,0x796F}, {0x79AA,0x7985}, {0x79AE,0x793C},
913  {0x79B0,0x7962}, {0x79B1,0x7977}, {0x7A2E,0x79CD}, {0x7A31,0x79F0}, {0x7A4C,0x7A23},
914  {0x7A4D,0x79EF}, {0x7A4E,0x9896}, {0x7A61,0x7A51}, {0x7A62,0x79FD}, {0x7A69,0x7A33},
915  {0x7AA9,0x7A9D}, {0x7AAA,0x6D3C}, {0x7AAE,0x7A77}, {0x7AB6,0x7AAD}, {0x7ABA,0x7AA5},
916  {0x7AC4,0x7A9C}, {0x7AC5,0x7A8D}, {0x7AC7,0x7AA6}, {0x7AC8,0x7076}, {0x7ACA,0x7A83},
917  {0x7AEA,0x7AD6}, {0x7AF6,0x7ADE}, {0x7B46,0x7B14}, {0x7B67,0x7B15}, {0x7B8B,0x7B3A},
918  {0x7B8F,0x7B5D}, {0x7BC0,0x8282}, {0x7BC4,0x8303}, {0x7BC9,0x7B51}, {0x7BCB,0x7BA7},
919  {0x7BE4,0x7B03}, {0x7BE9,0x7B5B}, {0x7BF3,0x7B5A}, {0x7C00,0x7BA6}, {0x7C0D,0x7BD3},
920  {0x7C1E,0x7BAA}, {0x7C21,0x7B80}, {0x7C23,0x7BD1}, {0x7C2B,0x7BAB}, {0x7C3D,0x7B7E},
921  {0x7C3E,0x5E18}, {0x7C43,0x7BEE}, {0x7C4C,0x7B79}, {0x7C5C,0x7BA8}, {0x7C5F,0x7C41},
922  {0x7C60,0x7B3C}, {0x7C69,0x7B3E}, {0x7C6A,0x7C16}, {0x7C6C,0x7BF1}, {0x7C6E,0x7BA9},
923  {0x7CDD,0x7CC1}, {0x7CDE,0x7CAA}, {0x7CE7,0x7CAE}, {0x7CF2,0x7C9D}, {0x7CF4,0x7C74},
924  {0x7CF6,0x7C9C}, {0x7CF9,0x7E9F}, {0x7CFE,0x7EA0}, {0x7D00,0x7EAA}, {0x7D02,0x7EA3},
925  {0x7D04,0x7EA6}, {0x7D05,0x7EA2}, {0x7D06,0x7EA1}, {0x7D07,0x7EA5}, {0x7D08,0x7EA8},
926  {0x7D09,0x7EAB}, {0x7D0B,0x7EB9}, {0x7D0D,0x7EB3}, {0x7D10,0x7EBD}, {0x7D13,0x7EBE},
927  {0x7D14,0x7EAF}, {0x7D15,0x7EB0}, {0x7D17,0x7EB1}, {0x7D19,0x7EB8}, {0x7D1A,0x7EA7},
928  {0x7D1B,0x7EB7}, {0x7D1C,0x7EAD}, {0x7D21,0x7EBA}, {0x7D30,0x7EC6}, {0x7D31,0x7EC2},
929  {0x7D32,0x7EC1}, {0x7D33,0x7EC5}, {0x7D39,0x7ECD}, {0x7D3A,0x7EC0}, {0x7D3C,0x7ECB},
930  {0x7D3F,0x7ED0}, {0x7D40,0x7ECC}, {0x7D42,0x7EC8}, {0x7D44,0x7EC4}, {0x7D46,0x7ECA},
931  {0x7D4E,0x7ED7}, {0x7D50,0x7ED3}, {0x7D5D,0x7ED4}, {0x7D5E,0x7EDE}, {0x7D61,0x7EDC},
932  {0x7D62,0x7EDA}, {0x7D66,0x7ED9}, {0x7D68,0x7ED2}, {0x7D71,0x7EDF}, {0x7D72,0x4E1D},
933  {0x7D73,0x7EDB}, {0x7D76,0x7EDD}, {0x7D79,0x7EE2}, {0x7D81,0x7ED1}, {0x7D83,0x7EE1},
934  {0x7D86,0x7EE0}, {0x7D88,0x7EE8}, {0x7D89,0x7EE3}, {0x7D8F,0x7EE5}, {0x7D93,0x7ECF},
935  {0x7D9C,0x7EFC}, {0x7D9E,0x7F0D}, {0x7DA2,0x7EF8}, {0x7DA3,0x7EFB}, {0x7DAB,0x7EBF},
936  {0x7DAC,0x7EF6}, {0x7DAD,0x7EF4}, {0x7DB0,0x7EFE}, {0x7DB1,0x7EB2}, {0x7DB2,0x7F51},
937  {0x7DB3,0x7EF7}, {0x7DB4,0x7F00}, {0x7DB8,0x7EB6}, {0x7DB9,0x7EFA}, {0x7DBA,0x7EEE},
938  {0x7DBB,0x7EFD}, {0x7DBD,0x7EF0}, {0x7DBE,0x7EEB}, {0x7DBF,0x7EF5}, {0x7DC4,0x7EF2},
939  {0x7DC7,0x7F01}, {0x7DCA,0x7D27}, {0x7DCB,0x7EEF}, {0x7DD1,0x7EFF}, {0x7DD2,0x7EEA},
940  {0x7DD4,0x7EF1}, {0x7DD7,0x7F03}, {0x7DD8,0x7F04}, {0x7DD9,0x7F02}, {0x7DDD,0x7F09},
941  {0x7DDE,0x7F0E}, {0x7DE0,0x7F14}, {0x7DE1,0x7F17}, {0x7DE3,0x7F18}, {0x7DE6,0x7F0C},
942  {0x7DE8,0x7F16}, {0x7DE9,0x7F13}, {0x7DEC,0x7F05}, {0x7DEF,0x7EAC}, {0x7DF1,0x7F11},
943  {0x7DF2,0x7F08}, {0x7DF4,0x7EC3}, {0x7DF6,0x7F0F}, {0x7DF9,0x7F07}, {0x7E08,0x8426},
944  {0x7E09,0x7F19}, {0x7E0A,0x7F22}, {0x7E0B,0x7F12}, {0x7E10,0x7EC9}, {0x7E11,0x7F23},
945  {0x7E1B,0x7F1A}, {0x7E1D,0x7F1C}, {0x7E1E,0x7F1F}, {0x7E1F,0x7F1B}, {0x7E23,0x53BF},
946  {0x7E27,0x7EE6}, {0x7E2B,0x7F1D}, {0x7E2D,0x7F21}, {0x7E2E,0x7F29}, {0x7E31,0x7EB5},
947  {0x7E32,0x7F27}, {0x7E35,0x7F26}, {0x7E36,0x7D77}, {0x7E37,0x7F15}, {0x7E39,0x7F25},
948  {0x7E3D,0x603B}, {0x7E3E,0x7EE9}, {0x7E45,0x7F2B}, {0x7E46,0x7F2A}, {0x7E52,0x7F2F},
949  {0x7E54,0x7EC7}, {0x7E55,0x7F2E}, {0x7E5A,0x7F2D}, {0x7E5E,0x7ED5}, {0x7E62,0x7F0B},
950  {0x7E69,0x7EF3}, {0x7E6A,0x7ED8}, {0x7E6D,0x8327}, {0x7E6E,0x7F30}, {0x7E6F,0x7F33},
951  {0x7E70,0x7F32}, {0x7E73,0x7F34}, {0x7E79,0x7ECE}, {0x7E7C,0x7EE7}, {0x7E7D,0x7F24},
952  {0x7E7E,0x7F31}, {0x7E88,0x7F2C}, {0x7E8A,0x7EA9}, {0x7E8C,0x7EED}, {0x7E8F,0x7F20},
953  {0x7E93,0x7F28}, {0x7E96,0x7EA4}, {0x7E98,0x7F35}, {0x7E9C,0x7F06}, {0x7F4C,0x7F42},
954  {0x7F70,0x7F5A}, {0x7F77,0x7F62}, {0x7F85,0x7F57}, {0x7F86,0x7F74}, {0x7F88,0x7F81},
955  {0x7FA5,0x7F9F}, {0x7FA9,0x4E49}, {0x7FD2,0x4E60}, {0x7FF9,0x7FD8}, {0x802C,0x8027},
956  {0x802E,0x8022}, {0x8056,0x5723}, {0x805E,0x95FB}, {0x806F,0x8054}, {0x8070,0x806A},
957  {0x8072,0x58F0}, {0x8073,0x8038}, {0x8075,0x8069}, {0x8076,0x8042}, {0x8077,0x804C},
958  {0x8079,0x804D}, {0x807D,0x542C}, {0x807E,0x804B}, {0x8085,0x8083}, {0x8105,0x80C1},
959  {0x811B,0x80EB}, {0x8139,0x80C0}, {0x814E,0x80BE}, {0x8156,0x80E8}, {0x8161,0x8136},
960  {0x8166,0x8111}, {0x816B,0x80BF}, {0x8178,0x80A0}, {0x819A,0x80A4}, {0x81A0,0x80F6},
961  {0x81A9,0x817B}, {0x81BD,0x80C6}, {0x81BE,0x810D}, {0x81BF,0x8113}, {0x81C9,0x8138},
962  {0x81CD,0x8110}, {0x81CF,0x8191}, {0x81D8,0x814A}, {0x81DA,0x80EA}, {0x81DF,0x810F},
963  {0x81E0,0x8114}, {0x81E8,0x4E34}, {0x81FA,0x53F0}, {0x8207,0x4E0E}, {0x8208,0x5174},
964  {0x8209,0x4E3E}, {0x820A,0x65E7}, {0x8259,0x8231}, {0x8264,0x8223}, {0x8266,0x8230},
965  {0x826B,0x823B}, {0x8271,0x8270}, {0x8277,0x8273}, {0x82BB,0x520D}, {0x82E7,0x82CE},
966  {0x838A,0x5E84}, {0x8396,0x830E}, {0x83A2,0x835A}, {0x83A7,0x82CB}, {0x83EF,0x534E},
967  {0x8407,0x82CC}, {0x840A,0x83B1}, {0x842C,0x4E07}, {0x8435,0x83B4}, {0x8449,0x53F6},
968  {0x8452,0x836D}, {0x8464,0x836E}, {0x8466,0x82C7}, {0x8477,0x8364}, {0x8493,0x83BC},
969  {0x8494,0x83B3}, {0x84BC,0x82CD}, {0x84C0,0x836A}, {0x84CB,0x76D6}, {0x84EE,0x83B2},
970  {0x84EF,0x82C1}, {0x84FD,0x835C}, {0x851E,0x848C}, {0x8523,0x848B}, {0x8526,0x8311},
971  {0x852D,0x836B}, {0x8541,0x8368}, {0x8546,0x8487}, {0x854E,0x835E}, {0x8552,0x836C},
972  {0x8553,0x82B8}, {0x8555,0x83B8}, {0x8558,0x835B}, {0x8562,0x8489}, {0x8569,0x8361},
973  {0x856A,0x829C}, {0x856D,0x8427}, {0x8577,0x84E3}, {0x8588,0x835F}, {0x858A,0x84DF},
974  {0x858C,0x8297}, {0x8594,0x8537}, {0x859F,0x83B6}, {0x85A6,0x8350}, {0x85A9,0x8428},
975  {0x85BA,0x8360}, {0x85CD,0x84DD}, {0x85CE,0x8369}, {0x85DD,0x827A}, {0x85E5,0x836F},
976  {0x85EA,0x85AE}, {0x85F4,0x8574}, {0x85F6,0x82C8}, {0x85F9,0x853C}, {0x85FA,0x853A},
977  {0x8604,0x8572}, {0x8606,0x82A6}, {0x8607,0x82CF}, {0x860B,0x82F9}, {0x861A,0x85D3},
978  {0x861E,0x8539}, {0x8622,0x830F}, {0x862D,0x5170}, {0x863A,0x84E0}, {0x863F,0x841D},
979  {0x8655,0x5904}, {0x865C,0x864F}, {0x865F,0x53F7}, {0x8667,0x4E8F}, {0x86FA,0x86F1},
980  {0x8706,0x86AC}, {0x8755,0x8680}, {0x8766,0x867E}, {0x8778,0x8717}, {0x8784,0x86F3},
981  {0x879E,0x8682}, {0x87A2,0x8424}, {0x87BB,0x877C}, {0x87C4,0x86F0}, {0x87C8,0x8748},
982  {0x87CE,0x87A8}, {0x87E3,0x866E}, {0x87EC,0x8749}, {0x87EF,0x86F2}, {0x87F2,0x866B},
983  {0x87F6,0x86CF}, {0x87FB,0x8681}, {0x8805,0x8747}, {0x8806,0x867F}, {0x8810,0x86F4},
984  {0x8811,0x877E}, {0x881F,0x8721}, {0x8823,0x86CE}, {0x8831,0x86CA}, {0x8836,0x8695},
985  {0x883B,0x86EE}, {0x8846,0x4F17}, {0x8853,0x672F}, {0x885B,0x536B}, {0x885D,0x51B2},
986  {0x8879,0x53EA}, {0x88CA,0x8885}, {0x88CF,0x91CC}, {0x88DC,0x8865}, {0x88DD,0x88C5},
987  {0x8932,0x88E4}, {0x8933,0x88E2}, {0x8938,0x891B}, {0x893B,0x4EB5}, {0x8947,0x88E5},
988  {0x8956,0x8884}, {0x895D,0x88E3}, {0x8960,0x88C6}, {0x8964,0x8934}, {0x896A,0x889C},
989  {0x896F,0x886C}, {0x8972,0x88AD}, {0x898B,0x89C1}, {0x898F,0x89C4}, {0x8993,0x89C5},
990  {0x8996,0x89C6}, {0x8998,0x89C7}, {0x89A1,0x89CB}, {0x89A6,0x89CE}, {0x89AA,0x4EB2},
991  {0x89AC,0x89CA}, {0x89AF,0x89CF}, {0x89B2,0x89D0}, {0x89B7,0x89D1}, {0x89BA,0x89C9},
992  {0x89BD,0x89C8}, {0x89BF,0x89CC}, {0x89C0,0x89C2}, {0x89F4,0x89DE}, {0x89F6,0x89EF},
993  {0x89F8,0x89E6}, {0x8A01,0x8BA0}, {0x8A02,0x8BA2}, {0x8A03,0x8BA3}, {0x8A08,0x8BA1},
994  {0x8A0A,0x8BAF}, {0x8A0C,0x8BA7}, {0x8A0E,0x8BA8}, {0x8A10,0x8BA6}, {0x8A13,0x8BAD},
995  {0x8A15,0x8BAA}, {0x8A16,0x8BAB}, {0x8A18,0x8BB0}, {0x8A1B,0x8BB9}, {0x8A1D,0x8BB6},
996  {0x8A1F,0x8BBC}, {0x8A23,0x8BC0}, {0x8A25,0x8BB7}, {0x8A2A,0x8BBF}, {0x8A2D,0x8BBE},
997  {0x8A31,0x8BB8}, {0x8A34,0x8BC9}, {0x8A36,0x8BC3}, {0x8A3A,0x8BCA}, {0x8A41,0x8BC2},
998  {0x8A46,0x8BCB}, {0x8A4E,0x8BB5}, {0x8A50,0x8BC8}, {0x8A52,0x8BD2}, {0x8A54,0x8BCF},
999  {0x8A55,0x8BC4}, {0x8A58,0x8BCE}, {0x8A5B,0x8BC5}, {0x8A5E,0x8BCD}, {0x8A61,0x8BE9},
1000  {0x8A62,0x8BE2}, {0x8A63,0x8BE3}, {0x8A66,0x8BD5}, {0x8A69,0x8BD7}, {0x8A6B,0x8BE7},
1001  {0x8A6C,0x8BDF}, {0x8A6D,0x8BE1}, {0x8A6E,0x8BE0}, {0x8A70,0x8BD8}, {0x8A71,0x8BDD},
1002  {0x8A72,0x8BE5}, {0x8A73,0x8BE6}, {0x8A75,0x8BDC}, {0x8A7C,0x8BD9}, {0x8A7F,0x8BD6},
1003  {0x8A84,0x8BD4}, {0x8A85,0x8BDB}, {0x8A86,0x8BD3}, {0x8A87,0x5938}, {0x8A8D,0x8BA4},
1004  {0x8A91,0x8BF3}, {0x8A92,0x8BF6}, {0x8A95,0x8BDE}, {0x8A98,0x8BF1}, {0x8A9A,0x8BEE},
1005  {0x8A9E,0x8BED}, {0x8AA0,0x8BDA}, {0x8AA1,0x8BEB}, {0x8AA3,0x8BEC}, {0x8AA4,0x8BEF},
1006  {0x8AA5,0x8BF0}, {0x8AA6,0x8BF5}, {0x8AA8,0x8BF2}, {0x8AAC,0x8BF4}, {0x8AB0,0x8C01},
1007  {0x8AB2,0x8BFE}, {0x8AB6,0x8C07}, {0x8AB9,0x8BFD}, {0x8ABC,0x8C0A}, {0x8ABF,0x8C03},
1008  {0x8AC2,0x8C04}, {0x8AC4,0x8C06}, {0x8AC7,0x8C08}, {0x8AC9,0x8BFF}, {0x8ACB,0x8BF7},
1009  {0x8ACD,0x8BE4}, {0x8ACF,0x8BF9}, {0x8AD1,0x8BFC}, {0x8AD2,0x8C05}, {0x8AD6,0x8BBA},
1010  {0x8AD7,0x8C02}, {0x8ADB,0x8C00}, {0x8ADC,0x8C0D}, {0x8ADE,0x8C1D}, {0x8AE2,0x8BE8},
1011  {0x8AE4,0x8C14}, {0x8AE6,0x8C1B}, {0x8AE7,0x8C10}, {0x8AEB,0x8C0F}, {0x8AED,0x8C15},
1012  {0x8AEE,0x8C18}, {0x8AF1,0x8BB3}, {0x8AF3,0x8C19}, {0x8AF6,0x8C0C}, {0x8AF7,0x8BBD},
1013  {0x8AF8,0x8BF8}, {0x8AFA,0x8C1A}, {0x8AFC,0x8C16}, {0x8AFE,0x8BFA}, {0x8B00,0x8C0B},
1014  {0x8B01,0x8C12}, {0x8B02,0x8C13}, {0x8B04,0x8A8A}, {0x8B05,0x8BCC}, {0x8B0A,0x8C0E},
1015  {0x8B0E,0x8C1C}, {0x8B10,0x8C27}, {0x8B14,0x8C11}, {0x8B16,0x8C21}, {0x8B17,0x8C24},
1016  {0x8B19,0x8C26}, {0x8B1A,0x8C25}, {0x8B1B,0x8BB2}, {0x8B1D,0x8C22}, {0x8B21,0x8C23},
1017  {0x8B28,0x8C1F}, {0x8B2B,0x8C2A}, {0x8B2C,0x8C2C}, {0x8B2D,0x8C2B}, {0x8B33,0x8BB4},
1018  {0x8B39,0x8C28}, {0x8B3E,0x8C29}, {0x8B49,0x8BC1}, {0x8B4E,0x8C32}, {0x8B4F,0x8BA5},
1019  {0x8B56,0x8C2E}, {0x8B58,0x8BC6}, {0x8B59,0x8C2F}, {0x8B5A,0x8C2D}, {0x8B5C,0x8C31},
1020  {0x8B6B,0x8C35}, {0x8B6F,0x8BD1}, {0x8B70,0x8BAE}, {0x8B74,0x8C34}, {0x8B77,0x62A4},
1021  {0x8B7D,0x8A89}, {0x8B80,0x8BFB}, {0x8B8A,0x53D8}, {0x8B8E,0x96E0}, {0x8B92,0x8C17},
1022  {0x8B93,0x8BA9}, {0x8B95,0x8C30}, {0x8B96,0x8C36}, {0x8B9C,0x8C20}, {0x8B9E,0x8C33},
1023  {0x8C48,0x5C82}, {0x8C50,0x4E30}, {0x8C9D,0x8D1D}, {0x8C9E,0x8D1E}, {0x8CA0,0x8D1F},
1024  {0x8CA1,0x8D22}, {0x8CA2,0x8D21}, {0x8CA7,0x8D2B}, {0x8CA8,0x8D27}, {0x8CA9,0x8D29},
1025  {0x8CAA,0x8D2A}, {0x8CAB,0x8D2F}, {0x8CAC,0x8D23}, {0x8CAF,0x8D2E}, {0x8CB0,0x8D33},
1026  {0x8CB2,0x8D40}, {0x8CB3,0x8D30}, {0x8CB4,0x8D35}, {0x8CB6,0x8D2C}, {0x8CB7,0x4E70},
1027  {0x8CB8,0x8D37}, {0x8CBA,0x8D36}, {0x8CBB,0x8D39}, {0x8CBC,0x8D34}, {0x8CBD,0x8D3B},
1028  {0x8CBF,0x8D38}, {0x8CC0,0x8D3A}, {0x8CC1,0x8D32}, {0x8CC2,0x8D42}, {0x8CC3,0x8D41},
1029  {0x8CC4,0x8D3F}, {0x8CC5,0x8D45}, {0x8CC7,0x8D44}, {0x8CC8,0x8D3E}, {0x8CCA,0x8D3C},
1030  {0x8CD1,0x8D48}, {0x8CD2,0x8D4A}, {0x8CD3,0x5BBE}, {0x8CD5,0x8D47}, {0x8CDA,0x8D49},
1031  {0x8CDC,0x8D50}, {0x8CDE,0x8D4F}, {0x8CE0,0x8D54}, {0x8CE1,0x8D53}, {0x8CE2,0x8D24},
1032  {0x8CE3,0x5356}, {0x8CE4,0x8D31}, {0x8CE6,0x8D4B}, {0x8CE7,0x8D55}, {0x8CEA,0x8D28},
1033  {0x8CEB,0x8D4D}, {0x8CEC,0x8D26}, {0x8CED,0x8D4C}, {0x8CF4,0x8D56}, {0x8CFA,0x8D5A},
1034  {0x8CFB,0x8D59}, {0x8CFC,0x8D2D}, {0x8CFD,0x8D5B}, {0x8CFE,0x8D5C}, {0x8D04,0x8D3D},
1035  {0x8D05,0x8D58}, {0x8D08,0x8D60}, {0x8D0A,0x8D5E}, {0x8D0B,0x8D5D}, {0x8D0D,0x8D61},
1036  {0x8D0F,0x8D62}, {0x8D10,0x8D46}, {0x8D16,0x8D4E}, {0x8D1B,0x8D63}, {0x8D1C,0x8D43},
1037  {0x8D95,0x8D76}, {0x8D99,0x8D75}, {0x8DA8,0x8D8B}, {0x8DB2,0x8DB1}, {0x8E10,0x8DF5},
1038  {0x8E34,0x8E0A}, {0x8E4C,0x8DC4}, {0x8E55,0x8DF8}, {0x8E63,0x8E52}, {0x8E7A,0x8DF7},
1039  {0x8E89,0x8DB8}, {0x8E8A,0x8E0C}, {0x8E8B,0x8DFB}, {0x8E8D,0x8DC3}, {0x8E91,0x8E2F},
1040  {0x8E92,0x8DDE}, {0x8E93,0x8E2C}, {0x8E9A,0x8DF9}, {0x8EA1,0x8E51}, {0x8EA5,0x8E7F},
1041  {0x8EA6,0x8E9C}, {0x8EAA,0x8E8F}, {0x8EC0,0x8EAF}, {0x8ECA,0x8F66}, {0x8ECB,0x8F67},
1042  {0x8ECC,0x8F68}, {0x8ECD,0x519B}, {0x8ED2,0x8F69}, {0x8ED4,0x8F6B}, {0x8EDB,0x8F6D},
1043  {0x8EDF,0x8F6F}, {0x8EE4,0x8F77}, {0x8EEB,0x8F78}, {0x8EF2,0x8F71}, {0x8EF8,0x8F74},
1044  {0x8EF9,0x8F75}, {0x8EFA,0x8F7A}, {0x8EFB,0x8F72}, {0x8EFC,0x8F76}, {0x8EFE,0x8F7C},
1045  {0x8F03,0x8F83}, {0x8F05,0x8F82}, {0x8F07,0x8F81}, {0x8F09,0x8F7D}, {0x8F0A,0x8F7E},
1046  {0x8F12,0x8F84}, {0x8F14,0x8F85}, {0x8F15,0x8F7B}, {0x8F1B,0x8F86}, {0x8F1C,0x8F8E},
1047  {0x8F1D,0x8F89}, {0x8F1E,0x8F8B}, {0x8F1F,0x8F8D}, {0x8F25,0x8F8A}, {0x8F26,0x8F87},
1048  {0x8F29,0x8F88}, {0x8F2A,0x8F6E}, {0x8F2F,0x8F91}, {0x8F33,0x8F8F}, {0x8F38,0x8F93},
1049  {0x8F3B,0x8F90}, {0x8F3E,0x8F97}, {0x8F3F,0x8206}, {0x8F42,0x6BC2}, {0x8F44,0x8F96},
1050  {0x8F45,0x8F95}, {0x8F46,0x8F98}, {0x8F49,0x8F6C}, {0x8F4D,0x8F99}, {0x8F4E,0x8F7F},
1051  {0x8F54,0x8F9A}, {0x8F5F,0x8F70}, {0x8F61,0x8F94}, {0x8F62,0x8F79}, {0x8F64,0x8F73},
1052  {0x8FA6,0x529E}, {0x8FAD,0x8F9E}, {0x8FAE,0x8FAB}, {0x8FAF,0x8FA9}, {0x8FB2,0x519C},
1053  {0x9015,0x8FF3}, {0x9019,0x8FD9}, {0x9023,0x8FDE}, {0x9032,0x8FDB}, {0x904B,0x8FD0},
1054  {0x904E,0x8FC7}, {0x9054,0x8FBE}, {0x9055,0x8FDD}, {0x905C,0x900A}, {0x905E,0x9012},
1055  {0x9060,0x8FDC}, {0x9069,0x9002}, {0x9072,0x8FDF}, {0x9077,0x8FC1}, {0x9078,0x9009},
1056  {0x907A,0x9057}, {0x907C,0x8FBD}, {0x9081,0x8FC8}, {0x9084,0x8FD8}, {0x9087,0x8FE9},
1057  {0x908A,0x8FB9}, {0x908F,0x903B}, {0x9090,0x9026}, {0x90DF,0x90CF}, {0x90F5,0x90AE},
1058  {0x9106,0x90D3}, {0x9109,0x4E61}, {0x9112,0x90B9}, {0x9114,0x90AC}, {0x9116,0x90E7},
1059  {0x9127,0x9093}, {0x912D,0x90D1}, {0x9130,0x90BB}, {0x9132,0x90F8}, {0x9134,0x90BA},
1060  {0x9136,0x90D0}, {0x913A,0x909D}, {0x9148,0x90E6}, {0x9196,0x915D}, {0x919C,0x4E11},
1061  {0x91AB,0x533B}, {0x91AC,0x9171}, {0x91C0,0x917F}, {0x91C1,0x8845}, {0x91C3,0x917E},
1062  {0x91C5,0x917D}, {0x91CB,0x91CA}, {0x91D2,0x9485}, {0x91D3,0x9486}, {0x91D4,0x9487},
1063  {0x91D5,0x948C}, {0x91D7,0x948A}, {0x91D8,0x9489}, {0x91D9,0x948B}, {0x91DD,0x9488},
1064  {0x91E3,0x9493}, {0x91E4,0x9490}, {0x91E7,0x948F}, {0x91E9,0x9492}, {0x91F5,0x9497},
1065  {0x91F7,0x948D}, {0x91F9,0x9495}, {0x91FA,0x948E}, {0x9200,0x94AF}, {0x9201,0x94AB},
1066  {0x9204,0x94AD}, {0x9208,0x949A}, {0x9209,0x94A0}, {0x920D,0x949D}, {0x920E,0x94A9},
1067  {0x9210,0x94A4}, {0x9211,0x94A3}, {0x9214,0x949E}, {0x9215,0x94AE}, {0x921E,0x94A7},
1068  {0x9223,0x9499}, {0x9225,0x94AC}, {0x9226,0x949B}, {0x9227,0x94AA}, {0x922E,0x94CC},
1069  {0x9230,0x94C8}, {0x9233,0x94B6}, {0x9234,0x94C3}, {0x9237,0x94B4}, {0x9238,0x94B9},
1070  {0x9239,0x94CD}, {0x923A,0x94B0}, {0x923D,0x94B8}, {0x923E,0x94C0}, {0x923F,0x94BF},
1071  {0x9240,0x94BE}, {0x9245,0x949C}, {0x9248,0x94CA}, {0x9249,0x94C9}, {0x924D,0x94CB},
1072  {0x9251,0x94C2}, {0x9255,0x94B7}, {0x9257,0x94B3}, {0x925A,0x94C6}, {0x925B,0x94C5},
1073  {0x925E,0x94BA}, {0x9262,0x94B5}, {0x9266,0x94B2}, {0x926C,0x94BC}, {0x926D,0x94BD},
1074  {0x9278,0x94F0}, {0x927A,0x94D2}, {0x927B,0x94EC}, {0x927F,0x94EA}, {0x9280,0x94F6},
1075  {0x9283,0x94F3}, {0x9285,0x94DC}, {0x9291,0x94E3}, {0x9293,0x94E8}, {0x9296,0x94E2},
1076  {0x9298,0x94ED}, {0x929A,0x94EB}, {0x929C,0x8854}, {0x92A0,0x94D1}, {0x92A3,0x94F7},
1077  {0x92A5,0x94F1}, {0x92A6,0x94DF}, {0x92A8,0x94F5}, {0x92A9,0x94E5}, {0x92AA,0x94D5},
1078  {0x92AB,0x94EF}, {0x92AC,0x94D0}, {0x92B1,0x94DE}, {0x92B7,0x9500}, {0x92B9,0x9508},
1079  {0x92BB,0x9511}, {0x92BC,0x9509}, {0x92C1,0x94DD}, {0x92C3,0x9512}, {0x92C5,0x950C},
1080  {0x92C7,0x94A1}, {0x92CC,0x94E4}, {0x92CF,0x94D7}, {0x92D2,0x950B}, {0x92DD,0x950A},
1081  {0x92DF,0x9513}, {0x92E3,0x94D8}, {0x92E4,0x9504}, {0x92E5,0x9503}, {0x92E6,0x9514},
1082  {0x92E8,0x9507}, {0x92EA,0x94FA}, {0x92ED,0x9510}, {0x92EE,0x94D6}, {0x92EF,0x9506},
1083  {0x92F0,0x9502}, {0x92F1,0x94FD}, {0x92F6,0x950D}, {0x92F8,0x952F}, {0x92FC,0x94A2},
1084  {0x9301,0x951E}, {0x9306,0x9516}, {0x9307,0x952B}, {0x9308,0x9529}, {0x9310,0x9525},
1085  {0x9312,0x9515}, {0x9315,0x951F}, {0x9318,0x9524}, {0x9319,0x9531}, {0x931A,0x94EE},
1086  {0x931B,0x951B}, {0x931F,0x952C}, {0x9320,0x952D}, {0x9322,0x94B1}, {0x9326,0x9526},
1087  {0x9328,0x951A}, {0x932B,0x9521}, {0x932E,0x9522}, {0x932F,0x9519}, {0x9332,0x5F55},
1088  {0x9333,0x9530}, {0x9338,0x94FC}, {0x9340,0x951D}, {0x9341,0x9528}, {0x9343,0x952A},
1089  {0x9346,0x9494}, {0x9347,0x9534}, {0x934B,0x9505}, {0x934D,0x9540}, {0x9354,0x9537},
1090  {0x9358,0x94E1}, {0x935B,0x953B}, {0x9364,0x9538}, {0x9365,0x9532}, {0x9369,0x9518},
1091  {0x936C,0x9539}, {0x9370,0x953E}, {0x9375,0x952E}, {0x9376,0x9536}, {0x937A,0x9517},
1092  {0x937E,0x953A}, {0x9382,0x9541}, {0x9384,0x953F}, {0x9387,0x9545}, {0x938A,0x9551},
1093  {0x9396,0x9501}, {0x9398,0x9549}, {0x93A2,0x94A8}, {0x93A3,0x84E5}, {0x93A6,0x954F},
1094  {0x93A7,0x94E0}, {0x93A9,0x94E9}, {0x93AA,0x953C}, {0x93AC,0x9550}, {0x93AE,0x9547},
1095  {0x93B0,0x9552}, {0x93B3,0x954D}, {0x93B5,0x9553}, {0x93B8,0x954C}, {0x93BF,0x954E},
1096  {0x93C3,0x955E}, {0x93C7,0x955F}, {0x93C8,0x94FE}, {0x93CC,0x9546}, {0x93CD,0x9559},
1097  {0x93D1,0x955D}, {0x93D7,0x94FF}, {0x93D8,0x9535}, {0x93DC,0x9557}, {0x93DD,0x9558},
1098  {0x93DE,0x955B}, {0x93DF,0x94F2}, {0x93E1,0x955C}, {0x93E2,0x9556}, {0x93E4,0x9542},
1099  {0x93E8,0x933E}, {0x93F5,0x94E7}, {0x93F7,0x9564}, {0x93F9,0x956A}, {0x9403,0x94D9},
1100  {0x940B,0x94F4}, {0x9410,0x9563}, {0x9412,0x94F9}, {0x9413,0x9566}, {0x9414,0x9561},
1101  {0x9418,0x949F}, {0x9419,0x956B}, {0x941D,0x9562}, {0x9420,0x9568}, {0x9426,0x950E},
1102  {0x9427,0x950F}, {0x9428,0x9544}, {0x942E,0x9570}, {0x9432,0x956F}, {0x9433,0x956D},
1103  {0x9435,0x94C1}, {0x9438,0x94CE}, {0x943A,0x94DB}, {0x943F,0x9571}, {0x9444,0x94F8},
1104  {0x944A,0x956C}, {0x944C,0x9554}, {0x9452,0x9274}, {0x9454,0x9572}, {0x9460,0x94C4},
1105  {0x9463,0x9573}, {0x9465,0x9565}, {0x946D,0x9567}, {0x9470,0x94A5}, {0x9472,0x9576},
1106  {0x9477,0x954A}, {0x9479,0x9569}, {0x947C,0x9523}, {0x947D,0x94BB}, {0x947E,0x92AE},
1107  {0x947F,0x51FF}, {0x9577,0x957F}, {0x9580,0x95E8}, {0x9582,0x95E9}, {0x9583,0x95EA},
1108  {0x9586,0x95EB}, {0x9589,0x95ED}, {0x958B,0x5F00}, {0x958C,0x95F6}, {0x958E,0x95F3},
1109  {0x958F,0x95F0}, {0x9591,0x95F2}, {0x9593,0x95F4}, {0x9594,0x95F5}, {0x9598,0x95F8},
1110  {0x95A1,0x9602}, {0x95A3,0x9601}, {0x95A5,0x9600}, {0x95A8,0x95FA}, {0x95A9,0x95FD},
1111  {0x95AB,0x9603}, {0x95AC,0x9606}, {0x95AD,0x95FE}, {0x95B2,0x9605}, {0x95B6,0x960A},
1112  {0x95B9,0x9609}, {0x95BB,0x960E}, {0x95BC,0x960F}, {0x95BD,0x960D}, {0x95BE,0x9608},
1113  {0x95BF,0x960C}, {0x95C3,0x9612}, {0x95C8,0x95F1}, {0x95CA,0x9614}, {0x95CB,0x9615},
1114  {0x95CC,0x9611}, {0x95D0,0x9617}, {0x95D4,0x9616}, {0x95D5,0x9619}, {0x95D6,0x95EF},
1115  {0x95DC,0x5173}, {0x95DE,0x961A}, {0x95E1,0x9610}, {0x95E5,0x95FC}, {0x9658,0x9649},
1116  {0x965D,0x9655}, {0x9663,0x9635}, {0x9670,0x9634}, {0x9673,0x9648}, {0x9678,0x9646},
1117  {0x967D,0x9633}, {0x9689,0x9667}, {0x968A,0x961F}, {0x968E,0x9636}, {0x9695,0x9668},
1118  {0x969B,0x9645}, {0x96A8,0x968F}, {0x96AA,0x9669}, {0x96B1,0x9690}, {0x96B4,0x9647},
1119  {0x96B8,0x96B6}, {0x96D6,0x867D}, {0x96D9,0x53CC}, {0x96DB,0x96CF}, {0x96DC,0x6742},
1120  {0x96E2,0x79BB}, {0x96E3,0x96BE}, {0x96F2,0x4E91}, {0x96FB,0x7535}, {0x9727,0x96FE},
1121  {0x973D,0x9701}, {0x9742,0x96F3}, {0x9744,0x972D}, {0x9748,0x7075}, {0x975A,0x9753},
1122  {0x975C,0x9759}, {0x9768,0x9765}, {0x978F,0x5DE9}, {0x97BD,0x9792}, {0x97C3,0x9791},
1123  {0x97C9,0x97AF}, {0x97CB,0x97E6}, {0x97CC,0x97E7}, {0x97D3,0x97E9}, {0x97D9,0x97EA},
1124  {0x97DC,0x97EC}, {0x97DE,0x97EB}, {0x97FF,0x54CD}, {0x9801,0x9875}, {0x9802,0x9876},
1125  {0x9803,0x9877}, {0x9805,0x9879}, {0x9806,0x987A}, {0x9807,0x9878}, {0x9808,0x987B},
1126  {0x980A,0x987C}, {0x980C,0x9882}, {0x980E,0x9880}, {0x980F,0x9883}, {0x9810,0x9884},
1127  {0x9811,0x987D}, {0x9812,0x9881}, {0x9813,0x987F}, {0x9817,0x9887}, {0x9818,0x9886},
1128  {0x981C,0x988C}, {0x9821,0x9889}, {0x9824,0x9890}, {0x9826,0x988F}, {0x982D,0x5934},
1129  {0x9830,0x988A}, {0x9837,0x9894}, {0x9838,0x9888}, {0x983B,0x9891}, {0x983D,0x9893},
1130  {0x9846,0x9897}, {0x984C,0x9898}, {0x984D,0x989D}, {0x984E,0x989A}, {0x9853,0x989B},
1131  {0x9854,0x989C}, {0x9858,0x613F}, {0x9859,0x98A1}, {0x985B,0x98A0}, {0x985E,0x7C7B},
1132  {0x9862,0x989F}, {0x9865,0x98A2}, {0x9867,0x987E}, {0x986B,0x98A4}, {0x986C,0x98A5},
1133  {0x986F,0x663E}, {0x9870,0x98A6}, {0x9871,0x9885}, {0x9873,0x989E}, {0x9874,0x98A7},
1134  {0x98A8,0x98CE}, {0x98AE,0x98D1}, {0x98AF,0x98D2}, {0x98B6,0x98D3}, {0x98BC,0x98D5},
1135  {0x98C4,0x98D8}, {0x98C6,0x98D9}, {0x98C8,0x98DA}, {0x98DB,0x98DE}, {0x98E0,0x9963},
1136  {0x98E9,0x9968}, {0x98EA,0x996A}, {0x98EB,0x996B}, {0x98ED,0x996C}, {0x98EF,0x996D},
1137  {0x98F2,0x996E}, {0x98F4,0x9974}, {0x98FC,0x9972}, {0x98FD,0x9971}, {0x98FE,0x9970},
1138  {0x9903,0x997A}, {0x9905,0x997C}, {0x9909,0x9977}, {0x990A,0x517B}, {0x990C,0x9975},
1139  {0x9911,0x997D}, {0x9912,0x9981}, {0x9913,0x997F}, {0x9918,0x4F59}, {0x991B,0x9984},
1140  {0x991E,0x996F}, {0x9921,0x9985}, {0x9928,0x9986}, {0x9933,0x9967}, {0x9937,0x9987},
1141  {0x993C,0x9969}, {0x993E,0x998F}, {0x993F,0x998A}, {0x9943,0x998D}, {0x9945,0x9992},
1142  {0x9948,0x9990}, {0x9949,0x9991}, {0x994A,0x9993}, {0x994B,0x9988}, {0x994C,0x9994},
1143  {0x9951,0x9965}, {0x9952,0x9976}, {0x9957,0x98E8}, {0x995C,0x990D}, {0x995E,0x998B},
1144  {0x9962,0x9995}, {0x99AC,0x9A6C}, {0x99AD,0x9A6D}, {0x99AE,0x51AF}, {0x99B1,0x9A6E},
1145  {0x99B3,0x9A70}, {0x99B4,0x9A6F}, {0x99C1,0x9A73}, {0x99D0,0x9A7B}, {0x99D1,0x9A7D},
1146  {0x99D2,0x9A79}, {0x99D4,0x9A75}, {0x99D5,0x9A7E}, {0x99D8,0x9A80}, {0x99D9,0x9A78},
1147  {0x99DB,0x9A76}, {0x99DD,0x9A7C}, {0x99DF,0x9A77}, {0x99E1,0x9A82}, {0x99E2,0x9A88},
1148  {0x99ED,0x9A87}, {0x99F1,0x9A86}, {0x99FF,0x9A8F}, {0x9A01,0x9A8B}, {0x9A05,0x9A93},
1149  {0x9A0D,0x9A92}, {0x9A0E,0x9A91}, {0x9A0F,0x9A90}, {0x9A16,0x9A9B}, {0x9A19,0x9A97},
1150  {0x9A2B,0x9A9E}, {0x9A2D,0x9A98}, {0x9A2E,0x9A9D}, {0x9A30,0x817E}, {0x9A36,0x9A7A},
1151  {0x9A37,0x9A9A}, {0x9A38,0x9A9F}, {0x9A3E,0x9AA1}, {0x9A40,0x84E6}, {0x9A41,0x9A9C},
1152  {0x9A42,0x9A96}, {0x9A43,0x9AA0}, {0x9A44,0x9AA2}, {0x9A45,0x9A71}, {0x9A4A,0x9A85},
1153  {0x9A4D,0x9A81}, {0x9A4F,0x9AA3}, {0x9A55,0x9A84}, {0x9A57,0x9A8C}, {0x9A5A,0x60CA},
1154  {0x9A5B,0x9A7F}, {0x9A5F,0x9AA4}, {0x9A62,0x9A74}, {0x9A64,0x9AA7}, {0x9A65,0x9AA5},
1155  {0x9A6A,0x9A8A}, {0x9AAF,0x80AE}, {0x9ACF,0x9AC5}, {0x9AD4,0x4F53}, {0x9AD5,0x9ACC},
1156  {0x9AD6,0x9ACB}, {0x9B06,0x677E}, {0x9B22,0x9B13}, {0x9B25,0x6597}, {0x9B27,0x95F9},
1157  {0x9B29,0x960B}, {0x9B2E,0x9604}, {0x9B31,0x90C1}, {0x9B4E,0x9B49}, {0x9B58,0x9B47},
1158  {0x9B5A,0x9C7C}, {0x9B6F,0x9C81}, {0x9B74,0x9C82}, {0x9B77,0x9C7F}, {0x9B81,0x9C85},
1159  {0x9B83,0x9C86}, {0x9B8E,0x9C87}, {0x9B90,0x9C90}, {0x9B91,0x9C8D}, {0x9B92,0x9C8B},
1160  {0x9B9A,0x9C92}, {0x9B9D,0x9C9E}, {0x9B9E,0x9C95}, {0x9BAA,0x9C94}, {0x9BAB,0x9C9B},
1161  {0x9BAD,0x9C91}, {0x9BAE,0x9C9C}, {0x9BC0,0x9CA7}, {0x9BC1,0x9CA0}, {0x9BC7,0x9CA9},
1162  {0x9BC9,0x9CA4}, {0x9BCA,0x9CA8}, {0x9BD4,0x9CBB}, {0x9BD6,0x9CAD}, {0x9BDB,0x9CB7},
1163  {0x9BDD,0x9CB4}, {0x9BE1,0x9CB1}, {0x9BE2,0x9CB5}, {0x9BE4,0x9CB2}, {0x9BE7,0x9CB3},
1164  {0x9BE8,0x9CB8}, {0x9BEA,0x9CAE}, {0x9BEB,0x9CB0}, {0x9BF0,0x9CB6}, {0x9BF4,0x9CBA},
1165  {0x9BFD,0x9CAB}, {0x9BFF,0x9CCA}, {0x9C08,0x9CBD}, {0x9C09,0x9CC7}, {0x9C0D,0x9CC5},
1166  {0x9C10,0x9CC4}, {0x9C12,0x9CC6}, {0x9C13,0x9CC3}, {0x9C20,0x9CCB}, {0x9C23,0x9CA5},
1167  {0x9C25,0x9CCF}, {0x9C28,0x9CCE}, {0x9C29,0x9CD0}, {0x9C2D,0x9CCD}, {0x9C31,0x9CA2},
1168  {0x9C32,0x9CCC}, {0x9C33,0x9CD3}, {0x9C35,0x9CD8}, {0x9C37,0x9CA6}, {0x9C39,0x9CA3},
1169  {0x9C3B,0x9CD7}, {0x9C3E,0x9CD4}, {0x9C45,0x9CD9}, {0x9C48,0x9CD5}, {0x9C49,0x9CD6},
1170  {0x9C52,0x9CDF}, {0x9C54,0x9CDD}, {0x9C56,0x9CDC}, {0x9C57,0x9CDE}, {0x9C58,0x9C9F},
1171  {0x9C5D,0x9CBC}, {0x9C5F,0x9C8E}, {0x9C67,0x9CE2}, {0x9C6D,0x9C9A}, {0x9C78,0x9C88},
1172  {0x9C7A,0x9CA1}, {0x9CE5,0x9E1F}, {0x9CE9,0x9E20}, {0x9CEC,0x51EB}, {0x9CF3,0x51E4},
1173  {0x9CF4,0x9E23}, {0x9CF6,0x9E22}, {0x9D06,0x9E29}, {0x9D07,0x9E28}, {0x9D09,0x9E26},
1174  {0x9D15,0x9E35}, {0x9D1B,0x9E33}, {0x9D1D,0x9E32}, {0x9D1F,0x9E31}, {0x9D23,0x9E2A},
1175  {0x9D26,0x9E2F}, {0x9D28,0x9E2D}, {0x9D2F,0x9E38}, {0x9D30,0x9E39}, {0x9D3B,0x9E3F},
1176  {0x9D3F,0x9E3D}, {0x9D42,0x9E3A}, {0x9D51,0x9E43}, {0x9D52,0x9E46}, {0x9D53,0x9E41},
1177  {0x9D5C,0x9E48}, {0x9D5D,0x9E45}, {0x9D60,0x9E44}, {0x9D61,0x9E49}, {0x9D6A,0x9E4C},
1178  {0x9D6C,0x9E4F}, {0x9D6F,0x9E4E}, {0x9D72,0x9E4A}, {0x9D87,0x9E2B}, {0x9D89,0x9E51},
1179  {0x9D93,0x9E4B}, {0x9D98,0x9E55}, {0x9D9A,0x9E57}, {0x9DA5,0x9E5B}, {0x9DA9,0x9E5C},
1180  {0x9DAF,0x83BA}, {0x9DB4,0x9E64}, {0x9DBB,0x9E58}, {0x9DBC,0x9E63}, {0x9DC0,0x9E5A},
1181  {0x9DC2,0x9E5E}, {0x9DC4,0x9E21}, {0x9DD3,0x9E67}, {0x9DD7,0x9E25}, {0x9DD9,0x9E37},
1182  {0x9DDA,0x9E68}, {0x9DE5,0x9E36}, {0x9DE6,0x9E6A}, {0x9DEF,0x9E69}, {0x9DF2,0x9E6B},
1183  {0x9DF3,0x9E47}, {0x9DF8,0x9E6C}, {0x9DF9,0x9E70}, {0x9DFA,0x9E6D}, {0x9E0C,0x9E71},
1184  {0x9E15,0x9E2C}, {0x9E1A,0x9E66}, {0x9E1B,0x9E73}, {0x9E1D,0x9E42}, {0x9E1E,0x9E3E},
1185  {0x9E7A,0x9E7E}, {0x9E7C,0x7877}, {0x9E7D,0x76D0}, {0x9E97,0x4E3D}, {0x9EA5,0x9EA6},
1186  {0x9EA9,0x9EB8}, {0x9EBD,0x4E48}, {0x9ECC,0x9EC9}, {0x9EDE,0x70B9}, {0x9EE8,0x515A},
1187  {0x9EF2,0x9EEA}, {0x9EF7,0x9EE9}, {0x9EFD,0x9EFE}, {0x9EFF,0x9F0B}, {0x9F09,0x9F0D},
1188  {0x9F4A,0x9F50}, {0x9F4B,0x658B}, {0x9F4F,0x9F51}, {0x9F52,0x9F7F}, {0x9F54,0x9F80},
1189  {0x9F59,0x9F85}, {0x9F5C,0x9F87}, {0x9F5F,0x9F83}, {0x9F60,0x9F86}, {0x9F61,0x9F84},
1190  {0x9F66,0x9F88}, {0x9F6A,0x9F8A}, {0x9F6C,0x9F89}, {0x9F72,0x9F8B}, {0x9F77,0x9F8C},
1191  {0x9F8D,0x9F99}, {0x9F90,0x5E9E}, {0x9F94,0x9F9A}, {0x9F95,0x9F9B}, {0x9F9C,0x9F9F}
1192};
1193
1194
1195
1196/* the letters correspond to unicode characters which
1197 * have Lu, Ll, Lt, Lm, Lo, Mn, Mc, or Me in their
1198 * GENERAL CATEGORY */
1199
1200#define NUM_LETTER_INFO 277
1201static const unirange letter_info[NUM_LETTER_INFO] = {
1202  {0x41,0x5a}, {0x61,0x7a}, {0xaa,0xaa}, {0xb5,0xb5},
1203  {0xba,0xba}, {0xc0,0xd6}, {0xd8,0xf6}, {0xf8,0x1f5},
1204  {0x1fa,0x217}, {0x250,0x2a8}, {0x2b0,0x2b8}, {0x2bb,0x2c1},
1205  {0x2d0,0x2d1}, {0x2e0,0x2e4}, {0x300,0x345}, {0x360,0x361},
1206  {0x37a,0x37a}, {0x386,0x386}, {0x388,0x38a}, {0x38c,0x38c},
1207  {0x38e,0x3a1}, {0x3a3,0x3ce}, {0x3d0,0x3d6}, {0x3da,0x3da},
1208  {0x3dc,0x3dc}, {0x3de,0x3de}, {0x3e0,0x3e0}, {0x3e2,0x3f3},
1209  {0x401,0x40c}, {0x40e,0x44f}, {0x451,0x45c}, {0x45e,0x481},
1210  {0x483,0x486}, {0x490,0x4c4}, {0x4c7,0x4c8}, {0x4cb,0x4cc},
1211  {0x4d0,0x4eb}, {0x4ee,0x4f5}, {0x4f8,0x4f9}, {0x531,0x556},
1212  {0x559,0x559}, {0x561,0x587}, {0x591,0x5a1}, {0x5a3,0x5b9},
1213  {0x5bb,0x5bd}, {0x5bf,0x5bf}, {0x5c1,0x5c2}, {0x5c4,0x5c4},
1214  {0x5d0,0x5ea}, {0x5f0,0x5f2}, {0x621,0x63a}, {0x640,0x652},
1215  {0x670,0x6b7}, {0x6ba,0x6be}, {0x6c0,0x6ce}, {0x6d0,0x6d3},
1216  {0x6d5,0x6e8}, {0x6ea,0x6ed}, {0x780,0x7b1}, {0x901,0x903}, {0x905,0x939},
1217  {0x93c,0x94d}, {0x951,0x954}, {0x958,0x963}, {0x981,0x983},
1218  {0x985,0x98c}, {0x98f,0x990}, {0x993,0x9a8}, {0x9aa,0x9b0},
1219  {0x9b2,0x9b2}, {0x9b6,0x9b9}, {0x9bc,0x9bc}, {0x9be,0x9c4},
1220  {0x9c7,0x9c8}, {0x9cb,0x9cd}, {0x9d7,0x9d7}, {0x9dc,0x9dd},
1221  {0x9df,0x9e3}, {0x9f0,0x9f1}, {0xa02,0xa02}, {0xa05,0xa0a},
1222  {0xa0f,0xa10}, {0xa13,0xa28}, {0xa2a,0xa30}, {0xa32,0xa33},
1223  {0xa35,0xa36}, {0xa38,0xa39}, {0xa3c,0xa3c}, {0xa3e,0xa42},
1224  {0xa47,0xa48}, {0xa4b,0xa4d}, {0xa59,0xa5c}, {0xa5e,0xa5e},
1225  {0xa70,0xa74}, {0xa81,0xa83}, {0xa85,0xa8b}, {0xa8d,0xa8d},
1226  {0xa8f,0xa91}, {0xa93,0xaa8}, {0xaaa,0xab0}, {0xab2,0xab3},
1227  {0xab5,0xab9}, {0xabc,0xac5}, {0xac7,0xac9}, {0xacb,0xacd},
1228  {0xae0,0xae0}, {0xb01,0xb03}, {0xb05,0xb0c}, {0xb0f,0xb10},
1229  {0xb13,0xb28}, {0xb2a,0xb30}, {0xb32,0xb33}, {0xb36,0xb39},
1230  {0xb3c,0xb43}, {0xb47,0xb48}, {0xb4b,0xb4d}, {0xb56,0xb57},
1231  {0xb5c,0xb5d}, {0xb5f,0xb61}, {0xb82,0xb83}, {0xb85,0xb8a},
1232  {0xb8e,0xb90}, {0xb92,0xb95}, {0xb99,0xb9a}, {0xb9c,0xb9c},
1233  {0xb9e,0xb9f}, {0xba3,0xba4}, {0xba8,0xbaa}, {0xbae,0xbb5},
1234  {0xbb7,0xbb9}, {0xbbe,0xbc2}, {0xbc6,0xbc8}, {0xbca,0xbcd},
1235  {0xbd7,0xbd7}, {0xc01,0xc03}, {0xc05,0xc0c}, {0xc0e,0xc10},
1236  {0xc12,0xc28}, {0xc2a,0xc33}, {0xc35,0xc39}, {0xc3e,0xc44},
1237  {0xc46,0xc48}, {0xc4a,0xc4d}, {0xc55,0xc56}, {0xc60,0xc61},
1238  {0xc82,0xc83}, {0xc85,0xc8c}, {0xc8e,0xc90}, {0xc92,0xca8},
1239  {0xcaa,0xcb3}, {0xcb5,0xcb9}, {0xcbe,0xcc4}, {0xcc6,0xcc8},
1240  {0xcca,0xccd}, {0xcd5,0xcd6}, {0xcde,0xcde}, {0xce0,0xce1},
1241  {0xd02,0xd03}, {0xd05,0xd0c}, {0xd0e,0xd10}, {0xd12,0xd28},
1242  {0xd2a,0xd39}, {0xd3e,0xd43}, {0xd46,0xd48}, {0xd4a,0xd4d},
1243  {0xd57,0xd57}, {0xd60,0xd61}, {0xe01,0xe2e}, {0xe30,0xe3a},
1244  {0xe40,0xe4e}, {0xe81,0xe82}, {0xe84,0xe84}, {0xe87,0xe88},
1245  {0xe8a,0xe8a}, {0xe8d,0xe8d}, {0xe94,0xe97}, {0xe99,0xe9f},
1246  {0xea1,0xea3}, {0xea5,0xea5}, {0xea7,0xea7}, {0xeaa,0xeab},
1247  {0xead,0xeae}, {0xeb0,0xeb9}, {0xebb,0xebd}, {0xec0,0xec4},
1248  {0xec6,0xec6}, {0xec8,0xecd}, {0xedc,0xedd}, {0xf18,0xf19},
1249  {0xf35,0xf35}, {0xf37,0xf37}, {0xf39,0xf39}, {0xf40,0xf47},
1250  {0xf49,0xf69}, {0xf71,0xf84}, {0xf86,0xf87}, {0xf90,0xf95},
1251  {0xf97,0xf97}, {0xf99,0xfad}, {0xfb1,0xfb7}, {0xfb9,0xfb9},
1252  {0x10a0,0x10c5}, {0x10d0,0x10f6}, {0x1100,0x1159}, {0x115f,0x11a2},
1253  {0x11a8,0x11f9}, {0x1820,0x1877}, {0x1880,0x18a9}, {0x1e00,0x1e9b},
1254  {0x1ea0,0x1ef9}, {0x1f00,0x1f15},
1255  {0x1f18,0x1f1d}, {0x1f20,0x1f45}, {0x1f48,0x1f4d}, {0x1f50,0x1f57},
1256  {0x1f59,0x1f59}, {0x1f5b,0x1f5b}, {0x1f5d,0x1f5d}, {0x1f5f,0x1f7d},
1257  {0x1f80,0x1fb4}, {0x1fb6,0x1fbc}, {0x1fbe,0x1fbe}, {0x1fc2,0x1fc4},
1258  {0x1fc6,0x1fcc}, {0x1fd0,0x1fd3}, {0x1fd6,0x1fdb}, {0x1fe0,0x1fec},
1259  {0x1ff2,0x1ff4}, {0x1ff6,0x1ffc}, {0x207f,0x207f}, {0x20d0,0x20e1},
1260  {0x2102,0x2102}, {0x2107,0x2107}, {0x210a,0x2113}, {0x2115,0x2115},
1261  {0x2118,0x211d}, {0x2124,0x2124}, {0x2126,0x2126}, {0x2128,0x2128},
1262  {0x212a,0x2131}, {0x2133,0x2138}, {0x3005,0x3005}, {0x302a,0x302f},
1263  {0x3031,0x3035}, {0x3041,0x3094}, {0x3099,0x309e}, {0x30a1,0x30fa},
1264  {0x30fc,0x30fe}, {0x3105,0x312c}, {0x3131,0x318e}, {0x4e00,0x9fa5},
1265  {0xac00,0xd7a3}, {0xf900,0xfa2d}, {0xfb00,0xfb06}, {0xfb13,0xfb17},
1266  {0xfb1e,0xfb28}, {0xfb2a,0xfb36}, {0xfb38,0xfb3c}, {0xfb3e,0xfb3e},
1267  {0xfb40,0xfb41}, {0xfb43,0xfb44}, {0xfb46,0xfbb1}, {0xfbd3,0xfd3d},
1268  {0xfd50,0xfd8f}, {0xfd92,0xfdc7}, {0xfdf0,0xfdfb}, {0xfe20,0xfe23},
1269  {0xfe70,0xfe72}, {0xfe74,0xfe74}, {0xfe76,0xfefc}, {0xff21,0xff3a},
1270  {0xff41,0xff5a}, {0xff66,0xffbe}, {0xffc2,0xffc7}, {0xffca,0xffcf},
1271  {0xffd2,0xffd7}, {0xffda,0xffdc}
1272};
1273
1274
1275/* the digits correspond to unicode characters which
1276 * have Nd in their GENERAL CATEGORY */
1277
1278#define NUM_DIGIT_INFO 17
1279static const unirange digit_info[NUM_DIGIT_INFO] = {
1280  {0x30,0x39}, {0x660,0x669}, {0x6f0,0x6f9}, {0x966,0x96f},
1281  {0x9e6,0x9ef}, {0xa66,0xa6f}, {0xae6,0xaef}, {0xb66,0xb6f},
1282  {0xbe7,0xbef}, {0xc66,0xc6f}, {0xce6,0xcef}, {0xd66,0xd6f},
1283  {0xe50,0xe59}, {0xed0,0xed9}, {0xf20,0xf29}, {0xff10,0xff19},
1284  {0x1810,0x1819}
1285};
1286
1287
1288/* the spaces correspond to unicode characters which
1289 * have Zs, Zl, or Zp in their GENERAL CATEGORY */
1290
1291#define NUM_SPACE_INFO 5
1292static const unirange space_info[NUM_SPACE_INFO] = {
1293  {0x20,0x20}, {0xa0,0xa0}, {0x2000,0x200b}, {0x2028,0x2029},
1294  {0x3000,0x3000}
1295};
1296
1297
1298
1299/* parse_utf8_char parses the next utf-8 character, placing its
1300 * unicode equivalent in *value. The length of the utf-8 character
1301 * is returned */
1302int parse_utf8_char(const unsigned char *here,
1303            const unsigned char *end,
1304            unsigned short *value) {
1305  unsigned short c1;
1306  unsigned short c2;
1307  unsigned short c3;
1308 
1309  *value = 0; /* will be the value for illegal characters */
1310 
1311  if (here <= end) {
1312    c1 = (unsigned short)(*here);
1313   
1314    if (c1 <= 0x7f) {
1315      /* found a one-byte character */
1316      *value = c1;
1317      return 1;
1318     
1319    } else if (c1 >= 0xc0 && c1 <= 0xdf && here+1 <= end &&
1320           (c2=(unsigned short)(*(here+1))) >= 0x80) {
1321      /* found a two-byte character */
1322      *value = ((c1 & 0x1f) << 6) + (c2 & 0x3f);
1323      return 2;
1324     
1325    } else if (c1 >= 0xe0 && c1 <= 0xef && here+2 <= end &&
1326           (c2=(unsigned int)(*(here+1))) >= 0x80 &&
1327           (c3=(unsigned int)(*(here+2))) >= 0x80) {
1328      /* found a three-byte character */
1329      *value = ((c1 & 0xf) << 12) + ((c2 & 0x3f) << 6) +
1330    (c3 & 0x3f);
1331      return 3;
1332     
1333    } else {
1334      /* error in encoding, return the length as 1 */
1335      return 1;
1336    }
1337  }
1338
1339  /* end of string */
1340  return 0;
1341}
1342
1343
1344/* output_utf8_char encodes a unicode character as a UTF-8 character.
1345 * The length of the encoding is returned. If the string was not
1346 * long enough to encode the character 0 is returned. */
1347int output_utf8_char (unsigned short value,
1348              unsigned char *here,
1349              unsigned char *end) {
1350  int len = (int)(end - here + 1); /* end is the last character */
1351  if (value < 0x80) {
1352    /* will be encoded in one byte */
1353    if (len >= 1) {
1354      *here = (unsigned char)value;
1355      return 1;
1356    }
1357
1358  } else if (value < 0x800) {
1359    /* will be encoded in two bytes */
1360    if (len >= 2) {
1361      *here++ = 0xc0 | (unsigned char)((value >> 6) & 0x1f);
1362      *here = 0x80 | (unsigned char)(value & 0x3f);
1363
1364      return 2;
1365    }
1366
1367  } else {
1368    /* will be encoded in three bytes */
1369    if (len >= 3) {
1370      *here++ = 0xe0 | (unsigned char)((value >> 12) & 0xf);
1371      *here++ = 0x80 | (unsigned char)((value >> 6) & 0x3f);
1372      *here = 0x80 | (unsigned char)(value & 0x3f);
1373      return 3;
1374    }
1375  }
1376
1377  return 0;
1378}
1379
1380
1381static int lookup_decompose_table (unsigned short value) {
1382  int first = 0;
1383  int last = NUM_DECOMPOSE_INFO;
1384  int here;
1385
1386  while (first < last) {
1387    here = (last-first)/2 + first;
1388    if (value < decompose_info[here].ch) {
1389      last = here;
1390    } else if (value > decompose_info[here].ch) {
1391      first = here+1;
1392    } else {
1393      return here;
1394    }
1395  }
1396
1397  return -1;
1398}
1399
1400/* decompose_str will decompose a unicode string into its canonical
1401 * equivalents. NULL is returned if the input array was not
1402 * large enough to contain the fully decomposed string (the array
1403 * will be in a correct, but partially decomposed state). The input
1404 * must be null-terminated. */
1405unsigned short *decompose_str (unsigned short *input,
1406                   int max_output_len) {
1407  int curpos = 0;
1408  int curlen = unicode_strlen (input);
1409  int tablepos = 0;
1410  int leninc;
1411  int i;
1412
1413  while (input[curpos] != 0) {
1414    tablepos = lookup_decompose_table (input[curpos]);
1415    if (tablepos >= 0) {
1416      /* found a decomposition */
1417      leninc = unicode_strnlen (decompose_info[tablepos].str, 3)-1;
1418      if (curlen+leninc < max_output_len) {
1419    /* enough space for this decomposition */
1420
1421    if (leninc > 1) {
1422      /* we have to shift the array along */
1423      for (i=curlen-1; i>=curpos; --i) {
1424        input[i+leninc] = input[i];
1425      }
1426      input[curlen+leninc] = 0;
1427      curlen += leninc;
1428    }
1429
1430    /* decompose the character */
1431    for (i=0; i<=leninc; ++i) {
1432      input[curpos+i] = decompose_info[tablepos].str[i];
1433    }
1434
1435    /* note: curpos is not incremented because the decomposed */
1436    /*       characters might need decomposing */
1437
1438      } else {
1439    /* no space left in string */
1440    return NULL;
1441      }
1442
1443    } else {
1444      /* the character cannot be decomposed */
1445      ++curpos;
1446    }
1447  }
1448
1449  return input;
1450}
1451
1452
1453
1454/* unicode_cat_data is a combination of the letter, digit, and
1455 * space information in a form that is quick to look up.
1456 * The information about each byte is stored in two bits
1457 *
1458 * 00 - neither letter, digit or space
1459 * 01 - letter
1460 * 10 - space
1461 * 11 - digit
1462 *
1463 * You can test for letter | space by looking at the right
1464 * column
1465 */
1466/*mg_u_long *unicode_cat_data;*/
1467
1468void create_unicat_data () {
1469  int i=0;
1470  int min_start=0;
1471  int min_end=0;
1472  register mg_u_long min_value=0; /* filling the whole byte */
1473 
1474  const unirange *letter_here = letter_info;
1475  const unirange *letter_end = letter_info+NUM_LETTER_INFO;
1476  const unirange *digit_here = digit_info;
1477  const unirange *digit_end = digit_info+NUM_DIGIT_INFO;
1478  const unirange *space_here = space_info;
1479  const unirange *space_end = space_info+NUM_SPACE_INFO;
1480
1481  if (unicode_cat_data != NULL) return;
1482  // 64-BIT FIX: The old malloc() parameter calculation assumed that an unsigned long was always 4 bytes, but this
1483  //   isn't true on 64-bit machines. Although the space required for this structure is actually the same on 64-bit
1484  //   machines (2 bits are needed for each of 65536 values), the rest of the code assumes the machine is 32-bit
1485  //   and there are 16 values per array entry. Rather than trying to change the rest of the code to work on both
1486  //   32-bit and 64-bit machines, I've just changed this calculation so the block allocated is twice the size on
1487  //   64-bit machines. This is a bit wasteful because half the space isn't used, but it's only 16KB so I don't
1488  //   think it's worth worrying about. [Michael Dewsnip, DL Consulting Ltd.]
1489  unicode_cat_data = (mg_u_long *) malloc((0x10000 / 16) * sizeof(mg_u_long));
1490  if (unicode_cat_data == NULL) return;
1491 
1492  while (i <= 0xffff) {
1493    /* decide what to fill with next */
1494    min_start = i;
1495    min_end = 0xffff;
1496    min_value = 0; /* 00 */
1497   
1498    while (letter_here < letter_end && letter_here->last < i) ++letter_here;
1499    if (letter_here < letter_end && letter_here->last <= min_end) {
1500      min_start = letter_here->first;
1501      min_end = letter_here->last;
1502      min_value = 0x55555555; /* 01 */
1503    }
1504   
1505    while (digit_here < digit_end && digit_here->last < i) ++digit_here;
1506    if (digit_here < digit_end && digit_here->last <= min_end) {
1507      min_start = digit_here->first;
1508      min_end = digit_here->last;
1509      min_value = 0xffffffff; /* 11 */
1510    }
1511   
1512    while (space_here < space_end && space_here->last < i) ++space_here;
1513    if (space_here < space_end && space_here->last <= min_end) {
1514      min_start = space_here->first;
1515      min_end = space_here->last;
1516      min_value = 0xaaaaaaaa; /* 10 */
1517    }
1518
1519    if (min_start < i) min_start = i;
1520    else if (min_start > i) {
1521      min_end = min_start-1;
1522      min_start = i;
1523      min_value = 0; /* 00 */
1524    }
1525
1526    /* fill the entries from min_start to min_end with min_value */
1527    while (i <= min_end) {
1528      /* special version for common case */
1529      if (i % 16 == 0) {
1530    unicode_cat_data[i/16] = min_value; /* doesn't matter if too long */
1531    i += 16;
1532    if (i > min_end) {
1533      i = min_end+1;
1534      break;
1535    }
1536   
1537      } else {
1538    register mg_u_long mask = 3 << ((i % 16) * 2);
1539    unicode_cat_data[i/16] = (unicode_cat_data[i/16] & (~mask)) |
1540                  (min_value & mask);
1541    ++i;
1542      }
1543    }
1544  }
1545}
1546
1547/* does a binary search on a range table */
1548static int in_unirange (const unirange *info, int num_info,
1549            unsigned short value) {
1550  int first = 0;
1551  int last = num_info;
1552  int here;
1553
1554  while (first < last) {
1555    here = (last-first)/2 + first;
1556    if (value < info[here].first) {
1557      last = here;
1558    } else if (value > info[here].last) {
1559      first = here+1;
1560    } else {
1561      return 1;
1562    }
1563  }
1564
1565  return 0;
1566}
1567
1568
1569
1570/* tests to see whether 'value' is a valid Unicode letter */
1571int is_unicode_letter (unsigned short value) {
1572  if (unicode_cat_data == NULL) create_unicat_data ();
1573  if (unicode_cat_data == NULL) {
1574    /* use old method */
1575    return in_unirange(letter_info, NUM_LETTER_INFO, value);
1576  }
1577
1578  return (((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x3) == 0x1);
1579}
1580
1581/* tests to see whether 'value' is a valid Unicode digit */
1582int is_unicode_digit (unsigned short value) {
1583  if (unicode_cat_data == NULL) create_unicat_data ();
1584  if (unicode_cat_data == NULL) {
1585    /* use old method */
1586    return in_unirange(digit_info, NUM_DIGIT_INFO, value);
1587  }
1588 
1589  return (((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x3) == 0x3);
1590}
1591
1592/* tests to see whether 'value' is a valid Unicode letter or
1593 * digit */
1594int is_unicode_letdig (unsigned short value) {
1595  if (unicode_cat_data == NULL) create_unicat_data ();
1596  if (unicode_cat_data == NULL) {
1597    /* use old method */
1598    return (in_unirange(letter_info, NUM_LETTER_INFO, value) ||
1599        in_unirange(digit_info, NUM_DIGIT_INFO, value));
1600   
1601  }
1602
1603  return ((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x1);
1604}
1605
1606/* tests to see whether 'value' is a valid space
1607 * The test includes both "C" spaces and "Unicode" spaces, i.e.
1608 * form-feed, newline, carriage return, horizontal tab,
1609 * vertical tab, and the Zs, Zl, and Zp Unicode categorizations */
1610int is_unicode_space (unsigned short value) {
1611  if (value < 0x80) return isspace (value);
1612  if (unicode_cat_data == NULL) create_unicat_data ();
1613  if (unicode_cat_data == NULL) {
1614    /* use old method */
1615    return in_unirange(space_info, NUM_SPACE_INFO, value);
1616  }
1617
1618  return (((unicode_cat_data[value/16] >> ((value%16)*2)) & 0x3) == 0x2);
1619}
1620
1621/* returns the length of the unicode string */
1622int unicode_strlen (const unsigned short *str) {
1623  int len = 0;
1624
1625  /* keep going till you find the null-terminator */
1626  while (*str != 0) {
1627    ++len;
1628    ++str;
1629  }
1630
1631  return len;
1632}
1633
1634/* returns the length of the unicode string, up to a maximum */
1635int unicode_strnlen (const unsigned short *str, int max_length) {
1636  int len = 0;
1637
1638  /* keep going till you find the null-terminator */
1639  while (*str != 0 && len < max_length ) {
1640    ++len;
1641    ++str;
1642  }
1643
1644  return len;
1645}
1646
1647
1648/* Does a binary search on a relate table, returns -1 if it is not
1649 * found. */
1650static int search_unirelate (const unirelate *info, int num_info,
1651                 unsigned short value) {
1652  int first = 0;
1653  int last = num_info;
1654  int here;
1655
1656  while (first < last) {
1657    here = (last-first)/2 + first;
1658    if (value < info[here].ch1) {
1659      last = here;
1660    } else if (value > info[here].ch1) {
1661      first = here+1;
1662    } else {
1663      return here;
1664    }
1665  }
1666
1667  return -1;
1668}
1669
1670
1671/* returns the upper-case equivalent of value */
1672unsigned short unicode_toupper (unsigned short value) {
1673  int related = search_unirelate (toupper_info, NUM_TOUPPER_INFO, value);
1674  if (related >= 0) {
1675    value = toupper_info[related].ch2;
1676  }
1677  return value;
1678}
1679
1680/* returns the lower-case equivalent of value */
1681unsigned short unicode_tolower (unsigned short value) {
1682  int related = search_unirelate (tolower_info, NUM_TOLOWER_INFO, value);
1683  if (related >= 0) {
1684    value = tolower_info[related].ch2;
1685  }
1686  return value;
1687}
1688
1689/* returns the simplified Chinese character equivalent of
1690 * another Chinese character */
1691unsigned short unicode_tosimplified (unsigned short value) {
1692  int related = search_unirelate (tosimplified_info, NUM_TOSIMPLIFIED_INFO, value);
1693  if (related >= 0) {
1694    value = tosimplified_info[related].ch2;
1695  }
1696  return value;
1697}
1698
1699
1700/* converts a utf-8 word (string with length stored in the first byte
1701 * to a Unicode array. To handle all situations the output buffer should
1702 * be 256 unsigned shorts long. The output will also have the length as
1703 * the first entry. */
1704unsigned short *utf8_word_to_unicode (const unsigned char *input,
1705                      unsigned short *output,
1706                      int max_output_length) {
1707  int inlen = *input;
1708  const unsigned char *inhere = input+1;
1709  const unsigned char *inend = &inhere[inlen-1];
1710  unsigned short c;
1711  int clen;
1712 
1713  int outlen = 0;
1714  unsigned short *outhere = output+1;
1715 
1716  while (inhere <= inend && inlen < max_output_length-1) {
1717    /* decode the character */
1718    clen = parse_utf8_char (inhere, inend, &c);
1719    inhere += clen;
1720
1721    if (clen > 0) {
1722      /* store the character */
1723      *outhere = c;
1724      ++outhere;
1725      ++outlen;
1726    }
1727  }
1728
1729  output[0] = outlen;
1730  return output;
1731}
1732
1733
1734/* converts a unicode word buffer (with the length stored in the
1735 * entry) to a utf8 encoded word output (with the length stored in
1736 * the first byte. Only 255 bytes (not characters) can be stored
1737 * in the output. */
1738unsigned char *unicode_to_utf8_word (const unsigned short *input,
1739                     unsigned char *output,
1740                     int max_output_length) {
1741  int inlen = *input;
1742  const unsigned short *word = input + 1;
1743  int in_i = 0;
1744  int clen;
1745
1746  int outlen = 0;
1747  unsigned char *outhere = output+1;
1748  unsigned char *outend = output+max_output_length;
1749
1750  while (in_i < inlen) {
1751    if ((clen=output_utf8_char(word[in_i], outhere, outend)) == 0) {
1752      /* ran out of space to encode the character */
1753      break;
1754    }
1755
1756    outhere += clen;
1757    outlen += clen;
1758    ++in_i;
1759  }
1760
1761  output[0] = outlen;
1762
1763  return output;
1764}
1765
Note: See TracBrowser for help on using the browser.