mySQL 5.0.11 sources for tomato
[tomato.git] / release / src / router / mysql / strings / ctype-utf8.c
blob87c53717fd963c8bc4144b24597738d6e760e9a8
1 /* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved.
3 This library is free software; you can redistribute it and/or
4 modify it under the terms of the GNU Library General Public
5 License as published by the Free Software Foundation; version 2
6 of the License.
8 This library is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 Library General Public License for more details.
13 You should have received a copy of the GNU Library General Public
14 License along with this library; if not, write to the Free
15 Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
16 MA 02110-1301, USA
19 /* UTF8 according RFC 2279 */
20 /* Written by Alexander Barkov <bar@udm.net> */
22 #include <my_global.h>
23 #include "m_string.h"
24 #include "m_ctype.h"
25 #include <errno.h>
27 #ifndef EILSEQ
28 #define EILSEQ ENOENT
29 #endif
31 #ifndef HAVE_CHARSET_utf8
32 #define HAVE_CHARSET_utf8
33 #endif
35 #ifdef HAVE_CHARSET_utf8
36 #define HAVE_UNIDATA
37 #endif
39 #ifdef HAVE_CHARSET_ucs2
40 #define HAVE_UNIDATA
41 #endif
43 #ifdef HAVE_UNIDATA
45 #include "my_uctype.h"
47 static MY_UNICASE_INFO plane00[]={
48 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
49 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
50 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
51 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
52 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
53 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
54 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
55 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
56 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
57 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
58 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
59 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
60 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
61 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
62 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
63 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
64 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
65 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
66 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
67 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
68 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
69 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
70 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
71 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
72 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
73 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
74 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
75 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
76 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
77 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
78 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
79 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
80 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
81 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
82 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
83 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
84 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
85 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
86 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
87 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
88 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
89 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
90 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
91 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
92 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
93 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
94 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
95 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
96 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
97 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
98 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
99 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
100 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
101 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
102 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
103 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
104 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
105 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
106 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
107 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
108 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
109 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
110 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
111 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
112 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
113 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
114 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
115 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
116 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
117 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
118 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
119 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
120 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
121 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
122 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
123 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
124 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
125 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
126 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
127 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
128 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
129 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
130 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
131 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
132 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
133 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
134 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
135 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
136 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
137 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
138 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
139 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
140 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
141 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
142 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
143 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
144 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
145 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
146 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
147 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
148 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
149 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
150 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
151 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
152 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
153 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
154 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
155 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
156 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
157 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
158 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
159 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x0053},
160 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
161 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
162 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
163 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
164 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
165 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
166 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
167 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
168 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
169 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
170 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
171 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
172 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
173 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
174 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
175 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
180 Almost similar to plane00, but maps sorting order
181 for U+00DF to 0x00DF instead of 0x0053.
183 static MY_UNICASE_INFO plane00_mysql500[]={
184 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
185 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
186 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
187 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
188 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
189 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
190 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
191 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
192 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
193 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
194 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
195 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
196 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
197 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
198 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
199 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
200 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
201 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
202 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
203 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
204 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
205 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
206 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
207 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
208 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
209 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
210 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
211 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
212 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
213 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
214 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
215 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
216 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
217 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
218 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
219 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
220 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
221 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
222 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
223 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
224 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
225 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
226 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
227 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
228 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
229 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
230 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
231 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
232 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
233 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
234 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
235 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
236 {0x0048,0x0068,0x0048}, {0x0049,0x0069,0x0049},
237 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
238 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
239 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
240 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
241 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
242 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
243 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
244 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
245 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
246 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
247 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
248 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
249 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
250 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
251 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
252 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
253 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
254 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
255 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
256 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
257 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
258 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
259 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
260 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
261 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
262 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
263 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
264 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
265 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
266 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
267 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
268 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
269 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
270 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
271 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
272 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
273 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
274 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
275 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
276 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
277 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
278 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
279 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
280 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
281 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
282 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
283 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
284 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
285 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
286 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
287 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
288 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
289 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
290 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
291 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
292 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
293 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
294 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
295 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
296 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
297 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
298 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
299 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
300 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
301 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
302 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
303 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
304 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
305 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
306 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
307 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
308 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
309 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
310 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
311 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
315 static MY_UNICASE_INFO plane01[]={
316 {0x0100,0x0101,0x0041}, {0x0100,0x0101,0x0041},
317 {0x0102,0x0103,0x0041}, {0x0102,0x0103,0x0041},
318 {0x0104,0x0105,0x0041}, {0x0104,0x0105,0x0041},
319 {0x0106,0x0107,0x0043}, {0x0106,0x0107,0x0043},
320 {0x0108,0x0109,0x0043}, {0x0108,0x0109,0x0043},
321 {0x010A,0x010B,0x0043}, {0x010A,0x010B,0x0043},
322 {0x010C,0x010D,0x0043}, {0x010C,0x010D,0x0043},
323 {0x010E,0x010F,0x0044}, {0x010E,0x010F,0x0044},
324 {0x0110,0x0111,0x0110}, {0x0110,0x0111,0x0110},
325 {0x0112,0x0113,0x0045}, {0x0112,0x0113,0x0045},
326 {0x0114,0x0115,0x0045}, {0x0114,0x0115,0x0045},
327 {0x0116,0x0117,0x0045}, {0x0116,0x0117,0x0045},
328 {0x0118,0x0119,0x0045}, {0x0118,0x0119,0x0045},
329 {0x011A,0x011B,0x0045}, {0x011A,0x011B,0x0045},
330 {0x011C,0x011D,0x0047}, {0x011C,0x011D,0x0047},
331 {0x011E,0x011F,0x0047}, {0x011E,0x011F,0x0047},
332 {0x0120,0x0121,0x0047}, {0x0120,0x0121,0x0047},
333 {0x0122,0x0123,0x0047}, {0x0122,0x0123,0x0047},
334 {0x0124,0x0125,0x0048}, {0x0124,0x0125,0x0048},
335 {0x0126,0x0127,0x0126}, {0x0126,0x0127,0x0126},
336 {0x0128,0x0129,0x0049}, {0x0128,0x0129,0x0049},
337 {0x012A,0x012B,0x0049}, {0x012A,0x012B,0x0049},
338 {0x012C,0x012D,0x0049}, {0x012C,0x012D,0x0049},
339 {0x012E,0x012F,0x0049}, {0x012E,0x012F,0x0049},
340 {0x0130,0x0069,0x0049}, {0x0049,0x0131,0x0049},
341 {0x0132,0x0133,0x0132}, {0x0132,0x0133,0x0132},
342 {0x0134,0x0135,0x004A}, {0x0134,0x0135,0x004A},
343 {0x0136,0x0137,0x004B}, {0x0136,0x0137,0x004B},
344 {0x0138,0x0138,0x0138}, {0x0139,0x013A,0x004C},
345 {0x0139,0x013A,0x004C}, {0x013B,0x013C,0x004C},
346 {0x013B,0x013C,0x004C}, {0x013D,0x013E,0x004C},
347 {0x013D,0x013E,0x004C}, {0x013F,0x0140,0x013F},
348 {0x013F,0x0140,0x013F}, {0x0141,0x0142,0x0141},
349 {0x0141,0x0142,0x0141}, {0x0143,0x0144,0x004E},
350 {0x0143,0x0144,0x004E}, {0x0145,0x0146,0x004E},
351 {0x0145,0x0146,0x004E}, {0x0147,0x0148,0x004E},
352 {0x0147,0x0148,0x004E}, {0x0149,0x0149,0x0149},
353 {0x014A,0x014B,0x014A}, {0x014A,0x014B,0x014A},
354 {0x014C,0x014D,0x004F}, {0x014C,0x014D,0x004F},
355 {0x014E,0x014F,0x004F}, {0x014E,0x014F,0x004F},
356 {0x0150,0x0151,0x004F}, {0x0150,0x0151,0x004F},
357 {0x0152,0x0153,0x0152}, {0x0152,0x0153,0x0152},
358 {0x0154,0x0155,0x0052}, {0x0154,0x0155,0x0052},
359 {0x0156,0x0157,0x0052}, {0x0156,0x0157,0x0052},
360 {0x0158,0x0159,0x0052}, {0x0158,0x0159,0x0052},
361 {0x015A,0x015B,0x0053}, {0x015A,0x015B,0x0053},
362 {0x015C,0x015D,0x0053}, {0x015C,0x015D,0x0053},
363 {0x015E,0x015F,0x0053}, {0x015E,0x015F,0x0053},
364 {0x0160,0x0161,0x0053}, {0x0160,0x0161,0x0053},
365 {0x0162,0x0163,0x0054}, {0x0162,0x0163,0x0054},
366 {0x0164,0x0165,0x0054}, {0x0164,0x0165,0x0054},
367 {0x0166,0x0167,0x0166}, {0x0166,0x0167,0x0166},
368 {0x0168,0x0169,0x0055}, {0x0168,0x0169,0x0055},
369 {0x016A,0x016B,0x0055}, {0x016A,0x016B,0x0055},
370 {0x016C,0x016D,0x0055}, {0x016C,0x016D,0x0055},
371 {0x016E,0x016F,0x0055}, {0x016E,0x016F,0x0055},
372 {0x0170,0x0171,0x0055}, {0x0170,0x0171,0x0055},
373 {0x0172,0x0173,0x0055}, {0x0172,0x0173,0x0055},
374 {0x0174,0x0175,0x0057}, {0x0174,0x0175,0x0057},
375 {0x0176,0x0177,0x0059}, {0x0176,0x0177,0x0059},
376 {0x0178,0x00FF,0x0059}, {0x0179,0x017A,0x005A},
377 {0x0179,0x017A,0x005A}, {0x017B,0x017C,0x005A},
378 {0x017B,0x017C,0x005A}, {0x017D,0x017E,0x005A},
379 {0x017D,0x017E,0x005A}, {0x0053,0x017F,0x0053},
380 {0x0180,0x0180,0x0180}, {0x0181,0x0253,0x0181},
381 {0x0182,0x0183,0x0182}, {0x0182,0x0183,0x0182},
382 {0x0184,0x0185,0x0184}, {0x0184,0x0185,0x0184},
383 {0x0186,0x0254,0x0186}, {0x0187,0x0188,0x0187},
384 {0x0187,0x0188,0x0187}, {0x0189,0x0256,0x0189},
385 {0x018A,0x0257,0x018A}, {0x018B,0x018C,0x018B},
386 {0x018B,0x018C,0x018B}, {0x018D,0x018D,0x018D},
387 {0x018E,0x01DD,0x018E}, {0x018F,0x0259,0x018F},
388 {0x0190,0x025B,0x0190}, {0x0191,0x0192,0x0191},
389 {0x0191,0x0192,0x0191}, {0x0193,0x0260,0x0193},
390 {0x0194,0x0263,0x0194}, {0x01F6,0x0195,0x01F6},
391 {0x0196,0x0269,0x0196}, {0x0197,0x0268,0x0197},
392 {0x0198,0x0199,0x0198}, {0x0198,0x0199,0x0198},
393 {0x019A,0x019A,0x019A}, {0x019B,0x019B,0x019B},
394 {0x019C,0x026F,0x019C}, {0x019D,0x0272,0x019D},
395 {0x019E,0x019E,0x019E}, {0x019F,0x0275,0x019F},
396 {0x01A0,0x01A1,0x004F}, {0x01A0,0x01A1,0x004F},
397 {0x01A2,0x01A3,0x01A2}, {0x01A2,0x01A3,0x01A2},
398 {0x01A4,0x01A5,0x01A4}, {0x01A4,0x01A5,0x01A4},
399 {0x01A6,0x0280,0x01A6}, {0x01A7,0x01A8,0x01A7},
400 {0x01A7,0x01A8,0x01A7}, {0x01A9,0x0283,0x01A9},
401 {0x01AA,0x01AA,0x01AA}, {0x01AB,0x01AB,0x01AB},
402 {0x01AC,0x01AD,0x01AC}, {0x01AC,0x01AD,0x01AC},
403 {0x01AE,0x0288,0x01AE}, {0x01AF,0x01B0,0x0055},
404 {0x01AF,0x01B0,0x0055}, {0x01B1,0x028A,0x01B1},
405 {0x01B2,0x028B,0x01B2}, {0x01B3,0x01B4,0x01B3},
406 {0x01B3,0x01B4,0x01B3}, {0x01B5,0x01B6,0x01B5},
407 {0x01B5,0x01B6,0x01B5}, {0x01B7,0x0292,0x01B7},
408 {0x01B8,0x01B9,0x01B8}, {0x01B8,0x01B9,0x01B8},
409 {0x01BA,0x01BA,0x01BA}, {0x01BB,0x01BB,0x01BB},
410 {0x01BC,0x01BD,0x01BC}, {0x01BC,0x01BD,0x01BC},
411 {0x01BE,0x01BE,0x01BE}, {0x01F7,0x01BF,0x01F7},
412 {0x01C0,0x01C0,0x01C0}, {0x01C1,0x01C1,0x01C1},
413 {0x01C2,0x01C2,0x01C2}, {0x01C3,0x01C3,0x01C3},
414 {0x01C4,0x01C6,0x01C4}, {0x01C4,0x01C6,0x01C4},
415 {0x01C4,0x01C6,0x01C4}, {0x01C7,0x01C9,0x01C7},
416 {0x01C7,0x01C9,0x01C7}, {0x01C7,0x01C9,0x01C7},
417 {0x01CA,0x01CC,0x01CA}, {0x01CA,0x01CC,0x01CA},
418 {0x01CA,0x01CC,0x01CA}, {0x01CD,0x01CE,0x0041},
419 {0x01CD,0x01CE,0x0041}, {0x01CF,0x01D0,0x0049},
420 {0x01CF,0x01D0,0x0049}, {0x01D1,0x01D2,0x004F},
421 {0x01D1,0x01D2,0x004F}, {0x01D3,0x01D4,0x0055},
422 {0x01D3,0x01D4,0x0055}, {0x01D5,0x01D6,0x0055},
423 {0x01D5,0x01D6,0x0055}, {0x01D7,0x01D8,0x0055},
424 {0x01D7,0x01D8,0x0055}, {0x01D9,0x01DA,0x0055},
425 {0x01D9,0x01DA,0x0055}, {0x01DB,0x01DC,0x0055},
426 {0x01DB,0x01DC,0x0055}, {0x018E,0x01DD,0x018E},
427 {0x01DE,0x01DF,0x0041}, {0x01DE,0x01DF,0x0041},
428 {0x01E0,0x01E1,0x0041}, {0x01E0,0x01E1,0x0041},
429 {0x01E2,0x01E3,0x00C6}, {0x01E2,0x01E3,0x00C6},
430 {0x01E4,0x01E5,0x01E4}, {0x01E4,0x01E5,0x01E4},
431 {0x01E6,0x01E7,0x0047}, {0x01E6,0x01E7,0x0047},
432 {0x01E8,0x01E9,0x004B}, {0x01E8,0x01E9,0x004B},
433 {0x01EA,0x01EB,0x004F}, {0x01EA,0x01EB,0x004F},
434 {0x01EC,0x01ED,0x004F}, {0x01EC,0x01ED,0x004F},
435 {0x01EE,0x01EF,0x01B7}, {0x01EE,0x01EF,0x01B7},
436 {0x01F0,0x01F0,0x004A}, {0x01F1,0x01F3,0x01F1},
437 {0x01F1,0x01F3,0x01F1}, {0x01F1,0x01F3,0x01F1},
438 {0x01F4,0x01F5,0x0047}, {0x01F4,0x01F5,0x0047},
439 {0x01F6,0x0195,0x01F6}, {0x01F7,0x01BF,0x01F7},
440 {0x01F8,0x01F9,0x004E}, {0x01F8,0x01F9,0x004E},
441 {0x01FA,0x01FB,0x0041}, {0x01FA,0x01FB,0x0041},
442 {0x01FC,0x01FD,0x00C6}, {0x01FC,0x01FD,0x00C6},
443 {0x01FE,0x01FF,0x00D8}, {0x01FE,0x01FF,0x00D8}
446 static MY_UNICASE_INFO plane02[]={
447 {0x0200,0x0201,0x0041}, {0x0200,0x0201,0x0041},
448 {0x0202,0x0203,0x0041}, {0x0202,0x0203,0x0041},
449 {0x0204,0x0205,0x0045}, {0x0204,0x0205,0x0045},
450 {0x0206,0x0207,0x0045}, {0x0206,0x0207,0x0045},
451 {0x0208,0x0209,0x0049}, {0x0208,0x0209,0x0049},
452 {0x020A,0x020B,0x0049}, {0x020A,0x020B,0x0049},
453 {0x020C,0x020D,0x004F}, {0x020C,0x020D,0x004F},
454 {0x020E,0x020F,0x004F}, {0x020E,0x020F,0x004F},
455 {0x0210,0x0211,0x0052}, {0x0210,0x0211,0x0052},
456 {0x0212,0x0213,0x0052}, {0x0212,0x0213,0x0052},
457 {0x0214,0x0215,0x0055}, {0x0214,0x0215,0x0055},
458 {0x0216,0x0217,0x0055}, {0x0216,0x0217,0x0055},
459 {0x0218,0x0219,0x0053}, {0x0218,0x0219,0x0053},
460 {0x021A,0x021B,0x0054}, {0x021A,0x021B,0x0054},
461 {0x021C,0x021D,0x021C}, {0x021C,0x021D,0x021C},
462 {0x021E,0x021F,0x0048}, {0x021E,0x021F,0x0048},
463 {0x0220,0x0220,0x0220}, {0x0221,0x0221,0x0221},
464 {0x0222,0x0223,0x0222}, {0x0222,0x0223,0x0222},
465 {0x0224,0x0225,0x0224}, {0x0224,0x0225,0x0224},
466 {0x0226,0x0227,0x0041}, {0x0226,0x0227,0x0041},
467 {0x0228,0x0229,0x0045}, {0x0228,0x0229,0x0045},
468 {0x022A,0x022B,0x004F}, {0x022A,0x022B,0x004F},
469 {0x022C,0x022D,0x004F}, {0x022C,0x022D,0x004F},
470 {0x022E,0x022F,0x004F}, {0x022E,0x022F,0x004F},
471 {0x0230,0x0231,0x004F}, {0x0230,0x0231,0x004F},
472 {0x0232,0x0233,0x0059}, {0x0232,0x0233,0x0059},
473 {0x0234,0x0234,0x0234}, {0x0235,0x0235,0x0235},
474 {0x0236,0x0236,0x0236}, {0x0237,0x0237,0x0237},
475 {0x0238,0x0238,0x0238}, {0x0239,0x0239,0x0239},
476 {0x023A,0x023A,0x023A}, {0x023B,0x023B,0x023B},
477 {0x023C,0x023C,0x023C}, {0x023D,0x023D,0x023D},
478 {0x023E,0x023E,0x023E}, {0x023F,0x023F,0x023F},
479 {0x0240,0x0240,0x0240}, {0x0241,0x0241,0x0241},
480 {0x0242,0x0242,0x0242}, {0x0243,0x0243,0x0243},
481 {0x0244,0x0244,0x0244}, {0x0245,0x0245,0x0245},
482 {0x0246,0x0246,0x0246}, {0x0247,0x0247,0x0247},
483 {0x0248,0x0248,0x0248}, {0x0249,0x0249,0x0249},
484 {0x024A,0x024A,0x024A}, {0x024B,0x024B,0x024B},
485 {0x024C,0x024C,0x024C}, {0x024D,0x024D,0x024D},
486 {0x024E,0x024E,0x024E}, {0x024F,0x024F,0x024F},
487 {0x0250,0x0250,0x0250}, {0x0251,0x0251,0x0251},
488 {0x0252,0x0252,0x0252}, {0x0181,0x0253,0x0181},
489 {0x0186,0x0254,0x0186}, {0x0255,0x0255,0x0255},
490 {0x0189,0x0256,0x0189}, {0x018A,0x0257,0x018A},
491 {0x0258,0x0258,0x0258}, {0x018F,0x0259,0x018F},
492 {0x025A,0x025A,0x025A}, {0x0190,0x025B,0x0190},
493 {0x025C,0x025C,0x025C}, {0x025D,0x025D,0x025D},
494 {0x025E,0x025E,0x025E}, {0x025F,0x025F,0x025F},
495 {0x0193,0x0260,0x0193}, {0x0261,0x0261,0x0261},
496 {0x0262,0x0262,0x0262}, {0x0194,0x0263,0x0194},
497 {0x0264,0x0264,0x0264}, {0x0265,0x0265,0x0265},
498 {0x0266,0x0266,0x0266}, {0x0267,0x0267,0x0267},
499 {0x0197,0x0268,0x0197}, {0x0196,0x0269,0x0196},
500 {0x026A,0x026A,0x026A}, {0x026B,0x026B,0x026B},
501 {0x026C,0x026C,0x026C}, {0x026D,0x026D,0x026D},
502 {0x026E,0x026E,0x026E}, {0x019C,0x026F,0x019C},
503 {0x0270,0x0270,0x0270}, {0x0271,0x0271,0x0271},
504 {0x019D,0x0272,0x019D}, {0x0273,0x0273,0x0273},
505 {0x0274,0x0274,0x0274}, {0x019F,0x0275,0x019F},
506 {0x0276,0x0276,0x0276}, {0x0277,0x0277,0x0277},
507 {0x0278,0x0278,0x0278}, {0x0279,0x0279,0x0279},
508 {0x027A,0x027A,0x027A}, {0x027B,0x027B,0x027B},
509 {0x027C,0x027C,0x027C}, {0x027D,0x027D,0x027D},
510 {0x027E,0x027E,0x027E}, {0x027F,0x027F,0x027F},
511 {0x01A6,0x0280,0x01A6}, {0x0281,0x0281,0x0281},
512 {0x0282,0x0282,0x0282}, {0x01A9,0x0283,0x01A9},
513 {0x0284,0x0284,0x0284}, {0x0285,0x0285,0x0285},
514 {0x0286,0x0286,0x0286}, {0x0287,0x0287,0x0287},
515 {0x01AE,0x0288,0x01AE}, {0x0289,0x0289,0x0289},
516 {0x01B1,0x028A,0x01B1}, {0x01B2,0x028B,0x01B2},
517 {0x028C,0x028C,0x028C}, {0x028D,0x028D,0x028D},
518 {0x028E,0x028E,0x028E}, {0x028F,0x028F,0x028F},
519 {0x0290,0x0290,0x0290}, {0x0291,0x0291,0x0291},
520 {0x01B7,0x0292,0x01B7}, {0x0293,0x0293,0x0293},
521 {0x0294,0x0294,0x0294}, {0x0295,0x0295,0x0295},
522 {0x0296,0x0296,0x0296}, {0x0297,0x0297,0x0297},
523 {0x0298,0x0298,0x0298}, {0x0299,0x0299,0x0299},
524 {0x029A,0x029A,0x029A}, {0x029B,0x029B,0x029B},
525 {0x029C,0x029C,0x029C}, {0x029D,0x029D,0x029D},
526 {0x029E,0x029E,0x029E}, {0x029F,0x029F,0x029F},
527 {0x02A0,0x02A0,0x02A0}, {0x02A1,0x02A1,0x02A1},
528 {0x02A2,0x02A2,0x02A2}, {0x02A3,0x02A3,0x02A3},
529 {0x02A4,0x02A4,0x02A4}, {0x02A5,0x02A5,0x02A5},
530 {0x02A6,0x02A6,0x02A6}, {0x02A7,0x02A7,0x02A7},
531 {0x02A8,0x02A8,0x02A8}, {0x02A9,0x02A9,0x02A9},
532 {0x02AA,0x02AA,0x02AA}, {0x02AB,0x02AB,0x02AB},
533 {0x02AC,0x02AC,0x02AC}, {0x02AD,0x02AD,0x02AD},
534 {0x02AE,0x02AE,0x02AE}, {0x02AF,0x02AF,0x02AF},
535 {0x02B0,0x02B0,0x02B0}, {0x02B1,0x02B1,0x02B1},
536 {0x02B2,0x02B2,0x02B2}, {0x02B3,0x02B3,0x02B3},
537 {0x02B4,0x02B4,0x02B4}, {0x02B5,0x02B5,0x02B5},
538 {0x02B6,0x02B6,0x02B6}, {0x02B7,0x02B7,0x02B7},
539 {0x02B8,0x02B8,0x02B8}, {0x02B9,0x02B9,0x02B9},
540 {0x02BA,0x02BA,0x02BA}, {0x02BB,0x02BB,0x02BB},
541 {0x02BC,0x02BC,0x02BC}, {0x02BD,0x02BD,0x02BD},
542 {0x02BE,0x02BE,0x02BE}, {0x02BF,0x02BF,0x02BF},
543 {0x02C0,0x02C0,0x02C0}, {0x02C1,0x02C1,0x02C1},
544 {0x02C2,0x02C2,0x02C2}, {0x02C3,0x02C3,0x02C3},
545 {0x02C4,0x02C4,0x02C4}, {0x02C5,0x02C5,0x02C5},
546 {0x02C6,0x02C6,0x02C6}, {0x02C7,0x02C7,0x02C7},
547 {0x02C8,0x02C8,0x02C8}, {0x02C9,0x02C9,0x02C9},
548 {0x02CA,0x02CA,0x02CA}, {0x02CB,0x02CB,0x02CB},
549 {0x02CC,0x02CC,0x02CC}, {0x02CD,0x02CD,0x02CD},
550 {0x02CE,0x02CE,0x02CE}, {0x02CF,0x02CF,0x02CF},
551 {0x02D0,0x02D0,0x02D0}, {0x02D1,0x02D1,0x02D1},
552 {0x02D2,0x02D2,0x02D2}, {0x02D3,0x02D3,0x02D3},
553 {0x02D4,0x02D4,0x02D4}, {0x02D5,0x02D5,0x02D5},
554 {0x02D6,0x02D6,0x02D6}, {0x02D7,0x02D7,0x02D7},
555 {0x02D8,0x02D8,0x02D8}, {0x02D9,0x02D9,0x02D9},
556 {0x02DA,0x02DA,0x02DA}, {0x02DB,0x02DB,0x02DB},
557 {0x02DC,0x02DC,0x02DC}, {0x02DD,0x02DD,0x02DD},
558 {0x02DE,0x02DE,0x02DE}, {0x02DF,0x02DF,0x02DF},
559 {0x02E0,0x02E0,0x02E0}, {0x02E1,0x02E1,0x02E1},
560 {0x02E2,0x02E2,0x02E2}, {0x02E3,0x02E3,0x02E3},
561 {0x02E4,0x02E4,0x02E4}, {0x02E5,0x02E5,0x02E5},
562 {0x02E6,0x02E6,0x02E6}, {0x02E7,0x02E7,0x02E7},
563 {0x02E8,0x02E8,0x02E8}, {0x02E9,0x02E9,0x02E9},
564 {0x02EA,0x02EA,0x02EA}, {0x02EB,0x02EB,0x02EB},
565 {0x02EC,0x02EC,0x02EC}, {0x02ED,0x02ED,0x02ED},
566 {0x02EE,0x02EE,0x02EE}, {0x02EF,0x02EF,0x02EF},
567 {0x02F0,0x02F0,0x02F0}, {0x02F1,0x02F1,0x02F1},
568 {0x02F2,0x02F2,0x02F2}, {0x02F3,0x02F3,0x02F3},
569 {0x02F4,0x02F4,0x02F4}, {0x02F5,0x02F5,0x02F5},
570 {0x02F6,0x02F6,0x02F6}, {0x02F7,0x02F7,0x02F7},
571 {0x02F8,0x02F8,0x02F8}, {0x02F9,0x02F9,0x02F9},
572 {0x02FA,0x02FA,0x02FA}, {0x02FB,0x02FB,0x02FB},
573 {0x02FC,0x02FC,0x02FC}, {0x02FD,0x02FD,0x02FD},
574 {0x02FE,0x02FE,0x02FE}, {0x02FF,0x02FF,0x02FF}
577 static MY_UNICASE_INFO plane03[]={
578 {0x0300,0x0300,0x0300}, {0x0301,0x0301,0x0301},
579 {0x0302,0x0302,0x0302}, {0x0303,0x0303,0x0303},
580 {0x0304,0x0304,0x0304}, {0x0305,0x0305,0x0305},
581 {0x0306,0x0306,0x0306}, {0x0307,0x0307,0x0307},
582 {0x0308,0x0308,0x0308}, {0x0309,0x0309,0x0309},
583 {0x030A,0x030A,0x030A}, {0x030B,0x030B,0x030B},
584 {0x030C,0x030C,0x030C}, {0x030D,0x030D,0x030D},
585 {0x030E,0x030E,0x030E}, {0x030F,0x030F,0x030F},
586 {0x0310,0x0310,0x0310}, {0x0311,0x0311,0x0311},
587 {0x0312,0x0312,0x0312}, {0x0313,0x0313,0x0313},
588 {0x0314,0x0314,0x0314}, {0x0315,0x0315,0x0315},
589 {0x0316,0x0316,0x0316}, {0x0317,0x0317,0x0317},
590 {0x0318,0x0318,0x0318}, {0x0319,0x0319,0x0319},
591 {0x031A,0x031A,0x031A}, {0x031B,0x031B,0x031B},
592 {0x031C,0x031C,0x031C}, {0x031D,0x031D,0x031D},
593 {0x031E,0x031E,0x031E}, {0x031F,0x031F,0x031F},
594 {0x0320,0x0320,0x0320}, {0x0321,0x0321,0x0321},
595 {0x0322,0x0322,0x0322}, {0x0323,0x0323,0x0323},
596 {0x0324,0x0324,0x0324}, {0x0325,0x0325,0x0325},
597 {0x0326,0x0326,0x0326}, {0x0327,0x0327,0x0327},
598 {0x0328,0x0328,0x0328}, {0x0329,0x0329,0x0329},
599 {0x032A,0x032A,0x032A}, {0x032B,0x032B,0x032B},
600 {0x032C,0x032C,0x032C}, {0x032D,0x032D,0x032D},
601 {0x032E,0x032E,0x032E}, {0x032F,0x032F,0x032F},
602 {0x0330,0x0330,0x0330}, {0x0331,0x0331,0x0331},
603 {0x0332,0x0332,0x0332}, {0x0333,0x0333,0x0333},
604 {0x0334,0x0334,0x0334}, {0x0335,0x0335,0x0335},
605 {0x0336,0x0336,0x0336}, {0x0337,0x0337,0x0337},
606 {0x0338,0x0338,0x0338}, {0x0339,0x0339,0x0339},
607 {0x033A,0x033A,0x033A}, {0x033B,0x033B,0x033B},
608 {0x033C,0x033C,0x033C}, {0x033D,0x033D,0x033D},
609 {0x033E,0x033E,0x033E}, {0x033F,0x033F,0x033F},
610 {0x0340,0x0340,0x0340}, {0x0341,0x0341,0x0341},
611 {0x0342,0x0342,0x0342}, {0x0343,0x0343,0x0343},
612 {0x0344,0x0344,0x0344}, {0x0399,0x0345,0x0399},
613 {0x0346,0x0346,0x0346}, {0x0347,0x0347,0x0347},
614 {0x0348,0x0348,0x0348}, {0x0349,0x0349,0x0349},
615 {0x034A,0x034A,0x034A}, {0x034B,0x034B,0x034B},
616 {0x034C,0x034C,0x034C}, {0x034D,0x034D,0x034D},
617 {0x034E,0x034E,0x034E}, {0x034F,0x034F,0x034F},
618 {0x0350,0x0350,0x0350}, {0x0351,0x0351,0x0351},
619 {0x0352,0x0352,0x0352}, {0x0353,0x0353,0x0353},
620 {0x0354,0x0354,0x0354}, {0x0355,0x0355,0x0355},
621 {0x0356,0x0356,0x0356}, {0x0357,0x0357,0x0357},
622 {0x0358,0x0358,0x0358}, {0x0359,0x0359,0x0359},
623 {0x035A,0x035A,0x035A}, {0x035B,0x035B,0x035B},
624 {0x035C,0x035C,0x035C}, {0x035D,0x035D,0x035D},
625 {0x035E,0x035E,0x035E}, {0x035F,0x035F,0x035F},
626 {0x0360,0x0360,0x0360}, {0x0361,0x0361,0x0361},
627 {0x0362,0x0362,0x0362}, {0x0363,0x0363,0x0363},
628 {0x0364,0x0364,0x0364}, {0x0365,0x0365,0x0365},
629 {0x0366,0x0366,0x0366}, {0x0367,0x0367,0x0367},
630 {0x0368,0x0368,0x0368}, {0x0369,0x0369,0x0369},
631 {0x036A,0x036A,0x036A}, {0x036B,0x036B,0x036B},
632 {0x036C,0x036C,0x036C}, {0x036D,0x036D,0x036D},
633 {0x036E,0x036E,0x036E}, {0x036F,0x036F,0x036F},
634 {0x0370,0x0370,0x0370}, {0x0371,0x0371,0x0371},
635 {0x0372,0x0372,0x0372}, {0x0373,0x0373,0x0373},
636 {0x0374,0x0374,0x0374}, {0x0375,0x0375,0x0375},
637 {0x0376,0x0376,0x0376}, {0x0377,0x0377,0x0377},
638 {0x0378,0x0378,0x0378}, {0x0379,0x0379,0x0379},
639 {0x037A,0x037A,0x037A}, {0x037B,0x037B,0x037B},
640 {0x037C,0x037C,0x037C}, {0x037D,0x037D,0x037D},
641 {0x037E,0x037E,0x037E}, {0x037F,0x037F,0x037F},
642 {0x0380,0x0380,0x0380}, {0x0381,0x0381,0x0381},
643 {0x0382,0x0382,0x0382}, {0x0383,0x0383,0x0383},
644 {0x0384,0x0384,0x0384}, {0x0385,0x0385,0x0385},
645 {0x0386,0x03AC,0x0391}, {0x0387,0x0387,0x0387},
646 {0x0388,0x03AD,0x0395}, {0x0389,0x03AE,0x0397},
647 {0x038A,0x03AF,0x0399}, {0x038B,0x038B,0x038B},
648 {0x038C,0x03CC,0x039F}, {0x038D,0x038D,0x038D},
649 {0x038E,0x03CD,0x03A5}, {0x038F,0x03CE,0x03A9},
650 {0x0390,0x0390,0x0399}, {0x0391,0x03B1,0x0391},
651 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
652 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
653 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
654 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
655 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
656 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
657 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
658 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
659 {0x03A2,0x03A2,0x03A2}, {0x03A3,0x03C3,0x03A3},
660 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
661 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
662 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
663 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
664 {0x0386,0x03AC,0x0391}, {0x0388,0x03AD,0x0395},
665 {0x0389,0x03AE,0x0397}, {0x038A,0x03AF,0x0399},
666 {0x03B0,0x03B0,0x03A5}, {0x0391,0x03B1,0x0391},
667 {0x0392,0x03B2,0x0392}, {0x0393,0x03B3,0x0393},
668 {0x0394,0x03B4,0x0394}, {0x0395,0x03B5,0x0395},
669 {0x0396,0x03B6,0x0396}, {0x0397,0x03B7,0x0397},
670 {0x0398,0x03B8,0x0398}, {0x0399,0x03B9,0x0399},
671 {0x039A,0x03BA,0x039A}, {0x039B,0x03BB,0x039B},
672 {0x039C,0x03BC,0x039C}, {0x039D,0x03BD,0x039D},
673 {0x039E,0x03BE,0x039E}, {0x039F,0x03BF,0x039F},
674 {0x03A0,0x03C0,0x03A0}, {0x03A1,0x03C1,0x03A1},
675 {0x03A3,0x03C2,0x03A3}, {0x03A3,0x03C3,0x03A3},
676 {0x03A4,0x03C4,0x03A4}, {0x03A5,0x03C5,0x03A5},
677 {0x03A6,0x03C6,0x03A6}, {0x03A7,0x03C7,0x03A7},
678 {0x03A8,0x03C8,0x03A8}, {0x03A9,0x03C9,0x03A9},
679 {0x03AA,0x03CA,0x0399}, {0x03AB,0x03CB,0x03A5},
680 {0x038C,0x03CC,0x039F}, {0x038E,0x03CD,0x03A5},
681 {0x038F,0x03CE,0x03A9}, {0x03CF,0x03CF,0x03CF},
682 {0x0392,0x03D0,0x0392}, {0x0398,0x03D1,0x0398},
683 {0x03D2,0x03D2,0x03D2}, {0x03D3,0x03D3,0x03D2},
684 {0x03D4,0x03D4,0x03D2}, {0x03A6,0x03D5,0x03A6},
685 {0x03A0,0x03D6,0x03A0}, {0x03D7,0x03D7,0x03D7},
686 {0x03D8,0x03D8,0x03D8}, {0x03D9,0x03D9,0x03D9},
687 {0x03DA,0x03DB,0x03DA}, {0x03DA,0x03DB,0x03DA},
688 {0x03DC,0x03DD,0x03DC}, {0x03DC,0x03DD,0x03DC},
689 {0x03DE,0x03DF,0x03DE}, {0x03DE,0x03DF,0x03DE},
690 {0x03E0,0x03E1,0x03E0}, {0x03E0,0x03E1,0x03E0},
691 {0x03E2,0x03E3,0x03E2}, {0x03E2,0x03E3,0x03E2},
692 {0x03E4,0x03E5,0x03E4}, {0x03E4,0x03E5,0x03E4},
693 {0x03E6,0x03E7,0x03E6}, {0x03E6,0x03E7,0x03E6},
694 {0x03E8,0x03E9,0x03E8}, {0x03E8,0x03E9,0x03E8},
695 {0x03EA,0x03EB,0x03EA}, {0x03EA,0x03EB,0x03EA},
696 {0x03EC,0x03ED,0x03EC}, {0x03EC,0x03ED,0x03EC},
697 {0x03EE,0x03EF,0x03EE}, {0x03EE,0x03EF,0x03EE},
698 {0x039A,0x03F0,0x039A}, {0x03A1,0x03F1,0x03A1},
699 {0x03A3,0x03F2,0x03A3}, {0x03F3,0x03F3,0x03F3},
700 {0x03F4,0x03F4,0x03F4}, {0x03F5,0x03F5,0x03F5},
701 {0x03F6,0x03F6,0x03F6}, {0x03F7,0x03F7,0x03F7},
702 {0x03F8,0x03F8,0x03F8}, {0x03F9,0x03F9,0x03F9},
703 {0x03FA,0x03FA,0x03FA}, {0x03FB,0x03FB,0x03FB},
704 {0x03FC,0x03FC,0x03FC}, {0x03FD,0x03FD,0x03FD},
705 {0x03FE,0x03FE,0x03FE}, {0x03FF,0x03FF,0x03FF}
708 static MY_UNICASE_INFO plane04[]={
709 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
710 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
711 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
712 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
713 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
714 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
715 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
716 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
717 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
718 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
719 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
720 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
721 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
722 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
723 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
724 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
725 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
726 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
727 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
728 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
729 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
730 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
731 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
732 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
733 {0x0410,0x0430,0x0410}, {0x0411,0x0431,0x0411},
734 {0x0412,0x0432,0x0412}, {0x0413,0x0433,0x0413},
735 {0x0414,0x0434,0x0414}, {0x0415,0x0435,0x0415},
736 {0x0416,0x0436,0x0416}, {0x0417,0x0437,0x0417},
737 {0x0418,0x0438,0x0418}, {0x0419,0x0439,0x0419},
738 {0x041A,0x043A,0x041A}, {0x041B,0x043B,0x041B},
739 {0x041C,0x043C,0x041C}, {0x041D,0x043D,0x041D},
740 {0x041E,0x043E,0x041E}, {0x041F,0x043F,0x041F},
741 {0x0420,0x0440,0x0420}, {0x0421,0x0441,0x0421},
742 {0x0422,0x0442,0x0422}, {0x0423,0x0443,0x0423},
743 {0x0424,0x0444,0x0424}, {0x0425,0x0445,0x0425},
744 {0x0426,0x0446,0x0426}, {0x0427,0x0447,0x0427},
745 {0x0428,0x0448,0x0428}, {0x0429,0x0449,0x0429},
746 {0x042A,0x044A,0x042A}, {0x042B,0x044B,0x042B},
747 {0x042C,0x044C,0x042C}, {0x042D,0x044D,0x042D},
748 {0x042E,0x044E,0x042E}, {0x042F,0x044F,0x042F},
749 {0x0400,0x0450,0x0415}, {0x0401,0x0451,0x0415},
750 {0x0402,0x0452,0x0402}, {0x0403,0x0453,0x0413},
751 {0x0404,0x0454,0x0404}, {0x0405,0x0455,0x0405},
752 {0x0406,0x0456,0x0406}, {0x0407,0x0457,0x0406},
753 {0x0408,0x0458,0x0408}, {0x0409,0x0459,0x0409},
754 {0x040A,0x045A,0x040A}, {0x040B,0x045B,0x040B},
755 {0x040C,0x045C,0x041A}, {0x040D,0x045D,0x0418},
756 {0x040E,0x045E,0x0423}, {0x040F,0x045F,0x040F},
757 {0x0460,0x0461,0x0460}, {0x0460,0x0461,0x0460},
758 {0x0462,0x0463,0x0462}, {0x0462,0x0463,0x0462},
759 {0x0464,0x0465,0x0464}, {0x0464,0x0465,0x0464},
760 {0x0466,0x0467,0x0466}, {0x0466,0x0467,0x0466},
761 {0x0468,0x0469,0x0468}, {0x0468,0x0469,0x0468},
762 {0x046A,0x046B,0x046A}, {0x046A,0x046B,0x046A},
763 {0x046C,0x046D,0x046C}, {0x046C,0x046D,0x046C},
764 {0x046E,0x046F,0x046E}, {0x046E,0x046F,0x046E},
765 {0x0470,0x0471,0x0470}, {0x0470,0x0471,0x0470},
766 {0x0472,0x0473,0x0472}, {0x0472,0x0473,0x0472},
767 {0x0474,0x0475,0x0474}, {0x0474,0x0475,0x0474},
768 {0x0476,0x0477,0x0474}, {0x0476,0x0477,0x0474},
769 {0x0478,0x0479,0x0478}, {0x0478,0x0479,0x0478},
770 {0x047A,0x047B,0x047A}, {0x047A,0x047B,0x047A},
771 {0x047C,0x047D,0x047C}, {0x047C,0x047D,0x047C},
772 {0x047E,0x047F,0x047E}, {0x047E,0x047F,0x047E},
773 {0x0480,0x0481,0x0480}, {0x0480,0x0481,0x0480},
774 {0x0482,0x0482,0x0482}, {0x0483,0x0483,0x0483},
775 {0x0484,0x0484,0x0484}, {0x0485,0x0485,0x0485},
776 {0x0486,0x0486,0x0486}, {0x0487,0x0487,0x0487},
777 {0x0488,0x0488,0x0488}, {0x0489,0x0489,0x0489},
778 {0x048A,0x048A,0x048A}, {0x048B,0x048B,0x048B},
779 {0x048C,0x048D,0x048C}, {0x048C,0x048D,0x048C},
780 {0x048E,0x048F,0x048E}, {0x048E,0x048F,0x048E},
781 {0x0490,0x0491,0x0490}, {0x0490,0x0491,0x0490},
782 {0x0492,0x0493,0x0492}, {0x0492,0x0493,0x0492},
783 {0x0494,0x0495,0x0494}, {0x0494,0x0495,0x0494},
784 {0x0496,0x0497,0x0496}, {0x0496,0x0497,0x0496},
785 {0x0498,0x0499,0x0498}, {0x0498,0x0499,0x0498},
786 {0x049A,0x049B,0x049A}, {0x049A,0x049B,0x049A},
787 {0x049C,0x049D,0x049C}, {0x049C,0x049D,0x049C},
788 {0x049E,0x049F,0x049E}, {0x049E,0x049F,0x049E},
789 {0x04A0,0x04A1,0x04A0}, {0x04A0,0x04A1,0x04A0},
790 {0x04A2,0x04A3,0x04A2}, {0x04A2,0x04A3,0x04A2},
791 {0x04A4,0x04A5,0x04A4}, {0x04A4,0x04A5,0x04A4},
792 {0x04A6,0x04A7,0x04A6}, {0x04A6,0x04A7,0x04A6},
793 {0x04A8,0x04A9,0x04A8}, {0x04A8,0x04A9,0x04A8},
794 {0x04AA,0x04AB,0x04AA}, {0x04AA,0x04AB,0x04AA},
795 {0x04AC,0x04AD,0x04AC}, {0x04AC,0x04AD,0x04AC},
796 {0x04AE,0x04AF,0x04AE}, {0x04AE,0x04AF,0x04AE},
797 {0x04B0,0x04B1,0x04B0}, {0x04B0,0x04B1,0x04B0},
798 {0x04B2,0x04B3,0x04B2}, {0x04B2,0x04B3,0x04B2},
799 {0x04B4,0x04B5,0x04B4}, {0x04B4,0x04B5,0x04B4},
800 {0x04B6,0x04B7,0x04B6}, {0x04B6,0x04B7,0x04B6},
801 {0x04B8,0x04B9,0x04B8}, {0x04B8,0x04B9,0x04B8},
802 {0x04BA,0x04BB,0x04BA}, {0x04BA,0x04BB,0x04BA},
803 {0x04BC,0x04BD,0x04BC}, {0x04BC,0x04BD,0x04BC},
804 {0x04BE,0x04BF,0x04BE}, {0x04BE,0x04BF,0x04BE},
805 {0x04C0,0x04C0,0x04C0}, {0x04C1,0x04C2,0x0416},
806 {0x04C1,0x04C2,0x0416}, {0x04C3,0x04C4,0x04C3},
807 {0x04C3,0x04C4,0x04C3}, {0x04C5,0x04C5,0x04C5},
808 {0x04C6,0x04C6,0x04C6}, {0x04C7,0x04C8,0x04C7},
809 {0x04C7,0x04C8,0x04C7}, {0x04C9,0x04C9,0x04C9},
810 {0x04CA,0x04CA,0x04CA}, {0x04CB,0x04CC,0x04CB},
811 {0x04CB,0x04CC,0x04CB}, {0x04CD,0x04CD,0x04CD},
812 {0x04CE,0x04CE,0x04CE}, {0x04CF,0x04CF,0x04CF},
813 {0x04D0,0x04D1,0x0410}, {0x04D0,0x04D1,0x0410},
814 {0x04D2,0x04D3,0x0410}, {0x04D2,0x04D3,0x0410},
815 {0x04D4,0x04D5,0x04D4}, {0x04D4,0x04D5,0x04D4},
816 {0x04D6,0x04D7,0x0415}, {0x04D6,0x04D7,0x0415},
817 {0x04D8,0x04D9,0x04D8}, {0x04D8,0x04D9,0x04D8},
818 {0x04DA,0x04DB,0x04D8}, {0x04DA,0x04DB,0x04D8},
819 {0x04DC,0x04DD,0x0416}, {0x04DC,0x04DD,0x0416},
820 {0x04DE,0x04DF,0x0417}, {0x04DE,0x04DF,0x0417},
821 {0x04E0,0x04E1,0x04E0}, {0x04E0,0x04E1,0x04E0},
822 {0x04E2,0x04E3,0x0418}, {0x04E2,0x04E3,0x0418},
823 {0x04E4,0x04E5,0x0418}, {0x04E4,0x04E5,0x0418},
824 {0x04E6,0x04E7,0x041E}, {0x04E6,0x04E7,0x041E},
825 {0x04E8,0x04E9,0x04E8}, {0x04E8,0x04E9,0x04E8},
826 {0x04EA,0x04EB,0x04E8}, {0x04EA,0x04EB,0x04E8},
827 {0x04EC,0x04ED,0x042D}, {0x04EC,0x04ED,0x042D},
828 {0x04EE,0x04EF,0x0423}, {0x04EE,0x04EF,0x0423},
829 {0x04F0,0x04F1,0x0423}, {0x04F0,0x04F1,0x0423},
830 {0x04F2,0x04F3,0x0423}, {0x04F2,0x04F3,0x0423},
831 {0x04F4,0x04F5,0x0427}, {0x04F4,0x04F5,0x0427},
832 {0x04F6,0x04F6,0x04F6}, {0x04F7,0x04F7,0x04F7},
833 {0x04F8,0x04F9,0x042B}, {0x04F8,0x04F9,0x042B},
834 {0x04FA,0x04FA,0x04FA}, {0x04FB,0x04FB,0x04FB},
835 {0x04FC,0x04FC,0x04FC}, {0x04FD,0x04FD,0x04FD},
836 {0x04FE,0x04FE,0x04FE}, {0x04FF,0x04FF,0x04FF}
839 static MY_UNICASE_INFO plane05[]={
840 {0x0500,0x0500,0x0500}, {0x0501,0x0501,0x0501},
841 {0x0502,0x0502,0x0502}, {0x0503,0x0503,0x0503},
842 {0x0504,0x0504,0x0504}, {0x0505,0x0505,0x0505},
843 {0x0506,0x0506,0x0506}, {0x0507,0x0507,0x0507},
844 {0x0508,0x0508,0x0508}, {0x0509,0x0509,0x0509},
845 {0x050A,0x050A,0x050A}, {0x050B,0x050B,0x050B},
846 {0x050C,0x050C,0x050C}, {0x050D,0x050D,0x050D},
847 {0x050E,0x050E,0x050E}, {0x050F,0x050F,0x050F},
848 {0x0510,0x0510,0x0510}, {0x0511,0x0511,0x0511},
849 {0x0512,0x0512,0x0512}, {0x0513,0x0513,0x0513},
850 {0x0514,0x0514,0x0514}, {0x0515,0x0515,0x0515},
851 {0x0516,0x0516,0x0516}, {0x0517,0x0517,0x0517},
852 {0x0518,0x0518,0x0518}, {0x0519,0x0519,0x0519},
853 {0x051A,0x051A,0x051A}, {0x051B,0x051B,0x051B},
854 {0x051C,0x051C,0x051C}, {0x051D,0x051D,0x051D},
855 {0x051E,0x051E,0x051E}, {0x051F,0x051F,0x051F},
856 {0x0520,0x0520,0x0520}, {0x0521,0x0521,0x0521},
857 {0x0522,0x0522,0x0522}, {0x0523,0x0523,0x0523},
858 {0x0524,0x0524,0x0524}, {0x0525,0x0525,0x0525},
859 {0x0526,0x0526,0x0526}, {0x0527,0x0527,0x0527},
860 {0x0528,0x0528,0x0528}, {0x0529,0x0529,0x0529},
861 {0x052A,0x052A,0x052A}, {0x052B,0x052B,0x052B},
862 {0x052C,0x052C,0x052C}, {0x052D,0x052D,0x052D},
863 {0x052E,0x052E,0x052E}, {0x052F,0x052F,0x052F},
864 {0x0530,0x0530,0x0530}, {0x0531,0x0561,0x0531},
865 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
866 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
867 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
868 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
869 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
870 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
871 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
872 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
873 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
874 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
875 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
876 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
877 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
878 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
879 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
880 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
881 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
882 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
883 {0x0556,0x0586,0x0556}, {0x0557,0x0557,0x0557},
884 {0x0558,0x0558,0x0558}, {0x0559,0x0559,0x0559},
885 {0x055A,0x055A,0x055A}, {0x055B,0x055B,0x055B},
886 {0x055C,0x055C,0x055C}, {0x055D,0x055D,0x055D},
887 {0x055E,0x055E,0x055E}, {0x055F,0x055F,0x055F},
888 {0x0560,0x0560,0x0560}, {0x0531,0x0561,0x0531},
889 {0x0532,0x0562,0x0532}, {0x0533,0x0563,0x0533},
890 {0x0534,0x0564,0x0534}, {0x0535,0x0565,0x0535},
891 {0x0536,0x0566,0x0536}, {0x0537,0x0567,0x0537},
892 {0x0538,0x0568,0x0538}, {0x0539,0x0569,0x0539},
893 {0x053A,0x056A,0x053A}, {0x053B,0x056B,0x053B},
894 {0x053C,0x056C,0x053C}, {0x053D,0x056D,0x053D},
895 {0x053E,0x056E,0x053E}, {0x053F,0x056F,0x053F},
896 {0x0540,0x0570,0x0540}, {0x0541,0x0571,0x0541},
897 {0x0542,0x0572,0x0542}, {0x0543,0x0573,0x0543},
898 {0x0544,0x0574,0x0544}, {0x0545,0x0575,0x0545},
899 {0x0546,0x0576,0x0546}, {0x0547,0x0577,0x0547},
900 {0x0548,0x0578,0x0548}, {0x0549,0x0579,0x0549},
901 {0x054A,0x057A,0x054A}, {0x054B,0x057B,0x054B},
902 {0x054C,0x057C,0x054C}, {0x054D,0x057D,0x054D},
903 {0x054E,0x057E,0x054E}, {0x054F,0x057F,0x054F},
904 {0x0550,0x0580,0x0550}, {0x0551,0x0581,0x0551},
905 {0x0552,0x0582,0x0552}, {0x0553,0x0583,0x0553},
906 {0x0554,0x0584,0x0554}, {0x0555,0x0585,0x0555},
907 {0x0556,0x0586,0x0556}, {0x0587,0x0587,0x0587},
908 {0x0588,0x0588,0x0588}, {0x0589,0x0589,0x0589},
909 {0x058A,0x058A,0x058A}, {0x058B,0x058B,0x058B},
910 {0x058C,0x058C,0x058C}, {0x058D,0x058D,0x058D},
911 {0x058E,0x058E,0x058E}, {0x058F,0x058F,0x058F},
912 {0x0590,0x0590,0x0590}, {0x0591,0x0591,0x0591},
913 {0x0592,0x0592,0x0592}, {0x0593,0x0593,0x0593},
914 {0x0594,0x0594,0x0594}, {0x0595,0x0595,0x0595},
915 {0x0596,0x0596,0x0596}, {0x0597,0x0597,0x0597},
916 {0x0598,0x0598,0x0598}, {0x0599,0x0599,0x0599},
917 {0x059A,0x059A,0x059A}, {0x059B,0x059B,0x059B},
918 {0x059C,0x059C,0x059C}, {0x059D,0x059D,0x059D},
919 {0x059E,0x059E,0x059E}, {0x059F,0x059F,0x059F},
920 {0x05A0,0x05A0,0x05A0}, {0x05A1,0x05A1,0x05A1},
921 {0x05A2,0x05A2,0x05A2}, {0x05A3,0x05A3,0x05A3},
922 {0x05A4,0x05A4,0x05A4}, {0x05A5,0x05A5,0x05A5},
923 {0x05A6,0x05A6,0x05A6}, {0x05A7,0x05A7,0x05A7},
924 {0x05A8,0x05A8,0x05A8}, {0x05A9,0x05A9,0x05A9},
925 {0x05AA,0x05AA,0x05AA}, {0x05AB,0x05AB,0x05AB},
926 {0x05AC,0x05AC,0x05AC}, {0x05AD,0x05AD,0x05AD},
927 {0x05AE,0x05AE,0x05AE}, {0x05AF,0x05AF,0x05AF},
928 {0x05B0,0x05B0,0x05B0}, {0x05B1,0x05B1,0x05B1},
929 {0x05B2,0x05B2,0x05B2}, {0x05B3,0x05B3,0x05B3},
930 {0x05B4,0x05B4,0x05B4}, {0x05B5,0x05B5,0x05B5},
931 {0x05B6,0x05B6,0x05B6}, {0x05B7,0x05B7,0x05B7},
932 {0x05B8,0x05B8,0x05B8}, {0x05B9,0x05B9,0x05B9},
933 {0x05BA,0x05BA,0x05BA}, {0x05BB,0x05BB,0x05BB},
934 {0x05BC,0x05BC,0x05BC}, {0x05BD,0x05BD,0x05BD},
935 {0x05BE,0x05BE,0x05BE}, {0x05BF,0x05BF,0x05BF},
936 {0x05C0,0x05C0,0x05C0}, {0x05C1,0x05C1,0x05C1},
937 {0x05C2,0x05C2,0x05C2}, {0x05C3,0x05C3,0x05C3},
938 {0x05C4,0x05C4,0x05C4}, {0x05C5,0x05C5,0x05C5},
939 {0x05C6,0x05C6,0x05C6}, {0x05C7,0x05C7,0x05C7},
940 {0x05C8,0x05C8,0x05C8}, {0x05C9,0x05C9,0x05C9},
941 {0x05CA,0x05CA,0x05CA}, {0x05CB,0x05CB,0x05CB},
942 {0x05CC,0x05CC,0x05CC}, {0x05CD,0x05CD,0x05CD},
943 {0x05CE,0x05CE,0x05CE}, {0x05CF,0x05CF,0x05CF},
944 {0x05D0,0x05D0,0x05D0}, {0x05D1,0x05D1,0x05D1},
945 {0x05D2,0x05D2,0x05D2}, {0x05D3,0x05D3,0x05D3},
946 {0x05D4,0x05D4,0x05D4}, {0x05D5,0x05D5,0x05D5},
947 {0x05D6,0x05D6,0x05D6}, {0x05D7,0x05D7,0x05D7},
948 {0x05D8,0x05D8,0x05D8}, {0x05D9,0x05D9,0x05D9},
949 {0x05DA,0x05DA,0x05DA}, {0x05DB,0x05DB,0x05DB},
950 {0x05DC,0x05DC,0x05DC}, {0x05DD,0x05DD,0x05DD},
951 {0x05DE,0x05DE,0x05DE}, {0x05DF,0x05DF,0x05DF},
952 {0x05E0,0x05E0,0x05E0}, {0x05E1,0x05E1,0x05E1},
953 {0x05E2,0x05E2,0x05E2}, {0x05E3,0x05E3,0x05E3},
954 {0x05E4,0x05E4,0x05E4}, {0x05E5,0x05E5,0x05E5},
955 {0x05E6,0x05E6,0x05E6}, {0x05E7,0x05E7,0x05E7},
956 {0x05E8,0x05E8,0x05E8}, {0x05E9,0x05E9,0x05E9},
957 {0x05EA,0x05EA,0x05EA}, {0x05EB,0x05EB,0x05EB},
958 {0x05EC,0x05EC,0x05EC}, {0x05ED,0x05ED,0x05ED},
959 {0x05EE,0x05EE,0x05EE}, {0x05EF,0x05EF,0x05EF},
960 {0x05F0,0x05F0,0x05F0}, {0x05F1,0x05F1,0x05F1},
961 {0x05F2,0x05F2,0x05F2}, {0x05F3,0x05F3,0x05F3},
962 {0x05F4,0x05F4,0x05F4}, {0x05F5,0x05F5,0x05F5},
963 {0x05F6,0x05F6,0x05F6}, {0x05F7,0x05F7,0x05F7},
964 {0x05F8,0x05F8,0x05F8}, {0x05F9,0x05F9,0x05F9},
965 {0x05FA,0x05FA,0x05FA}, {0x05FB,0x05FB,0x05FB},
966 {0x05FC,0x05FC,0x05FC}, {0x05FD,0x05FD,0x05FD},
967 {0x05FE,0x05FE,0x05FE}, {0x05FF,0x05FF,0x05FF}
970 static MY_UNICASE_INFO plane1E[]={
971 {0x1E00,0x1E01,0x0041}, {0x1E00,0x1E01,0x0041},
972 {0x1E02,0x1E03,0x0042}, {0x1E02,0x1E03,0x0042},
973 {0x1E04,0x1E05,0x0042}, {0x1E04,0x1E05,0x0042},
974 {0x1E06,0x1E07,0x0042}, {0x1E06,0x1E07,0x0042},
975 {0x1E08,0x1E09,0x0043}, {0x1E08,0x1E09,0x0043},
976 {0x1E0A,0x1E0B,0x0044}, {0x1E0A,0x1E0B,0x0044},
977 {0x1E0C,0x1E0D,0x0044}, {0x1E0C,0x1E0D,0x0044},
978 {0x1E0E,0x1E0F,0x0044}, {0x1E0E,0x1E0F,0x0044},
979 {0x1E10,0x1E11,0x0044}, {0x1E10,0x1E11,0x0044},
980 {0x1E12,0x1E13,0x0044}, {0x1E12,0x1E13,0x0044},
981 {0x1E14,0x1E15,0x0045}, {0x1E14,0x1E15,0x0045},
982 {0x1E16,0x1E17,0x0045}, {0x1E16,0x1E17,0x0045},
983 {0x1E18,0x1E19,0x0045}, {0x1E18,0x1E19,0x0045},
984 {0x1E1A,0x1E1B,0x0045}, {0x1E1A,0x1E1B,0x0045},
985 {0x1E1C,0x1E1D,0x0045}, {0x1E1C,0x1E1D,0x0045},
986 {0x1E1E,0x1E1F,0x0046}, {0x1E1E,0x1E1F,0x0046},
987 {0x1E20,0x1E21,0x0047}, {0x1E20,0x1E21,0x0047},
988 {0x1E22,0x1E23,0x0048}, {0x1E22,0x1E23,0x0048},
989 {0x1E24,0x1E25,0x0048}, {0x1E24,0x1E25,0x0048},
990 {0x1E26,0x1E27,0x0048}, {0x1E26,0x1E27,0x0048},
991 {0x1E28,0x1E29,0x0048}, {0x1E28,0x1E29,0x0048},
992 {0x1E2A,0x1E2B,0x0048}, {0x1E2A,0x1E2B,0x0048},
993 {0x1E2C,0x1E2D,0x0049}, {0x1E2C,0x1E2D,0x0049},
994 {0x1E2E,0x1E2F,0x0049}, {0x1E2E,0x1E2F,0x0049},
995 {0x1E30,0x1E31,0x004B}, {0x1E30,0x1E31,0x004B},
996 {0x1E32,0x1E33,0x004B}, {0x1E32,0x1E33,0x004B},
997 {0x1E34,0x1E35,0x004B}, {0x1E34,0x1E35,0x004B},
998 {0x1E36,0x1E37,0x004C}, {0x1E36,0x1E37,0x004C},
999 {0x1E38,0x1E39,0x004C}, {0x1E38,0x1E39,0x004C},
1000 {0x1E3A,0x1E3B,0x004C}, {0x1E3A,0x1E3B,0x004C},
1001 {0x1E3C,0x1E3D,0x004C}, {0x1E3C,0x1E3D,0x004C},
1002 {0x1E3E,0x1E3F,0x004D}, {0x1E3E,0x1E3F,0x004D},
1003 {0x1E40,0x1E41,0x004D}, {0x1E40,0x1E41,0x004D},
1004 {0x1E42,0x1E43,0x004D}, {0x1E42,0x1E43,0x004D},
1005 {0x1E44,0x1E45,0x004E}, {0x1E44,0x1E45,0x004E},
1006 {0x1E46,0x1E47,0x004E}, {0x1E46,0x1E47,0x004E},
1007 {0x1E48,0x1E49,0x004E}, {0x1E48,0x1E49,0x004E},
1008 {0x1E4A,0x1E4B,0x004E}, {0x1E4A,0x1E4B,0x004E},
1009 {0x1E4C,0x1E4D,0x004F}, {0x1E4C,0x1E4D,0x004F},
1010 {0x1E4E,0x1E4F,0x004F}, {0x1E4E,0x1E4F,0x004F},
1011 {0x1E50,0x1E51,0x004F}, {0x1E50,0x1E51,0x004F},
1012 {0x1E52,0x1E53,0x004F}, {0x1E52,0x1E53,0x004F},
1013 {0x1E54,0x1E55,0x0050}, {0x1E54,0x1E55,0x0050},
1014 {0x1E56,0x1E57,0x0050}, {0x1E56,0x1E57,0x0050},
1015 {0x1E58,0x1E59,0x0052}, {0x1E58,0x1E59,0x0052},
1016 {0x1E5A,0x1E5B,0x0052}, {0x1E5A,0x1E5B,0x0052},
1017 {0x1E5C,0x1E5D,0x0052}, {0x1E5C,0x1E5D,0x0052},
1018 {0x1E5E,0x1E5F,0x0052}, {0x1E5E,0x1E5F,0x0052},
1019 {0x1E60,0x1E61,0x0053}, {0x1E60,0x1E61,0x0053},
1020 {0x1E62,0x1E63,0x0053}, {0x1E62,0x1E63,0x0053},
1021 {0x1E64,0x1E65,0x0053}, {0x1E64,0x1E65,0x0053},
1022 {0x1E66,0x1E67,0x0053}, {0x1E66,0x1E67,0x0053},
1023 {0x1E68,0x1E69,0x0053}, {0x1E68,0x1E69,0x0053},
1024 {0x1E6A,0x1E6B,0x0054}, {0x1E6A,0x1E6B,0x0054},
1025 {0x1E6C,0x1E6D,0x0054}, {0x1E6C,0x1E6D,0x0054},
1026 {0x1E6E,0x1E6F,0x0054}, {0x1E6E,0x1E6F,0x0054},
1027 {0x1E70,0x1E71,0x0054}, {0x1E70,0x1E71,0x0054},
1028 {0x1E72,0x1E73,0x0055}, {0x1E72,0x1E73,0x0055},
1029 {0x1E74,0x1E75,0x0055}, {0x1E74,0x1E75,0x0055},
1030 {0x1E76,0x1E77,0x0055}, {0x1E76,0x1E77,0x0055},
1031 {0x1E78,0x1E79,0x0055}, {0x1E78,0x1E79,0x0055},
1032 {0x1E7A,0x1E7B,0x0055}, {0x1E7A,0x1E7B,0x0055},
1033 {0x1E7C,0x1E7D,0x0056}, {0x1E7C,0x1E7D,0x0056},
1034 {0x1E7E,0x1E7F,0x0056}, {0x1E7E,0x1E7F,0x0056},
1035 {0x1E80,0x1E81,0x0057}, {0x1E80,0x1E81,0x0057},
1036 {0x1E82,0x1E83,0x0057}, {0x1E82,0x1E83,0x0057},
1037 {0x1E84,0x1E85,0x0057}, {0x1E84,0x1E85,0x0057},
1038 {0x1E86,0x1E87,0x0057}, {0x1E86,0x1E87,0x0057},
1039 {0x1E88,0x1E89,0x0057}, {0x1E88,0x1E89,0x0057},
1040 {0x1E8A,0x1E8B,0x0058}, {0x1E8A,0x1E8B,0x0058},
1041 {0x1E8C,0x1E8D,0x0058}, {0x1E8C,0x1E8D,0x0058},
1042 {0x1E8E,0x1E8F,0x0059}, {0x1E8E,0x1E8F,0x0059},
1043 {0x1E90,0x1E91,0x005A}, {0x1E90,0x1E91,0x005A},
1044 {0x1E92,0x1E93,0x005A}, {0x1E92,0x1E93,0x005A},
1045 {0x1E94,0x1E95,0x005A}, {0x1E94,0x1E95,0x005A},
1046 {0x1E96,0x1E96,0x0048}, {0x1E97,0x1E97,0x0054},
1047 {0x1E98,0x1E98,0x0057}, {0x1E99,0x1E99,0x0059},
1048 {0x1E9A,0x1E9A,0x1E9A}, {0x1E60,0x1E9B,0x0053},
1049 {0x1E9C,0x1E9C,0x1E9C}, {0x1E9D,0x1E9D,0x1E9D},
1050 {0x1E9E,0x1E9E,0x1E9E}, {0x1E9F,0x1E9F,0x1E9F},
1051 {0x1EA0,0x1EA1,0x0041}, {0x1EA0,0x1EA1,0x0041},
1052 {0x1EA2,0x1EA3,0x0041}, {0x1EA2,0x1EA3,0x0041},
1053 {0x1EA4,0x1EA5,0x0041}, {0x1EA4,0x1EA5,0x0041},
1054 {0x1EA6,0x1EA7,0x0041}, {0x1EA6,0x1EA7,0x0041},
1055 {0x1EA8,0x1EA9,0x0041}, {0x1EA8,0x1EA9,0x0041},
1056 {0x1EAA,0x1EAB,0x0041}, {0x1EAA,0x1EAB,0x0041},
1057 {0x1EAC,0x1EAD,0x0041}, {0x1EAC,0x1EAD,0x0041},
1058 {0x1EAE,0x1EAF,0x0041}, {0x1EAE,0x1EAF,0x0041},
1059 {0x1EB0,0x1EB1,0x0041}, {0x1EB0,0x1EB1,0x0041},
1060 {0x1EB2,0x1EB3,0x0041}, {0x1EB2,0x1EB3,0x0041},
1061 {0x1EB4,0x1EB5,0x0041}, {0x1EB4,0x1EB5,0x0041},
1062 {0x1EB6,0x1EB7,0x0041}, {0x1EB6,0x1EB7,0x0041},
1063 {0x1EB8,0x1EB9,0x0045}, {0x1EB8,0x1EB9,0x0045},
1064 {0x1EBA,0x1EBB,0x0045}, {0x1EBA,0x1EBB,0x0045},
1065 {0x1EBC,0x1EBD,0x0045}, {0x1EBC,0x1EBD,0x0045},
1066 {0x1EBE,0x1EBF,0x0045}, {0x1EBE,0x1EBF,0x0045},
1067 {0x1EC0,0x1EC1,0x0045}, {0x1EC0,0x1EC1,0x0045},
1068 {0x1EC2,0x1EC3,0x0045}, {0x1EC2,0x1EC3,0x0045},
1069 {0x1EC4,0x1EC5,0x0045}, {0x1EC4,0x1EC5,0x0045},
1070 {0x1EC6,0x1EC7,0x0045}, {0x1EC6,0x1EC7,0x0045},
1071 {0x1EC8,0x1EC9,0x0049}, {0x1EC8,0x1EC9,0x0049},
1072 {0x1ECA,0x1ECB,0x0049}, {0x1ECA,0x1ECB,0x0049},
1073 {0x1ECC,0x1ECD,0x004F}, {0x1ECC,0x1ECD,0x004F},
1074 {0x1ECE,0x1ECF,0x004F}, {0x1ECE,0x1ECF,0x004F},
1075 {0x1ED0,0x1ED1,0x004F}, {0x1ED0,0x1ED1,0x004F},
1076 {0x1ED2,0x1ED3,0x004F}, {0x1ED2,0x1ED3,0x004F},
1077 {0x1ED4,0x1ED5,0x004F}, {0x1ED4,0x1ED5,0x004F},
1078 {0x1ED6,0x1ED7,0x004F}, {0x1ED6,0x1ED7,0x004F},
1079 {0x1ED8,0x1ED9,0x004F}, {0x1ED8,0x1ED9,0x004F},
1080 {0x1EDA,0x1EDB,0x004F}, {0x1EDA,0x1EDB,0x004F},
1081 {0x1EDC,0x1EDD,0x004F}, {0x1EDC,0x1EDD,0x004F},
1082 {0x1EDE,0x1EDF,0x004F}, {0x1EDE,0x1EDF,0x004F},
1083 {0x1EE0,0x1EE1,0x004F}, {0x1EE0,0x1EE1,0x004F},
1084 {0x1EE2,0x1EE3,0x004F}, {0x1EE2,0x1EE3,0x004F},
1085 {0x1EE4,0x1EE5,0x0055}, {0x1EE4,0x1EE5,0x0055},
1086 {0x1EE6,0x1EE7,0x0055}, {0x1EE6,0x1EE7,0x0055},
1087 {0x1EE8,0x1EE9,0x0055}, {0x1EE8,0x1EE9,0x0055},
1088 {0x1EEA,0x1EEB,0x0055}, {0x1EEA,0x1EEB,0x0055},
1089 {0x1EEC,0x1EED,0x0055}, {0x1EEC,0x1EED,0x0055},
1090 {0x1EEE,0x1EEF,0x0055}, {0x1EEE,0x1EEF,0x0055},
1091 {0x1EF0,0x1EF1,0x0055}, {0x1EF0,0x1EF1,0x0055},
1092 {0x1EF2,0x1EF3,0x0059}, {0x1EF2,0x1EF3,0x0059},
1093 {0x1EF4,0x1EF5,0x0059}, {0x1EF4,0x1EF5,0x0059},
1094 {0x1EF6,0x1EF7,0x0059}, {0x1EF6,0x1EF7,0x0059},
1095 {0x1EF8,0x1EF9,0x0059}, {0x1EF8,0x1EF9,0x0059},
1096 {0x1EFA,0x1EFA,0x1EFA}, {0x1EFB,0x1EFB,0x1EFB},
1097 {0x1EFC,0x1EFC,0x1EFC}, {0x1EFD,0x1EFD,0x1EFD},
1098 {0x1EFE,0x1EFE,0x1EFE}, {0x1EFF,0x1EFF,0x1EFF}
1101 static MY_UNICASE_INFO plane1F[]={
1102 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1103 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1104 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1105 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1106 {0x1F08,0x1F00,0x0391}, {0x1F09,0x1F01,0x0391},
1107 {0x1F0A,0x1F02,0x0391}, {0x1F0B,0x1F03,0x0391},
1108 {0x1F0C,0x1F04,0x0391}, {0x1F0D,0x1F05,0x0391},
1109 {0x1F0E,0x1F06,0x0391}, {0x1F0F,0x1F07,0x0391},
1110 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1111 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1112 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1113 {0x1F16,0x1F16,0x1F16}, {0x1F17,0x1F17,0x1F17},
1114 {0x1F18,0x1F10,0x0395}, {0x1F19,0x1F11,0x0395},
1115 {0x1F1A,0x1F12,0x0395}, {0x1F1B,0x1F13,0x0395},
1116 {0x1F1C,0x1F14,0x0395}, {0x1F1D,0x1F15,0x0395},
1117 {0x1F1E,0x1F1E,0x1F1E}, {0x1F1F,0x1F1F,0x1F1F},
1118 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1119 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1120 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1121 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1122 {0x1F28,0x1F20,0x0397}, {0x1F29,0x1F21,0x0397},
1123 {0x1F2A,0x1F22,0x0397}, {0x1F2B,0x1F23,0x0397},
1124 {0x1F2C,0x1F24,0x0397}, {0x1F2D,0x1F25,0x0397},
1125 {0x1F2E,0x1F26,0x0397}, {0x1F2F,0x1F27,0x0397},
1126 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1127 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1128 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1129 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1130 {0x1F38,0x1F30,0x0399}, {0x1F39,0x1F31,0x0399},
1131 {0x1F3A,0x1F32,0x0399}, {0x1F3B,0x1F33,0x0399},
1132 {0x1F3C,0x1F34,0x0399}, {0x1F3D,0x1F35,0x0399},
1133 {0x1F3E,0x1F36,0x0399}, {0x1F3F,0x1F37,0x0399},
1134 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1135 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1136 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1137 {0x1F46,0x1F46,0x1F46}, {0x1F47,0x1F47,0x1F47},
1138 {0x1F48,0x1F40,0x039F}, {0x1F49,0x1F41,0x039F},
1139 {0x1F4A,0x1F42,0x039F}, {0x1F4B,0x1F43,0x039F},
1140 {0x1F4C,0x1F44,0x039F}, {0x1F4D,0x1F45,0x039F},
1141 {0x1F4E,0x1F4E,0x1F4E}, {0x1F4F,0x1F4F,0x1F4F},
1142 {0x1F50,0x1F50,0x03A5}, {0x1F59,0x1F51,0x03A5},
1143 {0x1F52,0x1F52,0x03A5}, {0x1F5B,0x1F53,0x03A5},
1144 {0x1F54,0x1F54,0x03A5}, {0x1F5D,0x1F55,0x03A5},
1145 {0x1F56,0x1F56,0x03A5}, {0x1F5F,0x1F57,0x03A5},
1146 {0x1F58,0x1F58,0x1F58}, {0x1F59,0x1F51,0x03A5},
1147 {0x1F5A,0x1F5A,0x1F5A}, {0x1F5B,0x1F53,0x03A5},
1148 {0x1F5C,0x1F5C,0x1F5C}, {0x1F5D,0x1F55,0x03A5},
1149 {0x1F5E,0x1F5E,0x1F5E}, {0x1F5F,0x1F57,0x03A5},
1150 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1151 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1152 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1153 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1154 {0x1F68,0x1F60,0x03A9}, {0x1F69,0x1F61,0x03A9},
1155 {0x1F6A,0x1F62,0x03A9}, {0x1F6B,0x1F63,0x03A9},
1156 {0x1F6C,0x1F64,0x03A9}, {0x1F6D,0x1F65,0x03A9},
1157 {0x1F6E,0x1F66,0x03A9}, {0x1F6F,0x1F67,0x03A9},
1158 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1159 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1160 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1161 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1162 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1163 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1164 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1165 {0x1F7E,0x1F7E,0x1F7E}, {0x1F7F,0x1F7F,0x1F7F},
1166 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1167 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1168 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1169 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1170 {0x1F88,0x1F80,0x0391}, {0x1F89,0x1F81,0x0391},
1171 {0x1F8A,0x1F82,0x0391}, {0x1F8B,0x1F83,0x0391},
1172 {0x1F8C,0x1F84,0x0391}, {0x1F8D,0x1F85,0x0391},
1173 {0x1F8E,0x1F86,0x0391}, {0x1F8F,0x1F87,0x0391},
1174 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1175 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1176 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1177 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1178 {0x1F98,0x1F90,0x0397}, {0x1F99,0x1F91,0x0397},
1179 {0x1F9A,0x1F92,0x0397}, {0x1F9B,0x1F93,0x0397},
1180 {0x1F9C,0x1F94,0x0397}, {0x1F9D,0x1F95,0x0397},
1181 {0x1F9E,0x1F96,0x0397}, {0x1F9F,0x1F97,0x0397},
1182 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1183 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1184 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1185 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1186 {0x1FA8,0x1FA0,0x03A9}, {0x1FA9,0x1FA1,0x03A9},
1187 {0x1FAA,0x1FA2,0x03A9}, {0x1FAB,0x1FA3,0x03A9},
1188 {0x1FAC,0x1FA4,0x03A9}, {0x1FAD,0x1FA5,0x03A9},
1189 {0x1FAE,0x1FA6,0x03A9}, {0x1FAF,0x1FA7,0x03A9},
1190 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1191 {0x1FB2,0x1FB2,0x0391}, {0x1FBC,0x1FB3,0x0391},
1192 {0x1FB4,0x1FB4,0x0391}, {0x1FB5,0x1FB5,0x1FB5},
1193 {0x1FB6,0x1FB6,0x0391}, {0x1FB7,0x1FB7,0x0391},
1194 {0x1FB8,0x1FB0,0x0391}, {0x1FB9,0x1FB1,0x0391},
1195 {0x1FBA,0x1F70,0x0391}, {0x1FBB,0x1F71,0x1FBB},
1196 {0x1FBC,0x1FB3,0x0391}, {0x1FBD,0x1FBD,0x1FBD},
1197 {0x0399,0x1FBE,0x0399}, {0x1FBF,0x1FBF,0x1FBF},
1198 {0x1FC0,0x1FC0,0x1FC0}, {0x1FC1,0x1FC1,0x1FC1},
1199 {0x1FC2,0x1FC2,0x0397}, {0x1FCC,0x1FC3,0x0397},
1200 {0x1FC4,0x1FC4,0x0397}, {0x1FC5,0x1FC5,0x1FC5},
1201 {0x1FC6,0x1FC6,0x0397}, {0x1FC7,0x1FC7,0x0397},
1202 {0x1FC8,0x1F72,0x0395}, {0x1FC9,0x1F73,0x1FC9},
1203 {0x1FCA,0x1F74,0x0397}, {0x1FCB,0x1F75,0x1FCB},
1204 {0x1FCC,0x1FC3,0x0397}, {0x1FCD,0x1FCD,0x1FCD},
1205 {0x1FCE,0x1FCE,0x1FCE}, {0x1FCF,0x1FCF,0x1FCF},
1206 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1207 {0x1FD2,0x1FD2,0x0399}, {0x1FD3,0x1FD3,0x1FD3},
1208 {0x1FD4,0x1FD4,0x1FD4}, {0x1FD5,0x1FD5,0x1FD5},
1209 {0x1FD6,0x1FD6,0x0399}, {0x1FD7,0x1FD7,0x0399},
1210 {0x1FD8,0x1FD0,0x0399}, {0x1FD9,0x1FD1,0x0399},
1211 {0x1FDA,0x1F76,0x0399}, {0x1FDB,0x1F77,0x1FDB},
1212 {0x1FDC,0x1FDC,0x1FDC}, {0x1FDD,0x1FDD,0x1FDD},
1213 {0x1FDE,0x1FDE,0x1FDE}, {0x1FDF,0x1FDF,0x1FDF},
1214 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1215 {0x1FE2,0x1FE2,0x03A5}, {0x1FE3,0x1FE3,0x1FE3},
1216 {0x1FE4,0x1FE4,0x03A1}, {0x1FEC,0x1FE5,0x03A1},
1217 {0x1FE6,0x1FE6,0x03A5}, {0x1FE7,0x1FE7,0x03A5},
1218 {0x1FE8,0x1FE0,0x03A5}, {0x1FE9,0x1FE1,0x03A5},
1219 {0x1FEA,0x1F7A,0x03A5}, {0x1FEB,0x1F7B,0x1FEB},
1220 {0x1FEC,0x1FE5,0x03A1}, {0x1FED,0x1FED,0x1FED},
1221 {0x1FEE,0x1FEE,0x1FEE}, {0x1FEF,0x1FEF,0x1FEF},
1222 {0x1FF0,0x1FF0,0x1FF0}, {0x1FF1,0x1FF1,0x1FF1},
1223 {0x1FF2,0x1FF2,0x03A9}, {0x1FFC,0x1FF3,0x03A9},
1224 {0x1FF4,0x1FF4,0x03A9}, {0x1FF5,0x1FF5,0x1FF5},
1225 {0x1FF6,0x1FF6,0x03A9}, {0x1FF7,0x1FF7,0x03A9},
1226 {0x1FF8,0x1F78,0x039F}, {0x1FF9,0x1F79,0x1FF9},
1227 {0x1FFA,0x1F7C,0x03A9}, {0x1FFB,0x1F7D,0x1FFB},
1228 {0x1FFC,0x1FF3,0x03A9}, {0x1FFD,0x1FFD,0x1FFD},
1229 {0x1FFE,0x1FFE,0x1FFE}, {0x1FFF,0x1FFF,0x1FFF}
1232 static MY_UNICASE_INFO plane21[]={
1233 {0x2100,0x2100,0x2100}, {0x2101,0x2101,0x2101},
1234 {0x2102,0x2102,0x2102}, {0x2103,0x2103,0x2103},
1235 {0x2104,0x2104,0x2104}, {0x2105,0x2105,0x2105},
1236 {0x2106,0x2106,0x2106}, {0x2107,0x2107,0x2107},
1237 {0x2108,0x2108,0x2108}, {0x2109,0x2109,0x2109},
1238 {0x210A,0x210A,0x210A}, {0x210B,0x210B,0x210B},
1239 {0x210C,0x210C,0x210C}, {0x210D,0x210D,0x210D},
1240 {0x210E,0x210E,0x210E}, {0x210F,0x210F,0x210F},
1241 {0x2110,0x2110,0x2110}, {0x2111,0x2111,0x2111},
1242 {0x2112,0x2112,0x2112}, {0x2113,0x2113,0x2113},
1243 {0x2114,0x2114,0x2114}, {0x2115,0x2115,0x2115},
1244 {0x2116,0x2116,0x2116}, {0x2117,0x2117,0x2117},
1245 {0x2118,0x2118,0x2118}, {0x2119,0x2119,0x2119},
1246 {0x211A,0x211A,0x211A}, {0x211B,0x211B,0x211B},
1247 {0x211C,0x211C,0x211C}, {0x211D,0x211D,0x211D},
1248 {0x211E,0x211E,0x211E}, {0x211F,0x211F,0x211F},
1249 {0x2120,0x2120,0x2120}, {0x2121,0x2121,0x2121},
1250 {0x2122,0x2122,0x2122}, {0x2123,0x2123,0x2123},
1251 {0x2124,0x2124,0x2124}, {0x2125,0x2125,0x2125},
1252 {0x2126,0x03C9,0x2126}, {0x2127,0x2127,0x2127},
1253 {0x2128,0x2128,0x2128}, {0x2129,0x2129,0x2129},
1254 {0x212A,0x006B,0x212A}, {0x212B,0x00E5,0x212B},
1255 {0x212C,0x212C,0x212C}, {0x212D,0x212D,0x212D},
1256 {0x212E,0x212E,0x212E}, {0x212F,0x212F,0x212F},
1257 {0x2130,0x2130,0x2130}, {0x2131,0x2131,0x2131},
1258 {0x2132,0x2132,0x2132}, {0x2133,0x2133,0x2133},
1259 {0x2134,0x2134,0x2134}, {0x2135,0x2135,0x2135},
1260 {0x2136,0x2136,0x2136}, {0x2137,0x2137,0x2137},
1261 {0x2138,0x2138,0x2138}, {0x2139,0x2139,0x2139},
1262 {0x213A,0x213A,0x213A}, {0x213B,0x213B,0x213B},
1263 {0x213C,0x213C,0x213C}, {0x213D,0x213D,0x213D},
1264 {0x213E,0x213E,0x213E}, {0x213F,0x213F,0x213F},
1265 {0x2140,0x2140,0x2140}, {0x2141,0x2141,0x2141},
1266 {0x2142,0x2142,0x2142}, {0x2143,0x2143,0x2143},
1267 {0x2144,0x2144,0x2144}, {0x2145,0x2145,0x2145},
1268 {0x2146,0x2146,0x2146}, {0x2147,0x2147,0x2147},
1269 {0x2148,0x2148,0x2148}, {0x2149,0x2149,0x2149},
1270 {0x214A,0x214A,0x214A}, {0x214B,0x214B,0x214B},
1271 {0x214C,0x214C,0x214C}, {0x214D,0x214D,0x214D},
1272 {0x214E,0x214E,0x214E}, {0x214F,0x214F,0x214F},
1273 {0x2150,0x2150,0x2150}, {0x2151,0x2151,0x2151},
1274 {0x2152,0x2152,0x2152}, {0x2153,0x2153,0x2153},
1275 {0x2154,0x2154,0x2154}, {0x2155,0x2155,0x2155},
1276 {0x2156,0x2156,0x2156}, {0x2157,0x2157,0x2157},
1277 {0x2158,0x2158,0x2158}, {0x2159,0x2159,0x2159},
1278 {0x215A,0x215A,0x215A}, {0x215B,0x215B,0x215B},
1279 {0x215C,0x215C,0x215C}, {0x215D,0x215D,0x215D},
1280 {0x215E,0x215E,0x215E}, {0x215F,0x215F,0x215F},
1281 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1282 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1283 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1284 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1285 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1286 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1287 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1288 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1289 {0x2160,0x2170,0x2160}, {0x2161,0x2171,0x2161},
1290 {0x2162,0x2172,0x2162}, {0x2163,0x2173,0x2163},
1291 {0x2164,0x2174,0x2164}, {0x2165,0x2175,0x2165},
1292 {0x2166,0x2176,0x2166}, {0x2167,0x2177,0x2167},
1293 {0x2168,0x2178,0x2168}, {0x2169,0x2179,0x2169},
1294 {0x216A,0x217A,0x216A}, {0x216B,0x217B,0x216B},
1295 {0x216C,0x217C,0x216C}, {0x216D,0x217D,0x216D},
1296 {0x216E,0x217E,0x216E}, {0x216F,0x217F,0x216F},
1297 {0x2180,0x2180,0x2180}, {0x2181,0x2181,0x2181},
1298 {0x2182,0x2182,0x2182}, {0x2183,0x2183,0x2183},
1299 {0x2184,0x2184,0x2184}, {0x2185,0x2185,0x2185},
1300 {0x2186,0x2186,0x2186}, {0x2187,0x2187,0x2187},
1301 {0x2188,0x2188,0x2188}, {0x2189,0x2189,0x2189},
1302 {0x218A,0x218A,0x218A}, {0x218B,0x218B,0x218B},
1303 {0x218C,0x218C,0x218C}, {0x218D,0x218D,0x218D},
1304 {0x218E,0x218E,0x218E}, {0x218F,0x218F,0x218F},
1305 {0x2190,0x2190,0x2190}, {0x2191,0x2191,0x2191},
1306 {0x2192,0x2192,0x2192}, {0x2193,0x2193,0x2193},
1307 {0x2194,0x2194,0x2194}, {0x2195,0x2195,0x2195},
1308 {0x2196,0x2196,0x2196}, {0x2197,0x2197,0x2197},
1309 {0x2198,0x2198,0x2198}, {0x2199,0x2199,0x2199},
1310 {0x219A,0x219A,0x219A}, {0x219B,0x219B,0x219B},
1311 {0x219C,0x219C,0x219C}, {0x219D,0x219D,0x219D},
1312 {0x219E,0x219E,0x219E}, {0x219F,0x219F,0x219F},
1313 {0x21A0,0x21A0,0x21A0}, {0x21A1,0x21A1,0x21A1},
1314 {0x21A2,0x21A2,0x21A2}, {0x21A3,0x21A3,0x21A3},
1315 {0x21A4,0x21A4,0x21A4}, {0x21A5,0x21A5,0x21A5},
1316 {0x21A6,0x21A6,0x21A6}, {0x21A7,0x21A7,0x21A7},
1317 {0x21A8,0x21A8,0x21A8}, {0x21A9,0x21A9,0x21A9},
1318 {0x21AA,0x21AA,0x21AA}, {0x21AB,0x21AB,0x21AB},
1319 {0x21AC,0x21AC,0x21AC}, {0x21AD,0x21AD,0x21AD},
1320 {0x21AE,0x21AE,0x21AE}, {0x21AF,0x21AF,0x21AF},
1321 {0x21B0,0x21B0,0x21B0}, {0x21B1,0x21B1,0x21B1},
1322 {0x21B2,0x21B2,0x21B2}, {0x21B3,0x21B3,0x21B3},
1323 {0x21B4,0x21B4,0x21B4}, {0x21B5,0x21B5,0x21B5},
1324 {0x21B6,0x21B6,0x21B6}, {0x21B7,0x21B7,0x21B7},
1325 {0x21B8,0x21B8,0x21B8}, {0x21B9,0x21B9,0x21B9},
1326 {0x21BA,0x21BA,0x21BA}, {0x21BB,0x21BB,0x21BB},
1327 {0x21BC,0x21BC,0x21BC}, {0x21BD,0x21BD,0x21BD},
1328 {0x21BE,0x21BE,0x21BE}, {0x21BF,0x21BF,0x21BF},
1329 {0x21C0,0x21C0,0x21C0}, {0x21C1,0x21C1,0x21C1},
1330 {0x21C2,0x21C2,0x21C2}, {0x21C3,0x21C3,0x21C3},
1331 {0x21C4,0x21C4,0x21C4}, {0x21C5,0x21C5,0x21C5},
1332 {0x21C6,0x21C6,0x21C6}, {0x21C7,0x21C7,0x21C7},
1333 {0x21C8,0x21C8,0x21C8}, {0x21C9,0x21C9,0x21C9},
1334 {0x21CA,0x21CA,0x21CA}, {0x21CB,0x21CB,0x21CB},
1335 {0x21CC,0x21CC,0x21CC}, {0x21CD,0x21CD,0x21CD},
1336 {0x21CE,0x21CE,0x21CE}, {0x21CF,0x21CF,0x21CF},
1337 {0x21D0,0x21D0,0x21D0}, {0x21D1,0x21D1,0x21D1},
1338 {0x21D2,0x21D2,0x21D2}, {0x21D3,0x21D3,0x21D3},
1339 {0x21D4,0x21D4,0x21D4}, {0x21D5,0x21D5,0x21D5},
1340 {0x21D6,0x21D6,0x21D6}, {0x21D7,0x21D7,0x21D7},
1341 {0x21D8,0x21D8,0x21D8}, {0x21D9,0x21D9,0x21D9},
1342 {0x21DA,0x21DA,0x21DA}, {0x21DB,0x21DB,0x21DB},
1343 {0x21DC,0x21DC,0x21DC}, {0x21DD,0x21DD,0x21DD},
1344 {0x21DE,0x21DE,0x21DE}, {0x21DF,0x21DF,0x21DF},
1345 {0x21E0,0x21E0,0x21E0}, {0x21E1,0x21E1,0x21E1},
1346 {0x21E2,0x21E2,0x21E2}, {0x21E3,0x21E3,0x21E3},
1347 {0x21E4,0x21E4,0x21E4}, {0x21E5,0x21E5,0x21E5},
1348 {0x21E6,0x21E6,0x21E6}, {0x21E7,0x21E7,0x21E7},
1349 {0x21E8,0x21E8,0x21E8}, {0x21E9,0x21E9,0x21E9},
1350 {0x21EA,0x21EA,0x21EA}, {0x21EB,0x21EB,0x21EB},
1351 {0x21EC,0x21EC,0x21EC}, {0x21ED,0x21ED,0x21ED},
1352 {0x21EE,0x21EE,0x21EE}, {0x21EF,0x21EF,0x21EF},
1353 {0x21F0,0x21F0,0x21F0}, {0x21F1,0x21F1,0x21F1},
1354 {0x21F2,0x21F2,0x21F2}, {0x21F3,0x21F3,0x21F3},
1355 {0x21F4,0x21F4,0x21F4}, {0x21F5,0x21F5,0x21F5},
1356 {0x21F6,0x21F6,0x21F6}, {0x21F7,0x21F7,0x21F7},
1357 {0x21F8,0x21F8,0x21F8}, {0x21F9,0x21F9,0x21F9},
1358 {0x21FA,0x21FA,0x21FA}, {0x21FB,0x21FB,0x21FB},
1359 {0x21FC,0x21FC,0x21FC}, {0x21FD,0x21FD,0x21FD},
1360 {0x21FE,0x21FE,0x21FE}, {0x21FF,0x21FF,0x21FF}
1363 static MY_UNICASE_INFO plane24[]={
1364 {0x2400,0x2400,0x2400}, {0x2401,0x2401,0x2401},
1365 {0x2402,0x2402,0x2402}, {0x2403,0x2403,0x2403},
1366 {0x2404,0x2404,0x2404}, {0x2405,0x2405,0x2405},
1367 {0x2406,0x2406,0x2406}, {0x2407,0x2407,0x2407},
1368 {0x2408,0x2408,0x2408}, {0x2409,0x2409,0x2409},
1369 {0x240A,0x240A,0x240A}, {0x240B,0x240B,0x240B},
1370 {0x240C,0x240C,0x240C}, {0x240D,0x240D,0x240D},
1371 {0x240E,0x240E,0x240E}, {0x240F,0x240F,0x240F},
1372 {0x2410,0x2410,0x2410}, {0x2411,0x2411,0x2411},
1373 {0x2412,0x2412,0x2412}, {0x2413,0x2413,0x2413},
1374 {0x2414,0x2414,0x2414}, {0x2415,0x2415,0x2415},
1375 {0x2416,0x2416,0x2416}, {0x2417,0x2417,0x2417},
1376 {0x2418,0x2418,0x2418}, {0x2419,0x2419,0x2419},
1377 {0x241A,0x241A,0x241A}, {0x241B,0x241B,0x241B},
1378 {0x241C,0x241C,0x241C}, {0x241D,0x241D,0x241D},
1379 {0x241E,0x241E,0x241E}, {0x241F,0x241F,0x241F},
1380 {0x2420,0x2420,0x2420}, {0x2421,0x2421,0x2421},
1381 {0x2422,0x2422,0x2422}, {0x2423,0x2423,0x2423},
1382 {0x2424,0x2424,0x2424}, {0x2425,0x2425,0x2425},
1383 {0x2426,0x2426,0x2426}, {0x2427,0x2427,0x2427},
1384 {0x2428,0x2428,0x2428}, {0x2429,0x2429,0x2429},
1385 {0x242A,0x242A,0x242A}, {0x242B,0x242B,0x242B},
1386 {0x242C,0x242C,0x242C}, {0x242D,0x242D,0x242D},
1387 {0x242E,0x242E,0x242E}, {0x242F,0x242F,0x242F},
1388 {0x2430,0x2430,0x2430}, {0x2431,0x2431,0x2431},
1389 {0x2432,0x2432,0x2432}, {0x2433,0x2433,0x2433},
1390 {0x2434,0x2434,0x2434}, {0x2435,0x2435,0x2435},
1391 {0x2436,0x2436,0x2436}, {0x2437,0x2437,0x2437},
1392 {0x2438,0x2438,0x2438}, {0x2439,0x2439,0x2439},
1393 {0x243A,0x243A,0x243A}, {0x243B,0x243B,0x243B},
1394 {0x243C,0x243C,0x243C}, {0x243D,0x243D,0x243D},
1395 {0x243E,0x243E,0x243E}, {0x243F,0x243F,0x243F},
1396 {0x2440,0x2440,0x2440}, {0x2441,0x2441,0x2441},
1397 {0x2442,0x2442,0x2442}, {0x2443,0x2443,0x2443},
1398 {0x2444,0x2444,0x2444}, {0x2445,0x2445,0x2445},
1399 {0x2446,0x2446,0x2446}, {0x2447,0x2447,0x2447},
1400 {0x2448,0x2448,0x2448}, {0x2449,0x2449,0x2449},
1401 {0x244A,0x244A,0x244A}, {0x244B,0x244B,0x244B},
1402 {0x244C,0x244C,0x244C}, {0x244D,0x244D,0x244D},
1403 {0x244E,0x244E,0x244E}, {0x244F,0x244F,0x244F},
1404 {0x2450,0x2450,0x2450}, {0x2451,0x2451,0x2451},
1405 {0x2452,0x2452,0x2452}, {0x2453,0x2453,0x2453},
1406 {0x2454,0x2454,0x2454}, {0x2455,0x2455,0x2455},
1407 {0x2456,0x2456,0x2456}, {0x2457,0x2457,0x2457},
1408 {0x2458,0x2458,0x2458}, {0x2459,0x2459,0x2459},
1409 {0x245A,0x245A,0x245A}, {0x245B,0x245B,0x245B},
1410 {0x245C,0x245C,0x245C}, {0x245D,0x245D,0x245D},
1411 {0x245E,0x245E,0x245E}, {0x245F,0x245F,0x245F},
1412 {0x2460,0x2460,0x2460}, {0x2461,0x2461,0x2461},
1413 {0x2462,0x2462,0x2462}, {0x2463,0x2463,0x2463},
1414 {0x2464,0x2464,0x2464}, {0x2465,0x2465,0x2465},
1415 {0x2466,0x2466,0x2466}, {0x2467,0x2467,0x2467},
1416 {0x2468,0x2468,0x2468}, {0x2469,0x2469,0x2469},
1417 {0x246A,0x246A,0x246A}, {0x246B,0x246B,0x246B},
1418 {0x246C,0x246C,0x246C}, {0x246D,0x246D,0x246D},
1419 {0x246E,0x246E,0x246E}, {0x246F,0x246F,0x246F},
1420 {0x2470,0x2470,0x2470}, {0x2471,0x2471,0x2471},
1421 {0x2472,0x2472,0x2472}, {0x2473,0x2473,0x2473},
1422 {0x2474,0x2474,0x2474}, {0x2475,0x2475,0x2475},
1423 {0x2476,0x2476,0x2476}, {0x2477,0x2477,0x2477},
1424 {0x2478,0x2478,0x2478}, {0x2479,0x2479,0x2479},
1425 {0x247A,0x247A,0x247A}, {0x247B,0x247B,0x247B},
1426 {0x247C,0x247C,0x247C}, {0x247D,0x247D,0x247D},
1427 {0x247E,0x247E,0x247E}, {0x247F,0x247F,0x247F},
1428 {0x2480,0x2480,0x2480}, {0x2481,0x2481,0x2481},
1429 {0x2482,0x2482,0x2482}, {0x2483,0x2483,0x2483},
1430 {0x2484,0x2484,0x2484}, {0x2485,0x2485,0x2485},
1431 {0x2486,0x2486,0x2486}, {0x2487,0x2487,0x2487},
1432 {0x2488,0x2488,0x2488}, {0x2489,0x2489,0x2489},
1433 {0x248A,0x248A,0x248A}, {0x248B,0x248B,0x248B},
1434 {0x248C,0x248C,0x248C}, {0x248D,0x248D,0x248D},
1435 {0x248E,0x248E,0x248E}, {0x248F,0x248F,0x248F},
1436 {0x2490,0x2490,0x2490}, {0x2491,0x2491,0x2491},
1437 {0x2492,0x2492,0x2492}, {0x2493,0x2493,0x2493},
1438 {0x2494,0x2494,0x2494}, {0x2495,0x2495,0x2495},
1439 {0x2496,0x2496,0x2496}, {0x2497,0x2497,0x2497},
1440 {0x2498,0x2498,0x2498}, {0x2499,0x2499,0x2499},
1441 {0x249A,0x249A,0x249A}, {0x249B,0x249B,0x249B},
1442 {0x249C,0x249C,0x249C}, {0x249D,0x249D,0x249D},
1443 {0x249E,0x249E,0x249E}, {0x249F,0x249F,0x249F},
1444 {0x24A0,0x24A0,0x24A0}, {0x24A1,0x24A1,0x24A1},
1445 {0x24A2,0x24A2,0x24A2}, {0x24A3,0x24A3,0x24A3},
1446 {0x24A4,0x24A4,0x24A4}, {0x24A5,0x24A5,0x24A5},
1447 {0x24A6,0x24A6,0x24A6}, {0x24A7,0x24A7,0x24A7},
1448 {0x24A8,0x24A8,0x24A8}, {0x24A9,0x24A9,0x24A9},
1449 {0x24AA,0x24AA,0x24AA}, {0x24AB,0x24AB,0x24AB},
1450 {0x24AC,0x24AC,0x24AC}, {0x24AD,0x24AD,0x24AD},
1451 {0x24AE,0x24AE,0x24AE}, {0x24AF,0x24AF,0x24AF},
1452 {0x24B0,0x24B0,0x24B0}, {0x24B1,0x24B1,0x24B1},
1453 {0x24B2,0x24B2,0x24B2}, {0x24B3,0x24B3,0x24B3},
1454 {0x24B4,0x24B4,0x24B4}, {0x24B5,0x24B5,0x24B5},
1455 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1456 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1457 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1458 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1459 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1460 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1461 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1462 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1463 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1464 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1465 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1466 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1467 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1468 {0x24B6,0x24D0,0x24B6}, {0x24B7,0x24D1,0x24B7},
1469 {0x24B8,0x24D2,0x24B8}, {0x24B9,0x24D3,0x24B9},
1470 {0x24BA,0x24D4,0x24BA}, {0x24BB,0x24D5,0x24BB},
1471 {0x24BC,0x24D6,0x24BC}, {0x24BD,0x24D7,0x24BD},
1472 {0x24BE,0x24D8,0x24BE}, {0x24BF,0x24D9,0x24BF},
1473 {0x24C0,0x24DA,0x24C0}, {0x24C1,0x24DB,0x24C1},
1474 {0x24C2,0x24DC,0x24C2}, {0x24C3,0x24DD,0x24C3},
1475 {0x24C4,0x24DE,0x24C4}, {0x24C5,0x24DF,0x24C5},
1476 {0x24C6,0x24E0,0x24C6}, {0x24C7,0x24E1,0x24C7},
1477 {0x24C8,0x24E2,0x24C8}, {0x24C9,0x24E3,0x24C9},
1478 {0x24CA,0x24E4,0x24CA}, {0x24CB,0x24E5,0x24CB},
1479 {0x24CC,0x24E6,0x24CC}, {0x24CD,0x24E7,0x24CD},
1480 {0x24CE,0x24E8,0x24CE}, {0x24CF,0x24E9,0x24CF},
1481 {0x24EA,0x24EA,0x24EA}, {0x24EB,0x24EB,0x24EB},
1482 {0x24EC,0x24EC,0x24EC}, {0x24ED,0x24ED,0x24ED},
1483 {0x24EE,0x24EE,0x24EE}, {0x24EF,0x24EF,0x24EF},
1484 {0x24F0,0x24F0,0x24F0}, {0x24F1,0x24F1,0x24F1},
1485 {0x24F2,0x24F2,0x24F2}, {0x24F3,0x24F3,0x24F3},
1486 {0x24F4,0x24F4,0x24F4}, {0x24F5,0x24F5,0x24F5},
1487 {0x24F6,0x24F6,0x24F6}, {0x24F7,0x24F7,0x24F7},
1488 {0x24F8,0x24F8,0x24F8}, {0x24F9,0x24F9,0x24F9},
1489 {0x24FA,0x24FA,0x24FA}, {0x24FB,0x24FB,0x24FB},
1490 {0x24FC,0x24FC,0x24FC}, {0x24FD,0x24FD,0x24FD},
1491 {0x24FE,0x24FE,0x24FE}, {0x24FF,0x24FF,0x24FF}
1494 static MY_UNICASE_INFO planeFF[]={
1495 {0xFF00,0xFF00,0xFF00}, {0xFF01,0xFF01,0xFF01},
1496 {0xFF02,0xFF02,0xFF02}, {0xFF03,0xFF03,0xFF03},
1497 {0xFF04,0xFF04,0xFF04}, {0xFF05,0xFF05,0xFF05},
1498 {0xFF06,0xFF06,0xFF06}, {0xFF07,0xFF07,0xFF07},
1499 {0xFF08,0xFF08,0xFF08}, {0xFF09,0xFF09,0xFF09},
1500 {0xFF0A,0xFF0A,0xFF0A}, {0xFF0B,0xFF0B,0xFF0B},
1501 {0xFF0C,0xFF0C,0xFF0C}, {0xFF0D,0xFF0D,0xFF0D},
1502 {0xFF0E,0xFF0E,0xFF0E}, {0xFF0F,0xFF0F,0xFF0F},
1503 {0xFF10,0xFF10,0xFF10}, {0xFF11,0xFF11,0xFF11},
1504 {0xFF12,0xFF12,0xFF12}, {0xFF13,0xFF13,0xFF13},
1505 {0xFF14,0xFF14,0xFF14}, {0xFF15,0xFF15,0xFF15},
1506 {0xFF16,0xFF16,0xFF16}, {0xFF17,0xFF17,0xFF17},
1507 {0xFF18,0xFF18,0xFF18}, {0xFF19,0xFF19,0xFF19},
1508 {0xFF1A,0xFF1A,0xFF1A}, {0xFF1B,0xFF1B,0xFF1B},
1509 {0xFF1C,0xFF1C,0xFF1C}, {0xFF1D,0xFF1D,0xFF1D},
1510 {0xFF1E,0xFF1E,0xFF1E}, {0xFF1F,0xFF1F,0xFF1F},
1511 {0xFF20,0xFF20,0xFF20}, {0xFF21,0xFF41,0xFF21},
1512 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1513 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1514 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1515 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1516 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1517 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1518 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1519 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1520 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1521 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1522 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1523 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1524 {0xFF3A,0xFF5A,0xFF3A}, {0xFF3B,0xFF3B,0xFF3B},
1525 {0xFF3C,0xFF3C,0xFF3C}, {0xFF3D,0xFF3D,0xFF3D},
1526 {0xFF3E,0xFF3E,0xFF3E}, {0xFF3F,0xFF3F,0xFF3F},
1527 {0xFF40,0xFF40,0xFF40}, {0xFF21,0xFF41,0xFF21},
1528 {0xFF22,0xFF42,0xFF22}, {0xFF23,0xFF43,0xFF23},
1529 {0xFF24,0xFF44,0xFF24}, {0xFF25,0xFF45,0xFF25},
1530 {0xFF26,0xFF46,0xFF26}, {0xFF27,0xFF47,0xFF27},
1531 {0xFF28,0xFF48,0xFF28}, {0xFF29,0xFF49,0xFF29},
1532 {0xFF2A,0xFF4A,0xFF2A}, {0xFF2B,0xFF4B,0xFF2B},
1533 {0xFF2C,0xFF4C,0xFF2C}, {0xFF2D,0xFF4D,0xFF2D},
1534 {0xFF2E,0xFF4E,0xFF2E}, {0xFF2F,0xFF4F,0xFF2F},
1535 {0xFF30,0xFF50,0xFF30}, {0xFF31,0xFF51,0xFF31},
1536 {0xFF32,0xFF52,0xFF32}, {0xFF33,0xFF53,0xFF33},
1537 {0xFF34,0xFF54,0xFF34}, {0xFF35,0xFF55,0xFF35},
1538 {0xFF36,0xFF56,0xFF36}, {0xFF37,0xFF57,0xFF37},
1539 {0xFF38,0xFF58,0xFF38}, {0xFF39,0xFF59,0xFF39},
1540 {0xFF3A,0xFF5A,0xFF3A}, {0xFF5B,0xFF5B,0xFF5B},
1541 {0xFF5C,0xFF5C,0xFF5C}, {0xFF5D,0xFF5D,0xFF5D},
1542 {0xFF5E,0xFF5E,0xFF5E}, {0xFF5F,0xFF5F,0xFF5F},
1543 {0xFF60,0xFF60,0xFF60}, {0xFF61,0xFF61,0xFF61},
1544 {0xFF62,0xFF62,0xFF62}, {0xFF63,0xFF63,0xFF63},
1545 {0xFF64,0xFF64,0xFF64}, {0xFF65,0xFF65,0xFF65},
1546 {0xFF66,0xFF66,0xFF66}, {0xFF67,0xFF67,0xFF67},
1547 {0xFF68,0xFF68,0xFF68}, {0xFF69,0xFF69,0xFF69},
1548 {0xFF6A,0xFF6A,0xFF6A}, {0xFF6B,0xFF6B,0xFF6B},
1549 {0xFF6C,0xFF6C,0xFF6C}, {0xFF6D,0xFF6D,0xFF6D},
1550 {0xFF6E,0xFF6E,0xFF6E}, {0xFF6F,0xFF6F,0xFF6F},
1551 {0xFF70,0xFF70,0xFF70}, {0xFF71,0xFF71,0xFF71},
1552 {0xFF72,0xFF72,0xFF72}, {0xFF73,0xFF73,0xFF73},
1553 {0xFF74,0xFF74,0xFF74}, {0xFF75,0xFF75,0xFF75},
1554 {0xFF76,0xFF76,0xFF76}, {0xFF77,0xFF77,0xFF77},
1555 {0xFF78,0xFF78,0xFF78}, {0xFF79,0xFF79,0xFF79},
1556 {0xFF7A,0xFF7A,0xFF7A}, {0xFF7B,0xFF7B,0xFF7B},
1557 {0xFF7C,0xFF7C,0xFF7C}, {0xFF7D,0xFF7D,0xFF7D},
1558 {0xFF7E,0xFF7E,0xFF7E}, {0xFF7F,0xFF7F,0xFF7F},
1559 {0xFF80,0xFF80,0xFF80}, {0xFF81,0xFF81,0xFF81},
1560 {0xFF82,0xFF82,0xFF82}, {0xFF83,0xFF83,0xFF83},
1561 {0xFF84,0xFF84,0xFF84}, {0xFF85,0xFF85,0xFF85},
1562 {0xFF86,0xFF86,0xFF86}, {0xFF87,0xFF87,0xFF87},
1563 {0xFF88,0xFF88,0xFF88}, {0xFF89,0xFF89,0xFF89},
1564 {0xFF8A,0xFF8A,0xFF8A}, {0xFF8B,0xFF8B,0xFF8B},
1565 {0xFF8C,0xFF8C,0xFF8C}, {0xFF8D,0xFF8D,0xFF8D},
1566 {0xFF8E,0xFF8E,0xFF8E}, {0xFF8F,0xFF8F,0xFF8F},
1567 {0xFF90,0xFF90,0xFF90}, {0xFF91,0xFF91,0xFF91},
1568 {0xFF92,0xFF92,0xFF92}, {0xFF93,0xFF93,0xFF93},
1569 {0xFF94,0xFF94,0xFF94}, {0xFF95,0xFF95,0xFF95},
1570 {0xFF96,0xFF96,0xFF96}, {0xFF97,0xFF97,0xFF97},
1571 {0xFF98,0xFF98,0xFF98}, {0xFF99,0xFF99,0xFF99},
1572 {0xFF9A,0xFF9A,0xFF9A}, {0xFF9B,0xFF9B,0xFF9B},
1573 {0xFF9C,0xFF9C,0xFF9C}, {0xFF9D,0xFF9D,0xFF9D},
1574 {0xFF9E,0xFF9E,0xFF9E}, {0xFF9F,0xFF9F,0xFF9F},
1575 {0xFFA0,0xFFA0,0xFFA0}, {0xFFA1,0xFFA1,0xFFA1},
1576 {0xFFA2,0xFFA2,0xFFA2}, {0xFFA3,0xFFA3,0xFFA3},
1577 {0xFFA4,0xFFA4,0xFFA4}, {0xFFA5,0xFFA5,0xFFA5},
1578 {0xFFA6,0xFFA6,0xFFA6}, {0xFFA7,0xFFA7,0xFFA7},
1579 {0xFFA8,0xFFA8,0xFFA8}, {0xFFA9,0xFFA9,0xFFA9},
1580 {0xFFAA,0xFFAA,0xFFAA}, {0xFFAB,0xFFAB,0xFFAB},
1581 {0xFFAC,0xFFAC,0xFFAC}, {0xFFAD,0xFFAD,0xFFAD},
1582 {0xFFAE,0xFFAE,0xFFAE}, {0xFFAF,0xFFAF,0xFFAF},
1583 {0xFFB0,0xFFB0,0xFFB0}, {0xFFB1,0xFFB1,0xFFB1},
1584 {0xFFB2,0xFFB2,0xFFB2}, {0xFFB3,0xFFB3,0xFFB3},
1585 {0xFFB4,0xFFB4,0xFFB4}, {0xFFB5,0xFFB5,0xFFB5},
1586 {0xFFB6,0xFFB6,0xFFB6}, {0xFFB7,0xFFB7,0xFFB7},
1587 {0xFFB8,0xFFB8,0xFFB8}, {0xFFB9,0xFFB9,0xFFB9},
1588 {0xFFBA,0xFFBA,0xFFBA}, {0xFFBB,0xFFBB,0xFFBB},
1589 {0xFFBC,0xFFBC,0xFFBC}, {0xFFBD,0xFFBD,0xFFBD},
1590 {0xFFBE,0xFFBE,0xFFBE}, {0xFFBF,0xFFBF,0xFFBF},
1591 {0xFFC0,0xFFC0,0xFFC0}, {0xFFC1,0xFFC1,0xFFC1},
1592 {0xFFC2,0xFFC2,0xFFC2}, {0xFFC3,0xFFC3,0xFFC3},
1593 {0xFFC4,0xFFC4,0xFFC4}, {0xFFC5,0xFFC5,0xFFC5},
1594 {0xFFC6,0xFFC6,0xFFC6}, {0xFFC7,0xFFC7,0xFFC7},
1595 {0xFFC8,0xFFC8,0xFFC8}, {0xFFC9,0xFFC9,0xFFC9},
1596 {0xFFCA,0xFFCA,0xFFCA}, {0xFFCB,0xFFCB,0xFFCB},
1597 {0xFFCC,0xFFCC,0xFFCC}, {0xFFCD,0xFFCD,0xFFCD},
1598 {0xFFCE,0xFFCE,0xFFCE}, {0xFFCF,0xFFCF,0xFFCF},
1599 {0xFFD0,0xFFD0,0xFFD0}, {0xFFD1,0xFFD1,0xFFD1},
1600 {0xFFD2,0xFFD2,0xFFD2}, {0xFFD3,0xFFD3,0xFFD3},
1601 {0xFFD4,0xFFD4,0xFFD4}, {0xFFD5,0xFFD5,0xFFD5},
1602 {0xFFD6,0xFFD6,0xFFD6}, {0xFFD7,0xFFD7,0xFFD7},
1603 {0xFFD8,0xFFD8,0xFFD8}, {0xFFD9,0xFFD9,0xFFD9},
1604 {0xFFDA,0xFFDA,0xFFDA}, {0xFFDB,0xFFDB,0xFFDB},
1605 {0xFFDC,0xFFDC,0xFFDC}, {0xFFDD,0xFFDD,0xFFDD},
1606 {0xFFDE,0xFFDE,0xFFDE}, {0xFFDF,0xFFDF,0xFFDF},
1607 {0xFFE0,0xFFE0,0xFFE0}, {0xFFE1,0xFFE1,0xFFE1},
1608 {0xFFE2,0xFFE2,0xFFE2}, {0xFFE3,0xFFE3,0xFFE3},
1609 {0xFFE4,0xFFE4,0xFFE4}, {0xFFE5,0xFFE5,0xFFE5},
1610 {0xFFE6,0xFFE6,0xFFE6}, {0xFFE7,0xFFE7,0xFFE7},
1611 {0xFFE8,0xFFE8,0xFFE8}, {0xFFE9,0xFFE9,0xFFE9},
1612 {0xFFEA,0xFFEA,0xFFEA}, {0xFFEB,0xFFEB,0xFFEB},
1613 {0xFFEC,0xFFEC,0xFFEC}, {0xFFED,0xFFED,0xFFED},
1614 {0xFFEE,0xFFEE,0xFFEE}, {0xFFEF,0xFFEF,0xFFEF},
1615 {0xFFF0,0xFFF0,0xFFF0}, {0xFFF1,0xFFF1,0xFFF1},
1616 {0xFFF2,0xFFF2,0xFFF2}, {0xFFF3,0xFFF3,0xFFF3},
1617 {0xFFF4,0xFFF4,0xFFF4}, {0xFFF5,0xFFF5,0xFFF5},
1618 {0xFFF6,0xFFF6,0xFFF6}, {0xFFF7,0xFFF7,0xFFF7},
1619 {0xFFF8,0xFFF8,0xFFF8}, {0xFFF9,0xFFF9,0xFFF9},
1620 {0xFFFA,0xFFFA,0xFFFA}, {0xFFFB,0xFFFB,0xFFFB},
1621 {0xFFFC,0xFFFC,0xFFFC}, {0xFFFD,0xFFFD,0xFFFD},
1622 {0xFFFE,0xFFFE,0xFFFE}, {0xFFFF,0xFFFF,0xFFFF}
1625 MY_UNICASE_INFO *my_unicase_default[256]={
1626 plane00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1627 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1628 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1629 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1630 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1631 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1632 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1633 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1634 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1635 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1636 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1637 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1638 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1639 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1640 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1641 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1642 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1643 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1644 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1645 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1646 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1647 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1648 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1649 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1650 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1651 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1652 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1653 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1654 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1655 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1656 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1657 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1663 Reproduce old utf8_general_ci behaviour before we fixed Bug#27877.
1665 MY_UNICASE_INFO *my_unicase_mysql500[256]={
1666 plane00_mysql500,
1667 plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1668 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1669 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1670 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1671 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1672 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1673 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1674 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1675 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1676 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1677 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1678 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1679 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1680 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1681 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1682 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1683 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1684 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1685 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1686 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1687 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1688 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1689 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1690 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1691 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1692 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1693 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1694 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1695 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1696 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1697 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1698 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1704 Turkish lower/upper mapping:
1705 1. LOWER(0x0049 LATIN CAPITAL LETTER I) ->
1706 0x0131 LATIN SMALL LETTER DOTLESS I
1707 2. UPPER(0x0069 LATIN SMALL LETTER I) ->
1708 0x0130 LATIN CAPITAL LETTER I WITH DOT ABOVE
1711 static MY_UNICASE_INFO turk00[]=
1713 {0x0000,0x0000,0x0000}, {0x0001,0x0001,0x0001},
1714 {0x0002,0x0002,0x0002}, {0x0003,0x0003,0x0003},
1715 {0x0004,0x0004,0x0004}, {0x0005,0x0005,0x0005},
1716 {0x0006,0x0006,0x0006}, {0x0007,0x0007,0x0007},
1717 {0x0008,0x0008,0x0008}, {0x0009,0x0009,0x0009},
1718 {0x000A,0x000A,0x000A}, {0x000B,0x000B,0x000B},
1719 {0x000C,0x000C,0x000C}, {0x000D,0x000D,0x000D},
1720 {0x000E,0x000E,0x000E}, {0x000F,0x000F,0x000F},
1721 {0x0010,0x0010,0x0010}, {0x0011,0x0011,0x0011},
1722 {0x0012,0x0012,0x0012}, {0x0013,0x0013,0x0013},
1723 {0x0014,0x0014,0x0014}, {0x0015,0x0015,0x0015},
1724 {0x0016,0x0016,0x0016}, {0x0017,0x0017,0x0017},
1725 {0x0018,0x0018,0x0018}, {0x0019,0x0019,0x0019},
1726 {0x001A,0x001A,0x001A}, {0x001B,0x001B,0x001B},
1727 {0x001C,0x001C,0x001C}, {0x001D,0x001D,0x001D},
1728 {0x001E,0x001E,0x001E}, {0x001F,0x001F,0x001F},
1729 {0x0020,0x0020,0x0020}, {0x0021,0x0021,0x0021},
1730 {0x0022,0x0022,0x0022}, {0x0023,0x0023,0x0023},
1731 {0x0024,0x0024,0x0024}, {0x0025,0x0025,0x0025},
1732 {0x0026,0x0026,0x0026}, {0x0027,0x0027,0x0027},
1733 {0x0028,0x0028,0x0028}, {0x0029,0x0029,0x0029},
1734 {0x002A,0x002A,0x002A}, {0x002B,0x002B,0x002B},
1735 {0x002C,0x002C,0x002C}, {0x002D,0x002D,0x002D},
1736 {0x002E,0x002E,0x002E}, {0x002F,0x002F,0x002F},
1737 {0x0030,0x0030,0x0030}, {0x0031,0x0031,0x0031},
1738 {0x0032,0x0032,0x0032}, {0x0033,0x0033,0x0033},
1739 {0x0034,0x0034,0x0034}, {0x0035,0x0035,0x0035},
1740 {0x0036,0x0036,0x0036}, {0x0037,0x0037,0x0037},
1741 {0x0038,0x0038,0x0038}, {0x0039,0x0039,0x0039},
1742 {0x003A,0x003A,0x003A}, {0x003B,0x003B,0x003B},
1743 {0x003C,0x003C,0x003C}, {0x003D,0x003D,0x003D},
1744 {0x003E,0x003E,0x003E}, {0x003F,0x003F,0x003F},
1745 {0x0040,0x0040,0x0040}, {0x0041,0x0061,0x0041},
1746 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1747 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1748 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1749 {0x0048,0x0068,0x0048}, {0x0049,0x0131,0x0049},
1750 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1751 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1752 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1753 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1754 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1755 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1756 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1757 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1758 {0x005A,0x007A,0x005A}, {0x005B,0x005B,0x005B},
1759 {0x005C,0x005C,0x005C}, {0x005D,0x005D,0x005D},
1760 {0x005E,0x005E,0x005E}, {0x005F,0x005F,0x005F},
1761 {0x0060,0x0060,0x0060}, {0x0041,0x0061,0x0041},
1762 {0x0042,0x0062,0x0042}, {0x0043,0x0063,0x0043},
1763 {0x0044,0x0064,0x0044}, {0x0045,0x0065,0x0045},
1764 {0x0046,0x0066,0x0046}, {0x0047,0x0067,0x0047},
1765 {0x0048,0x0068,0x0048}, {0x0130,0x0069,0x0049},
1766 {0x004A,0x006A,0x004A}, {0x004B,0x006B,0x004B},
1767 {0x004C,0x006C,0x004C}, {0x004D,0x006D,0x004D},
1768 {0x004E,0x006E,0x004E}, {0x004F,0x006F,0x004F},
1769 {0x0050,0x0070,0x0050}, {0x0051,0x0071,0x0051},
1770 {0x0052,0x0072,0x0052}, {0x0053,0x0073,0x0053},
1771 {0x0054,0x0074,0x0054}, {0x0055,0x0075,0x0055},
1772 {0x0056,0x0076,0x0056}, {0x0057,0x0077,0x0057},
1773 {0x0058,0x0078,0x0058}, {0x0059,0x0079,0x0059},
1774 {0x005A,0x007A,0x005A}, {0x007B,0x007B,0x007B},
1775 {0x007C,0x007C,0x007C}, {0x007D,0x007D,0x007D},
1776 {0x007E,0x007E,0x007E}, {0x007F,0x007F,0x007F},
1777 {0x0080,0x0080,0x0080}, {0x0081,0x0081,0x0081},
1778 {0x0082,0x0082,0x0082}, {0x0083,0x0083,0x0083},
1779 {0x0084,0x0084,0x0084}, {0x0085,0x0085,0x0085},
1780 {0x0086,0x0086,0x0086}, {0x0087,0x0087,0x0087},
1781 {0x0088,0x0088,0x0088}, {0x0089,0x0089,0x0089},
1782 {0x008A,0x008A,0x008A}, {0x008B,0x008B,0x008B},
1783 {0x008C,0x008C,0x008C}, {0x008D,0x008D,0x008D},
1784 {0x008E,0x008E,0x008E}, {0x008F,0x008F,0x008F},
1785 {0x0090,0x0090,0x0090}, {0x0091,0x0091,0x0091},
1786 {0x0092,0x0092,0x0092}, {0x0093,0x0093,0x0093},
1787 {0x0094,0x0094,0x0094}, {0x0095,0x0095,0x0095},
1788 {0x0096,0x0096,0x0096}, {0x0097,0x0097,0x0097},
1789 {0x0098,0x0098,0x0098}, {0x0099,0x0099,0x0099},
1790 {0x009A,0x009A,0x009A}, {0x009B,0x009B,0x009B},
1791 {0x009C,0x009C,0x009C}, {0x009D,0x009D,0x009D},
1792 {0x009E,0x009E,0x009E}, {0x009F,0x009F,0x009F},
1793 {0x00A0,0x00A0,0x00A0}, {0x00A1,0x00A1,0x00A1},
1794 {0x00A2,0x00A2,0x00A2}, {0x00A3,0x00A3,0x00A3},
1795 {0x00A4,0x00A4,0x00A4}, {0x00A5,0x00A5,0x00A5},
1796 {0x00A6,0x00A6,0x00A6}, {0x00A7,0x00A7,0x00A7},
1797 {0x00A8,0x00A8,0x00A8}, {0x00A9,0x00A9,0x00A9},
1798 {0x00AA,0x00AA,0x00AA}, {0x00AB,0x00AB,0x00AB},
1799 {0x00AC,0x00AC,0x00AC}, {0x00AD,0x00AD,0x00AD},
1800 {0x00AE,0x00AE,0x00AE}, {0x00AF,0x00AF,0x00AF},
1801 {0x00B0,0x00B0,0x00B0}, {0x00B1,0x00B1,0x00B1},
1802 {0x00B2,0x00B2,0x00B2}, {0x00B3,0x00B3,0x00B3},
1803 {0x00B4,0x00B4,0x00B4}, {0x039C,0x00B5,0x039C},
1804 {0x00B6,0x00B6,0x00B6}, {0x00B7,0x00B7,0x00B7},
1805 {0x00B8,0x00B8,0x00B8}, {0x00B9,0x00B9,0x00B9},
1806 {0x00BA,0x00BA,0x00BA}, {0x00BB,0x00BB,0x00BB},
1807 {0x00BC,0x00BC,0x00BC}, {0x00BD,0x00BD,0x00BD},
1808 {0x00BE,0x00BE,0x00BE}, {0x00BF,0x00BF,0x00BF},
1809 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1810 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1811 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1812 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1813 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1814 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1815 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1816 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1817 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1818 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1819 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1820 {0x00D6,0x00F6,0x004F}, {0x00D7,0x00D7,0x00D7},
1821 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1822 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1823 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1824 {0x00DE,0x00FE,0x00DE}, {0x00DF,0x00DF,0x00DF},
1825 {0x00C0,0x00E0,0x0041}, {0x00C1,0x00E1,0x0041},
1826 {0x00C2,0x00E2,0x0041}, {0x00C3,0x00E3,0x0041},
1827 {0x00C4,0x00E4,0x0041}, {0x00C5,0x00E5,0x0041},
1828 {0x00C6,0x00E6,0x00C6}, {0x00C7,0x00E7,0x0043},
1829 {0x00C8,0x00E8,0x0045}, {0x00C9,0x00E9,0x0045},
1830 {0x00CA,0x00EA,0x0045}, {0x00CB,0x00EB,0x0045},
1831 {0x00CC,0x00EC,0x0049}, {0x00CD,0x00ED,0x0049},
1832 {0x00CE,0x00EE,0x0049}, {0x00CF,0x00EF,0x0049},
1833 {0x00D0,0x00F0,0x00D0}, {0x00D1,0x00F1,0x004E},
1834 {0x00D2,0x00F2,0x004F}, {0x00D3,0x00F3,0x004F},
1835 {0x00D4,0x00F4,0x004F}, {0x00D5,0x00F5,0x004F},
1836 {0x00D6,0x00F6,0x004F}, {0x00F7,0x00F7,0x00F7},
1837 {0x00D8,0x00F8,0x00D8}, {0x00D9,0x00F9,0x0055},
1838 {0x00DA,0x00FA,0x0055}, {0x00DB,0x00FB,0x0055},
1839 {0x00DC,0x00FC,0x0055}, {0x00DD,0x00FD,0x0059},
1840 {0x00DE,0x00FE,0x00DE}, {0x0178,0x00FF,0x0059}
1845 MY_UNICASE_INFO *my_unicase_turkish[256]=
1847 turk00, plane01, plane02, plane03, plane04, plane05, NULL, NULL,
1848 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1849 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1850 NULL, NULL, NULL, NULL, NULL, NULL, plane1E, plane1F,
1851 NULL, plane21, NULL, NULL, plane24, NULL, NULL, NULL,
1852 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1853 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1854 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1855 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1856 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1857 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1858 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1859 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1860 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1861 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1862 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1863 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1864 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1865 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1866 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1867 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1868 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1869 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1870 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1871 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1872 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1873 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1874 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1875 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1876 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1877 NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
1878 NULL, NULL, NULL, NULL, NULL, NULL, NULL, planeFF
1884 ** Compare string against string with wildcard
1885 ** This function is used in UTF8 and UCS2
1887 ** 0 if matched
1888 ** -1 if not matched with wildcard
1889 ** 1 if matched with wildcard
1892 static
1893 int my_wildcmp_unicode_impl(CHARSET_INFO *cs,
1894 const char *str,const char *str_end,
1895 const char *wildstr,const char *wildend,
1896 int escape, int w_one, int w_many,
1897 MY_UNICASE_INFO **weights, int recurse_level)
1899 int result= -1; /* Not found, using wildcards */
1900 my_wc_t s_wc, w_wc;
1901 int scan, plane;
1902 int (*mb_wc)(struct charset_info_st *, my_wc_t *,
1903 const uchar *, const uchar *);
1904 mb_wc= cs->cset->mb_wc;
1906 if (my_string_stack_guard && my_string_stack_guard(recurse_level))
1907 return 1;
1908 while (wildstr != wildend)
1910 while (1)
1912 my_bool escaped= 0;
1913 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1914 (const uchar*)wildend)) <= 0)
1915 return 1;
1917 if (w_wc == (my_wc_t)w_many)
1919 result= 1; /* Found an anchor char */
1920 break;
1923 wildstr+= scan;
1924 if (w_wc == (my_wc_t)escape && wildstr < wildend)
1926 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1927 (const uchar*)wildend)) <= 0)
1928 return 1;
1929 wildstr+= scan;
1930 escaped= 1;
1933 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
1934 (const uchar*)str_end)) <= 0)
1935 return 1;
1936 str+= scan;
1938 if (!escaped && w_wc == (my_wc_t)w_one)
1940 result= 1; /* Found an anchor char */
1942 else
1944 if (weights)
1946 plane=(s_wc>>8) & 0xFF;
1947 s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
1948 plane=(w_wc>>8) & 0xFF;
1949 w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
1951 if (s_wc != w_wc)
1952 return 1; /* No match */
1954 if (wildstr == wildend)
1955 return (str != str_end); /* Match if both are at end */
1959 if (w_wc == (my_wc_t)w_many)
1960 { /* Found w_many */
1962 /* Remove any '%' and '_' from the wild search string */
1963 for ( ; wildstr != wildend ; )
1965 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1966 (const uchar*)wildend)) <= 0)
1967 return 1;
1969 if (w_wc == (my_wc_t)w_many)
1971 wildstr+= scan;
1972 continue;
1975 if (w_wc == (my_wc_t)w_one)
1977 wildstr+= scan;
1978 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
1979 (const uchar*)str_end)) <=0)
1980 return 1;
1981 str+= scan;
1982 continue;
1984 break; /* Not a wild character */
1987 if (wildstr == wildend)
1988 return 0; /* Ok if w_many is last */
1990 if (str == str_end)
1991 return -1;
1993 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
1994 (const uchar*)wildend)) <=0)
1995 return 1;
1996 wildstr+= scan;
1998 if (w_wc == (my_wc_t)escape)
2000 if (wildstr < wildend)
2002 if ((scan= mb_wc(cs, &w_wc, (const uchar*)wildstr,
2003 (const uchar*)wildend)) <=0)
2004 return 1;
2005 wildstr+= scan;
2009 while (1)
2011 /* Skip until the first character from wildstr is found */
2012 while (str != str_end)
2014 if ((scan= mb_wc(cs, &s_wc, (const uchar*)str,
2015 (const uchar*)str_end)) <=0)
2016 return 1;
2017 if (weights)
2019 plane=(s_wc>>8) & 0xFF;
2020 s_wc = weights[plane] ? weights[plane][s_wc & 0xFF].sort : s_wc;
2021 plane=(w_wc>>8) & 0xFF;
2022 w_wc = weights[plane] ? weights[plane][w_wc & 0xFF].sort : w_wc;
2025 if (s_wc == w_wc)
2026 break;
2027 str+= scan;
2029 if (str == str_end)
2030 return -1;
2032 str+= scan;
2033 result= my_wildcmp_unicode_impl(cs, str, str_end, wildstr, wildend,
2034 escape, w_one, w_many,
2035 weights, recurse_level+1);
2036 if (result <= 0)
2037 return result;
2041 return (str != str_end ? 1 : 0);
2045 my_wildcmp_unicode(CHARSET_INFO *cs,
2046 const char *str,const char *str_end,
2047 const char *wildstr,const char *wildend,
2048 int escape, int w_one, int w_many,
2049 MY_UNICASE_INFO **weights)
2051 return my_wildcmp_unicode_impl(cs, str, str_end,
2052 wildstr, wildend,
2053 escape, w_one, w_many, weights, 1);
2056 #endif
2060 #ifdef HAVE_CHARSET_utf8
2063 We consider bytes with code more than 127 as a letter.
2064 This garantees that word boundaries work fine with regular
2065 expressions. Note, there is no need to mark byte 255 as a
2066 letter, it is illegal byte in UTF8.
2068 static uchar ctype_utf8[] = {
2070 32, 32, 32, 32, 32, 32, 32, 32, 32, 40, 40, 40, 40, 40, 32, 32,
2071 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2072 72, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
2073 132,132,132,132,132,132,132,132,132,132, 16, 16, 16, 16, 16, 16,
2074 16,129,129,129,129,129,129, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2075 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16,
2076 16,130,130,130,130,130,130, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2077 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 16, 16, 16, 32,
2078 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2079 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2080 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2081 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2082 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2083 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2084 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2085 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0
2088 /* The below are taken from usa7 implementation */
2090 static uchar to_lower_utf8[] = {
2091 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2092 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2093 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2094 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2095 64, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
2096 112,113,114,115,116,117,118,119,120,121,122, 91, 92, 93, 94, 95,
2097 96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
2098 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
2099 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2100 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2101 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2102 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2103 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2104 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2105 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2106 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2109 static uchar to_upper_utf8[] = {
2110 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
2111 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
2112 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2113 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
2114 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2115 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
2116 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
2117 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
2118 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
2119 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
2120 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
2121 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
2122 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
2123 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
2124 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
2125 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
2128 static inline int bincmp(const uchar *s, const uchar *se,
2129 const uchar *t, const uchar *te)
2131 int slen= (int) (se-s), tlen= (int) (te-t);
2132 int len=min(slen,tlen);
2133 int cmp= memcmp(s,t,len);
2134 return cmp ? cmp : slen-tlen;
2138 static int my_utf8_uni(CHARSET_INFO *cs __attribute__((unused)),
2139 my_wc_t * pwc, const uchar *s, const uchar *e)
2141 uchar c;
2143 if (s >= e)
2144 return MY_CS_TOOSMALL;
2146 c= s[0];
2147 if (c < 0x80)
2149 *pwc = c;
2150 return 1;
2152 else if (c < 0xc2)
2153 return MY_CS_ILSEQ;
2154 else if (c < 0xe0)
2156 if (s+2 > e) /* We need 2 characters */
2157 return MY_CS_TOOSMALL2;
2159 if (!((s[1] ^ 0x80) < 0x40))
2160 return MY_CS_ILSEQ;
2162 *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2163 return 2;
2165 else if (c < 0xf0)
2167 if (s+3 > e) /* We need 3 characters */
2168 return MY_CS_TOOSMALL3;
2170 if (!((s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40 &&
2171 (c >= 0xe1 || s[1] >= 0xa0)))
2172 return MY_CS_ILSEQ;
2174 *pwc = ((my_wc_t) (c & 0x0f) << 12) |
2175 ((my_wc_t) (s[1] ^ 0x80) << 6) |
2176 (my_wc_t) (s[2] ^ 0x80);
2178 return 3;
2180 #ifdef UNICODE_32BIT
2181 else if (c < 0xf8 && sizeof(my_wc_t)*8 >= 32)
2183 if (s+4 > e) /* We need 4 characters */
2184 return MY_CS_TOOSMALL4;
2186 if (!((s[1] ^ 0x80) < 0x40 &&
2187 (s[2] ^ 0x80) < 0x40 &&
2188 (s[3] ^ 0x80) < 0x40 &&
2189 (c >= 0xf1 || s[1] >= 0x90)))
2190 return MY_CS_ILSEQ;
2192 *pwc = ((my_wc_t) (c & 0x07) << 18) |
2193 ((my_wc_t) (s[1] ^ 0x80) << 12) |
2194 ((my_wc_t) (s[2] ^ 0x80) << 6) |
2195 (my_wc_t) (s[3] ^ 0x80);
2197 return 4;
2199 else if (c < 0xfc && sizeof(my_wc_t)*8 >= 32)
2201 if (s+5 >e) /* We need 5 characters */
2202 return MY_CS_TOOSMALL5;
2204 if (!((s[1] ^ 0x80) < 0x40 &&
2205 (s[2] ^ 0x80) < 0x40 &&
2206 (s[3] ^ 0x80) < 0x40 &&
2207 (s[4] ^ 0x80) < 0x40 &&
2208 (c >= 0xf9 || s[1] >= 0x88)))
2209 return MY_CS_ILSEQ;
2211 *pwc = ((my_wc_t) (c & 0x03) << 24) |
2212 ((my_wc_t) (s[1] ^ 0x80) << 18) |
2213 ((my_wc_t) (s[2] ^ 0x80) << 12) |
2214 ((my_wc_t) (s[3] ^ 0x80) << 6) |
2215 (my_wc_t) (s[4] ^ 0x80);
2216 return 5;
2218 else if (c < 0xfe && sizeof(my_wc_t)*8 >= 32)
2220 if ( s+6 >e ) /* We need 6 characters */
2221 return MY_CS_TOOSMALL6;
2223 if (!((s[1] ^ 0x80) < 0x40 &&
2224 (s[2] ^ 0x80) < 0x40 &&
2225 (s[3] ^ 0x80) < 0x40 &&
2226 (s[4] ^ 0x80) < 0x40 &&
2227 (s[5] ^ 0x80) < 0x40 &&
2228 (c >= 0xfd || s[1] >= 0x84)))
2229 return MY_CS_ILSEQ;
2231 *pwc = ((my_wc_t) (c & 0x01) << 30)
2232 | ((my_wc_t) (s[1] ^ 0x80) << 24)
2233 | ((my_wc_t) (s[2] ^ 0x80) << 18)
2234 | ((my_wc_t) (s[3] ^ 0x80) << 12)
2235 | ((my_wc_t) (s[4] ^ 0x80) << 6)
2236 | (my_wc_t) (s[5] ^ 0x80);
2237 return 6;
2239 #endif
2240 return MY_CS_ILSEQ;
2245 The same as above, but without range check
2246 for example, for a null-terminated string
2248 static int my_utf8_uni_no_range(CHARSET_INFO *cs __attribute__((unused)),
2249 my_wc_t * pwc, const uchar *s)
2251 uchar c;
2253 c= s[0];
2254 if (c < 0x80)
2256 *pwc = c;
2257 return 1;
2260 if (c < 0xc2)
2261 return MY_CS_ILSEQ;
2263 if (c < 0xe0)
2265 if (!((s[1] ^ 0x80) < 0x40))
2266 return MY_CS_ILSEQ;
2268 *pwc = ((my_wc_t) (c & 0x1f) << 6) | (my_wc_t) (s[1] ^ 0x80);
2269 return 2;
2272 if (c < 0xf0)
2274 if (!((s[1] ^ 0x80) < 0x40 &&
2275 (s[2] ^ 0x80) < 0x40 &&
2276 (c >= 0xe1 || s[1] >= 0xa0)))
2277 return MY_CS_ILSEQ;
2279 *pwc= ((my_wc_t) (c & 0x0f) << 12) |
2280 ((my_wc_t) (s[1] ^ 0x80) << 6) |
2281 (my_wc_t) (s[2] ^ 0x80);
2283 return 3;
2285 return MY_CS_ILSEQ;
2289 static int my_uni_utf8 (CHARSET_INFO *cs __attribute__((unused)),
2290 my_wc_t wc, uchar *r, uchar *e)
2292 int count;
2294 if (r >= e)
2295 return MY_CS_TOOSMALL;
2297 if (wc < 0x80)
2298 count = 1;
2299 else if (wc < 0x800)
2300 count = 2;
2301 else if (wc < 0x10000)
2302 count = 3;
2303 #ifdef UNICODE_32BIT
2304 else if (wc < 0x200000)
2305 count = 4;
2306 else if (wc < 0x4000000)
2307 count = 5;
2308 else if (wc <= 0x7fffffff)
2309 count = 6;
2310 #endif
2311 else return MY_CS_ILUNI;
2314 e is a character after the string r, not the last character of it.
2315 Because of it (r+count > e), not (r+count-1 >e )
2317 if ( r+count > e )
2318 return MY_CS_TOOSMALLN(count);
2320 switch (count) {
2321 /* Fall through all cases!!! */
2322 #ifdef UNICODE_32BIT
2323 case 6: r[5] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x4000000;
2324 case 5: r[4] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x200000;
2325 case 4: r[3] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x10000;
2326 #endif
2327 case 3: r[2] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0x800;
2328 case 2: r[1] = (uchar) (0x80 | (wc & 0x3f)); wc = wc >> 6; wc |= 0xc0;
2329 case 1: r[0] = (uchar) wc;
2331 return count;
2336 The same as above, but without range check.
2338 static int my_uni_utf8_no_range(CHARSET_INFO *cs __attribute__((unused)),
2339 my_wc_t wc, uchar *r)
2341 int count;
2343 if (wc < 0x80)
2344 count= 1;
2345 else if (wc < 0x800)
2346 count= 2;
2347 else if (wc < 0x10000)
2348 count= 3;
2349 else
2350 return MY_CS_ILUNI;
2352 switch (count)
2354 /* Fall through all cases!!! */
2355 case 3: r[2]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0x800;
2356 case 2: r[1]= (uchar) (0x80 | (wc & 0x3f)); wc= wc >> 6; wc |= 0xc0;
2357 case 1: r[0]= (uchar) wc;
2359 return count;
2363 static size_t my_caseup_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
2364 char *dst, size_t dstlen)
2366 my_wc_t wc;
2367 int srcres, dstres;
2368 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2369 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2370 DBUG_ASSERT(src != dst || cs->caseup_multiply == 1);
2372 while ((src < srcend) &&
2373 (srcres= my_utf8_uni(cs, &wc, (uchar *) src, (uchar*) srcend)) > 0)
2375 int plane= (wc>>8) & 0xFF;
2376 wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].toupper : wc;
2377 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
2378 break;
2379 src+= srcres;
2380 dst+= dstres;
2382 return (size_t) (dst - dst0);
2386 static void my_hash_sort_utf8(CHARSET_INFO *cs, const uchar *s, size_t slen,
2387 ulong *n1, ulong *n2)
2389 my_wc_t wc;
2390 int res;
2391 const uchar *e=s+slen;
2392 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2395 Remove end space. We have to do this to be able to compare
2396 'A ' and 'A' as identical
2398 while (e > s && e[-1] == ' ')
2399 e--;
2401 while ((s < e) && (res=my_utf8_uni(cs,&wc, (uchar *)s, (uchar*)e))>0 )
2403 int plane = (wc>>8) & 0xFF;
2404 wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
2405 n1[0]^= (((n1[0] & 63)+n2[0])*(wc & 0xFF))+ (n1[0] << 8);
2406 n2[0]+=3;
2407 n1[0]^= (((n1[0] & 63)+n2[0])*(wc >> 8))+ (n1[0] << 8);
2408 n2[0]+=3;
2409 s+=res;
2414 static size_t my_caseup_str_utf8(CHARSET_INFO *cs, char *src)
2416 my_wc_t wc;
2417 int srcres, dstres;
2418 char *dst= src, *dst0= src;
2419 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2420 DBUG_ASSERT(cs->caseup_multiply == 1);
2422 while (*src &&
2423 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
2425 int plane= (wc>>8) & 0xFF;
2426 wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].toupper : wc;
2427 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
2428 break;
2429 src+= srcres;
2430 dst+= dstres;
2432 *dst= '\0';
2433 return (size_t) (dst - dst0);
2437 static size_t my_casedn_utf8(CHARSET_INFO *cs, char *src, size_t srclen,
2438 char *dst, size_t dstlen)
2440 my_wc_t wc;
2441 int srcres, dstres;
2442 char *srcend= src + srclen, *dstend= dst + dstlen, *dst0= dst;
2443 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2444 DBUG_ASSERT(src != dst || cs->casedn_multiply == 1);
2446 while ((src < srcend) &&
2447 (srcres= my_utf8_uni(cs, &wc, (uchar*) src, (uchar*)srcend)) > 0)
2449 int plane= (wc>>8) & 0xFF;
2450 wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].tolower : wc;
2451 if ((dstres= my_uni_utf8(cs, wc, (uchar*) dst, (uchar*) dstend)) <= 0)
2452 break;
2453 src+= srcres;
2454 dst+= dstres;
2456 return (size_t) (dst - dst0);
2460 static size_t my_casedn_str_utf8(CHARSET_INFO *cs, char *src)
2462 my_wc_t wc;
2463 int srcres, dstres;
2464 char *dst= src, *dst0= src;
2465 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2466 DBUG_ASSERT(cs->casedn_multiply == 1);
2468 while (*src &&
2469 (srcres= my_utf8_uni_no_range(cs, &wc, (uchar *) src)) > 0)
2471 int plane= (wc>>8) & 0xFF;
2472 wc= uni_plane[plane] ? uni_plane[plane][wc & 0xFF].tolower : wc;
2473 if ((dstres= my_uni_utf8_no_range(cs, wc, (uchar*) dst)) <= 0)
2474 break;
2475 src+= srcres;
2476 dst+= dstres;
2480 In rare cases lower string can be shorter than
2481 the original string, for example:
2483 "U+0130 LATIN CAPITAL LETTER I WITH DOT ABOVE"
2484 (which is 0xC4B0 in utf8, i.e. two bytes)
2486 is converted into
2488 "U+0069 LATIN SMALL LETTER I"
2489 (which is 0x69 in utf8, i.e. one byte)
2491 So, we need to put '\0' terminator after converting.
2494 *dst= '\0';
2495 return (size_t) (dst - dst0);
2499 static int my_strnncoll_utf8(CHARSET_INFO *cs,
2500 const uchar *s, size_t slen,
2501 const uchar *t, size_t tlen,
2502 my_bool t_is_prefix)
2504 int s_res,t_res;
2505 my_wc_t UNINIT_VAR(s_wc), t_wc;
2506 const uchar *se=s+slen;
2507 const uchar *te=t+tlen;
2508 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2510 while ( s < se && t < te )
2512 int plane;
2513 s_res=my_utf8_uni(cs,&s_wc, s, se);
2514 t_res=my_utf8_uni(cs,&t_wc, t, te);
2516 if ( s_res <= 0 || t_res <= 0 )
2518 /* Incorrect string, compare byte by byte value */
2519 return bincmp(s, se, t, te);
2522 plane=(s_wc>>8) & 0xFF;
2523 s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
2524 plane=(t_wc>>8) & 0xFF;
2525 t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
2526 if ( s_wc != t_wc )
2528 return s_wc > t_wc ? 1 : -1;
2531 s+=s_res;
2532 t+=t_res;
2534 return (int) (t_is_prefix ? t-te : ((se-s) - (te-t)));
2540 Compare strings, discarding end space
2542 SYNOPSIS
2543 my_strnncollsp_utf8()
2544 cs character set handler
2545 a First string to compare
2546 a_length Length of 'a'
2547 b Second string to compare
2548 b_length Length of 'b'
2549 diff_if_only_endspace_difference
2550 Set to 1 if the strings should be regarded as different
2551 if they only difference in end space
2553 IMPLEMENTATION
2554 If one string is shorter as the other, then we space extend the other
2555 so that the strings have equal length.
2557 This will ensure that the following things hold:
2559 "a" == "a "
2560 "a\0" < "a"
2561 "a\0" < "a "
2563 RETURN
2564 < 0 a < b
2565 = 0 a == b
2566 > 0 a > b
2569 static int my_strnncollsp_utf8(CHARSET_INFO *cs,
2570 const uchar *s, size_t slen,
2571 const uchar *t, size_t tlen,
2572 my_bool diff_if_only_endspace_difference)
2574 int s_res, t_res, res;
2575 my_wc_t UNINIT_VAR(s_wc),t_wc;
2576 const uchar *se= s+slen, *te= t+tlen;
2577 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2579 #ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
2580 diff_if_only_endspace_difference= 0;
2581 #endif
2583 while ( s < se && t < te )
2585 int plane;
2586 s_res=my_utf8_uni(cs,&s_wc, s, se);
2587 t_res=my_utf8_uni(cs,&t_wc, t, te);
2589 if ( s_res <= 0 || t_res <= 0 )
2591 /* Incorrect string, compare byte by byte value */
2592 return bincmp(s, se, t, te);
2595 plane=(s_wc>>8) & 0xFF;
2596 s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
2597 plane=(t_wc>>8) & 0xFF;
2598 t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
2599 if ( s_wc != t_wc )
2601 return s_wc > t_wc ? 1 : -1;
2604 s+=s_res;
2605 t+=t_res;
2608 slen= (size_t) (se-s);
2609 tlen= (size_t) (te-t);
2610 res= 0;
2612 if (slen != tlen)
2614 int swap= 1;
2615 if (diff_if_only_endspace_difference)
2616 res= 1; /* Assume 'a' is bigger */
2617 if (slen < tlen)
2619 slen= tlen;
2620 s= t;
2621 se= te;
2622 swap= -1;
2623 res= -res;
2626 This following loop uses the fact that in UTF-8
2627 all multibyte characters are greater than space,
2628 and all multibyte head characters are greater than
2629 space. It means if we meet a character greater
2630 than space, it always means that the longer string
2631 is greater. So we can reuse the same loop from the
2632 8bit version, without having to process full multibute
2633 sequences.
2635 for ( ; s < se; s++)
2637 if (*s != ' ')
2638 return (*s < ' ') ? -swap : swap;
2641 return res;
2646 Compare 0-terminated UTF8 strings.
2648 SYNOPSIS
2649 my_strcasecmp_utf8()
2650 cs character set handler
2651 s First 0-terminated string to compare
2652 t Second 0-terminated string to compare
2654 IMPLEMENTATION
2656 RETURN
2657 - negative number if s < t
2658 - positive number if s > t
2659 - 0 is the strings are equal
2662 static
2663 int my_strcasecmp_utf8(CHARSET_INFO *cs, const char *s, const char *t)
2665 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2666 while (s[0] && t[0])
2668 my_wc_t s_wc,t_wc;
2670 if ((uchar) s[0] < 128)
2673 s[0] is between 0 and 127.
2674 It represents a single byte character.
2675 Convert it into weight according to collation.
2677 s_wc= plane00[(uchar) s[0]].tolower;
2678 s++;
2680 else
2682 int plane, res;
2685 Scan a multibyte character.
2687 In the future it is worth to write a special version of my_utf8_uni()
2688 for 0-terminated strings which will not take in account length. Now
2689 we call the regular version of my_utf8_uni() with s+3 in the
2690 last argument. s+3 is enough to scan any multibyte sequence.
2692 Calling the regular version of my_utf8_uni is safe for 0-terminated
2693 strings: we will never lose the end of the string:
2694 If we have 0 character in the middle of a multibyte sequence,
2695 then my_utf8_uni will always return a negative number, so the
2696 loop with finish.
2699 res= my_utf8_uni(cs,&s_wc, (const uchar*)s, (const uchar*) s + 3);
2702 In the case of wrong multibyte sequence we will
2703 call strcmp() for byte-to-byte comparison.
2705 if (res <= 0)
2706 return strcmp(s, t);
2707 s+= res;
2709 /* Convert Unicode code into weight according to collation */
2710 plane=(s_wc>>8) & 0xFF;
2711 s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].tolower : s_wc;
2715 /* Do the same for the second string */
2717 if ((uchar) t[0] < 128)
2719 /* Convert single byte character into weight */
2720 t_wc= plane00[(uchar) t[0]].tolower;
2721 t++;
2723 else
2725 int plane;
2726 int res=my_utf8_uni(cs,&t_wc, (const uchar*)t, (const uchar*) t + 3);
2727 if (res <= 0)
2728 return strcmp(s, t);
2729 t+= res;
2731 /* Convert code into weight */
2732 plane=(t_wc>>8) & 0xFF;
2733 t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].tolower : t_wc;
2736 /* Now we have two weights, let's compare them */
2737 if ( s_wc != t_wc )
2738 return ((int) s_wc) - ((int) t_wc);
2740 return ((int)(uchar)s[0]) - ((int) (uchar) t[0]);
2744 static
2745 int my_wildcmp_utf8(CHARSET_INFO *cs,
2746 const char *str,const char *str_end,
2747 const char *wildstr,const char *wildend,
2748 int escape, int w_one, int w_many)
2750 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2751 return my_wildcmp_unicode(cs,str,str_end,wildstr,wildend,
2752 escape,w_one,w_many,uni_plane);
2756 static
2757 size_t my_strnxfrmlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
2758 size_t len)
2760 return (len * 2 + 2) / 3;
2764 static size_t my_strnxfrm_utf8(CHARSET_INFO *cs,
2765 uchar *dst, size_t dstlen,
2766 const uchar *src, size_t srclen)
2768 my_wc_t wc;
2769 int res;
2770 int plane;
2771 uchar *de= dst + dstlen;
2772 uchar *de_beg= de - 1;
2773 const uchar *se = src + srclen;
2774 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
2776 while (dst < de_beg)
2778 if ((res=my_utf8_uni(cs,&wc, src, se)) <= 0)
2779 break;
2780 src+=res;
2782 plane=(wc>>8) & 0xFF;
2783 wc = uni_plane[plane] ? uni_plane[plane][wc & 0xFF].sort : wc;
2785 *dst++= (uchar)(wc >> 8);
2786 *dst++= (uchar)(wc & 0xFF);
2790 while (dst < de_beg) /* Fill the tail with keys for space character */
2792 *dst++= 0x00;
2793 *dst++= 0x20;
2796 if (dst < de) /* Clear the last byte, if "dstlen" was an odd number */
2797 *dst= 0x00;
2799 return dstlen;
2802 static uint my_ismbchar_utf8(CHARSET_INFO *cs,const char *b, const char *e)
2804 my_wc_t wc;
2805 int res= my_utf8_uni(cs,&wc, (const uchar*)b, (const uchar*)e);
2806 return (res>1) ? res : 0;
2809 static uint my_mbcharlen_utf8(CHARSET_INFO *cs __attribute__((unused)),
2810 uint c)
2812 if (c < 0x80)
2813 return 1;
2814 else if (c < 0xc2)
2815 return 0; /* Illegal mb head */
2816 else if (c < 0xe0)
2817 return 2;
2818 else if (c < 0xf0)
2819 return 3;
2820 #ifdef UNICODE_32BIT
2821 else if (c < 0xf8)
2822 return 4;
2823 else if (c < 0xfc)
2824 return 5;
2825 else if (c < 0xfe)
2826 return 6;
2827 #endif
2828 return 0; /* Illegal mb head */;
2832 static MY_COLLATION_HANDLER my_collation_ci_handler =
2834 NULL, /* init */
2835 my_strnncoll_utf8,
2836 my_strnncollsp_utf8,
2837 my_strnxfrm_utf8,
2838 my_strnxfrmlen_utf8,
2839 my_like_range_mb,
2840 my_wildcmp_utf8,
2841 my_strcasecmp_utf8,
2842 my_instr_mb,
2843 my_hash_sort_utf8,
2844 my_propagate_complex
2847 MY_CHARSET_HANDLER my_charset_utf8_handler=
2849 NULL, /* init */
2850 my_ismbchar_utf8,
2851 my_mbcharlen_utf8,
2852 my_numchars_mb,
2853 my_charpos_mb,
2854 my_well_formed_len_mb,
2855 my_lengthsp_8bit,
2856 my_numcells_mb,
2857 my_utf8_uni,
2858 my_uni_utf8,
2859 my_mb_ctype_mb,
2860 my_caseup_str_utf8,
2861 my_casedn_str_utf8,
2862 my_caseup_utf8,
2863 my_casedn_utf8,
2864 my_snprintf_8bit,
2865 my_long10_to_str_8bit,
2866 my_longlong10_to_str_8bit,
2867 my_fill_8bit,
2868 my_strntol_8bit,
2869 my_strntoul_8bit,
2870 my_strntoll_8bit,
2871 my_strntoull_8bit,
2872 my_strntod_8bit,
2873 my_strtoll10_8bit,
2874 my_strntoull10rnd_8bit,
2875 my_scan_8bit
2880 CHARSET_INFO my_charset_utf8_general_ci=
2882 33,0,0, /* number */
2883 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
2884 "utf8", /* cs name */
2885 "utf8_general_ci", /* name */
2886 "", /* comment */
2887 NULL, /* tailoring */
2888 ctype_utf8, /* ctype */
2889 to_lower_utf8, /* to_lower */
2890 to_upper_utf8, /* to_upper */
2891 to_upper_utf8, /* sort_order */
2892 NULL, /* contractions */
2893 NULL, /* sort_order_big*/
2894 NULL, /* tab_to_uni */
2895 NULL, /* tab_from_uni */
2896 my_unicase_default, /* caseinfo */
2897 NULL, /* state_map */
2898 NULL, /* ident_map */
2899 1, /* strxfrm_multiply */
2900 1, /* caseup_multiply */
2901 1, /* casedn_multiply */
2902 1, /* mbminlen */
2903 3, /* mbmaxlen */
2904 0, /* min_sort_char */
2905 0xFFFF, /* max_sort_char */
2906 ' ', /* pad char */
2907 0, /* escape_with_backslash_is_dangerous */
2908 &my_charset_utf8_handler,
2909 &my_collation_ci_handler
2913 CHARSET_INFO my_charset_utf8_general_mysql500_ci=
2915 223,0,0, /* number */
2916 MY_CS_COMPILED|MY_CS_STRNXFRM|MY_CS_UNICODE, /* state */
2917 "utf8", /* cs name */
2918 "utf8_general_mysql500_ci", /* name */
2919 "", /* comment */
2920 NULL, /* tailoring */
2921 ctype_utf8, /* ctype */
2922 to_lower_utf8, /* to_lower */
2923 to_upper_utf8, /* to_upper */
2924 to_upper_utf8, /* sort_order */
2925 NULL, /* contractions */
2926 NULL, /* sort_order_big */
2927 NULL, /* tab_to_uni */
2928 NULL, /* tab_from_uni */
2929 my_unicase_mysql500, /* caseinfo */
2930 NULL, /* state_map */
2931 NULL, /* ident_map */
2932 1, /* strxfrm_multiply */
2933 1, /* caseup_multiply */
2934 1, /* casedn_multiply */
2935 1, /* mbminlen */
2936 3, /* mbmaxlen */
2937 0, /* min_sort_char */
2938 0xFFFF, /* max_sort_char */
2939 ' ', /* pad char */
2940 0, /* escape_with_backslash_is_dangerous */
2941 &my_charset_utf8_handler,
2942 &my_collation_ci_handler
2946 CHARSET_INFO my_charset_utf8_bin=
2948 83,0,0, /* number */
2949 MY_CS_COMPILED|MY_CS_BINSORT|MY_CS_UNICODE, /* state */
2950 "utf8", /* cs name */
2951 "utf8_bin", /* name */
2952 "", /* comment */
2953 NULL, /* tailoring */
2954 ctype_utf8, /* ctype */
2955 to_lower_utf8, /* to_lower */
2956 to_upper_utf8, /* to_upper */
2957 NULL, /* sort_order */
2958 NULL, /* contractions */
2959 NULL, /* sort_order_big*/
2960 NULL, /* tab_to_uni */
2961 NULL, /* tab_from_uni */
2962 my_unicase_default, /* caseinfo */
2963 NULL, /* state_map */
2964 NULL, /* ident_map */
2965 1, /* strxfrm_multiply */
2966 1, /* caseup_multiply */
2967 1, /* casedn_multiply */
2968 1, /* mbminlen */
2969 3, /* mbmaxlen */
2970 0, /* min_sort_char */
2971 0xFFFF, /* max_sort_char */
2972 ' ', /* pad char */
2973 0, /* escape_with_backslash_is_dangerous */
2974 &my_charset_utf8_handler,
2975 &my_collation_mb_bin_handler
2978 #ifdef HAVE_UTF8_GENERAL_CS
2981 * These functions bacically do the same as their original, except
2982 * that they return 0 only when two comparing unicode strings are
2983 * strictly the same in case-sensitive way. See "save_diff" local
2984 * variable to what they actually do.
2987 static int my_strnncoll_utf8_cs(CHARSET_INFO *cs,
2988 const uchar *s, size_t slen,
2989 const uchar *t, size_t tlen,
2990 my_bool t_is_prefix)
2992 int s_res,t_res;
2993 my_wc_t s_wc,t_wc;
2994 const uchar *se=s+slen;
2995 const uchar *te=t+tlen;
2996 int save_diff = 0;
2997 int diff;
2998 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3000 while ( s < se && t < te )
3002 int plane;
3003 s_res=my_utf8_uni(cs,&s_wc, s, se);
3004 t_res=my_utf8_uni(cs,&t_wc, t, te);
3006 if ( s_res <= 0 || t_res <= 0 )
3009 /* Incorrect string, compare by char value */
3010 return ((int)s[0]-(int)t[0]);
3013 if ( save_diff == 0 )
3015 save_diff = ((int)s_wc) - ((int)t_wc);
3017 plane=(s_wc>>8) & 0xFF;
3018 s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
3019 plane=(t_wc>>8) & 0xFF;
3020 t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
3021 if ( s_wc != t_wc )
3023 return ((int) s_wc) - ((int) t_wc);
3026 s+=s_res;
3027 t+=t_res;
3029 diff = ( (se-s) - (te-t) );
3030 return t_is_prefix ? t-te : ((diff == 0) ? save_diff : diff);
3033 static int my_strnncollsp_utf8_cs(CHARSET_INFO *cs,
3034 const uchar *s, size_t slen,
3035 const uchar *t, size_t tlen,
3036 my_bool diff_if_only_endspace_difference)
3038 int s_res, t_res, res;
3039 my_wc_t s_wc, t_wc;
3040 const uchar *se= s + slen;
3041 const uchar *te= t + tlen;
3042 int save_diff= 0;
3043 MY_UNICASE_INFO **uni_plane= cs->caseinfo;
3045 #ifndef VARCHAR_WITH_DIFF_ENDSPACE_ARE_DIFFERENT_FOR_UNIQUE
3046 diff_if_only_endspace_difference= 0;
3047 #endif
3049 while ( s < se && t < te )
3051 int plane;
3052 s_res=my_utf8_uni(cs,&s_wc, s, se);
3053 t_res=my_utf8_uni(cs,&t_wc, t, te);
3055 if ( s_res <= 0 || t_res <= 0 )
3057 /* Incorrect string, compare by char value */
3058 return ((int)s[0]-(int)t[0]);
3061 if ( save_diff == 0 )
3063 save_diff = ((int)s_wc) - ((int)t_wc);
3065 plane=(s_wc>>8) & 0xFF;
3066 s_wc = uni_plane[plane] ? uni_plane[plane][s_wc & 0xFF].sort : s_wc;
3067 plane=(t_wc>>8) & 0xFF;
3068 t_wc = uni_plane[plane] ? uni_plane[plane][t_wc & 0xFF].sort : t_wc;
3069 if ( s_wc != t_wc )
3071 return ((int) s_wc) - ((int) t_wc);
3074 s+=s_res;
3075 t+=t_res;
3078 slen= se-s;
3079 tlen= te-t;
3080 res= 0;
3082 if (slen != tlen)
3084 int swap= 1;
3085 if (diff_if_only_endspace_difference)
3086 res= 1; /* Assume 'a' is bigger */
3087 if (slen < tlen)
3089 slen= tlen;
3090 s= t;
3091 se= te;
3092 swap= -1;
3093 res= -res;
3096 This following loop uses the fact that in UTF-8
3097 all multibyte characters are greater than space,
3098 and all multibyte head characters are greater than
3099 space. It means if we meet a character greater
3100 than space, it always means that the longer string
3101 is greater. So we can reuse the same loop from the
3102 8bit version, without having to process full multibute
3103 sequences.
3105 for ( ; s < se; s++)
3107 if (*s != (uchar) ' ')
3108 return (*s < (uchar) ' ') ? -swap : swap;
3111 return save_diff;
3114 static MY_COLLATION_HANDLER my_collation_cs_handler =
3116 NULL, /* init */
3117 my_strnncoll_utf8_cs,
3118 my_strnncollsp_utf8_cs,
3119 my_strnxfrm_utf8,
3120 my_strnxfrmlen_utf8,
3121 my_like_range_simple,
3122 my_wildcmp_mb,
3123 my_strcasecmp_utf8,
3124 my_instr_mb,
3125 my_hash_sort_utf8,
3126 my_propagate_simple
3129 CHARSET_INFO my_charset_utf8_general_cs=
3131 254,0,0, /* number */
3132 MY_CS_COMPILED|MY_CS_UNICODE, /* state */
3133 "utf8", /* cs name */
3134 "utf8_general_cs", /* name */
3135 "", /* comment */
3136 NULL, /* tailoring */
3137 ctype_utf8, /* ctype */
3138 to_lower_utf8, /* to_lower */
3139 to_upper_utf8, /* to_upper */
3140 to_upper_utf8, /* sort_order */
3141 NULL, /* contractions */
3142 NULL, /* sort_order_big*/
3143 NULL, /* tab_to_uni */
3144 NULL, /* tab_from_uni */
3145 my_unicase_default, /* caseinfo */
3146 NULL, /* state_map */
3147 NULL, /* ident_map */
3148 1, /* strxfrm_multiply */
3149 1, /* caseup_multiply */
3150 1, /* casedn_multiply */
3151 1, /* mbminlen */
3152 3, /* mbmaxlen */
3153 0, /* min_sort_char */
3154 255, /* max_sort_char */
3155 ' ', /* pad char */
3156 0, /* escape_with_backslash_is_dangerous */
3157 &my_charset_utf8_handler,
3158 &my_collation_cs_handler
3160 #endif /* Cybozu Hack */
3164 File system encoding components:
3166 Code range Pattern Number Used Unused Blocks
3167 -----------------------------------------------------------------------------
3168 00C0..017F [.][0..4][g..z] 5*20= 100 97 3 Latin1 Supplement + Ext A
3169 0370..03FF [.][5..9][g..z] 5*20= 100 88 12 Greek + Coptic
3170 0400..052F [.][g..z][0..6] 20*7= 140 140 137 Cyrillic
3171 0530..058F [.][g..z][7..8] 20*2= 40 38 2 Armenian
3172 2160..217F [.][g..z][9] 20*1= 20 16 4 Number Forms
3173 0180..02AF [.][g..z][a..k] 28*11=220 203 17 Latin Ext B + IPA
3174 1E00..0EFF [.][g..z][l..r] 20*7= 140 136 4 Latin Additional Extended
3175 1F00..1FFF [.][g..z][s..z] 20*8= 160 144 16 Greek Extended
3176 .... .... [.][a..f][g..z] 6*20= 120 0 120 RESERVED
3177 24B6..24E9 [.][@][a..z] 26 26 0 Enclosed Alphanumerics
3178 FF21..FF5A [.][a..z][@] 26 26 0 Full Width forms
3180 All other characters are encoded using five bytes:
3182 [.][0..9a..z][0..9a..z][0..9a..z][0..9a..z]
3187 static uint16 touni[5994]=
3189 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3190 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3191 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C0,
3192 0x00C1,0x00C2,0x00C3,0x00C4,0x00C5,0x00C6,0x00C7,0x00C8,
3193 0x00C9,0x00CA,0x00CB,0x00CC,0x00CD,0x00CE,0x00CF,0x00D0,
3194 0x00D1,0x00D2,0x00D3,0x0000,0x0000,0x0000,0x0000,0x0000,
3195 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00E0,
3196 0x00E1,0x00E2,0x00E3,0x00E4,0x00E5,0x00E6,0x00E7,0x00E8,
3197 0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x00EF,0x00F0,
3198 0x00F1,0x00F2,0x00F3,0x0000,0x0000,0x0000,0x0000,0x0000,
3199 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3200 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3201 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00D4,
3202 0x00D5,0x00D6,0x0000,0x00D8,0x00D9,0x00DA,0x00DB,0x00DC,
3203 0x00DD,0x00DE,0x0178,0x0100,0x0102,0x0104,0x0106,0x0108,
3204 0x010A,0x010C,0x010E,0x0000,0x0000,0x0000,0x0000,0x0000,
3205 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00F4,
3206 0x00F5,0x00F6,0x00DF,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,
3207 0x00FD,0x00FE,0x00FF,0x0101,0x0103,0x0105,0x0107,0x0109,
3208 0x010B,0x010D,0x010F,0x0000,0x0000,0x0000,0x0000,0x0000,
3209 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3210 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3211 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0110,
3212 0x0112,0x0114,0x0116,0x0118,0x011A,0x011C,0x011E,0x0120,
3213 0x0122,0x0124,0x0126,0x0128,0x012A,0x012C,0x012E,0x0000,
3214 0x0132,0x0134,0x0136,0x0000,0x0000,0x0000,0x0000,0x0000,
3215 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,
3216 0x0113,0x0115,0x0117,0x0119,0x011B,0x011D,0x011F,0x0121,
3217 0x0123,0x0125,0x0127,0x0129,0x012B,0x012D,0x012F,0x0131,
3218 0x0133,0x0135,0x0137,0x0000,0x0000,0x0000,0x0000,0x0000,
3219 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3220 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3221 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3222 0x0139,0x013B,0x013D,0x013F,0x0141,0x0143,0x0145,0x0147,
3223 0x0000,0x014A,0x014C,0x014E,0x0150,0x0152,0x0154,0x0156,
3224 0x0158,0x015A,0x015C,0x0000,0x0000,0x0000,0x0000,0x0000,
3225 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0138,
3226 0x013A,0x013C,0x013E,0x0140,0x0142,0x0144,0x0146,0x0148,
3227 0x0149,0x014B,0x014D,0x014F,0x0151,0x0153,0x0155,0x0157,
3228 0x0159,0x015B,0x015D,0x0000,0x0000,0x0000,0x0000,0x0000,
3229 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3230 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3231 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015E,
3232 0x0160,0x0162,0x0164,0x0166,0x0168,0x016A,0x016C,0x016E,
3233 0x0170,0x0172,0x0174,0x0176,0x0179,0x017B,0x017D,0x0000,
3234 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3235 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x015F,
3236 0x0161,0x0163,0x0165,0x0167,0x0169,0x016B,0x016D,0x016F,
3237 0x0171,0x0173,0x0175,0x0177,0x017A,0x017C,0x017E,0x017F,
3238 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3239 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3240 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3241 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3242 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3243 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3244 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3245 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3246 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3247 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3248 0x0000,0x0390,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3249 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3250 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3251 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0386,
3252 0x0388,0x0389,0x038A,0x0000,0x0391,0x0000,0x0393,0x0394,
3253 0x0395,0x0396,0x0397,0x0000,0x0399,0x0000,0x039B,0x039C,
3254 0x039D,0x039E,0x039F,0x0000,0x0000,0x0000,0x0000,0x0000,
3255 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03AC,
3256 0x03AD,0x03AE,0x03AF,0x03B0,0x03B1,0x03B2,0x03B3,0x03B4,
3257 0x03B5,0x03B6,0x03B7,0x03B8,0x03B9,0x03BA,0x03BB,0x03BC,
3258 0x03BD,0x03BE,0x03BF,0x0000,0x0000,0x0000,0x0000,0x0000,
3259 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3260 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3261 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3262 0x03A1,0x0000,0x0000,0x03A4,0x03A5,0x0000,0x03A7,0x03A8,
3263 0x03A9,0x03AA,0x03AB,0x038C,0x038E,0x038F,0x0000,0x0392,
3264 0x0398,0x03D2,0x03D3,0x0000,0x0000,0x0000,0x0000,0x0000,
3265 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03C0,
3266 0x03C1,0x03C2,0x03C3,0x03C4,0x03C5,0x03C6,0x03C7,0x03C8,
3267 0x03C9,0x03CA,0x03CB,0x03CC,0x03CD,0x03CE,0x0000,0x03D0,
3268 0x03D1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3269 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3270 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3271 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03D4,
3272 0x03A6,0x03A0,0x0000,0x0000,0x03DA,0x03DC,0x03DE,0x03E0,
3273 0x03E2,0x03E4,0x03E6,0x03E8,0x03EA,0x03EC,0x03EE,0x039A,
3274 0x0000,0x03A3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3275 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3276 0x03D5,0x03D6,0x03D7,0x03D9,0x03DB,0x03DD,0x03DF,0x03E1,
3277 0x03E3,0x03E5,0x03E7,0x03E9,0x03EB,0x03ED,0x03EF,0x03F0,
3278 0x03F1,0x03F2,0x03F3,0x0000,0x0000,0x0000,0x0000,0x0000,
3279 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3280 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3281 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3282 0x0000,0x0000,0x0000,0x0000,0x03FD,0x03FE,0x03FF,0x0000,
3283 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3284 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3285 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x03F5,
3286 0x03F6,0x03F8,0x03FB,0x03FC,0x0000,0x0000,0x0000,0x0000,
3287 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3288 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3289 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3290 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3291 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3292 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3293 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3294 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3295 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3296 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3297 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3298 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3299 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3300 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3301 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3302 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3303 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3304 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3305 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3306 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3307 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3308 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3309 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3310 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3311 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3312 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3313 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3314 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3315 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3316 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3317 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3318 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3319 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3320 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3321 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3322 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3323 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3324 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3325 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3326 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3327 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3328 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3329 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3330 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3331 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3332 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3333 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3334 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3335 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3336 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3337 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3338 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3339 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3340 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3341 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3342 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3343 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3344 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3345 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3346 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3347 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3348 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3349 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3350 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3351 0x0000,0x24B6,0x24B7,0x24B8,0x24B9,0x24BA,0x24BB,0x24BC,
3352 0x24BD,0x24BE,0x24BF,0x24C0,0x24C1,0x24C2,0x24C3,0x24C4,
3353 0x24C5,0x24C6,0x24C7,0x24C8,0x24C9,0x24CA,0x24CB,0x24CC,
3354 0x24CD,0x24CE,0x24CF,0x0000,0x0000,0x0000,0x0000,0x0000,
3355 0x0000,0x24D0,0x24D1,0x24D2,0x24D3,0x24D4,0x24D5,0x24D6,
3356 0x24D7,0x24D8,0x24D9,0x24DA,0x24DB,0x24DC,0x24DD,0x24DE,
3357 0x24DF,0x24E0,0x24E1,0x24E2,0x24E3,0x24E4,0x24E5,0x24E6,
3358 0x24E7,0x24E8,0x24E9,0x0000,0x0000,0x0000,0x0000,0x0000,
3359 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3360 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3361 0xFF21,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3362 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3363 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3364 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3365 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3366 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3367 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3368 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3369 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3370 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3371 0xFF22,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3372 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3373 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3374 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3375 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3376 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3377 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3378 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3379 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3380 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3381 0xFF23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3382 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3383 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3384 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3385 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3386 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3387 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3388 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3389 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3390 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3391 0xFF24,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3392 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3393 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3394 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3395 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3396 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3397 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3398 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3399 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3400 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3401 0xFF25,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3402 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3403 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3404 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3405 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3406 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3407 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3408 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3409 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3410 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3411 0xFF26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3412 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3413 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3414 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3415 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3416 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3417 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3418 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3419 0x0410,0x0424,0x0408,0x0478,0x04A6,0x04CD,0x04F4,0x0000,
3420 0x0544,0x2160,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3421 0xFF27,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3422 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3423 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3424 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3425 0x0000,0x0000,0x01B3,0x01DE,0x0208,0x0230,0x0000,0x0000,
3426 0x0000,0x0000,0x0000,0x0000,0x1E00,0x1E28,0x1E50,0x1E78,
3427 0x1E60,0x1EBE,0x1EE6,0x1F08,0x1F2A,0x0000,0x1F6C,0x1F88,
3428 0x1FAC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3429 0x0411,0x0425,0x0409,0x047A,0x04A8,0x0000,0x04F6,0x0531,
3430 0x0545,0x2161,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3431 0xFF28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3432 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3433 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3434 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3435 0x0000,0x0182,0x01B5,0x01E0,0x020A,0x0232,0x0000,0x0000,
3436 0x019D,0x0000,0x0000,0x0000,0x1E02,0x1E2A,0x1E52,0x1E7A,
3437 0x0000,0x1EC0,0x1EE8,0x1F09,0x1F2B,0x0000,0x1F6D,0x1F89,
3438 0x1FAD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3439 0x0412,0x0426,0x040A,0x047C,0x04AA,0x04D0,0x04F8,0x0532,
3440 0x0546,0x2162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3441 0xFF29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3442 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3443 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3444 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3445 0x0000,0x0184,0x01B8,0x01E2,0x020C,0x0000,0x0000,0x0000,
3446 0x0000,0x0000,0x0000,0x0000,0x1E04,0x1E2C,0x1E54,0x1E7C,
3447 0x0000,0x1EC2,0x1EEA,0x1F0A,0x1F2C,0x0000,0x1F6E,0x1F8A,
3448 0x1FAE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3449 0x0413,0x0427,0x040B,0x047E,0x04AC,0x04D2,0x0000,0x0533,
3450 0x0547,0x2163,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3451 0xFF2A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3452 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3453 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3454 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3455 0x0000,0x0187,0x0000,0x01E4,0x020E,0x0000,0x0000,0x0193,
3456 0x0000,0x01AE,0x0000,0x0000,0x1E06,0x1E2E,0x1E56,0x1E7E,
3457 0x0000,0x1EC4,0x1EEC,0x1F0B,0x1F2D,0x0000,0x1F6F,0x1F8B,
3458 0x1FAF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3459 0x0414,0x0428,0x040C,0x0480,0x04AE,0x04D4,0x0000,0x0534,
3460 0x0548,0x2164,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3461 0xFF2B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3462 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3463 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3464 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3465 0x0000,0x018B,0x0000,0x01E6,0x0210,0x0000,0x0000,0x0000,
3466 0x019F,0x0000,0x0000,0x0000,0x1E08,0x1E30,0x1E58,0x1E80,
3467 0x0000,0x1EC6,0x1EEE,0x1F0C,0x1F2E,0x0000,0x1FBA,0x1F8C,
3468 0x1FB8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3469 0x0415,0x0429,0x040D,0x0000,0x04B0,0x04D6,0x0000,0x0535,
3470 0x0549,0x2165,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3471 0xFF2C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3472 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3473 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3474 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3475 0x0000,0x0000,0x0000,0x01E8,0x0212,0x0000,0x0000,0x0000,
3476 0x0000,0x01B1,0x0000,0x0000,0x1E0A,0x1E32,0x1E5A,0x1E82,
3477 0x1EA0,0x1EC8,0x1EF0,0x1F0D,0x1F2F,0x1F59,0x1FBB,0x1F8D,
3478 0x1FB9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3479 0x0416,0x042A,0x040E,0x048A,0x04B2,0x04D8,0x0000,0x0536,
3480 0x054A,0x2166,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3481 0xFF2D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3482 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3483 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3484 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3485 0x0000,0x0191,0x0000,0x01EA,0x0214,0x0000,0x0000,0x0194,
3486 0x0000,0x01B2,0x0000,0x0000,0x1E0C,0x1E34,0x1E5C,0x1E84,
3487 0x1EA2,0x1ECA,0x1EF2,0x1F0E,0x1F38,0x0000,0x1FC8,0x1F8E,
3488 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3489 0x0417,0x042B,0x040F,0x048C,0x04B4,0x04DA,0x0000,0x0537,
3490 0x054B,0x2167,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3491 0xFF2E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3492 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3493 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3494 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3495 0x0000,0x01F6,0x01BC,0x01EC,0x0216,0x0000,0x0000,0x0000,
3496 0x0000,0x0000,0x0000,0x0000,0x1E0E,0x1E36,0x1E5E,0x1E86,
3497 0x1EA4,0x1ECC,0x1EF4,0x1F0F,0x1F39,0x1F5B,0x1FC9,0x1F8F,
3498 0x1FBC,0x1FE8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3499 0x0418,0x042C,0x0460,0x048E,0x04B6,0x04DC,0x0000,0x0538,
3500 0x054C,0x2168,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3501 0xFF2F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3502 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3503 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3504 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3505 0x0000,0x0198,0x01C4,0x01EE,0x0218,0x023A,0x0000,0x0000,
3506 0x0000,0x0000,0x0000,0x0000,0x1E10,0x1E38,0x0000,0x1E88,
3507 0x1EA6,0x1ECE,0x1EF6,0x1F18,0x1F3A,0x0000,0x1FCA,0x1F98,
3508 0x0000,0x1FE9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3509 0x0419,0x042D,0x0462,0x0490,0x04B8,0x04DE,0x0500,0x0539,
3510 0x054D,0x2169,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3511 0xFF30,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3512 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3513 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3514 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3515 0x0000,0x023D,0x01C7,0x0000,0x021A,0x023B,0x0000,0x0000,
3516 0x0000,0x0000,0x0000,0x0000,0x1E12,0x1E3A,0x1E62,0x1E8A,
3517 0x1EA8,0x1ED0,0x1EF8,0x1F19,0x1F3B,0x1F5D,0x1FCB,0x1F99,
3518 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3519 0x041A,0x042E,0x0464,0x0492,0x04BA,0x04E0,0x0502,0x053A,
3520 0x054E,0x216A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3521 0xFF31,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3522 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3523 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3524 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3525 0x0000,0x0000,0x01CA,0x01F1,0x021C,0x023E,0x0181,0x0000,
3526 0x0000,0x0000,0x0000,0x0000,0x1E14,0x1E3C,0x1E64,0x1E8C,
3527 0x1EAA,0x1ED2,0x0000,0x1F1A,0x1F3C,0x0000,0x1FDA,0x1F9A,
3528 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3529 0x041B,0x042F,0x0466,0x0494,0x04BC,0x04E2,0x0504,0x053B,
3530 0x054F,0x216B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3531 0xFF32,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3532 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3533 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3534 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3535 0x0000,0x0220,0x01CD,0x01F4,0x021E,0x0000,0x0186,0x0197,
3536 0x0000,0x0000,0x0000,0x0000,0x1E16,0x1E3E,0x1E66,0x1E8E,
3537 0x1EAC,0x1ED4,0x0000,0x1F1B,0x1F3D,0x1F5F,0x1FDB,0x1F9B,
3538 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3539 0x041C,0x0400,0x0468,0x0496,0x04BE,0x04E4,0x0506,0x053C,
3540 0x0550,0x216C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3541 0xFF33,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3542 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3543 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3544 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3545 0x0000,0x01A0,0x01CF,0x01F8,0x0000,0x0000,0x0000,0x0196,
3546 0x0000,0x0000,0x0000,0x0000,0x1E18,0x1E40,0x1E68,0x1E90,
3547 0x1EAE,0x1ED6,0x0000,0x1F1C,0x1F3E,0x0000,0x1FF8,0x1F9C,
3548 0x0000,0x1FEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3549 0x041D,0x0401,0x046A,0x0498,0x04C0,0x04E6,0x0508,0x053D,
3550 0x0551,0x216D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3551 0xFF34,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3552 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3553 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3554 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3555 0x0000,0x01A2,0x01D1,0x01FA,0x0222,0x0000,0x0189,0x0000,
3556 0x0000,0x01B7,0x0000,0x0000,0x1E1A,0x1E42,0x1E6A,0x1E92,
3557 0x1EB0,0x1ED8,0x0000,0x1F1D,0x1F3F,0x0000,0x1FF9,0x1F9D,
3558 0x1FCC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3559 0x041E,0x0402,0x046C,0x049A,0x04C1,0x04E8,0x050A,0x053E,
3560 0x0552,0x216E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3561 0xFF35,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3562 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3563 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3564 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3565 0x0000,0x01A4,0x01D3,0x01FC,0x0224,0x0000,0x018A,0x0000,
3566 0x0000,0x0000,0x0000,0x0000,0x1E1C,0x1E44,0x1E6C,0x1E94,
3567 0x1EB2,0x1EDA,0x0000,0x0000,0x1F48,0x0000,0x1FEA,0x1F9E,
3568 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3569 0x041F,0x0403,0x046E,0x049C,0x04C3,0x04EA,0x050C,0x053F,
3570 0x0553,0x216F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3571 0xFF36,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3572 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3573 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3574 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3575 0x0000,0x01A7,0x01D5,0x01FE,0x0226,0x0000,0x0000,0x0000,
3576 0x01A6,0x0241,0x0000,0x0000,0x1E1E,0x1E46,0x1E6E,0x0000,
3577 0x1EB4,0x1EDC,0x0000,0x0000,0x1F49,0x0000,0x1FEB,0x1F9F,
3578 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3579 0x0420,0x0404,0x0470,0x049E,0x04C5,0x04EC,0x050E,0x0540,
3580 0x0554,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3581 0xFF37,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3582 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3583 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3584 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3585 0x0000,0x0000,0x01D7,0x0200,0x0228,0x0000,0x018F,0x0000,
3586 0x0000,0x0000,0x0000,0x0000,0x1E20,0x1E48,0x1E70,0x0000,
3587 0x1EB6,0x1EDE,0x0000,0x0000,0x1F4A,0x1F68,0x1FFA,0x1FA8,
3588 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3589 0x0421,0x0405,0x0472,0x04A0,0x04C7,0x04EE,0x0000,0x0541,
3590 0x0555,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3591 0xFF38,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3592 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3593 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3594 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3595 0x0000,0x0000,0x01D9,0x0202,0x022A,0x0000,0x0000,0x0000,
3596 0x0000,0x0000,0x0000,0x0000,0x1E22,0x1E4A,0x1E72,0x0000,
3597 0x1EB8,0x1EE0,0x0000,0x0000,0x1F4B,0x1F69,0x1FFB,0x1FA9,
3598 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3599 0x0422,0x0406,0x0474,0x04A2,0x04C9,0x04F0,0x0000,0x0542,
3600 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3601 0xFF39,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3602 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3603 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3604 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3605 0x0000,0x01AC,0x01DB,0x0204,0x022C,0x0000,0x0190,0x019C,
3606 0x01A9,0x0000,0x0000,0x0000,0x1E24,0x1E4C,0x1E74,0x0000,
3607 0x1EBA,0x1EE2,0x0000,0x1F28,0x1F4C,0x1F6A,0x0000,0x1FAA,
3608 0x1FD8,0x1FFC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3609 0x0423,0x0407,0x0476,0x04A4,0x04CB,0x04F2,0x0000,0x0543,
3610 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3611 0xFF3A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3612 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3613 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3614 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3615 0x0000,0x01AF,0x018E,0x0206,0x022E,0x0000,0x0000,0x0000,
3616 0x0000,0x0000,0x0000,0x0000,0x1E26,0x1E4E,0x1E76,0x0000,
3617 0x1EBC,0x1EE4,0x0000,0x1F29,0x1F4D,0x1F6B,0x0000,0x1FAB,
3618 0x1FD9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3619 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3620 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3621 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3622 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3623 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3624 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3625 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3626 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3627 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3628 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3629 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3630 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3631 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3632 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3633 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3634 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3635 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3636 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3637 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3638 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3639 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3640 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3641 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3642 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3643 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3644 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3645 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3646 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3647 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3648 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3649 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3650 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3651 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3652 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3653 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3654 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3655 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3656 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3657 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3658 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3659 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3660 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3661 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3662 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3663 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3664 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3665 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3666 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3667 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3668 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3669 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3670 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3671 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3672 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3673 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3674 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3675 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3676 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3677 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3678 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3679 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3680 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3681 0xFF41,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3682 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3683 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3684 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3685 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3686 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3687 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3688 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3689 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3690 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3691 0xFF42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3692 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3693 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3694 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3695 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3696 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3697 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3698 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3699 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3700 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3701 0xFF43,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3702 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3703 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3704 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3705 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3706 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3707 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3708 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3709 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3710 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3711 0xFF44,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3712 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3713 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3714 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3715 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3716 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3717 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3718 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3719 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3720 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3721 0xFF45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3722 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3723 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3724 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3725 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3726 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3727 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3728 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3729 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3730 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3731 0xFF46,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3732 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3733 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3734 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3735 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3736 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3737 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3738 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3739 0x0430,0x0444,0x0458,0x0479,0x04A7,0x04CE,0x04F5,0x0000,
3740 0x0574,0x2170,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3741 0xFF47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3742 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3743 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3744 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3745 0x0000,0x0180,0x01B4,0x01DF,0x0209,0x0231,0x0000,0x025D,
3746 0x0271,0x0285,0x0299,0x02AD,0x1E01,0x1E29,0x1E51,0x1E79,
3747 0x1E9B,0x1EBF,0x1EE7,0x1F00,0x1F22,0x0000,0x1F64,0x1F80,
3748 0x1FA4,0x1FD2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3749 0x0431,0x0445,0x0459,0x047B,0x04A9,0x0000,0x04F7,0x0561,
3750 0x0575,0x2171,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3751 0xFF48,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3752 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3753 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3754 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3755 0x0000,0x0183,0x01B6,0x01E1,0x020B,0x0233,0x0000,0x025E,
3756 0x0272,0x0286,0x029A,0x02AE,0x1E03,0x1E2B,0x1E53,0x1E7B,
3757 0x0000,0x1EC1,0x1EE9,0x1F01,0x1F23,0x0000,0x1F65,0x1F81,
3758 0x1FA5,0x1FD3,0x1FF6,0x0000,0x0000,0x0000,0x0000,0x0000,
3759 0x0432,0x0446,0x045A,0x047D,0x04AB,0x04D1,0x04F9,0x0562,
3760 0x0576,0x2172,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3761 0xFF49,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3762 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3763 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3764 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3765 0x0000,0x0185,0x01B9,0x01E3,0x020D,0x0234,0x0000,0x025F,
3766 0x0273,0x0287,0x029B,0x02AF,0x1E05,0x1E2D,0x1E55,0x1E7D,
3767 0x0000,0x1EC3,0x1EEB,0x1F02,0x1F24,0x0000,0x1F66,0x1F82,
3768 0x1FA6,0x0000,0x1FF7,0x0000,0x0000,0x0000,0x0000,0x0000,
3769 0x0433,0x0447,0x045B,0x047F,0x04AD,0x04D3,0x0000,0x0563,
3770 0x0577,0x2173,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3771 0xFF4A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3772 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3773 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3774 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3775 0x0000,0x0188,0x01BA,0x01E5,0x020F,0x0235,0x0000,0x0260,
3776 0x0274,0x0288,0x029C,0x0000,0x1E07,0x1E2F,0x1E57,0x1E7F,
3777 0x0000,0x1EC5,0x1EED,0x1F03,0x1F25,0x0000,0x1F67,0x1F83,
3778 0x1FA7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3779 0x0434,0x0448,0x045C,0x0481,0x04AF,0x04D5,0x0000,0x0564,
3780 0x0578,0x2174,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3781 0xFF4B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3782 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3783 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3784 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3785 0x0000,0x018C,0x01BB,0x01E7,0x0211,0x0236,0x0000,0x0261,
3786 0x0275,0x0289,0x029D,0x0000,0x1E09,0x1E31,0x1E59,0x1E81,
3787 0x0000,0x1EC7,0x1EEF,0x1F04,0x1F26,0x1F50,0x1F70,0x1F84,
3788 0x1FB0,0x1FD6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3789 0x0435,0x0449,0x045D,0x0000,0x04B1,0x04D7,0x0000,0x0565,
3790 0x0579,0x2175,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3791 0xFF4C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3792 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3793 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3794 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3795 0x0000,0x018D,0x0000,0x01E9,0x0213,0x0237,0x0000,0x0262,
3796 0x0276,0x028A,0x029E,0x0000,0x1E0B,0x1E33,0x1E5B,0x1E83,
3797 0x1EA1,0x1EC9,0x1EF1,0x1F05,0x1F27,0x1F51,0x1F71,0x1F85,
3798 0x1FB1,0x1FD7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3799 0x0436,0x044A,0x045E,0x048B,0x04B3,0x04D9,0x0000,0x0566,
3800 0x057A,0x2176,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3801 0xFF4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3802 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3803 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3804 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3805 0x0000,0x0192,0x01BE,0x01EB,0x0215,0x0238,0x0000,0x0263,
3806 0x0277,0x028B,0x029F,0x0000,0x1E0D,0x1E35,0x1E5D,0x1E85,
3807 0x1EA3,0x1ECB,0x1EF3,0x1F06,0x1F30,0x1F52,0x1F72,0x1F86,
3808 0x1FB2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3809 0x0437,0x044B,0x045F,0x048D,0x04B5,0x04DB,0x0000,0x0567,
3810 0x057B,0x2177,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3811 0xFF4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3812 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3813 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3814 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3815 0x0000,0x0195,0x01BD,0x01ED,0x0217,0x0239,0x0250,0x0264,
3816 0x0278,0x028C,0x02A0,0x0000,0x1E0F,0x1E37,0x1E5F,0x1E87,
3817 0x1EA5,0x1ECD,0x1EF5,0x1F07,0x1F31,0x1F53,0x1F73,0x1F87,
3818 0x1FB3,0x1FE0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3819 0x0438,0x044C,0x0461,0x048F,0x04B7,0x04DD,0x0000,0x0568,
3820 0x057C,0x2178,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3821 0xFF4F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3822 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3823 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3824 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3825 0x0000,0x0199,0x01C6,0x01EF,0x0219,0x0000,0x0251,0x0265,
3826 0x0279,0x028D,0x02A1,0x0000,0x1E11,0x1E39,0x1E61,0x1E89,
3827 0x1EA7,0x1ECF,0x1EF7,0x1F10,0x1F32,0x1F54,0x1F74,0x1F90,
3828 0x1FB4,0x1FE1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3829 0x0439,0x044D,0x0463,0x0491,0x04B9,0x04DF,0x0501,0x0569,
3830 0x057D,0x2179,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3831 0xFF50,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3832 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3833 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3834 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3835 0x0000,0x019A,0x01C9,0x01F0,0x021B,0x023C,0x0252,0x0266,
3836 0x027A,0x028E,0x02A2,0x0000,0x1E13,0x1E3B,0x1E63,0x1E8B,
3837 0x1EA9,0x1ED1,0x1EF9,0x1F11,0x1F33,0x1F55,0x1F75,0x1F91,
3838 0x0000,0x1FE2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3839 0x043A,0x044E,0x0465,0x0493,0x04BB,0x04E1,0x0503,0x056A,
3840 0x057E,0x217A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3841 0xFF51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3842 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3843 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3844 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3845 0x0000,0x019B,0x01CC,0x01F3,0x021D,0x0000,0x0253,0x0267,
3846 0x027B,0x028F,0x02A3,0x0000,0x1E15,0x1E3D,0x1E65,0x1E8D,
3847 0x1EAB,0x1ED3,0x0000,0x1F12,0x1F34,0x1F56,0x1F76,0x1F92,
3848 0x1FB6,0x1FE3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3849 0x043B,0x044F,0x0467,0x0495,0x04BD,0x04E3,0x0505,0x056B,
3850 0x057F,0x217B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3851 0xFF52,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3852 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3853 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3854 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3855 0x0000,0x019E,0x01CE,0x01F5,0x021F,0x023F,0x0254,0x0268,
3856 0x027C,0x0290,0x02A4,0x0000,0x1E17,0x1E3F,0x1E67,0x1E8F,
3857 0x1EAD,0x1ED5,0x0000,0x1F13,0x1F35,0x1F57,0x1F77,0x1F93,
3858 0x1FB7,0x1FE4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3859 0x043C,0x0450,0x0469,0x0497,0x04BF,0x04E5,0x0507,0x056C,
3860 0x0580,0x217C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3861 0xFF53,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3862 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3863 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3864 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3865 0x0000,0x01A1,0x01D0,0x01F9,0x0221,0x0240,0x0255,0x0269,
3866 0x027D,0x0291,0x02A5,0x0000,0x1E19,0x1E41,0x1E69,0x1E91,
3867 0x1EAF,0x1ED7,0x0000,0x1F14,0x1F36,0x0000,0x1F78,0x1F94,
3868 0x1FC2,0x1FE5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3869 0x043D,0x0451,0x046B,0x0499,0x0000,0x04E7,0x0509,0x056D,
3870 0x0581,0x217D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3871 0xFF54,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3872 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3873 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3874 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3875 0x0000,0x01A3,0x01D2,0x01FB,0x0223,0x0000,0x0256,0x026A,
3876 0x027E,0x0292,0x02A6,0x0000,0x1E1B,0x1E43,0x1E6B,0x1E93,
3877 0x1EB1,0x1ED9,0x0000,0x1F15,0x1F37,0x0000,0x1F79,0x1F95,
3878 0x1FC3,0x1FE6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3879 0x043E,0x0452,0x046D,0x049B,0x04C2,0x04E9,0x050B,0x056E,
3880 0x0582,0x217E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3881 0xFF55,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3882 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3883 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3884 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3885 0x0000,0x01A5,0x01D4,0x01FD,0x0225,0x0000,0x0257,0x026B,
3886 0x027F,0x0293,0x02A7,0x0000,0x1E1D,0x1E45,0x1E6D,0x1E95,
3887 0x1EB3,0x1EDB,0x0000,0x0000,0x1F40,0x0000,0x1F7A,0x1F96,
3888 0x1FC4,0x1FE7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3889 0x043F,0x0453,0x046F,0x049D,0x04C4,0x04EB,0x050D,0x056F,
3890 0x0583,0x217F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3891 0xFF56,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3892 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3893 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3894 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3895 0x0000,0x01A8,0x01D6,0x01FF,0x0227,0x0000,0x0258,0x026C,
3896 0x0280,0x0294,0x02A8,0x0000,0x1E1F,0x1E47,0x1E6F,0x1E96,
3897 0x1EB5,0x1EDD,0x0000,0x0000,0x1F41,0x0000,0x1F7B,0x1F97,
3898 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3899 0x0440,0x0454,0x0471,0x049F,0x04C6,0x04ED,0x050F,0x0570,
3900 0x0584,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3901 0xFF57,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3902 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3903 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3904 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3905 0x0000,0x01AA,0x01D8,0x0201,0x0229,0x0000,0x0259,0x026D,
3906 0x0281,0x0295,0x02A9,0x0000,0x1E21,0x1E49,0x1E71,0x1E97,
3907 0x1EB7,0x1EDF,0x0000,0x0000,0x1F42,0x1F60,0x1F7C,0x1FA0,
3908 0x1FC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3909 0x0441,0x0455,0x0473,0x04A1,0x04C8,0x04EF,0x0000,0x0571,
3910 0x0585,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3911 0xFF58,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3912 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3913 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3914 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3915 0x0000,0x01AB,0x01DA,0x0203,0x022B,0x0000,0x025A,0x026E,
3916 0x0282,0x0296,0x02AA,0x0000,0x1E23,0x1E4B,0x1E73,0x1E98,
3917 0x1EB9,0x1EE1,0x0000,0x0000,0x1F43,0x1F61,0x1F7D,0x1FA1,
3918 0x1FC7,0x1FF2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3919 0x0442,0x0456,0x0475,0x04A3,0x04CA,0x04F1,0x0000,0x0572,
3920 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3921 0xFF59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3922 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3923 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3924 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3925 0x0000,0x01AD,0x01DC,0x0205,0x022D,0x0000,0x025B,0x026F,
3926 0x0283,0x0297,0x02AB,0x0000,0x1E25,0x1E4D,0x1E75,0x1E99,
3927 0x1EBB,0x1EE3,0x0000,0x1F20,0x1F44,0x1F62,0x0000,0x1FA2,
3928 0x1FD0,0x1FF3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3929 0x0443,0x0457,0x0477,0x04A5,0x04CC,0x04F3,0x0000,0x0573,
3930 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3931 0xFF5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3932 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3933 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3934 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3935 0x0000,0x01B0,0x01DD,0x0207,0x022F,0x0000,0x025C,0x0270,
3936 0x0284,0x0298,0x02AC,0x0000,0x1E27,0x1E4F,0x1E77,0x1E9A,
3937 0x1EBD,0x1EE5,0x0000,0x1F21,0x1F45,0x1F63,0x0000,0x1FA3,
3938 0x1FD1,0x1FF4
3942 /* 00C0-05FF */
3943 static uint16 uni_0C00_05FF[1344]=
3945 0x0017,0x0018,0x0019,0x001A,0x001B,0x001C,0x001D,0x001E,
3946 0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025,0x0026,
3947 0x0027,0x0028,0x0029,0x002A,0x0067,0x0068,0x0069,0x0000,
3948 0x006B,0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x008A,
3949 0x0037,0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,
3950 0x003F,0x0040,0x0041,0x0042,0x0043,0x0044,0x0045,0x0046,
3951 0x0047,0x0048,0x0049,0x004A,0x0087,0x0088,0x0089,0x0000,
3952 0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x0091,0x0092,
3953 0x0073,0x0093,0x0074,0x0094,0x0075,0x0095,0x0076,0x0096,
3954 0x0077,0x0097,0x0078,0x0098,0x0079,0x0099,0x007A,0x009A,
3955 0x00B7,0x00D7,0x00B8,0x00D8,0x00B9,0x00D9,0x00BA,0x00DA,
3956 0x00BB,0x00DB,0x00BC,0x00DC,0x00BD,0x00DD,0x00BE,0x00DE,
3957 0x00BF,0x00DF,0x00C0,0x00E0,0x00C1,0x00E1,0x00C2,0x00E2,
3958 0x00C3,0x00E3,0x00C4,0x00E4,0x00C5,0x00E5,0x00C6,0x00E6,
3959 0x0000,0x00E7,0x00C8,0x00E8,0x00C9,0x00E9,0x00CA,0x00EA,
3960 0x0127,0x0108,0x0128,0x0109,0x0129,0x010A,0x012A,0x010B,
3961 0x012B,0x010C,0x012C,0x010D,0x012D,0x010E,0x012E,0x010F,
3962 0x012F,0x0130,0x0111,0x0131,0x0112,0x0132,0x0113,0x0133,
3963 0x0114,0x0134,0x0115,0x0135,0x0116,0x0136,0x0117,0x0137,
3964 0x0118,0x0138,0x0119,0x0139,0x011A,0x013A,0x0157,0x0177,
3965 0x0158,0x0178,0x0159,0x0179,0x015A,0x017A,0x015B,0x017B,
3966 0x015C,0x017C,0x015D,0x017D,0x015E,0x017E,0x015F,0x017F,
3967 0x0160,0x0180,0x0161,0x0181,0x0162,0x0182,0x0163,0x0183,
3968 0x0072,0x0164,0x0184,0x0165,0x0185,0x0166,0x0186,0x0187,
3969 0x1161,0x0A86,0x07B1,0x11B1,0x0801,0x1201,0x0AD6,0x0851,
3970 0x1251,0x0B76,0x0BC6,0x08A1,0x12A1,0x12F1,0x0D52,0x0C66,
3971 0x0D06,0x0941,0x1341,0x0857,0x0947,0x1391,0x0B27,0x0AD7,
3972 0x09E1,0x13E1,0x1431,0x1481,0x0D07,0x07B8,0x14D1,0x08A8,
3973 0x0B21,0x1521,0x0B71,0x1571,0x0BC1,0x15C1,0x0C18,0x0C11,
3974 0x1611,0x0D08,0x1661,0x16B1,0x0D01,0x1701,0x0859,0x0D51,
3975 0x1751,0x08F9,0x0949,0x0762,0x1162,0x07B2,0x11B2,0x0B79,
3976 0x0802,0x1202,0x1252,0x12A2,0x0992,0x1392,0x1342,0x0000,
3977 0x0000,0x0000,0x0000,0x0000,0x09E2,0x0000,0x13E2,0x0A32,
3978 0x0000,0x1432,0x0A82,0x0000,0x1482,0x0AD2,0x14D2,0x0B22,
3979 0x1522,0x0B72,0x1572,0x0BC2,0x15C2,0x0C12,0x1612,0x0C62,
3980 0x1662,0x0CB2,0x16B2,0x0D02,0x1702,0x1752,0x0763,0x1163,
3981 0x07B3,0x11B3,0x0803,0x1203,0x0853,0x1253,0x08A3,0x12A3,
3982 0x08F3,0x12F3,0x0943,0x1343,0x0993,0x1393,0x09E3,0x13E3,
3983 0x1433,0x0A83,0x0000,0x1483,0x0AD3,0x14D3,0x0991,0x0000,
3984 0x0B23,0x1523,0x0B73,0x1573,0x0BC3,0x15C3,0x0C13,0x1613,
3985 0x0C63,0x1663,0x0CB3,0x16B3,0x0D03,0x1703,0x0D53,0x1753,
3986 0x0764,0x1164,0x07B4,0x11B4,0x0804,0x1204,0x0854,0x1254,
3987 0x08A4,0x12A4,0x08F4,0x12F4,0x0944,0x1344,0x0994,0x1394,
3988 0x09E4,0x13E4,0x0A34,0x1434,0x0A84,0x1484,0x0AD4,0x14D4,
3989 0x0AD1,0x1524,0x0B74,0x1574,0x0BC4,0x15C4,0x0C14,0x1614,
3990 0x0C64,0x1664,0x0CB4,0x16B4,0x0D04,0x1704,0x0D54,0x1754,
3991 0x0765,0x1165,0x07B5,0x11B5,0x1205,0x1255,0x12A5,0x12F5,
3992 0x1345,0x1395,0x09E5,0x0A35,0x1435,0x0A31,0x0A85,0x14D5,
3993 0x1525,0x0C19,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3994 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
3995 0x1396,0x13E6,0x1436,0x1486,0x14D6,0x1526,0x1576,0x15C6,
3996 0x1616,0x1666,0x16B6,0x1706,0x1756,0x1167,0x11B7,0x1207,
3997 0x1257,0x12A7,0x12F7,0x1347,0x1397,0x13E7,0x1437,0x1487,
3998 0x14D7,0x1527,0x1577,0x15C7,0x1617,0x1667,0x16B7,0x1707,
3999 0x1757,0x1168,0x11B8,0x1208,0x1258,0x12A8,0x12F8,0x1348,
4000 0x1398,0x13E8,0x1438,0x1488,0x14D8,0x1528,0x1578,0x15C8,
4001 0x1618,0x1668,0x16B8,0x1708,0x1758,0x1169,0x11B9,0x1209,
4002 0x1259,0x12A9,0x12F9,0x1349,0x1399,0x13E9,0x1439,0x1489,
4003 0x14D9,0x1529,0x1579,0x15C9,0x1619,0x1669,0x16B9,0x1709,
4004 0x1759,0x116A,0x11BA,0x120A,0x125A,0x12AA,0x12FA,0x134A,
4005 0x139A,0x13EA,0x143A,0x148A,0x14DA,0x152A,0x157A,0x15CA,
4006 0x161A,0x166A,0x16BA,0x170A,0x175A,0x116B,0x11BB,0x120B,
4007 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4008 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4009 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4010 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4011 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4012 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4013 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4014 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4015 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4016 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4017 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4018 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4019 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4020 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4021 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4022 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4023 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4024 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4025 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4026 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4027 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4028 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4029 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4030 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4031 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4032 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4033 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x01F7,0x0000,
4034 0x01F8,0x01F9,0x01FA,0x0000,0x0253,0x0000,0x0254,0x0255,
4035 0x01D9,0x01FC,0x0257,0x01FE,0x01FF,0x0200,0x0201,0x0202,
4036 0x0258,0x0204,0x02A7,0x0206,0x0207,0x0208,0x0209,0x020A,
4037 0x0299,0x0248,0x0000,0x02A9,0x024B,0x024C,0x0298,0x024E,
4038 0x024F,0x0250,0x0251,0x0252,0x0217,0x0218,0x0219,0x021A,
4039 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,
4040 0x0223,0x0224,0x0225,0x0226,0x0227,0x0228,0x0229,0x022A,
4041 0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E,
4042 0x026F,0x0270,0x0271,0x0272,0x0273,0x0274,0x0275,0x0000,
4043 0x0277,0x0278,0x0259,0x025A,0x0297,0x02B8,0x02B9,0x02BA,
4044 0x0000,0x02BB,0x029C,0x02BC,0x029D,0x02BD,0x029E,0x02BE,
4045 0x029F,0x02BF,0x02A0,0x02C0,0x02A1,0x02C1,0x02A2,0x02C2,
4046 0x02A3,0x02C3,0x02A4,0x02C4,0x02A5,0x02C5,0x02A6,0x02C6,
4047 0x02C7,0x02C8,0x02C9,0x02CA,0x0000,0x0307,0x0308,0x0000,
4048 0x0309,0x0000,0x0000,0x030A,0x030B,0x02EC,0x02ED,0x02EE,
4049 0x0AF1,0x0B41,0x0B91,0x0BE1,0x0C31,0x0C81,0x0CD1,0x0D21,
4050 0x0732,0x0782,0x07D2,0x0822,0x0872,0x08C2,0x0912,0x0962,
4051 0x0730,0x0780,0x07D0,0x0820,0x0870,0x08C0,0x0910,0x0960,
4052 0x09B0,0x0A00,0x0A50,0x0AA0,0x0AF0,0x0B40,0x0B90,0x0BE0,
4053 0x0C30,0x0C80,0x0CD0,0x0D20,0x0731,0x0781,0x07D1,0x0821,
4054 0x0871,0x08C1,0x0911,0x0961,0x09B1,0x0A01,0x0A51,0x0AA1,
4055 0x1130,0x1180,0x11D0,0x1220,0x1270,0x12C0,0x1310,0x1360,
4056 0x13B0,0x1400,0x1450,0x14A0,0x14F0,0x1540,0x1590,0x15E0,
4057 0x1630,0x1680,0x16D0,0x1720,0x1131,0x1181,0x11D1,0x1221,
4058 0x1271,0x12C1,0x1311,0x1361,0x13B1,0x1401,0x1451,0x14A1,
4059 0x14F1,0x1541,0x1591,0x15E1,0x1631,0x1681,0x16D1,0x1721,
4060 0x1132,0x1182,0x11D2,0x1222,0x1272,0x12C2,0x1312,0x1362,
4061 0x09B2,0x13B2,0x0A02,0x1402,0x0A52,0x1452,0x0AA2,0x14A2,
4062 0x0AF2,0x14F2,0x0B42,0x1542,0x0B92,0x1592,0x0BE2,0x15E2,
4063 0x0C32,0x1632,0x0C82,0x1682,0x0CD2,0x16D2,0x0D22,0x1722,
4064 0x0733,0x1133,0x0783,0x1183,0x07D3,0x11D3,0x0823,0x1223,
4065 0x0873,0x1273,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4066 0x0000,0x0000,0x0913,0x1313,0x0963,0x1363,0x09B3,0x13B3,
4067 0x0A03,0x1403,0x0A53,0x1453,0x0AA3,0x14A3,0x0AF3,0x14F3,
4068 0x0B43,0x1543,0x0B93,0x1593,0x0BE3,0x15E3,0x0C33,0x1633,
4069 0x0C83,0x1683,0x0CD3,0x16D3,0x0D23,0x1723,0x0734,0x1134,
4070 0x0784,0x1184,0x07D4,0x11D4,0x0824,0x1224,0x0874,0x1274,
4071 0x08C4,0x12C4,0x0914,0x1314,0x0964,0x1364,0x09B4,0x13B4,
4072 0x0A04,0x1404,0x0A54,0x1454,0x0AA4,0x14A4,0x0AF4,0x14F4,
4073 0x0B44,0x0B94,0x1594,0x0BE4,0x15E4,0x0C34,0x1634,0x0C84,
4074 0x1684,0x0CD4,0x16D4,0x0D24,0x1724,0x0735,0x1135,0x0000,
4075 0x07D5,0x11D5,0x0825,0x1225,0x0875,0x1275,0x08C5,0x12C5,
4076 0x0915,0x1315,0x0965,0x1365,0x09B5,0x13B5,0x0A05,0x1405,
4077 0x0A55,0x1455,0x0AA5,0x14A5,0x0AF5,0x14F5,0x0B45,0x1545,
4078 0x0B95,0x1595,0x0BE5,0x15E5,0x0C35,0x1635,0x0C85,0x1685,
4079 0x0CD5,0x16D5,0x0D25,0x1725,0x0736,0x1136,0x0786,0x1186,
4080 0x07D6,0x11D6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4081 0x0A06,0x1406,0x0A56,0x1456,0x0AA6,0x14A6,0x0AF6,0x14F6,
4082 0x0B46,0x1546,0x0B96,0x1596,0x0BE6,0x15E6,0x0C36,0x1636,
4083 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4084 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4085 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4086 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4087 0x0000,0x0787,0x07D7,0x0827,0x0877,0x08C7,0x0917,0x0967,
4088 0x09B7,0x0A07,0x0A57,0x0AA7,0x0AF7,0x0B47,0x0B97,0x0BE7,
4089 0x0C37,0x0C87,0x0CD7,0x0D27,0x0738,0x0788,0x07D8,0x0828,
4090 0x0878,0x08C8,0x0918,0x0968,0x09B8,0x0A08,0x0A58,0x0AA8,
4091 0x0AF8,0x0B48,0x0B98,0x0BE8,0x0C38,0x0C88,0x0000,0x0000,
4092 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4093 0x0000,0x1187,0x11D7,0x1227,0x1277,0x12C7,0x1317,0x1367,
4094 0x13B7,0x1407,0x1457,0x14A7,0x14F7,0x1547,0x1597,0x15E7,
4095 0x1637,0x1687,0x16D7,0x1727,0x1138,0x1188,0x11D8,0x1228,
4096 0x1278,0x12C8,0x1318,0x1368,0x13B8,0x1408,0x1458,0x14A8,
4097 0x14F8,0x1548,0x1598,0x15E8,0x1638,0x1688,0x0000,0x0000,
4098 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4099 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4100 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4101 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4102 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4103 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4104 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4105 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4106 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4107 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4108 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4109 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4110 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4111 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4112 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
4116 /* 1E00-1FFF */
4117 static uint16 uni_1E00_1FFF[512]=
4119 0x076C,0x116C,0x07BC,0x11BC,0x080C,0x120C,0x085C,0x125C,
4120 0x08AC,0x12AC,0x08FC,0x12FC,0x094C,0x134C,0x099C,0x139C,
4121 0x09EC,0x13EC,0x0A3C,0x143C,0x0A8C,0x148C,0x0ADC,0x14DC,
4122 0x0B2C,0x152C,0x0B7C,0x157C,0x0BCC,0x15CC,0x0C1C,0x161C,
4123 0x0C6C,0x166C,0x0CBC,0x16BC,0x0D0C,0x170C,0x0D5C,0x175C,
4124 0x076D,0x116D,0x07BD,0x11BD,0x080D,0x120D,0x085D,0x125D,
4125 0x08AD,0x12AD,0x08FD,0x12FD,0x094D,0x134D,0x099D,0x139D,
4126 0x09ED,0x13ED,0x0A3D,0x143D,0x0A8D,0x148D,0x0ADD,0x14DD,
4127 0x0B2D,0x152D,0x0B7D,0x157D,0x0BCD,0x15CD,0x0C1D,0x161D,
4128 0x0C6D,0x166D,0x0CBD,0x16BD,0x0D0D,0x170D,0x0D5D,0x175D,
4129 0x076E,0x116E,0x07BE,0x11BE,0x080E,0x120E,0x085E,0x125E,
4130 0x08AE,0x12AE,0x08FE,0x12FE,0x094E,0x134E,0x099E,0x139E,
4131 0x0770,0x13EE,0x0A3E,0x143E,0x0A8E,0x148E,0x0ADE,0x14DE,
4132 0x0B2E,0x152E,0x0B7E,0x157E,0x0BCE,0x15CE,0x0C1E,0x161E,
4133 0x0C6E,0x166E,0x0CBE,0x16BE,0x0D0E,0x170E,0x0D5E,0x175E,
4134 0x076F,0x116F,0x07BF,0x11BF,0x080F,0x120F,0x085F,0x125F,
4135 0x08AF,0x12AF,0x08FF,0x12FF,0x094F,0x134F,0x099F,0x139F,
4136 0x09EF,0x13EF,0x0A3F,0x143F,0x0A8F,0x148F,0x0ADF,0x14DF,
4137 0x0B2F,0x152F,0x0B7F,0x157F,0x0BCF,0x15CF,0x161F,0x166F,
4138 0x16BF,0x170F,0x175F,0x1170,0x0000,0x0000,0x0000,0x0000,
4139 0x0900,0x1300,0x0950,0x1350,0x09A0,0x13A0,0x09F0,0x13F0,
4140 0x0A40,0x1440,0x0A90,0x1490,0x0AE0,0x14E0,0x0B30,0x1530,
4141 0x0B80,0x1580,0x0BD0,0x15D0,0x0C20,0x1620,0x0C70,0x1670,
4142 0x0CC0,0x16C0,0x0D10,0x1710,0x0D60,0x1760,0x0771,0x1171,
4143 0x07C1,0x11C1,0x0811,0x1211,0x0861,0x1261,0x08B1,0x12B1,
4144 0x0901,0x1301,0x0951,0x1351,0x09A1,0x13A1,0x09F1,0x13F1,
4145 0x0A41,0x1441,0x0A91,0x1491,0x0AE1,0x14E1,0x0B31,0x1531,
4146 0x0B81,0x1581,0x0BD1,0x15D1,0x0C21,0x1621,0x0C71,0x1671,
4147 0x0CC1,0x16C1,0x0D11,0x1711,0x0D61,0x1761,0x0772,0x1172,
4148 0x07C2,0x11C2,0x0812,0x1212,0x0862,0x1262,0x08B2,0x12B2,
4149 0x0902,0x1302,0x0952,0x1352,0x09A2,0x13A2,0x09F2,0x13F2,
4150 0x0A42,0x1442,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
4151 0x1173,0x11C3,0x1213,0x1263,0x12B3,0x1303,0x1353,0x13A3,
4152 0x0773,0x07C3,0x0813,0x0863,0x08B3,0x0903,0x0953,0x09A3,
4153 0x13F3,0x1443,0x1493,0x14E3,0x1533,0x1583,0x0000,0x0000,
4154 0x09F3,0x0A43,0x0A93,0x0AE3,0x0B33,0x0B83,0x0000,0x0000,
4155 0x1713,0x1763,0x1174,0x11C4,0x1214,0x1264,0x12B4,0x1304,
4156 0x0D13,0x0D63,0x0774,0x07C4,0x0814,0x0864,0x08B4,0x0904,
4157 0x1354,0x13A4,0x13F4,0x1444,0x1494,0x14E4,0x1534,0x1584,
4158 0x0954,0x09A4,0x09F4,0x0A44,0x0A94,0x0AE4,0x0B34,0x0B84,
4159 0x15D4,0x1624,0x1674,0x16C4,0x1714,0x1764,0x0000,0x0000,
4160 0x0BD4,0x0C24,0x0C74,0x0CC4,0x0D14,0x0D64,0x0000,0x0000,
4161 0x12B5,0x1305,0x1355,0x13A5,0x13F5,0x1445,0x1495,0x14E5,
4162 0x0000,0x0905,0x0000,0x09A5,0x0000,0x0A45,0x0000,0x0AE5,
4163 0x1675,0x16C5,0x1715,0x1765,0x1176,0x11C6,0x1216,0x1266,
4164 0x0C75,0x0CC5,0x0D15,0x0D65,0x0776,0x07C6,0x0816,0x0866,
4165 0x12B6,0x1306,0x1356,0x13A6,0x13F6,0x1446,0x1496,0x14E6,
4166 0x1536,0x1586,0x15D6,0x1626,0x1676,0x16C6,0x0000,0x0000,
4167 0x1177,0x11C7,0x1217,0x1267,0x12B7,0x1307,0x1357,0x13A7,
4168 0x0777,0x07C7,0x0817,0x0867,0x08B7,0x0907,0x0957,0x09A7,
4169 0x13F7,0x1447,0x1497,0x14E7,0x1537,0x1587,0x15D7,0x1627,
4170 0x09F7,0x0A47,0x0A97,0x0AE7,0x0B37,0x0B87,0x0BD7,0x0C27,
4171 0x1677,0x16C7,0x1717,0x1767,0x1178,0x11C8,0x1218,0x1268,
4172 0x0C77,0x0CC7,0x0D17,0x0D67,0x0778,0x07C8,0x0818,0x0868,
4173 0x12B8,0x1308,0x1358,0x13A8,0x13F8,0x0000,0x1498,0x14E8,
4174 0x08B8,0x0908,0x08B6,0x0906,0x09A8,0x0000,0x0000,0x0000,
4175 0x0000,0x0000,0x1538,0x1588,0x15D8,0x0000,0x1678,0x16C8,
4176 0x0956,0x09A6,0x09F6,0x0A46,0x0B88,0x0000,0x0000,0x0000,
4177 0x1718,0x1768,0x1179,0x11C9,0x0000,0x0000,0x12B9,0x1309,
4178 0x0D18,0x0D68,0x0A96,0x0AE6,0x0000,0x0000,0x0000,0x0000,
4179 0x13A9,0x13F9,0x1449,0x1499,0x14E9,0x1539,0x1589,0x15D9,
4180 0x09A9,0x09F9,0x0BD6,0x0C26,0x0B39,0x0000,0x0000,0x0000,
4181 0x0000,0x0000,0x16C9,0x1719,0x0000,0x0000,0x11CA,0x121A,
4182 0x0B36,0x0B86,0x0C76,0x0CC6,0x0D19,0x0000,0x0000,0x0000
4186 /* 2160-217F */
4187 static uint16 uni_2160_217F[32]=
4189 0x0739,0x0789,0x07D9,0x0829,0x0879,0x08C9,0x0919,0x0969,
4190 0x09B9,0x0A09,0x0A59,0x0AA9,0x0AF9,0x0B49,0x0B99,0x0BE9,
4191 0x1139,0x1189,0x11D9,0x1229,0x1279,0x12C9,0x1319,0x1369,
4192 0x13B9,0x1409,0x1459,0x14A9,0x14F9,0x1549,0x1599,0x15E9
4196 /* 24B0-24EF */
4197 static uint16 uni_24B0_24EF[64]=
4199 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0511,0x0512,
4200 0x0513,0x0514,0x0515,0x0516,0x0517,0x0518,0x0519,0x051A,
4201 0x051B,0x051C,0x051D,0x051E,0x051F,0x0520,0x0521,0x0522,
4202 0x0523,0x0524,0x0525,0x0526,0x0527,0x0528,0x0529,0x052A,
4203 0x0531,0x0532,0x0533,0x0534,0x0535,0x0536,0x0537,0x0538,
4204 0x0539,0x053A,0x053B,0x053C,0x053D,0x053E,0x053F,0x0540,
4205 0x0541,0x0542,0x0543,0x0544,0x0545,0x0546,0x0547,0x0548,
4206 0x0549,0x054A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
4210 /* FF20-FF5F */
4211 static uint16 uni_FF20_FF5F[64]=
4213 0x0000,0x0560,0x05B0,0x0600,0x0650,0x06A0,0x06F0,0x0740,
4214 0x0790,0x07E0,0x0830,0x0880,0x08D0,0x0920,0x0970,0x09C0,
4215 0x0A10,0x0A60,0x0AB0,0x0B00,0x0B50,0x0BA0,0x0BF0,0x0C40,
4216 0x0C90,0x0CE0,0x0D30,0x0000,0x0000,0x0000,0x0000,0x0000,
4217 0x0000,0x0F60,0x0FB0,0x1000,0x1050,0x10A0,0x10F0,0x1140,
4218 0x1190,0x11E0,0x1230,0x1280,0x12D0,0x1320,0x1370,0x13C0,
4219 0x1410,0x1460,0x14B0,0x1500,0x1550,0x15A0,0x15F0,0x1640,
4220 0x1690,0x16E0,0x1730,0x0000,0x0000,0x0000,0x0000,0x0000
4228 Returns
4229 a number 0..15, if a valid HEX digit in lower case,
4230 -1 otherwise.
4233 static int hexlo(int x)
4235 static char hex_lo_digit[256]=
4237 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4238 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4239 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* !"#$%&'()*+,-./ */
4240 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1, /* 0123456789:;<=>? */
4241 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* @ABCDEFGHIJKLMNO */
4242 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* PQRSTUVWXYZ[\]^_ */
4243 -1,10,11,12,13,14,15,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* `abcdefghijklmno */
4244 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* pqrstuvwxyz{|}~. */
4245 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4246 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4247 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4248 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4249 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4250 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4251 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4252 -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, /* ................ */
4254 return hex_lo_digit[(unsigned int) x];
4259 Safe characters:
4260 '\0' NULL
4261 A..Z capital letters,
4262 a..z small letters
4263 0..9 digits
4264 _ underscore
4266 static char filename_safe_char[128]=
4268 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
4269 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ................ */
4270 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* !"#$%&'()*+,-./ */
4271 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0, /* 0123456789:;<=>? */
4272 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* @ABCDEFGHIJKLMNO */
4273 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1, /* PQRSTUVWXYZ[\]^_ */
4274 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* `abcdefghijklmno */
4275 1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0, /* pqrstuvwxyz{|}~. */
4278 #define MY_FILENAME_ESCAPE '@'
4280 static int
4281 my_mb_wc_filename(CHARSET_INFO *cs __attribute__((unused)),
4282 my_wc_t *pwc, const uchar *s, const uchar *e)
4284 int byte1, byte2;
4285 if (s >= e)
4286 return MY_CS_TOOSMALL;
4288 if (*s < 128 && filename_safe_char[*s])
4290 *pwc= *s;
4291 return 1;
4294 if (*s != MY_FILENAME_ESCAPE)
4295 return MY_CS_ILSEQ;
4297 if (s + 3 > e)
4298 return MY_CS_TOOSMALL3;
4300 byte1= s[1];
4301 byte2= s[2];
4303 if (byte1 >= 0x30 && byte1 <= 0x7F &&
4304 byte2 >= 0x30 && byte2 <= 0x7F)
4306 int code= (byte1 - 0x30) * 80 + byte2 - 0x30;
4307 if (code < 5994 && touni[code])
4309 *pwc= touni[code];
4310 return 3;
4312 if (byte1 == '@' && byte2 == '@')
4314 *pwc= 0;
4315 return 3;
4319 if (s + 4 > e)
4320 return MY_CS_TOOSMALL4;
4322 if ((byte1= hexlo(byte1)) >= 0 &&
4323 (byte2= hexlo(byte2)) >= 0)
4325 int byte3= hexlo(s[3]);
4326 int byte4= hexlo(s[4]);
4327 if (byte3 >=0 && byte4 >=0)
4329 *pwc= (byte1 << 12) + (byte2 << 8) + (byte3 << 4) + byte4;
4330 return 5;
4334 return MY_CS_ILSEQ;
4338 static int
4339 my_wc_mb_filename(CHARSET_INFO *cs __attribute__((unused)),
4340 my_wc_t wc, uchar *s, uchar *e)
4342 int code;
4343 char hex[]= "0123456789abcdef";
4345 if (s >= e)
4346 return MY_CS_TOOSMALL;
4348 if (wc < 128 && filename_safe_char[wc])
4350 *s= (uchar) wc;
4351 return 1;
4354 if (s + 3 > e)
4355 return MY_CS_TOOSMALL3;
4357 *s++= MY_FILENAME_ESCAPE;
4358 if ((wc >= 0x00C0 && wc <= 0x05FF && (code= uni_0C00_05FF[wc - 0x00C0])) ||
4359 (wc >= 0x1E00 && wc <= 0x1FFF && (code= uni_1E00_1FFF[wc - 0x1E00])) ||
4360 (wc >= 0x2160 && wc <= 0x217F && (code= uni_2160_217F[wc - 0x2160])) ||
4361 (wc >= 0x24B0 && wc <= 0x24EF && (code= uni_24B0_24EF[wc - 0x24B0])) ||
4362 (wc >= 0xFF20 && wc <= 0xFF5F && (code= uni_FF20_FF5F[wc - 0xFF20])))
4364 *s++= (code / 80) + 0x30;
4365 *s++= (code % 80) + 0x30;
4366 return 3;
4369 /* Non letter */
4370 if (s + 5 > e)
4371 return MY_CS_TOOSMALL5;
4373 *s++= hex[(wc >> 12) & 15];
4374 *s++= hex[(wc >> 8) & 15];
4375 *s++= hex[(wc >> 4) & 15];
4376 *s++= hex[(wc) & 15];
4377 return 5;
4381 static MY_COLLATION_HANDLER my_collation_filename_handler =
4383 NULL, /* init */
4384 my_strnncoll_utf8,
4385 my_strnncollsp_utf8,
4386 my_strnxfrm_utf8,
4387 my_strnxfrmlen_utf8,
4388 my_like_range_mb,
4389 my_wildcmp_utf8,
4390 my_strcasecmp_utf8,
4391 my_instr_mb,
4392 my_hash_sort_utf8,
4393 my_propagate_complex
4396 static MY_CHARSET_HANDLER my_charset_filename_handler=
4398 NULL, /* init */
4399 my_ismbchar_utf8,
4400 my_mbcharlen_utf8,
4401 my_numchars_mb,
4402 my_charpos_mb,
4403 my_well_formed_len_mb,
4404 my_lengthsp_8bit,
4405 my_numcells_mb,
4406 my_mb_wc_filename,
4407 my_wc_mb_filename,
4408 my_mb_ctype_mb,
4409 my_caseup_str_utf8,
4410 my_casedn_str_utf8,
4411 my_caseup_utf8,
4412 my_casedn_utf8,
4413 my_snprintf_8bit,
4414 my_long10_to_str_8bit,
4415 my_longlong10_to_str_8bit,
4416 my_fill_8bit,
4417 my_strntol_8bit,
4418 my_strntoul_8bit,
4419 my_strntoll_8bit,
4420 my_strntoull_8bit,
4421 my_strntod_8bit,
4422 my_strtoll10_8bit,
4423 my_strntoull10rnd_8bit,
4424 my_scan_8bit
4429 CHARSET_INFO my_charset_filename=
4431 17,0,0, /* number */
4432 MY_CS_COMPILED|MY_CS_PRIMARY|MY_CS_STRNXFRM|MY_CS_UNICODE|MY_CS_HIDDEN,
4433 "filename", /* cs name */
4434 "filename", /* name */
4435 "", /* comment */
4436 NULL, /* tailoring */
4437 ctype_utf8, /* ctype */
4438 to_lower_utf8, /* to_lower */
4439 to_upper_utf8, /* to_upper */
4440 to_upper_utf8, /* sort_order */
4441 NULL, /* contractions */
4442 NULL, /* sort_order_big*/
4443 NULL, /* tab_to_uni */
4444 NULL, /* tab_from_uni */
4445 my_unicase_default, /* caseinfo */
4446 NULL, /* state_map */
4447 NULL, /* ident_map */
4448 1, /* strxfrm_multiply */
4449 1, /* caseup_multiply */
4450 1, /* casedn_multiply */
4451 1, /* mbminlen */
4452 5, /* mbmaxlen */
4453 0, /* min_sort_char */
4454 0xFFFF, /* max_sort_char */
4455 ' ', /* pad char */
4456 0, /* escape_with_backslash_is_dangerous */
4457 &my_charset_filename_handler,
4458 &my_collation_filename_handler
4462 #ifdef MY_TEST_UTF8
4463 #include <stdio.h>
4465 static void test_mb(CHARSET_INFO *cs, uchar *s)
4467 while(*s)
4469 if (my_ismbhead_utf8(cs,*s))
4471 uint len=my_mbcharlen_utf8(cs,*s);
4472 while(len--)
4474 printf("%c",*s);
4475 s++;
4477 printf("\n");
4479 else
4481 printf("%c\n",*s);
4482 s++;
4487 int main()
4489 char str[1024]=" utf8 test проба ПЕРА по-РУССКИ";
4490 CHARSET_INFO *cs;
4492 test_mb(cs,(uchar*)str);
4494 printf("orig :'%s'\n",str);
4496 my_caseup_utf8(cs,str,15);
4497 printf("caseup :'%s'\n",str);
4499 my_caseup_str_utf8(cs,str);
4500 printf("caseup_str:'%s'\n",str);
4502 my_casedn_utf8(cs,str,15);
4503 printf("casedn :'%s'\n",str);
4505 my_casedn_str_utf8(cs,str);
4506 printf("casedn_str:'%s'\n",str);
4508 return 0;
4511 #endif
4513 #endif /* HAVE_CHARSET_UTF8 */