f1de05342f0ff5c3b126395b609d78d5e934114b
[m6w6/ext-http] / src / php_http_utf8.h
1 /*
2 +--------------------------------------------------------------------+
3 | PECL :: http |
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted provided that the conditions mentioned |
7 | in the accompanying LICENSE file are met. |
8 +--------------------------------------------------------------------+
9 | Copyright (c) 2004-2014, Michael Wallner <mike@php.net> |
10 +--------------------------------------------------------------------+
11 */
12
13 #ifndef PHP_HTTP_UTF8_H
14 #define PHP_HTTP_UTF8_H
15
16 typedef struct utf8_range {
17 unsigned int start;
18 unsigned int end;
19 unsigned char step;
20 } utf8_range_t;
21
22 static const unsigned char utf8_mblen[256] = {
23 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
24 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
25 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
26 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
27 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
28 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
29 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
30 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
31 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
32 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
33 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
34 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
35 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
36 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
37 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
38 4,4,4,4,4,4,4,4,5,5,5,5,6,6,6,6
39 };
40
41 static const unsigned char utf8_mask[] = {
42 0, 0x7f, 0x1f, 0x0f, 0x07, 0x03, 0x01
43 };
44
45 #if PHP_HTTP_UTF8_LOOP
46 static const utf8_range_t utf8_ranges[] = {
47 /* BEGIN::UTF8TABLE */
48 { 0x0041, 0x005A, 1},
49 { 0x0061, 0x007A, 1},
50 { 0x00AA, 0, 0},
51 { 0x00B5, 0, 0},
52 { 0x00BA, 0, 0},
53 { 0x00C0, 0x00D6, 1},
54 { 0x00D8, 0x00F6, 1},
55 { 0x00F8, 0x02C1, 1},
56 { 0x02C6, 0x02D1, 1},
57 { 0x02E0, 0x02E4, 1},
58 { 0x02EC, 0, 0},
59 { 0x02EE, 0, 0},
60 { 0x0345, 0, 0},
61 { 0x0370, 0x0374, 1},
62 { 0x0376, 0x0377, 1},
63 { 0x037A, 0x037D, 1},
64 { 0x037F, 0, 0},
65 { 0x0386, 0, 0},
66 { 0x0388, 0x038A, 1},
67 { 0x038C, 0, 0},
68 { 0x038E, 0x03A1, 1},
69 { 0x03A3, 0x03F5, 1},
70 { 0x03F7, 0x0481, 1},
71 { 0x048A, 0x052F, 1},
72 { 0x0531, 0x0556, 1},
73 { 0x0559, 0, 0},
74 { 0x0561, 0x0587, 1},
75 { 0x05B0, 0x05BD, 1},
76 { 0x05BF, 0, 0},
77 { 0x05C1, 0x05C2, 1},
78 { 0x05C4, 0x05C5, 1},
79 { 0x05C7, 0, 0},
80 { 0x05D0, 0x05EA, 1},
81 { 0x05F0, 0x05F2, 1},
82 { 0x0610, 0x061A, 1},
83 { 0x0620, 0x0657, 1},
84 { 0x0659, 0x0669, 1},
85 { 0x066E, 0x06D3, 1},
86 { 0x06D5, 0x06DC, 1},
87 { 0x06E1, 0x06E8, 1},
88 { 0x06ED, 0x06FC, 1},
89 { 0x06FF, 0, 0},
90 { 0x0710, 0x073F, 1},
91 { 0x074D, 0x07B1, 1},
92 { 0x07C0, 0x07EA, 1},
93 { 0x07F4, 0x07F5, 1},
94 { 0x07FA, 0, 0},
95 { 0x0800, 0x0817, 1},
96 { 0x081A, 0x082C, 1},
97 { 0x0840, 0x0858, 1},
98 { 0x0860, 0x086A, 1},
99 { 0x08A0, 0x08B4, 1},
100 { 0x08B6, 0x08BD, 1},
101 { 0x08D4, 0x08DF, 1},
102 { 0x08E3, 0x08E9, 1},
103 { 0x08F0, 0x093B, 1},
104 { 0x093D, 0x094C, 1},
105 { 0x094E, 0x0950, 1},
106 { 0x0955, 0x0963, 1},
107 { 0x0966, 0x096F, 1},
108 { 0x0971, 0x0983, 1},
109 { 0x0985, 0x098C, 1},
110 { 0x098F, 0x0990, 1},
111 { 0x0993, 0x09A8, 1},
112 { 0x09AA, 0x09B0, 1},
113 { 0x09B2, 0, 0},
114 { 0x09B6, 0x09B9, 1},
115 { 0x09BD, 0x09C4, 1},
116 { 0x09C7, 0x09C8, 1},
117 { 0x09CB, 0x09CC, 1},
118 { 0x09CE, 0, 0},
119 { 0x09D7, 0, 0},
120 { 0x09DC, 0x09DD, 1},
121 { 0x09DF, 0x09E3, 1},
122 { 0x09E6, 0x09F1, 1},
123 { 0x09FC, 0, 0},
124 { 0x0A01, 0x0A03, 1},
125 { 0x0A05, 0x0A0A, 1},
126 { 0x0A0F, 0x0A10, 1},
127 { 0x0A13, 0x0A28, 1},
128 { 0x0A2A, 0x0A30, 1},
129 { 0x0A32, 0x0A33, 1},
130 { 0x0A35, 0x0A36, 1},
131 { 0x0A38, 0x0A39, 1},
132 { 0x0A3E, 0x0A42, 1},
133 { 0x0A47, 0x0A48, 1},
134 { 0x0A4B, 0x0A4C, 1},
135 { 0x0A51, 0, 0},
136 { 0x0A59, 0x0A5C, 1},
137 { 0x0A5E, 0, 0},
138 { 0x0A66, 0x0A75, 1},
139 { 0x0A81, 0x0A83, 1},
140 { 0x0A85, 0x0A8D, 1},
141 { 0x0A8F, 0x0A91, 1},
142 { 0x0A93, 0x0AA8, 1},
143 { 0x0AAA, 0x0AB0, 1},
144 { 0x0AB2, 0x0AB3, 1},
145 { 0x0AB5, 0x0AB9, 1},
146 { 0x0ABD, 0x0AC5, 1},
147 { 0x0AC7, 0x0AC9, 1},
148 { 0x0ACB, 0x0ACC, 1},
149 { 0x0AD0, 0, 0},
150 { 0x0AE0, 0x0AE3, 1},
151 { 0x0AE6, 0x0AEF, 1},
152 { 0x0AF9, 0x0AFC, 1},
153 { 0x0B01, 0x0B03, 1},
154 { 0x0B05, 0x0B0C, 1},
155 { 0x0B0F, 0x0B10, 1},
156 { 0x0B13, 0x0B28, 1},
157 { 0x0B2A, 0x0B30, 1},
158 { 0x0B32, 0x0B33, 1},
159 { 0x0B35, 0x0B39, 1},
160 { 0x0B3D, 0x0B44, 1},
161 { 0x0B47, 0x0B48, 1},
162 { 0x0B4B, 0x0B4C, 1},
163 { 0x0B56, 0x0B57, 1},
164 { 0x0B5C, 0x0B5D, 1},
165 { 0x0B5F, 0x0B63, 1},
166 { 0x0B66, 0x0B6F, 1},
167 { 0x0B71, 0, 0},
168 { 0x0B82, 0x0B83, 1},
169 { 0x0B85, 0x0B8A, 1},
170 { 0x0B8E, 0x0B90, 1},
171 { 0x0B92, 0x0B95, 1},
172 { 0x0B99, 0x0B9A, 1},
173 { 0x0B9C, 0, 0},
174 { 0x0B9E, 0x0B9F, 1},
175 { 0x0BA3, 0x0BA4, 1},
176 { 0x0BA8, 0x0BAA, 1},
177 { 0x0BAE, 0x0BB9, 1},
178 { 0x0BBE, 0x0BC2, 1},
179 { 0x0BC6, 0x0BC8, 1},
180 { 0x0BCA, 0x0BCC, 1},
181 { 0x0BD0, 0, 0},
182 { 0x0BD7, 0, 0},
183 { 0x0BE6, 0x0BEF, 1},
184 { 0x0C00, 0x0C03, 1},
185 { 0x0C05, 0x0C0C, 1},
186 { 0x0C0E, 0x0C10, 1},
187 { 0x0C12, 0x0C28, 1},
188 { 0x0C2A, 0x0C39, 1},
189 { 0x0C3D, 0x0C44, 1},
190 { 0x0C46, 0x0C48, 1},
191 { 0x0C4A, 0x0C4C, 1},
192 { 0x0C55, 0x0C56, 1},
193 { 0x0C58, 0x0C5A, 1},
194 { 0x0C60, 0x0C63, 1},
195 { 0x0C66, 0x0C6F, 1},
196 { 0x0C80, 0x0C83, 1},
197 { 0x0C85, 0x0C8C, 1},
198 { 0x0C8E, 0x0C90, 1},
199 { 0x0C92, 0x0CA8, 1},
200 { 0x0CAA, 0x0CB3, 1},
201 { 0x0CB5, 0x0CB9, 1},
202 { 0x0CBD, 0x0CC4, 1},
203 { 0x0CC6, 0x0CC8, 1},
204 { 0x0CCA, 0x0CCC, 1},
205 { 0x0CD5, 0x0CD6, 1},
206 { 0x0CDE, 0, 0},
207 { 0x0CE0, 0x0CE3, 1},
208 { 0x0CE6, 0x0CEF, 1},
209 { 0x0CF1, 0x0CF2, 1},
210 { 0x0D00, 0x0D03, 1},
211 { 0x0D05, 0x0D0C, 1},
212 { 0x0D0E, 0x0D10, 1},
213 { 0x0D12, 0x0D3A, 1},
214 { 0x0D3D, 0x0D44, 1},
215 { 0x0D46, 0x0D48, 1},
216 { 0x0D4A, 0x0D4C, 1},
217 { 0x0D4E, 0, 0},
218 { 0x0D54, 0x0D57, 1},
219 { 0x0D5F, 0x0D63, 1},
220 { 0x0D66, 0x0D6F, 1},
221 { 0x0D7A, 0x0D7F, 1},
222 { 0x0D82, 0x0D83, 1},
223 { 0x0D85, 0x0D96, 1},
224 { 0x0D9A, 0x0DB1, 1},
225 { 0x0DB3, 0x0DBB, 1},
226 { 0x0DBD, 0, 0},
227 { 0x0DC0, 0x0DC6, 1},
228 { 0x0DCF, 0x0DD4, 1},
229 { 0x0DD6, 0, 0},
230 { 0x0DD8, 0x0DDF, 1},
231 { 0x0DE6, 0x0DEF, 1},
232 { 0x0DF2, 0x0DF3, 1},
233 { 0x0E01, 0x0E3A, 1},
234 { 0x0E40, 0x0E46, 1},
235 { 0x0E4D, 0, 0},
236 { 0x0E50, 0x0E59, 1},
237 { 0x0E81, 0x0E82, 1},
238 { 0x0E84, 0, 0},
239 { 0x0E87, 0x0E88, 1},
240 { 0x0E8A, 0, 0},
241 { 0x0E8D, 0, 0},
242 { 0x0E94, 0x0E97, 1},
243 { 0x0E99, 0x0E9F, 1},
244 { 0x0EA1, 0x0EA3, 1},
245 { 0x0EA5, 0, 0},
246 { 0x0EA7, 0, 0},
247 { 0x0EAA, 0x0EAB, 1},
248 { 0x0EAD, 0x0EB9, 1},
249 { 0x0EBB, 0x0EBD, 1},
250 { 0x0EC0, 0x0EC4, 1},
251 { 0x0EC6, 0, 0},
252 { 0x0ECD, 0, 0},
253 { 0x0ED0, 0x0ED9, 1},
254 { 0x0EDC, 0x0EDF, 1},
255 { 0x0F00, 0, 0},
256 { 0x0F20, 0x0F29, 1},
257 { 0x0F40, 0x0F47, 1},
258 { 0x0F49, 0x0F6C, 1},
259 { 0x0F71, 0x0F81, 1},
260 { 0x0F88, 0x0F97, 1},
261 { 0x0F99, 0x0FBC, 1},
262 { 0x1000, 0x1036, 1},
263 { 0x1038, 0, 0},
264 { 0x103B, 0x1049, 1},
265 { 0x1050, 0x1062, 1},
266 { 0x1065, 0x1068, 1},
267 { 0x106E, 0x1086, 1},
268 { 0x108E, 0, 0},
269 { 0x1090, 0x1099, 1},
270 { 0x109C, 0x109D, 1},
271 { 0x10A0, 0x10C5, 1},
272 { 0x10C7, 0, 0},
273 { 0x10CD, 0, 0},
274 { 0x10D0, 0x10FA, 1},
275 { 0x10FC, 0x1248, 1},
276 { 0x124A, 0x124D, 1},
277 { 0x1250, 0x1256, 1},
278 { 0x1258, 0, 0},
279 { 0x125A, 0x125D, 1},
280 { 0x1260, 0x1288, 1},
281 { 0x128A, 0x128D, 1},
282 { 0x1290, 0x12B0, 1},
283 { 0x12B2, 0x12B5, 1},
284 { 0x12B8, 0x12BE, 1},
285 { 0x12C0, 0, 0},
286 { 0x12C2, 0x12C5, 1},
287 { 0x12C8, 0x12D6, 1},
288 { 0x12D8, 0x1310, 1},
289 { 0x1312, 0x1315, 1},
290 { 0x1318, 0x135A, 1},
291 { 0x135F, 0, 0},
292 { 0x1380, 0x138F, 1},
293 { 0x13A0, 0x13F5, 1},
294 { 0x13F8, 0x13FD, 1},
295 { 0x1401, 0x166C, 1},
296 { 0x166F, 0x167F, 1},
297 { 0x1681, 0x169A, 1},
298 { 0x16A0, 0x16EA, 1},
299 { 0x16EE, 0x16F8, 1},
300 { 0x1700, 0x170C, 1},
301 { 0x170E, 0x1713, 1},
302 { 0x1720, 0x1733, 1},
303 { 0x1740, 0x1753, 1},
304 { 0x1760, 0x176C, 1},
305 { 0x176E, 0x1770, 1},
306 { 0x1772, 0x1773, 1},
307 { 0x1780, 0x17B3, 1},
308 { 0x17B6, 0x17C8, 1},
309 { 0x17D7, 0, 0},
310 { 0x17DC, 0, 0},
311 { 0x17E0, 0x17E9, 1},
312 { 0x1810, 0x1819, 1},
313 { 0x1820, 0x1877, 1},
314 { 0x1880, 0x18AA, 1},
315 { 0x18B0, 0x18F5, 1},
316 { 0x1900, 0x191E, 1},
317 { 0x1920, 0x192B, 1},
318 { 0x1930, 0x1938, 1},
319 { 0x1946, 0x196D, 1},
320 { 0x1970, 0x1974, 1},
321 { 0x1980, 0x19AB, 1},
322 { 0x19B0, 0x19C9, 1},
323 { 0x19D0, 0x19D9, 1},
324 { 0x1A00, 0x1A1B, 1},
325 { 0x1A20, 0x1A5E, 1},
326 { 0x1A61, 0x1A74, 1},
327 { 0x1A80, 0x1A89, 1},
328 { 0x1A90, 0x1A99, 1},
329 { 0x1AA7, 0, 0},
330 { 0x1B00, 0x1B33, 1},
331 { 0x1B35, 0x1B43, 1},
332 { 0x1B45, 0x1B4B, 1},
333 { 0x1B50, 0x1B59, 1},
334 { 0x1B80, 0x1BA9, 1},
335 { 0x1BAC, 0x1BE5, 1},
336 { 0x1BE7, 0x1BF1, 1},
337 { 0x1C00, 0x1C35, 1},
338 { 0x1C40, 0x1C49, 1},
339 { 0x1C4D, 0x1C7D, 1},
340 { 0x1C80, 0x1C88, 1},
341 { 0x1CE9, 0x1CEC, 1},
342 { 0x1CEE, 0x1CF3, 1},
343 { 0x1CF5, 0x1CF6, 1},
344 { 0x1D00, 0x1DBF, 1},
345 { 0x1DE7, 0x1DF4, 1},
346 { 0x1E00, 0x1F15, 1},
347 { 0x1F18, 0x1F1D, 1},
348 { 0x1F20, 0x1F45, 1},
349 { 0x1F48, 0x1F4D, 1},
350 { 0x1F50, 0x1F57, 1},
351 { 0x1F59, 0, 0},
352 { 0x1F5B, 0, 0},
353 { 0x1F5D, 0, 0},
354 { 0x1F5F, 0x1F7D, 1},
355 { 0x1F80, 0x1FB4, 1},
356 { 0x1FB6, 0x1FBC, 1},
357 { 0x1FBE, 0, 0},
358 { 0x1FC2, 0x1FC4, 1},
359 { 0x1FC6, 0x1FCC, 1},
360 { 0x1FD0, 0x1FD3, 1},
361 { 0x1FD6, 0x1FDB, 1},
362 { 0x1FE0, 0x1FEC, 1},
363 { 0x1FF2, 0x1FF4, 1},
364 { 0x1FF6, 0x1FFC, 1},
365 { 0x2071, 0, 0},
366 { 0x207F, 0, 0},
367 { 0x2090, 0x209C, 1},
368 { 0x2102, 0, 0},
369 { 0x2107, 0, 0},
370 { 0x210A, 0x2113, 1},
371 { 0x2115, 0, 0},
372 { 0x2119, 0x211D, 1},
373 { 0x2124, 0, 0},
374 { 0x2126, 0, 0},
375 { 0x2128, 0, 0},
376 { 0x212A, 0x212D, 1},
377 { 0x212F, 0x2139, 1},
378 { 0x213C, 0x213F, 1},
379 { 0x2145, 0x2149, 1},
380 { 0x214E, 0, 0},
381 { 0x2160, 0x2188, 1},
382 { 0x24B6, 0x24E9, 1},
383 { 0x2C00, 0x2C2E, 1},
384 { 0x2C30, 0x2C5E, 1},
385 { 0x2C60, 0x2CE4, 1},
386 { 0x2CEB, 0x2CEE, 1},
387 { 0x2CF2, 0x2CF3, 1},
388 { 0x2D00, 0x2D25, 1},
389 { 0x2D27, 0, 0},
390 { 0x2D2D, 0, 0},
391 { 0x2D30, 0x2D67, 1},
392 { 0x2D6F, 0, 0},
393 { 0x2D80, 0x2D96, 1},
394 { 0x2DA0, 0x2DA6, 1},
395 { 0x2DA8, 0x2DAE, 1},
396 { 0x2DB0, 0x2DB6, 1},
397 { 0x2DB8, 0x2DBE, 1},
398 { 0x2DC0, 0x2DC6, 1},
399 { 0x2DC8, 0x2DCE, 1},
400 { 0x2DD0, 0x2DD6, 1},
401 { 0x2DD8, 0x2DDE, 1},
402 { 0x2DE0, 0x2DFF, 1},
403 { 0x2E2F, 0, 0},
404 { 0x3005, 0x3007, 1},
405 { 0x3021, 0x3029, 1},
406 { 0x3031, 0x3035, 1},
407 { 0x3038, 0x303C, 1},
408 { 0x3041, 0x3096, 1},
409 { 0x309D, 0x309F, 1},
410 { 0x30A1, 0x30FA, 1},
411 { 0x30FC, 0x30FF, 1},
412 { 0x3105, 0x312E, 1},
413 { 0x3131, 0x318E, 1},
414 { 0x31A0, 0x31BA, 1},
415 { 0x31F0, 0x31FF, 1},
416 { 0x3400, 0x4DB5, 1},
417 { 0x4E00, 0x9FEA, 1},
418 { 0xA000, 0xA48C, 1},
419 { 0xA4D0, 0xA4FD, 1},
420 { 0xA500, 0xA60C, 1},
421 { 0xA610, 0xA62B, 1},
422 { 0xA640, 0xA66E, 1},
423 { 0xA674, 0xA67B, 1},
424 { 0xA67F, 0xA6EF, 1},
425 { 0xA717, 0xA71F, 1},
426 { 0xA722, 0xA788, 1},
427 { 0xA78B, 0xA7AE, 1},
428 { 0xA7B0, 0xA7B7, 1},
429 { 0xA7F7, 0xA801, 1},
430 { 0xA803, 0xA805, 1},
431 { 0xA807, 0xA80A, 1},
432 { 0xA80C, 0xA827, 1},
433 { 0xA840, 0xA873, 1},
434 { 0xA880, 0xA8C3, 1},
435 { 0xA8C5, 0, 0},
436 { 0xA8D0, 0xA8D9, 1},
437 { 0xA8F2, 0xA8F7, 1},
438 { 0xA8FB, 0, 0},
439 { 0xA8FD, 0, 0},
440 { 0xA900, 0xA92A, 1},
441 { 0xA930, 0xA952, 1},
442 { 0xA960, 0xA97C, 1},
443 { 0xA980, 0xA9B2, 1},
444 { 0xA9B4, 0xA9BF, 1},
445 { 0xA9CF, 0xA9D9, 1},
446 { 0xA9E0, 0xA9E4, 1},
447 { 0xA9E6, 0xA9FE, 1},
448 { 0xAA00, 0xAA36, 1},
449 { 0xAA40, 0xAA4D, 1},
450 { 0xAA50, 0xAA59, 1},
451 { 0xAA60, 0xAA76, 1},
452 { 0xAA7A, 0, 0},
453 { 0xAA7E, 0xAABE, 1},
454 { 0xAAC0, 0, 0},
455 { 0xAAC2, 0, 0},
456 { 0xAADB, 0xAADD, 1},
457 { 0xAAE0, 0xAAEF, 1},
458 { 0xAAF2, 0xAAF5, 1},
459 { 0xAB01, 0xAB06, 1},
460 { 0xAB09, 0xAB0E, 1},
461 { 0xAB11, 0xAB16, 1},
462 { 0xAB20, 0xAB26, 1},
463 { 0xAB28, 0xAB2E, 1},
464 { 0xAB30, 0xAB5A, 1},
465 { 0xAB5C, 0xAB65, 1},
466 { 0xAB70, 0xABEA, 1},
467 { 0xABF0, 0xABF9, 1},
468 { 0xAC00, 0xD7A3, 1},
469 { 0xD7B0, 0xD7C6, 1},
470 { 0xD7CB, 0xD7FB, 1},
471 { 0xF900, 0xFA6D, 1},
472 { 0xFA70, 0xFAD9, 1},
473 { 0xFB00, 0xFB06, 1},
474 { 0xFB13, 0xFB17, 1},
475 { 0xFB1D, 0xFB28, 1},
476 { 0xFB2A, 0xFB36, 1},
477 { 0xFB38, 0xFB3C, 1},
478 { 0xFB3E, 0, 0},
479 { 0xFB40, 0xFB41, 1},
480 { 0xFB43, 0xFB44, 1},
481 { 0xFB46, 0xFBB1, 1},
482 { 0xFBD3, 0xFD3D, 1},
483 { 0xFD50, 0xFD8F, 1},
484 { 0xFD92, 0xFDC7, 1},
485 { 0xFDF0, 0xFDFB, 1},
486 { 0xFE70, 0xFE74, 1},
487 { 0xFE76, 0xFEFC, 1},
488 { 0xFF10, 0xFF19, 1},
489 { 0xFF21, 0xFF3A, 1},
490 { 0xFF41, 0xFF5A, 1},
491 { 0xFF66, 0xFFBE, 1},
492 { 0xFFC2, 0xFFC7, 1},
493 { 0xFFCA, 0xFFCF, 1},
494 { 0xFFD2, 0xFFD7, 1},
495 { 0xFFDA, 0xFFDC, 1},
496 {0x00010000, 0x0001000B, 1},
497 {0x0001000D, 0x00010026, 1},
498 {0x00010028, 0x0001003A, 1},
499 {0x0001003C, 0x0001003D, 1},
500 {0x0001003F, 0x0001004D, 1},
501 {0x00010050, 0x0001005D, 1},
502 {0x00010080, 0x000100FA, 1},
503 {0x00010140, 0x00010174, 1},
504 {0x00010280, 0x0001029C, 1},
505 {0x000102A0, 0x000102D0, 1},
506 {0x00010300, 0x0001031F, 1},
507 {0x0001032D, 0x0001034A, 1},
508 {0x00010350, 0x0001037A, 1},
509 {0x00010380, 0x0001039D, 1},
510 {0x000103A0, 0x000103C3, 1},
511 {0x000103C8, 0x000103CF, 1},
512 {0x000103D1, 0x000103D5, 1},
513 {0x00010400, 0x0001049D, 1},
514 {0x000104A0, 0x000104A9, 1},
515 {0x000104B0, 0x000104D3, 1},
516 {0x000104D8, 0x000104FB, 1},
517 {0x00010500, 0x00010527, 1},
518 {0x00010530, 0x00010563, 1},
519 {0x00010600, 0x00010736, 1},
520 {0x00010740, 0x00010755, 1},
521 {0x00010760, 0x00010767, 1},
522 {0x00010800, 0x00010805, 1},
523 {0x00010808, 0, 0},
524 {0x0001080A, 0x00010835, 1},
525 {0x00010837, 0x00010838, 1},
526 {0x0001083C, 0, 0},
527 {0x0001083F, 0x00010855, 1},
528 {0x00010860, 0x00010876, 1},
529 {0x00010880, 0x0001089E, 1},
530 {0x000108E0, 0x000108F2, 1},
531 {0x000108F4, 0x000108F5, 1},
532 {0x00010900, 0x00010915, 1},
533 {0x00010920, 0x00010939, 1},
534 {0x00010980, 0x000109B7, 1},
535 {0x000109BE, 0x000109BF, 1},
536 {0x00010A00, 0x00010A03, 1},
537 {0x00010A05, 0x00010A06, 1},
538 {0x00010A0C, 0x00010A13, 1},
539 {0x00010A15, 0x00010A17, 1},
540 {0x00010A19, 0x00010A33, 1},
541 {0x00010A60, 0x00010A7C, 1},
542 {0x00010A80, 0x00010A9C, 1},
543 {0x00010AC0, 0x00010AC7, 1},
544 {0x00010AC9, 0x00010AE4, 1},
545 {0x00010B00, 0x00010B35, 1},
546 {0x00010B40, 0x00010B55, 1},
547 {0x00010B60, 0x00010B72, 1},
548 {0x00010B80, 0x00010B91, 1},
549 {0x00010C00, 0x00010C48, 1},
550 {0x00010C80, 0x00010CB2, 1},
551 {0x00010CC0, 0x00010CF2, 1},
552 {0x00011000, 0x00011045, 1},
553 {0x00011066, 0x0001106F, 1},
554 {0x00011082, 0x000110B8, 1},
555 {0x000110D0, 0x000110E8, 1},
556 {0x000110F0, 0x000110F9, 1},
557 {0x00011100, 0x00011132, 1},
558 {0x00011136, 0x0001113F, 1},
559 {0x00011150, 0x00011172, 1},
560 {0x00011176, 0, 0},
561 {0x00011180, 0x000111BF, 1},
562 {0x000111C1, 0x000111C4, 1},
563 {0x000111D0, 0x000111DA, 1},
564 {0x000111DC, 0, 0},
565 {0x00011200, 0x00011211, 1},
566 {0x00011213, 0x00011234, 1},
567 {0x00011237, 0, 0},
568 {0x0001123E, 0, 0},
569 {0x00011280, 0x00011286, 1},
570 {0x00011288, 0, 0},
571 {0x0001128A, 0x0001128D, 1},
572 {0x0001128F, 0x0001129D, 1},
573 {0x0001129F, 0x000112A8, 1},
574 {0x000112B0, 0x000112E8, 1},
575 {0x000112F0, 0x000112F9, 1},
576 {0x00011300, 0x00011303, 1},
577 {0x00011305, 0x0001130C, 1},
578 {0x0001130F, 0x00011310, 1},
579 {0x00011313, 0x00011328, 1},
580 {0x0001132A, 0x00011330, 1},
581 {0x00011332, 0x00011333, 1},
582 {0x00011335, 0x00011339, 1},
583 {0x0001133D, 0x00011344, 1},
584 {0x00011347, 0x00011348, 1},
585 {0x0001134B, 0x0001134C, 1},
586 {0x00011350, 0, 0},
587 {0x00011357, 0, 0},
588 {0x0001135D, 0x00011363, 1},
589 {0x00011400, 0x00011441, 1},
590 {0x00011443, 0x00011445, 1},
591 {0x00011447, 0x0001144A, 1},
592 {0x00011450, 0x00011459, 1},
593 {0x00011480, 0x000114C1, 1},
594 {0x000114C4, 0x000114C5, 1},
595 {0x000114C7, 0, 0},
596 {0x000114D0, 0x000114D9, 1},
597 {0x00011580, 0x000115B5, 1},
598 {0x000115B8, 0x000115BE, 1},
599 {0x000115D8, 0x000115DD, 1},
600 {0x00011600, 0x0001163E, 1},
601 {0x00011640, 0, 0},
602 {0x00011644, 0, 0},
603 {0x00011650, 0x00011659, 1},
604 {0x00011680, 0x000116B5, 1},
605 {0x000116C0, 0x000116C9, 1},
606 {0x00011700, 0x00011719, 1},
607 {0x0001171D, 0x0001172A, 1},
608 {0x00011730, 0x00011739, 1},
609 {0x000118A0, 0x000118E9, 1},
610 {0x000118FF, 0, 0},
611 {0x00011A00, 0x00011A32, 1},
612 {0x00011A35, 0x00011A3E, 1},
613 {0x00011A50, 0x00011A83, 1},
614 {0x00011A86, 0x00011A97, 1},
615 {0x00011AC0, 0x00011AF8, 1},
616 {0x00011C00, 0x00011C08, 1},
617 {0x00011C0A, 0x00011C36, 1},
618 {0x00011C38, 0x00011C3E, 1},
619 {0x00011C40, 0, 0},
620 {0x00011C50, 0x00011C59, 1},
621 {0x00011C72, 0x00011C8F, 1},
622 {0x00011C92, 0x00011CA7, 1},
623 {0x00011CA9, 0x00011CB6, 1},
624 {0x00011D00, 0x00011D06, 1},
625 {0x00011D08, 0x00011D09, 1},
626 {0x00011D0B, 0x00011D36, 1},
627 {0x00011D3A, 0, 0},
628 {0x00011D3C, 0x00011D3D, 1},
629 {0x00011D3F, 0x00011D41, 1},
630 {0x00011D43, 0, 0},
631 {0x00011D46, 0x00011D47, 1},
632 {0x00011D50, 0x00011D59, 1},
633 {0x00012000, 0x00012399, 1},
634 {0x00012400, 0x0001246E, 1},
635 {0x00012480, 0x00012543, 1},
636 {0x00013000, 0x0001342E, 1},
637 {0x00014400, 0x00014646, 1},
638 {0x00016800, 0x00016A38, 1},
639 {0x00016A40, 0x00016A5E, 1},
640 {0x00016A60, 0x00016A69, 1},
641 {0x00016AD0, 0x00016AED, 1},
642 {0x00016B00, 0x00016B36, 1},
643 {0x00016B40, 0x00016B43, 1},
644 {0x00016B50, 0x00016B59, 1},
645 {0x00016B63, 0x00016B77, 1},
646 {0x00016B7D, 0x00016B8F, 1},
647 {0x00016F00, 0x00016F44, 1},
648 {0x00016F50, 0x00016F7E, 1},
649 {0x00016F93, 0x00016F9F, 1},
650 {0x00016FE0, 0x00016FE1, 1},
651 {0x00017000, 0x000187EC, 1},
652 {0x00018800, 0x00018AF2, 1},
653 {0x0001B000, 0x0001B11E, 1},
654 {0x0001B170, 0x0001B2FB, 1},
655 {0x0001BC00, 0x0001BC6A, 1},
656 {0x0001BC70, 0x0001BC7C, 1},
657 {0x0001BC80, 0x0001BC88, 1},
658 {0x0001BC90, 0x0001BC99, 1},
659 {0x0001BC9E, 0, 0},
660 {0x0001D400, 0x0001D454, 1},
661 {0x0001D456, 0x0001D49C, 1},
662 {0x0001D49E, 0x0001D49F, 1},
663 {0x0001D4A2, 0, 0},
664 {0x0001D4A5, 0x0001D4A6, 1},
665 {0x0001D4A9, 0x0001D4AC, 1},
666 {0x0001D4AE, 0x0001D4B9, 1},
667 {0x0001D4BB, 0, 0},
668 {0x0001D4BD, 0x0001D4C3, 1},
669 {0x0001D4C5, 0x0001D505, 1},
670 {0x0001D507, 0x0001D50A, 1},
671 {0x0001D50D, 0x0001D514, 1},
672 {0x0001D516, 0x0001D51C, 1},
673 {0x0001D51E, 0x0001D539, 1},
674 {0x0001D53B, 0x0001D53E, 1},
675 {0x0001D540, 0x0001D544, 1},
676 {0x0001D546, 0, 0},
677 {0x0001D54A, 0x0001D550, 1},
678 {0x0001D552, 0x0001D6A5, 1},
679 {0x0001D6A8, 0x0001D6C0, 1},
680 {0x0001D6C2, 0x0001D6DA, 1},
681 {0x0001D6DC, 0x0001D6FA, 1},
682 {0x0001D6FC, 0x0001D714, 1},
683 {0x0001D716, 0x0001D734, 1},
684 {0x0001D736, 0x0001D74E, 1},
685 {0x0001D750, 0x0001D76E, 1},
686 {0x0001D770, 0x0001D788, 1},
687 {0x0001D78A, 0x0001D7A8, 1},
688 {0x0001D7AA, 0x0001D7C2, 1},
689 {0x0001D7C4, 0x0001D7CB, 1},
690 {0x0001D7CE, 0x0001D7FF, 1},
691 {0x0001E000, 0x0001E006, 1},
692 {0x0001E008, 0x0001E018, 1},
693 {0x0001E01B, 0x0001E021, 1},
694 {0x0001E023, 0x0001E024, 1},
695 {0x0001E026, 0x0001E02A, 1},
696 {0x0001E800, 0x0001E8C4, 1},
697 {0x0001E900, 0x0001E943, 1},
698 {0x0001E947, 0, 0},
699 {0x0001E950, 0x0001E959, 1},
700 {0x0001EE00, 0x0001EE03, 1},
701 {0x0001EE05, 0x0001EE1F, 1},
702 {0x0001EE21, 0x0001EE22, 1},
703 {0x0001EE24, 0, 0},
704 {0x0001EE27, 0, 0},
705 {0x0001EE29, 0x0001EE32, 1},
706 {0x0001EE34, 0x0001EE37, 1},
707 {0x0001EE39, 0, 0},
708 {0x0001EE3B, 0, 0},
709 {0x0001EE42, 0, 0},
710 {0x0001EE47, 0, 0},
711 {0x0001EE49, 0, 0},
712 {0x0001EE4B, 0, 0},
713 {0x0001EE4D, 0x0001EE4F, 1},
714 {0x0001EE51, 0x0001EE52, 1},
715 {0x0001EE54, 0, 0},
716 {0x0001EE57, 0, 0},
717 {0x0001EE59, 0, 0},
718 {0x0001EE5B, 0, 0},
719 {0x0001EE5D, 0, 0},
720 {0x0001EE5F, 0, 0},
721 {0x0001EE61, 0x0001EE62, 1},
722 {0x0001EE64, 0, 0},
723 {0x0001EE67, 0x0001EE6A, 1},
724 {0x0001EE6C, 0x0001EE72, 1},
725 {0x0001EE74, 0x0001EE77, 1},
726 {0x0001EE79, 0x0001EE7C, 1},
727 {0x0001EE7E, 0, 0},
728 {0x0001EE80, 0x0001EE89, 1},
729 {0x0001EE8B, 0x0001EE9B, 1},
730 {0x0001EEA1, 0x0001EEA3, 1},
731 {0x0001EEA5, 0x0001EEA9, 1},
732 {0x0001EEAB, 0x0001EEBB, 1},
733 {0x0001F130, 0x0001F149, 1},
734 {0x0001F150, 0x0001F169, 1},
735 {0x0001F170, 0x0001F189, 1},
736 {0x00020000, 0x0002A6D6, 1},
737 {0x0002A700, 0x0002B734, 1},
738 {0x0002B740, 0x0002B81D, 1},
739 {0x0002B820, 0x0002CEA1, 1},
740 {0x0002CEB0, 0x0002EBE0, 1},
741 {0x0002F800, 0x0002FA1D, 1},
742
743 /* END::UTF8TABLE */
744 };
745 #endif
746
747 static inline size_t utf8towc(unsigned *wc, const unsigned char *uc, size_t len)
748 {
749 unsigned char ub = utf8_mblen[*uc];
750
751 if (!ub || ub > len || ub > 4) {
752 return 0;
753 }
754
755 *wc = *uc & utf8_mask[ub];
756
757 switch (ub) {
758 case 4:
759 if ((uc[1] & 0xc0) != 0x80) {
760 return 0;
761 }
762 *wc <<= 6;
763 *wc += *++uc & 0x3f;
764 /* no break */
765 case 3:
766 if ((uc[1] & 0xc0) != 0x80) {
767 return 0;
768 }
769 *wc <<= 6;
770 *wc += *++uc & 0x3f;
771 /* no break */
772 case 2:
773 if ((uc[1] & 0xc0) != 0x80) {
774 return 0;
775 }
776 *wc <<= 6;
777 *wc += *++uc & 0x3f;
778 /* no break */
779 case 1:
780 break;
781
782 default:
783 return 0;
784 }
785
786 return ub;
787 }
788
789 static inline zend_bool isualpha(unsigned ch)
790 {
791 #if PHP_HTTP_UTF8_LOOP
792 unsigned j;
793 const utf8_range_t *u = &utf8_ranges[0], *e = &utf8_ranges[sizeof(utf8_ranges)/sizeof(utf8_range_t)-1];
794
795 do {
796 if (u->start == ch) {
797 return 1;
798 } else if (u->start <= ch && u->end >= ch) {
799 if (u->step == 1) {
800 return 1;
801 }
802 for (j = u->start; j <= u->end; j+= u->step) {
803 if (ch == j) {
804 return 1;
805 }
806 }
807 return 0;
808 }
809 } while (++u != e);
810
811 #else
812
813 /* BEGIN::UTF8SWITCH */
814 switch (ch >> 10) {
815 case 0x00000000:
816 if (ch >= 0x00000041) {
817 if (ch <= 0x0000005A) return 1;
818 if (ch >= 0x00000061) {
819 if (ch <= 0x0000007A) return 1;
820 if (ch == 0x000000AA) return 1;
821 if (ch == 0x000000B5) return 1;
822 if (ch == 0x000000BA) return 1;
823 if (ch >= 0x000000C0) {
824 if (ch <= 0x000000D6) return 1;
825 if (ch >= 0x000000D8) {
826 if (ch <= 0x000000F6) return 1;
827 if (ch >= 0x000000F8) {
828 if (ch <= 0x000002C1) return 1;
829 if (ch >= 0x000002C6) {
830 if (ch <= 0x000002D1) return 1;
831 if (ch >= 0x000002E0) {
832 if (ch <= 0x000002E4) return 1;
833 if (ch == 0x000002EC) return 1;
834 if (ch == 0x000002EE) return 1;
835 if (ch == 0x00000345) return 1;
836 if (ch >= 0x00000370) {
837 if (ch <= 0x00000374) return 1;
838 if (ch >= 0x00000376) {
839 if (ch <= 0x00000377) return 1;
840 if (ch >= 0x0000037A) {
841 if (ch <= 0x0000037D) return 1;
842 if (ch == 0x0000037F) return 1;
843 if (ch == 0x00000386) return 1;
844 if (ch >= 0x00000388) {
845 if (ch <= 0x0000038A) return 1;
846 if (ch == 0x0000038C) return 1;
847 if (ch >= 0x0000038E) {
848 if (ch <= 0x000003A1) return 1;
849 if (ch >= 0x000003A3) {
850 if (ch <= 0x000003F5) return 1;
851 if (ch >= 0x000003F7) {
852 if (ch <= 0x00000481) return 1;
853 }}}}}}}}}}}}}}
854 break;
855 case 0x00000001:
856 if (ch >= 0x0000048A) {
857 if (ch <= 0x0000052F) return 1;
858 if (ch >= 0x00000531) {
859 if (ch <= 0x00000556) return 1;
860 if (ch == 0x00000559) return 1;
861 if (ch >= 0x00000561) {
862 if (ch <= 0x00000587) return 1;
863 if (ch >= 0x000005B0) {
864 if (ch <= 0x000005BD) return 1;
865 if (ch == 0x000005BF) return 1;
866 if (ch >= 0x000005C1) {
867 if (ch <= 0x000005C2) return 1;
868 if (ch >= 0x000005C4) {
869 if (ch <= 0x000005C5) return 1;
870 if (ch == 0x000005C7) return 1;
871 if (ch >= 0x000005D0) {
872 if (ch <= 0x000005EA) return 1;
873 if (ch >= 0x000005F0) {
874 if (ch <= 0x000005F2) return 1;
875 if (ch >= 0x00000610) {
876 if (ch <= 0x0000061A) return 1;
877 if (ch >= 0x00000620) {
878 if (ch <= 0x00000657) return 1;
879 if (ch >= 0x00000659) {
880 if (ch <= 0x00000669) return 1;
881 if (ch >= 0x0000066E) {
882 if (ch <= 0x000006D3) return 1;
883 if (ch >= 0x000006D5) {
884 if (ch <= 0x000006DC) return 1;
885 if (ch >= 0x000006E1) {
886 if (ch <= 0x000006E8) return 1;
887 if (ch >= 0x000006ED) {
888 if (ch <= 0x000006FC) return 1;
889 if (ch == 0x000006FF) return 1;
890 if (ch >= 0x00000710) {
891 if (ch <= 0x0000073F) return 1;
892 if (ch >= 0x0000074D) {
893 if (ch <= 0x000007B1) return 1;
894 if (ch >= 0x000007C0) {
895 if (ch <= 0x000007EA) return 1;
896 if (ch >= 0x000007F4) {
897 if (ch <= 0x000007F5) return 1;
898 if (ch == 0x000007FA) return 1;
899 }}}}}}}}}}}}}}}}}}}
900 break;
901 case 0x00000002:
902 if (ch >= 0x00000800) {
903 if (ch <= 0x00000817) return 1;
904 if (ch >= 0x0000081A) {
905 if (ch <= 0x0000082C) return 1;
906 if (ch >= 0x00000840) {
907 if (ch <= 0x00000858) return 1;
908 if (ch >= 0x00000860) {
909 if (ch <= 0x0000086A) return 1;
910 if (ch >= 0x000008A0) {
911 if (ch <= 0x000008B4) return 1;
912 if (ch >= 0x000008B6) {
913 if (ch <= 0x000008BD) return 1;
914 if (ch >= 0x000008D4) {
915 if (ch <= 0x000008DF) return 1;
916 if (ch >= 0x000008E3) {
917 if (ch <= 0x000008E9) return 1;
918 if (ch >= 0x000008F0) {
919 if (ch <= 0x0000093B) return 1;
920 if (ch >= 0x0000093D) {
921 if (ch <= 0x0000094C) return 1;
922 if (ch >= 0x0000094E) {
923 if (ch <= 0x00000950) return 1;
924 if (ch >= 0x00000955) {
925 if (ch <= 0x00000963) return 1;
926 if (ch >= 0x00000966) {
927 if (ch <= 0x0000096F) return 1;
928 if (ch >= 0x00000971) {
929 if (ch <= 0x00000983) return 1;
930 if (ch >= 0x00000985) {
931 if (ch <= 0x0000098C) return 1;
932 if (ch >= 0x0000098F) {
933 if (ch <= 0x00000990) return 1;
934 if (ch >= 0x00000993) {
935 if (ch <= 0x000009A8) return 1;
936 if (ch >= 0x000009AA) {
937 if (ch <= 0x000009B0) return 1;
938 if (ch == 0x000009B2) return 1;
939 if (ch >= 0x000009B6) {
940 if (ch <= 0x000009B9) return 1;
941 if (ch >= 0x000009BD) {
942 if (ch <= 0x000009C4) return 1;
943 if (ch >= 0x000009C7) {
944 if (ch <= 0x000009C8) return 1;
945 if (ch >= 0x000009CB) {
946 if (ch <= 0x000009CC) return 1;
947 if (ch == 0x000009CE) return 1;
948 if (ch == 0x000009D7) return 1;
949 if (ch >= 0x000009DC) {
950 if (ch <= 0x000009DD) return 1;
951 if (ch >= 0x000009DF) {
952 if (ch <= 0x000009E3) return 1;
953 if (ch >= 0x000009E6) {
954 if (ch <= 0x000009F1) return 1;
955 if (ch == 0x000009FC) return 1;
956 if (ch >= 0x00000A01) {
957 if (ch <= 0x00000A03) return 1;
958 if (ch >= 0x00000A05) {
959 if (ch <= 0x00000A0A) return 1;
960 if (ch >= 0x00000A0F) {
961 if (ch <= 0x00000A10) return 1;
962 if (ch >= 0x00000A13) {
963 if (ch <= 0x00000A28) return 1;
964 if (ch >= 0x00000A2A) {
965 if (ch <= 0x00000A30) return 1;
966 if (ch >= 0x00000A32) {
967 if (ch <= 0x00000A33) return 1;
968 if (ch >= 0x00000A35) {
969 if (ch <= 0x00000A36) return 1;
970 if (ch >= 0x00000A38) {
971 if (ch <= 0x00000A39) return 1;
972 if (ch >= 0x00000A3E) {
973 if (ch <= 0x00000A42) return 1;
974 if (ch >= 0x00000A47) {
975 if (ch <= 0x00000A48) return 1;
976 if (ch >= 0x00000A4B) {
977 if (ch <= 0x00000A4C) return 1;
978 if (ch == 0x00000A51) return 1;
979 if (ch >= 0x00000A59) {
980 if (ch <= 0x00000A5C) return 1;
981 if (ch == 0x00000A5E) return 1;
982 if (ch >= 0x00000A66) {
983 if (ch <= 0x00000A75) return 1;
984 if (ch >= 0x00000A81) {
985 if (ch <= 0x00000A83) return 1;
986 if (ch >= 0x00000A85) {
987 if (ch <= 0x00000A8D) return 1;
988 if (ch >= 0x00000A8F) {
989 if (ch <= 0x00000A91) return 1;
990 if (ch >= 0x00000A93) {
991 if (ch <= 0x00000AA8) return 1;
992 if (ch >= 0x00000AAA) {
993 if (ch <= 0x00000AB0) return 1;
994 if (ch >= 0x00000AB2) {
995 if (ch <= 0x00000AB3) return 1;
996 if (ch >= 0x00000AB5) {
997 if (ch <= 0x00000AB9) return 1;
998 if (ch >= 0x00000ABD) {
999 if (ch <= 0x00000AC5) return 1;
1000 if (ch >= 0x00000AC7) {
1001 if (ch <= 0x00000AC9) return 1;
1002 if (ch >= 0x00000ACB) {
1003 if (ch <= 0x00000ACC) return 1;
1004 if (ch == 0x00000AD0) return 1;
1005 if (ch >= 0x00000AE0) {
1006 if (ch <= 0x00000AE3) return 1;
1007 if (ch >= 0x00000AE6) {
1008 if (ch <= 0x00000AEF) return 1;
1009 if (ch >= 0x00000AF9) {
1010 if (ch <= 0x00000AFC) return 1;
1011 if (ch >= 0x00000B01) {
1012 if (ch <= 0x00000B03) return 1;
1013 if (ch >= 0x00000B05) {
1014 if (ch <= 0x00000B0C) return 1;
1015 if (ch >= 0x00000B0F) {
1016 if (ch <= 0x00000B10) return 1;
1017 if (ch >= 0x00000B13) {
1018 if (ch <= 0x00000B28) return 1;
1019 if (ch >= 0x00000B2A) {
1020 if (ch <= 0x00000B30) return 1;
1021 if (ch >= 0x00000B32) {
1022 if (ch <= 0x00000B33) return 1;
1023 if (ch >= 0x00000B35) {
1024 if (ch <= 0x00000B39) return 1;
1025 if (ch >= 0x00000B3D) {
1026 if (ch <= 0x00000B44) return 1;
1027 if (ch >= 0x00000B47) {
1028 if (ch <= 0x00000B48) return 1;
1029 if (ch >= 0x00000B4B) {
1030 if (ch <= 0x00000B4C) return 1;
1031 if (ch >= 0x00000B56) {
1032 if (ch <= 0x00000B57) return 1;
1033 if (ch >= 0x00000B5C) {
1034 if (ch <= 0x00000B5D) return 1;
1035 if (ch >= 0x00000B5F) {
1036 if (ch <= 0x00000B63) return 1;
1037 if (ch >= 0x00000B66) {
1038 if (ch <= 0x00000B6F) return 1;
1039 if (ch == 0x00000B71) return 1;
1040 if (ch >= 0x00000B82) {
1041 if (ch <= 0x00000B83) return 1;
1042 if (ch >= 0x00000B85) {
1043 if (ch <= 0x00000B8A) return 1;
1044 if (ch >= 0x00000B8E) {
1045 if (ch <= 0x00000B90) return 1;
1046 if (ch >= 0x00000B92) {
1047 if (ch <= 0x00000B95) return 1;
1048 if (ch >= 0x00000B99) {
1049 if (ch <= 0x00000B9A) return 1;
1050 if (ch == 0x00000B9C) return 1;
1051 if (ch >= 0x00000B9E) {
1052 if (ch <= 0x00000B9F) return 1;
1053 if (ch >= 0x00000BA3) {
1054 if (ch <= 0x00000BA4) return 1;
1055 if (ch >= 0x00000BA8) {
1056 if (ch <= 0x00000BAA) return 1;
1057 if (ch >= 0x00000BAE) {
1058 if (ch <= 0x00000BB9) return 1;
1059 if (ch >= 0x00000BBE) {
1060 if (ch <= 0x00000BC2) return 1;
1061 if (ch >= 0x00000BC6) {
1062 if (ch <= 0x00000BC8) return 1;
1063 if (ch >= 0x00000BCA) {
1064 if (ch <= 0x00000BCC) return 1;
1065 if (ch == 0x00000BD0) return 1;
1066 if (ch == 0x00000BD7) return 1;
1067 if (ch >= 0x00000BE6) {
1068 if (ch <= 0x00000BEF) return 1;
1069 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
1070 break;
1071 case 0x00000003:
1072 if (ch >= 0x00000C00) {
1073 if (ch <= 0x00000C03) return 1;
1074 if (ch >= 0x00000C05) {
1075 if (ch <= 0x00000C0C) return 1;
1076 if (ch >= 0x00000C0E) {
1077 if (ch <= 0x00000C10) return 1;
1078 if (ch >= 0x00000C12) {
1079 if (ch <= 0x00000C28) return 1;
1080 if (ch >= 0x00000C2A) {
1081 if (ch <= 0x00000C39) return 1;
1082 if (ch >= 0x00000C3D) {
1083 if (ch <= 0x00000C44) return 1;
1084 if (ch >= 0x00000C46) {
1085 if (ch <= 0x00000C48) return 1;
1086 if (ch >= 0x00000C4A) {
1087 if (ch <= 0x00000C4C) return 1;
1088 if (ch >= 0x00000C55) {
1089 if (ch <= 0x00000C56) return 1;
1090 if (ch >= 0x00000C58) {
1091 if (ch <= 0x00000C5A) return 1;
1092 if (ch >= 0x00000C60) {
1093 if (ch <= 0x00000C63) return 1;
1094 if (ch >= 0x00000C66) {
1095 if (ch <= 0x00000C6F) return 1;
1096 if (ch >= 0x00000C80) {
1097 if (ch <= 0x00000C83) return 1;
1098 if (ch >= 0x00000C85) {
1099 if (ch <= 0x00000C8C) return 1;
1100 if (ch >= 0x00000C8E) {
1101 if (ch <= 0x00000C90) return 1;
1102 if (ch >= 0x00000C92) {
1103 if (ch <= 0x00000CA8) return 1;
1104 if (ch >= 0x00000CAA) {
1105 if (ch <= 0x00000CB3) return 1;
1106 if (ch >= 0x00000CB5) {
1107 if (ch <= 0x00000CB9) return 1;
1108 if (ch >= 0x00000CBD) {
1109 if (ch <= 0x00000CC4) return 1;
1110 if (ch >= 0x00000CC6) {
1111 if (ch <= 0x00000CC8) return 1;
1112 if (ch >= 0x00000CCA) {
1113 if (ch <= 0x00000CCC) return 1;
1114 if (ch >= 0x00000CD5) {
1115 if (ch <= 0x00000CD6) return 1;
1116 if (ch == 0x00000CDE) return 1;
1117 if (ch >= 0x00000CE0) {
1118 if (ch <= 0x00000CE3) return 1;
1119 if (ch >= 0x00000CE6) {
1120 if (ch <= 0x00000CEF) return 1;
1121 if (ch >= 0x00000CF1) {
1122 if (ch <= 0x00000CF2) return 1;
1123 if (ch >= 0x00000D00) {
1124 if (ch <= 0x00000D03) return 1;
1125 if (ch >= 0x00000D05) {
1126 if (ch <= 0x00000D0C) return 1;
1127 if (ch >= 0x00000D0E) {
1128 if (ch <= 0x00000D10) return 1;
1129 if (ch >= 0x00000D12) {
1130 if (ch <= 0x00000D3A) return 1;
1131 if (ch >= 0x00000D3D) {
1132 if (ch <= 0x00000D44) return 1;
1133 if (ch >= 0x00000D46) {
1134 if (ch <= 0x00000D48) return 1;
1135 if (ch >= 0x00000D4A) {
1136 if (ch <= 0x00000D4C) return 1;
1137 if (ch == 0x00000D4E) return 1;
1138 if (ch >= 0x00000D54) {
1139 if (ch <= 0x00000D57) return 1;
1140 if (ch >= 0x00000D5F) {
1141 if (ch <= 0x00000D63) return 1;
1142 if (ch >= 0x00000D66) {
1143 if (ch <= 0x00000D6F) return 1;
1144 if (ch >= 0x00000D7A) {
1145 if (ch <= 0x00000D7F) return 1;
1146 if (ch >= 0x00000D82) {
1147 if (ch <= 0x00000D83) return 1;
1148 if (ch >= 0x00000D85) {
1149 if (ch <= 0x00000D96) return 1;
1150 if (ch >= 0x00000D9A) {
1151 if (ch <= 0x00000DB1) return 1;
1152 if (ch >= 0x00000DB3) {
1153 if (ch <= 0x00000DBB) return 1;
1154 if (ch == 0x00000DBD) return 1;
1155 if (ch >= 0x00000DC0) {
1156 if (ch <= 0x00000DC6) return 1;
1157 if (ch >= 0x00000DCF) {
1158 if (ch <= 0x00000DD4) return 1;
1159 if (ch == 0x00000DD6) return 1;
1160 if (ch >= 0x00000DD8) {
1161 if (ch <= 0x00000DDF) return 1;
1162 if (ch >= 0x00000DE6) {
1163 if (ch <= 0x00000DEF) return 1;
1164 if (ch >= 0x00000DF2) {
1165 if (ch <= 0x00000DF3) return 1;
1166 if (ch >= 0x00000E01) {
1167 if (ch <= 0x00000E3A) return 1;
1168 if (ch >= 0x00000E40) {
1169 if (ch <= 0x00000E46) return 1;
1170 if (ch == 0x00000E4D) return 1;
1171 if (ch >= 0x00000E50) {
1172 if (ch <= 0x00000E59) return 1;
1173 if (ch >= 0x00000E81) {
1174 if (ch <= 0x00000E82) return 1;
1175 if (ch == 0x00000E84) return 1;
1176 if (ch >= 0x00000E87) {
1177 if (ch <= 0x00000E88) return 1;
1178 if (ch == 0x00000E8A) return 1;
1179 if (ch == 0x00000E8D) return 1;
1180 if (ch >= 0x00000E94) {
1181 if (ch <= 0x00000E97) return 1;
1182 if (ch >= 0x00000E99) {
1183 if (ch <= 0x00000E9F) return 1;
1184 if (ch >= 0x00000EA1) {
1185 if (ch <= 0x00000EA3) return 1;
1186 if (ch == 0x00000EA5) return 1;
1187 if (ch == 0x00000EA7) return 1;
1188 if (ch >= 0x00000EAA) {
1189 if (ch <= 0x00000EAB) return 1;
1190 if (ch >= 0x00000EAD) {
1191 if (ch <= 0x00000EB9) return 1;
1192 if (ch >= 0x00000EBB) {
1193 if (ch <= 0x00000EBD) return 1;
1194 if (ch >= 0x00000EC0) {
1195 if (ch <= 0x00000EC4) return 1;
1196 if (ch == 0x00000EC6) return 1;
1197 if (ch == 0x00000ECD) return 1;
1198 if (ch >= 0x00000ED0) {
1199 if (ch <= 0x00000ED9) return 1;
1200 if (ch >= 0x00000EDC) {
1201 if (ch <= 0x00000EDF) return 1;
1202 if (ch == 0x00000F00) return 1;
1203 if (ch >= 0x00000F20) {
1204 if (ch <= 0x00000F29) return 1;
1205 if (ch >= 0x00000F40) {
1206 if (ch <= 0x00000F47) return 1;
1207 if (ch >= 0x00000F49) {
1208 if (ch <= 0x00000F6C) return 1;
1209 if (ch >= 0x00000F71) {
1210 if (ch <= 0x00000F81) return 1;
1211 if (ch >= 0x00000F88) {
1212 if (ch <= 0x00000F97) return 1;
1213 if (ch >= 0x00000F99) {
1214 if (ch <= 0x00000FBC) return 1;
1215 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
1216 break;
1217 case 0x00000004:
1218 if (ch >= 0x00001000) {
1219 if (ch <= 0x00001036) return 1;
1220 if (ch == 0x00001038) return 1;
1221 if (ch >= 0x0000103B) {
1222 if (ch <= 0x00001049) return 1;
1223 if (ch >= 0x00001050) {
1224 if (ch <= 0x00001062) return 1;
1225 if (ch >= 0x00001065) {
1226 if (ch <= 0x00001068) return 1;
1227 if (ch >= 0x0000106E) {
1228 if (ch <= 0x00001086) return 1;
1229 if (ch == 0x0000108E) return 1;
1230 if (ch >= 0x00001090) {
1231 if (ch <= 0x00001099) return 1;
1232 if (ch >= 0x0000109C) {
1233 if (ch <= 0x0000109D) return 1;
1234 if (ch >= 0x000010A0) {
1235 if (ch <= 0x000010C5) return 1;
1236 if (ch == 0x000010C7) return 1;
1237 if (ch == 0x000010CD) return 1;
1238 if (ch >= 0x000010D0) {
1239 if (ch <= 0x000010FA) return 1;
1240 if (ch >= 0x000010FC) {
1241 if (ch <= 0x00001248) return 1;
1242 if (ch >= 0x0000124A) {
1243 if (ch <= 0x0000124D) return 1;
1244 if (ch >= 0x00001250) {
1245 if (ch <= 0x00001256) return 1;
1246 if (ch == 0x00001258) return 1;
1247 if (ch >= 0x0000125A) {
1248 if (ch <= 0x0000125D) return 1;
1249 if (ch >= 0x00001260) {
1250 if (ch <= 0x00001288) return 1;
1251 if (ch >= 0x0000128A) {
1252 if (ch <= 0x0000128D) return 1;
1253 if (ch >= 0x00001290) {
1254 if (ch <= 0x000012B0) return 1;
1255 if (ch >= 0x000012B2) {
1256 if (ch <= 0x000012B5) return 1;
1257 if (ch >= 0x000012B8) {
1258 if (ch <= 0x000012BE) return 1;
1259 if (ch == 0x000012C0) return 1;
1260 if (ch >= 0x000012C2) {
1261 if (ch <= 0x000012C5) return 1;
1262 if (ch >= 0x000012C8) {
1263 if (ch <= 0x000012D6) return 1;
1264 if (ch >= 0x000012D8) {
1265 if (ch <= 0x00001310) return 1;
1266 if (ch >= 0x00001312) {
1267 if (ch <= 0x00001315) return 1;
1268 if (ch >= 0x00001318) {
1269 if (ch <= 0x0000135A) return 1;
1270 if (ch == 0x0000135F) return 1;
1271 if (ch >= 0x00001380) {
1272 if (ch <= 0x0000138F) return 1;
1273 if (ch >= 0x000013A0) {
1274 if (ch <= 0x000013F5) return 1;
1275 if (ch >= 0x000013F8) {
1276 if (ch <= 0x000013FD) return 1;
1277 }}}}}}}}}}}}}}}}}}}}}}}}}}
1278 break;
1279 case 0x00000005:
1280 if (ch >= 0x00001401) {
1281 if (ch <= 0x0000166C) return 1;
1282 if (ch >= 0x0000166F) {
1283 if (ch <= 0x0000167F) return 1;
1284 if (ch >= 0x00001681) {
1285 if (ch <= 0x0000169A) return 1;
1286 if (ch >= 0x000016A0) {
1287 if (ch <= 0x000016EA) return 1;
1288 if (ch >= 0x000016EE) {
1289 if (ch <= 0x000016F8) return 1;
1290 if (ch >= 0x00001700) {
1291 if (ch <= 0x0000170C) return 1;
1292 if (ch >= 0x0000170E) {
1293 if (ch <= 0x00001713) return 1;
1294 if (ch >= 0x00001720) {
1295 if (ch <= 0x00001733) return 1;
1296 if (ch >= 0x00001740) {
1297 if (ch <= 0x00001753) return 1;
1298 if (ch >= 0x00001760) {
1299 if (ch <= 0x0000176C) return 1;
1300 if (ch >= 0x0000176E) {
1301 if (ch <= 0x00001770) return 1;
1302 if (ch >= 0x00001772) {
1303 if (ch <= 0x00001773) return 1;
1304 if (ch >= 0x00001780) {
1305 if (ch <= 0x000017B3) return 1;
1306 if (ch >= 0x000017B6) {
1307 if (ch <= 0x000017C8) return 1;
1308 if (ch == 0x000017D7) return 1;
1309 if (ch == 0x000017DC) return 1;
1310 if (ch >= 0x000017E0) {
1311 if (ch <= 0x000017E9) return 1;
1312 }}}}}}}}}}}}}}}
1313 break;
1314 case 0x00000006:
1315 if (ch >= 0x00001810) {
1316 if (ch <= 0x00001819) return 1;
1317 if (ch >= 0x00001820) {
1318 if (ch <= 0x00001877) return 1;
1319 if (ch >= 0x00001880) {
1320 if (ch <= 0x000018AA) return 1;
1321 if (ch >= 0x000018B0) {
1322 if (ch <= 0x000018F5) return 1;
1323 if (ch >= 0x00001900) {
1324 if (ch <= 0x0000191E) return 1;
1325 if (ch >= 0x00001920) {
1326 if (ch <= 0x0000192B) return 1;
1327 if (ch >= 0x00001930) {
1328 if (ch <= 0x00001938) return 1;
1329 if (ch >= 0x00001946) {
1330 if (ch <= 0x0000196D) return 1;
1331 if (ch >= 0x00001970) {
1332 if (ch <= 0x00001974) return 1;
1333 if (ch >= 0x00001980) {
1334 if (ch <= 0x000019AB) return 1;
1335 if (ch >= 0x000019B0) {
1336 if (ch <= 0x000019C9) return 1;
1337 if (ch >= 0x000019D0) {
1338 if (ch <= 0x000019D9) return 1;
1339 if (ch >= 0x00001A00) {
1340 if (ch <= 0x00001A1B) return 1;
1341 if (ch >= 0x00001A20) {
1342 if (ch <= 0x00001A5E) return 1;
1343 if (ch >= 0x00001A61) {
1344 if (ch <= 0x00001A74) return 1;
1345 if (ch >= 0x00001A80) {
1346 if (ch <= 0x00001A89) return 1;
1347 if (ch >= 0x00001A90) {
1348 if (ch <= 0x00001A99) return 1;
1349 if (ch == 0x00001AA7) return 1;
1350 if (ch >= 0x00001B00) {
1351 if (ch <= 0x00001B33) return 1;
1352 if (ch >= 0x00001B35) {
1353 if (ch <= 0x00001B43) return 1;
1354 if (ch >= 0x00001B45) {
1355 if (ch <= 0x00001B4B) return 1;
1356 if (ch >= 0x00001B50) {
1357 if (ch <= 0x00001B59) return 1;
1358 if (ch >= 0x00001B80) {
1359 if (ch <= 0x00001BA9) return 1;
1360 if (ch >= 0x00001BAC) {
1361 if (ch <= 0x00001BE5) return 1;
1362 if (ch >= 0x00001BE7) {
1363 if (ch <= 0x00001BF1) return 1;
1364 }}}}}}}}}}}}}}}}}}}}}}}}
1365 break;
1366 case 0x00000007:
1367 if (ch >= 0x00001C00) {
1368 if (ch <= 0x00001C35) return 1;
1369 if (ch >= 0x00001C40) {
1370 if (ch <= 0x00001C49) return 1;
1371 if (ch >= 0x00001C4D) {
1372 if (ch <= 0x00001C7D) return 1;
1373 if (ch >= 0x00001C80) {
1374 if (ch <= 0x00001C88) return 1;
1375 if (ch >= 0x00001CE9) {
1376 if (ch <= 0x00001CEC) return 1;
1377 if (ch >= 0x00001CEE) {
1378 if (ch <= 0x00001CF3) return 1;
1379 if (ch >= 0x00001CF5) {
1380 if (ch <= 0x00001CF6) return 1;
1381 if (ch >= 0x00001D00) {
1382 if (ch <= 0x00001DBF) return 1;
1383 if (ch >= 0x00001DE7) {
1384 if (ch <= 0x00001DF4) return 1;
1385 if (ch >= 0x00001E00) {
1386 if (ch <= 0x00001F15) return 1;
1387 if (ch >= 0x00001F18) {
1388 if (ch <= 0x00001F1D) return 1;
1389 if (ch >= 0x00001F20) {
1390 if (ch <= 0x00001F45) return 1;
1391 if (ch >= 0x00001F48) {
1392 if (ch <= 0x00001F4D) return 1;
1393 if (ch >= 0x00001F50) {
1394 if (ch <= 0x00001F57) return 1;
1395 if (ch == 0x00001F59) return 1;
1396 if (ch == 0x00001F5B) return 1;
1397 if (ch == 0x00001F5D) return 1;
1398 if (ch >= 0x00001F5F) {
1399 if (ch <= 0x00001F7D) return 1;
1400 if (ch >= 0x00001F80) {
1401 if (ch <= 0x00001FB4) return 1;
1402 if (ch >= 0x00001FB6) {
1403 if (ch <= 0x00001FBC) return 1;
1404 if (ch == 0x00001FBE) return 1;
1405 if (ch >= 0x00001FC2) {
1406 if (ch <= 0x00001FC4) return 1;
1407 if (ch >= 0x00001FC6) {
1408 if (ch <= 0x00001FCC) return 1;
1409 if (ch >= 0x00001FD0) {
1410 if (ch <= 0x00001FD3) return 1;
1411 if (ch >= 0x00001FD6) {
1412 if (ch <= 0x00001FDB) return 1;
1413 if (ch >= 0x00001FE0) {
1414 if (ch <= 0x00001FEC) return 1;
1415 if (ch >= 0x00001FF2) {
1416 if (ch <= 0x00001FF4) return 1;
1417 if (ch >= 0x00001FF6) {
1418 if (ch <= 0x00001FFC) return 1;
1419 }}}}}}}}}}}}}}}}}}}}}}}}
1420 break;
1421 case 0x00000008:
1422 if (ch == 0x00002071) return 1;
1423 if (ch == 0x0000207F) return 1;
1424 if (ch >= 0x00002090) {
1425 if (ch <= 0x0000209C) return 1;
1426 if (ch == 0x00002102) return 1;
1427 if (ch == 0x00002107) return 1;
1428 if (ch >= 0x0000210A) {
1429 if (ch <= 0x00002113) return 1;
1430 if (ch == 0x00002115) return 1;
1431 if (ch >= 0x00002119) {
1432 if (ch <= 0x0000211D) return 1;
1433 if (ch == 0x00002124) return 1;
1434 if (ch == 0x00002126) return 1;
1435 if (ch == 0x00002128) return 1;
1436 if (ch >= 0x0000212A) {
1437 if (ch <= 0x0000212D) return 1;
1438 if (ch >= 0x0000212F) {
1439 if (ch <= 0x00002139) return 1;
1440 if (ch >= 0x0000213C) {
1441 if (ch <= 0x0000213F) return 1;
1442 if (ch >= 0x00002145) {
1443 if (ch <= 0x00002149) return 1;
1444 if (ch == 0x0000214E) return 1;
1445 if (ch >= 0x00002160) {
1446 if (ch <= 0x00002188) return 1;
1447 }}}}}}}}
1448 break;
1449 case 0x00000009:
1450 if (ch >= 0x000024B6) {
1451 if (ch <= 0x000024E9) return 1;
1452 }
1453 break;
1454 case 0x0000000B:
1455 if (ch >= 0x00002C00) {
1456 if (ch <= 0x00002C2E) return 1;
1457 if (ch >= 0x00002C30) {
1458 if (ch <= 0x00002C5E) return 1;
1459 if (ch >= 0x00002C60) {
1460 if (ch <= 0x00002CE4) return 1;
1461 if (ch >= 0x00002CEB) {
1462 if (ch <= 0x00002CEE) return 1;
1463 if (ch >= 0x00002CF2) {
1464 if (ch <= 0x00002CF3) return 1;
1465 if (ch >= 0x00002D00) {
1466 if (ch <= 0x00002D25) return 1;
1467 if (ch == 0x00002D27) return 1;
1468 if (ch == 0x00002D2D) return 1;
1469 if (ch >= 0x00002D30) {
1470 if (ch <= 0x00002D67) return 1;
1471 if (ch == 0x00002D6F) return 1;
1472 if (ch >= 0x00002D80) {
1473 if (ch <= 0x00002D96) return 1;
1474 if (ch >= 0x00002DA0) {
1475 if (ch <= 0x00002DA6) return 1;
1476 if (ch >= 0x00002DA8) {
1477 if (ch <= 0x00002DAE) return 1;
1478 if (ch >= 0x00002DB0) {
1479 if (ch <= 0x00002DB6) return 1;
1480 if (ch >= 0x00002DB8) {
1481 if (ch <= 0x00002DBE) return 1;
1482 if (ch >= 0x00002DC0) {
1483 if (ch <= 0x00002DC6) return 1;
1484 if (ch >= 0x00002DC8) {
1485 if (ch <= 0x00002DCE) return 1;
1486 if (ch >= 0x00002DD0) {
1487 if (ch <= 0x00002DD6) return 1;
1488 if (ch >= 0x00002DD8) {
1489 if (ch <= 0x00002DDE) return 1;
1490 if (ch >= 0x00002DE0) {
1491 if (ch <= 0x00002DFF) return 1;
1492 if (ch == 0x00002E2F) return 1;
1493 }}}}}}}}}}}}}}}}}
1494 break;
1495 case 0x0000000C:
1496 if (ch >= 0x00003005) {
1497 if (ch <= 0x00003007) return 1;
1498 if (ch >= 0x00003021) {
1499 if (ch <= 0x00003029) return 1;
1500 if (ch >= 0x00003031) {
1501 if (ch <= 0x00003035) return 1;
1502 if (ch >= 0x00003038) {
1503 if (ch <= 0x0000303C) return 1;
1504 if (ch >= 0x00003041) {
1505 if (ch <= 0x00003096) return 1;
1506 if (ch >= 0x0000309D) {
1507 if (ch <= 0x0000309F) return 1;
1508 if (ch >= 0x000030A1) {
1509 if (ch <= 0x000030FA) return 1;
1510 if (ch >= 0x000030FC) {
1511 if (ch <= 0x000030FF) return 1;
1512 if (ch >= 0x00003105) {
1513 if (ch <= 0x0000312E) return 1;
1514 if (ch >= 0x00003131) {
1515 if (ch <= 0x0000318E) return 1;
1516 if (ch >= 0x000031A0) {
1517 if (ch <= 0x000031BA) return 1;
1518 if (ch >= 0x000031F0) {
1519 if (ch <= 0x000031FF) return 1;
1520 }}}}}}}}}}}}
1521 break;
1522 case 0x0000000D:
1523 if (ch >= 0x00003400) {
1524 if (ch <= 0x00004DB5) return 1;
1525 }
1526 break;
1527 case 0x00000013:
1528 if (ch >= 0x00004E00) {
1529 if (ch <= 0x00009FEA) return 1;
1530 }
1531 break;
1532 case 0x00000028:
1533 if (ch >= 0x0000A000) {
1534 if (ch <= 0x0000A48C) return 1;
1535 }
1536 break;
1537 case 0x00000029:
1538 if (ch >= 0x0000A4D0) {
1539 if (ch <= 0x0000A4FD) return 1;
1540 if (ch >= 0x0000A500) {
1541 if (ch <= 0x0000A60C) return 1;
1542 if (ch >= 0x0000A610) {
1543 if (ch <= 0x0000A62B) return 1;
1544 if (ch >= 0x0000A640) {
1545 if (ch <= 0x0000A66E) return 1;
1546 if (ch >= 0x0000A674) {
1547 if (ch <= 0x0000A67B) return 1;
1548 if (ch >= 0x0000A67F) {
1549 if (ch <= 0x0000A6EF) return 1;
1550 if (ch >= 0x0000A717) {
1551 if (ch <= 0x0000A71F) return 1;
1552 if (ch >= 0x0000A722) {
1553 if (ch <= 0x0000A788) return 1;
1554 if (ch >= 0x0000A78B) {
1555 if (ch <= 0x0000A7AE) return 1;
1556 if (ch >= 0x0000A7B0) {
1557 if (ch <= 0x0000A7B7) return 1;
1558 if (ch >= 0x0000A7F7) {
1559 if (ch <= 0x0000A801) return 1;
1560 }}}}}}}}}}}
1561 break;
1562 case 0x0000002A:
1563 if (ch >= 0x0000A803) {
1564 if (ch <= 0x0000A805) return 1;
1565 if (ch >= 0x0000A807) {
1566 if (ch <= 0x0000A80A) return 1;
1567 if (ch >= 0x0000A80C) {
1568 if (ch <= 0x0000A827) return 1;
1569 if (ch >= 0x0000A840) {
1570 if (ch <= 0x0000A873) return 1;
1571 if (ch >= 0x0000A880) {
1572 if (ch <= 0x0000A8C3) return 1;
1573 if (ch == 0x0000A8C5) return 1;
1574 if (ch >= 0x0000A8D0) {
1575 if (ch <= 0x0000A8D9) return 1;
1576 if (ch >= 0x0000A8F2) {
1577 if (ch <= 0x0000A8F7) return 1;
1578 if (ch == 0x0000A8FB) return 1;
1579 if (ch == 0x0000A8FD) return 1;
1580 if (ch >= 0x0000A900) {
1581 if (ch <= 0x0000A92A) return 1;
1582 if (ch >= 0x0000A930) {
1583 if (ch <= 0x0000A952) return 1;
1584 if (ch >= 0x0000A960) {
1585 if (ch <= 0x0000A97C) return 1;
1586 if (ch >= 0x0000A980) {
1587 if (ch <= 0x0000A9B2) return 1;
1588 if (ch >= 0x0000A9B4) {
1589 if (ch <= 0x0000A9BF) return 1;
1590 if (ch >= 0x0000A9CF) {
1591 if (ch <= 0x0000A9D9) return 1;
1592 if (ch >= 0x0000A9E0) {
1593 if (ch <= 0x0000A9E4) return 1;
1594 if (ch >= 0x0000A9E6) {
1595 if (ch <= 0x0000A9FE) return 1;
1596 if (ch >= 0x0000AA00) {
1597 if (ch <= 0x0000AA36) return 1;
1598 if (ch >= 0x0000AA40) {
1599 if (ch <= 0x0000AA4D) return 1;
1600 if (ch >= 0x0000AA50) {
1601 if (ch <= 0x0000AA59) return 1;
1602 if (ch >= 0x0000AA60) {
1603 if (ch <= 0x0000AA76) return 1;
1604 if (ch == 0x0000AA7A) return 1;
1605 if (ch >= 0x0000AA7E) {
1606 if (ch <= 0x0000AABE) return 1;
1607 if (ch == 0x0000AAC0) return 1;
1608 if (ch == 0x0000AAC2) return 1;
1609 if (ch >= 0x0000AADB) {
1610 if (ch <= 0x0000AADD) return 1;
1611 if (ch >= 0x0000AAE0) {
1612 if (ch <= 0x0000AAEF) return 1;
1613 if (ch >= 0x0000AAF2) {
1614 if (ch <= 0x0000AAF5) return 1;
1615 if (ch >= 0x0000AB01) {
1616 if (ch <= 0x0000AB06) return 1;
1617 if (ch >= 0x0000AB09) {
1618 if (ch <= 0x0000AB0E) return 1;
1619 if (ch >= 0x0000AB11) {
1620 if (ch <= 0x0000AB16) return 1;
1621 if (ch >= 0x0000AB20) {
1622 if (ch <= 0x0000AB26) return 1;
1623 if (ch >= 0x0000AB28) {
1624 if (ch <= 0x0000AB2E) return 1;
1625 if (ch >= 0x0000AB30) {
1626 if (ch <= 0x0000AB5A) return 1;
1627 if (ch >= 0x0000AB5C) {
1628 if (ch <= 0x0000AB65) return 1;
1629 if (ch >= 0x0000AB70) {
1630 if (ch <= 0x0000ABEA) return 1;
1631 if (ch >= 0x0000ABF0) {
1632 if (ch <= 0x0000ABF9) return 1;
1633 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
1634 break;
1635 case 0x0000002B:
1636 if (ch >= 0x0000AC00) {
1637 if (ch <= 0x0000D7A3) return 1;
1638 }
1639 break;
1640 case 0x00000035:
1641 if (ch >= 0x0000D7B0) {
1642 if (ch <= 0x0000D7C6) return 1;
1643 if (ch >= 0x0000D7CB) {
1644 if (ch <= 0x0000D7FB) return 1;
1645 }}
1646 break;
1647 case 0x0000003E:
1648 if (ch >= 0x0000F900) {
1649 if (ch <= 0x0000FA6D) return 1;
1650 if (ch >= 0x0000FA70) {
1651 if (ch <= 0x0000FAD9) return 1;
1652 if (ch >= 0x0000FB00) {
1653 if (ch <= 0x0000FB06) return 1;
1654 if (ch >= 0x0000FB13) {
1655 if (ch <= 0x0000FB17) return 1;
1656 if (ch >= 0x0000FB1D) {
1657 if (ch <= 0x0000FB28) return 1;
1658 if (ch >= 0x0000FB2A) {
1659 if (ch <= 0x0000FB36) return 1;
1660 if (ch >= 0x0000FB38) {
1661 if (ch <= 0x0000FB3C) return 1;
1662 if (ch == 0x0000FB3E) return 1;
1663 if (ch >= 0x0000FB40) {
1664 if (ch <= 0x0000FB41) return 1;
1665 if (ch >= 0x0000FB43) {
1666 if (ch <= 0x0000FB44) return 1;
1667 if (ch >= 0x0000FB46) {
1668 if (ch <= 0x0000FBB1) return 1;
1669 if (ch >= 0x0000FBD3) {
1670 if (ch <= 0x0000FD3D) return 1;
1671 }}}}}}}}}}}
1672 break;
1673 case 0x0000003F:
1674 if (ch >= 0x0000FD50) {
1675 if (ch <= 0x0000FD8F) return 1;
1676 if (ch >= 0x0000FD92) {
1677 if (ch <= 0x0000FDC7) return 1;
1678 if (ch >= 0x0000FDF0) {
1679 if (ch <= 0x0000FDFB) return 1;
1680 if (ch >= 0x0000FE70) {
1681 if (ch <= 0x0000FE74) return 1;
1682 if (ch >= 0x0000FE76) {
1683 if (ch <= 0x0000FEFC) return 1;
1684 if (ch >= 0x0000FF10) {
1685 if (ch <= 0x0000FF19) return 1;
1686 if (ch >= 0x0000FF21) {
1687 if (ch <= 0x0000FF3A) return 1;
1688 if (ch >= 0x0000FF41) {
1689 if (ch <= 0x0000FF5A) return 1;
1690 if (ch >= 0x0000FF66) {
1691 if (ch <= 0x0000FFBE) return 1;
1692 if (ch >= 0x0000FFC2) {
1693 if (ch <= 0x0000FFC7) return 1;
1694 if (ch >= 0x0000FFCA) {
1695 if (ch <= 0x0000FFCF) return 1;
1696 if (ch >= 0x0000FFD2) {
1697 if (ch <= 0x0000FFD7) return 1;
1698 if (ch >= 0x0000FFDA) {
1699 if (ch <= 0x0000FFDC) return 1;
1700 }}}}}}}}}}}}}
1701 break;
1702 case 0x00000040:
1703 if (ch >= 0x00010000) {
1704 if (ch <= 0x0001000B) return 1;
1705 if (ch >= 0x0001000D) {
1706 if (ch <= 0x00010026) return 1;
1707 if (ch >= 0x00010028) {
1708 if (ch <= 0x0001003A) return 1;
1709 if (ch >= 0x0001003C) {
1710 if (ch <= 0x0001003D) return 1;
1711 if (ch >= 0x0001003F) {
1712 if (ch <= 0x0001004D) return 1;
1713 if (ch >= 0x00010050) {
1714 if (ch <= 0x0001005D) return 1;
1715 if (ch >= 0x00010080) {
1716 if (ch <= 0x000100FA) return 1;
1717 if (ch >= 0x00010140) {
1718 if (ch <= 0x00010174) return 1;
1719 if (ch >= 0x00010280) {
1720 if (ch <= 0x0001029C) return 1;
1721 if (ch >= 0x000102A0) {
1722 if (ch <= 0x000102D0) return 1;
1723 if (ch >= 0x00010300) {
1724 if (ch <= 0x0001031F) return 1;
1725 if (ch >= 0x0001032D) {
1726 if (ch <= 0x0001034A) return 1;
1727 if (ch >= 0x00010350) {
1728 if (ch <= 0x0001037A) return 1;
1729 if (ch >= 0x00010380) {
1730 if (ch <= 0x0001039D) return 1;
1731 if (ch >= 0x000103A0) {
1732 if (ch <= 0x000103C3) return 1;
1733 if (ch >= 0x000103C8) {
1734 if (ch <= 0x000103CF) return 1;
1735 if (ch >= 0x000103D1) {
1736 if (ch <= 0x000103D5) return 1;
1737 }}}}}}}}}}}}}}}}}
1738 break;
1739 case 0x00000041:
1740 if (ch >= 0x00010400) {
1741 if (ch <= 0x0001049D) return 1;
1742 if (ch >= 0x000104A0) {
1743 if (ch <= 0x000104A9) return 1;
1744 if (ch >= 0x000104B0) {
1745 if (ch <= 0x000104D3) return 1;
1746 if (ch >= 0x000104D8) {
1747 if (ch <= 0x000104FB) return 1;
1748 if (ch >= 0x00010500) {
1749 if (ch <= 0x00010527) return 1;
1750 if (ch >= 0x00010530) {
1751 if (ch <= 0x00010563) return 1;
1752 if (ch >= 0x00010600) {
1753 if (ch <= 0x00010736) return 1;
1754 if (ch >= 0x00010740) {
1755 if (ch <= 0x00010755) return 1;
1756 if (ch >= 0x00010760) {
1757 if (ch <= 0x00010767) return 1;
1758 }}}}}}}}}
1759 break;
1760 case 0x00000042:
1761 if (ch >= 0x00010800) {
1762 if (ch <= 0x00010805) return 1;
1763 if (ch == 0x00010808) return 1;
1764 if (ch >= 0x0001080A) {
1765 if (ch <= 0x00010835) return 1;
1766 if (ch >= 0x00010837) {
1767 if (ch <= 0x00010838) return 1;
1768 if (ch == 0x0001083C) return 1;
1769 if (ch >= 0x0001083F) {
1770 if (ch <= 0x00010855) return 1;
1771 if (ch >= 0x00010860) {
1772 if (ch <= 0x00010876) return 1;
1773 if (ch >= 0x00010880) {
1774 if (ch <= 0x0001089E) return 1;
1775 if (ch >= 0x000108E0) {
1776 if (ch <= 0x000108F2) return 1;
1777 if (ch >= 0x000108F4) {
1778 if (ch <= 0x000108F5) return 1;
1779 if (ch >= 0x00010900) {
1780 if (ch <= 0x00010915) return 1;
1781 if (ch >= 0x00010920) {
1782 if (ch <= 0x00010939) return 1;
1783 if (ch >= 0x00010980) {
1784 if (ch <= 0x000109B7) return 1;
1785 if (ch >= 0x000109BE) {
1786 if (ch <= 0x000109BF) return 1;
1787 if (ch >= 0x00010A00) {
1788 if (ch <= 0x00010A03) return 1;
1789 if (ch >= 0x00010A05) {
1790 if (ch <= 0x00010A06) return 1;
1791 if (ch >= 0x00010A0C) {
1792 if (ch <= 0x00010A13) return 1;
1793 if (ch >= 0x00010A15) {
1794 if (ch <= 0x00010A17) return 1;
1795 if (ch >= 0x00010A19) {
1796 if (ch <= 0x00010A33) return 1;
1797 if (ch >= 0x00010A60) {
1798 if (ch <= 0x00010A7C) return 1;
1799 if (ch >= 0x00010A80) {
1800 if (ch <= 0x00010A9C) return 1;
1801 if (ch >= 0x00010AC0) {
1802 if (ch <= 0x00010AC7) return 1;
1803 if (ch >= 0x00010AC9) {
1804 if (ch <= 0x00010AE4) return 1;
1805 if (ch >= 0x00010B00) {
1806 if (ch <= 0x00010B35) return 1;
1807 if (ch >= 0x00010B40) {
1808 if (ch <= 0x00010B55) return 1;
1809 if (ch >= 0x00010B60) {
1810 if (ch <= 0x00010B72) return 1;
1811 if (ch >= 0x00010B80) {
1812 if (ch <= 0x00010B91) return 1;
1813 }}}}}}}}}}}}}}}}}}}}}}}}}
1814 break;
1815 case 0x00000043:
1816 if (ch >= 0x00010C00) {
1817 if (ch <= 0x00010C48) return 1;
1818 if (ch >= 0x00010C80) {
1819 if (ch <= 0x00010CB2) return 1;
1820 if (ch >= 0x00010CC0) {
1821 if (ch <= 0x00010CF2) return 1;
1822 }}}
1823 break;
1824 case 0x00000044:
1825 if (ch >= 0x00011000) {
1826 if (ch <= 0x00011045) return 1;
1827 if (ch >= 0x00011066) {
1828 if (ch <= 0x0001106F) return 1;
1829 if (ch >= 0x00011082) {
1830 if (ch <= 0x000110B8) return 1;
1831 if (ch >= 0x000110D0) {
1832 if (ch <= 0x000110E8) return 1;
1833 if (ch >= 0x000110F0) {
1834 if (ch <= 0x000110F9) return 1;
1835 if (ch >= 0x00011100) {
1836 if (ch <= 0x00011132) return 1;
1837 if (ch >= 0x00011136) {
1838 if (ch <= 0x0001113F) return 1;
1839 if (ch >= 0x00011150) {
1840 if (ch <= 0x00011172) return 1;
1841 if (ch == 0x00011176) return 1;
1842 if (ch >= 0x00011180) {
1843 if (ch <= 0x000111BF) return 1;
1844 if (ch >= 0x000111C1) {
1845 if (ch <= 0x000111C4) return 1;
1846 if (ch >= 0x000111D0) {
1847 if (ch <= 0x000111DA) return 1;
1848 if (ch == 0x000111DC) return 1;
1849 if (ch >= 0x00011200) {
1850 if (ch <= 0x00011211) return 1;
1851 if (ch >= 0x00011213) {
1852 if (ch <= 0x00011234) return 1;
1853 if (ch == 0x00011237) return 1;
1854 if (ch == 0x0001123E) return 1;
1855 if (ch >= 0x00011280) {
1856 if (ch <= 0x00011286) return 1;
1857 if (ch == 0x00011288) return 1;
1858 if (ch >= 0x0001128A) {
1859 if (ch <= 0x0001128D) return 1;
1860 if (ch >= 0x0001128F) {
1861 if (ch <= 0x0001129D) return 1;
1862 if (ch >= 0x0001129F) {
1863 if (ch <= 0x000112A8) return 1;
1864 if (ch >= 0x000112B0) {
1865 if (ch <= 0x000112E8) return 1;
1866 if (ch >= 0x000112F0) {
1867 if (ch <= 0x000112F9) return 1;
1868 if (ch >= 0x00011300) {
1869 if (ch <= 0x00011303) return 1;
1870 if (ch >= 0x00011305) {
1871 if (ch <= 0x0001130C) return 1;
1872 if (ch >= 0x0001130F) {
1873 if (ch <= 0x00011310) return 1;
1874 if (ch >= 0x00011313) {
1875 if (ch <= 0x00011328) return 1;
1876 if (ch >= 0x0001132A) {
1877 if (ch <= 0x00011330) return 1;
1878 if (ch >= 0x00011332) {
1879 if (ch <= 0x00011333) return 1;
1880 if (ch >= 0x00011335) {
1881 if (ch <= 0x00011339) return 1;
1882 if (ch >= 0x0001133D) {
1883 if (ch <= 0x00011344) return 1;
1884 if (ch >= 0x00011347) {
1885 if (ch <= 0x00011348) return 1;
1886 if (ch >= 0x0001134B) {
1887 if (ch <= 0x0001134C) return 1;
1888 if (ch == 0x00011350) return 1;
1889 if (ch == 0x00011357) return 1;
1890 if (ch >= 0x0001135D) {
1891 if (ch <= 0x00011363) return 1;
1892 }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
1893 break;
1894 case 0x00000045:
1895 if (ch >= 0x00011400) {
1896 if (ch <= 0x00011441) return 1;
1897 if (ch >= 0x00011443) {
1898 if (ch <= 0x00011445) return 1;
1899 if (ch >= 0x00011447) {
1900 if (ch <= 0x0001144A) return 1;
1901 if (ch >= 0x00011450) {
1902 if (ch <= 0x00011459) return 1;
1903 if (ch >= 0x00011480) {
1904 if (ch <= 0x000114C1) return 1;
1905 if (ch >= 0x000114C4) {
1906 if (ch <= 0x000114C5) return 1;
1907 if (ch == 0x000114C7) return 1;
1908 if (ch >= 0x000114D0) {
1909 if (ch <= 0x000114D9) return 1;
1910 if (ch >= 0x00011580) {
1911 if (ch <= 0x000115B5) return 1;
1912 if (ch >= 0x000115B8) {
1913 if (ch <= 0x000115BE) return 1;
1914 if (ch >= 0x000115D8) {
1915 if (ch <= 0x000115DD) return 1;
1916 if (ch >= 0x00011600) {
1917 if (ch <= 0x0001163E) return 1;
1918 if (ch == 0x00011640) return 1;
1919 if (ch == 0x00011644) return 1;
1920 if (ch >= 0x00011650) {
1921 if (ch <= 0x00011659) return 1;
1922 if (ch >= 0x00011680) {
1923 if (ch <= 0x000116B5) return 1;
1924 if (ch >= 0x000116C0) {
1925 if (ch <= 0x000116C9) return 1;
1926 if (ch >= 0x00011700) {
1927 if (ch <= 0x00011719) return 1;
1928 if (ch >= 0x0001171D) {
1929 if (ch <= 0x0001172A) return 1;
1930 if (ch >= 0x00011730) {
1931 if (ch <= 0x00011739) return 1;
1932 }}}}}}}}}}}}}}}}}
1933 break;
1934 case 0x00000046:
1935 if (ch >= 0x000118A0) {
1936 if (ch <= 0x000118E9) return 1;
1937 if (ch == 0x000118FF) return 1;
1938 if (ch >= 0x00011A00) {
1939 if (ch <= 0x00011A32) return 1;
1940 if (ch >= 0x00011A35) {
1941 if (ch <= 0x00011A3E) return 1;
1942 if (ch >= 0x00011A50) {
1943 if (ch <= 0x00011A83) return 1;
1944 if (ch >= 0x00011A86) {
1945 if (ch <= 0x00011A97) return 1;
1946 if (ch >= 0x00011AC0) {
1947 if (ch <= 0x00011AF8) return 1;
1948 }}}}}}
1949 break;
1950 case 0x00000047:
1951 if (ch >= 0x00011C00) {
1952 if (ch <= 0x00011C08) return 1;
1953 if (ch >= 0x00011C0A) {
1954 if (ch <= 0x00011C36) return 1;
1955 if (ch >= 0x00011C38) {
1956 if (ch <= 0x00011C3E) return 1;
1957 if (ch == 0x00011C40) return 1;
1958 if (ch >= 0x00011C50) {
1959 if (ch <= 0x00011C59) return 1;
1960 if (ch >= 0x00011C72) {
1961 if (ch <= 0x00011C8F) return 1;
1962 if (ch >= 0x00011C92) {
1963 if (ch <= 0x00011CA7) return 1;
1964 if (ch >= 0x00011CA9) {
1965 if (ch <= 0x00011CB6) return 1;
1966 if (ch >= 0x00011D00) {
1967 if (ch <= 0x00011D06) return 1;
1968 if (ch >= 0x00011D08) {
1969 if (ch <= 0x00011D09) return 1;
1970 if (ch >= 0x00011D0B) {
1971 if (ch <= 0x00011D36) return 1;
1972 if (ch == 0x00011D3A) return 1;
1973 if (ch >= 0x00011D3C) {
1974 if (ch <= 0x00011D3D) return 1;
1975 if (ch >= 0x00011D3F) {
1976 if (ch <= 0x00011D41) return 1;
1977 if (ch == 0x00011D43) return 1;
1978 if (ch >= 0x00011D46) {
1979 if (ch <= 0x00011D47) return 1;
1980 if (ch >= 0x00011D50) {
1981 if (ch <= 0x00011D59) return 1;
1982 }}}}}}}}}}}}}}
1983 break;
1984 case 0x00000048:
1985 if (ch >= 0x00012000) {
1986 if (ch <= 0x00012399) return 1;
1987 }
1988 break;
1989 case 0x00000049:
1990 if (ch >= 0x00012400) {
1991 if (ch <= 0x0001246E) return 1;
1992 if (ch >= 0x00012480) {
1993 if (ch <= 0x00012543) return 1;
1994 }}
1995 break;
1996 case 0x0000004C:
1997 if (ch >= 0x00013000) {
1998 if (ch <= 0x0001342E) return 1;
1999 }
2000 break;
2001 case 0x00000051:
2002 if (ch >= 0x00014400) {
2003 if (ch <= 0x00014646) return 1;
2004 }
2005 break;
2006 case 0x0000005A:
2007 if (ch >= 0x00016800) {
2008 if (ch <= 0x00016A38) return 1;
2009 if (ch >= 0x00016A40) {
2010 if (ch <= 0x00016A5E) return 1;
2011 if (ch >= 0x00016A60) {
2012 if (ch <= 0x00016A69) return 1;
2013 if (ch >= 0x00016AD0) {
2014 if (ch <= 0x00016AED) return 1;
2015 if (ch >= 0x00016B00) {
2016 if (ch <= 0x00016B36) return 1;
2017 if (ch >= 0x00016B40) {
2018 if (ch <= 0x00016B43) return 1;
2019 if (ch >= 0x00016B50) {
2020 if (ch <= 0x00016B59) return 1;
2021 if (ch >= 0x00016B63) {
2022 if (ch <= 0x00016B77) return 1;
2023 if (ch >= 0x00016B7D) {
2024 if (ch <= 0x00016B8F) return 1;
2025 }}}}}}}}}
2026 break;
2027 case 0x0000005B:
2028 if (ch >= 0x00016F00) {
2029 if (ch <= 0x00016F44) return 1;
2030 if (ch >= 0x00016F50) {
2031 if (ch <= 0x00016F7E) return 1;
2032 if (ch >= 0x00016F93) {
2033 if (ch <= 0x00016F9F) return 1;
2034 if (ch >= 0x00016FE0) {
2035 if (ch <= 0x00016FE1) return 1;
2036 }}}}
2037 break;
2038 case 0x0000005C:
2039 if (ch >= 0x00017000) {
2040 if (ch <= 0x000187EC) return 1;
2041 }
2042 break;
2043 case 0x00000062:
2044 if (ch >= 0x00018800) {
2045 if (ch <= 0x00018AF2) return 1;
2046 }
2047 break;
2048 case 0x0000006C:
2049 if (ch >= 0x0001B000) {
2050 if (ch <= 0x0001B11E) return 1;
2051 if (ch >= 0x0001B170) {
2052 if (ch <= 0x0001B2FB) return 1;
2053 }}
2054 break;
2055 case 0x0000006F:
2056 if (ch >= 0x0001BC00) {
2057 if (ch <= 0x0001BC6A) return 1;
2058 if (ch >= 0x0001BC70) {
2059 if (ch <= 0x0001BC7C) return 1;
2060 if (ch >= 0x0001BC80) {
2061 if (ch <= 0x0001BC88) return 1;
2062 if (ch >= 0x0001BC90) {
2063 if (ch <= 0x0001BC99) return 1;
2064 if (ch == 0x0001BC9E) return 1;
2065 }}}}
2066 break;
2067 case 0x00000075:
2068 if (ch >= 0x0001D400) {
2069 if (ch <= 0x0001D454) return 1;
2070 if (ch >= 0x0001D456) {
2071 if (ch <= 0x0001D49C) return 1;
2072 if (ch >= 0x0001D49E) {
2073 if (ch <= 0x0001D49F) return 1;
2074 if (ch == 0x0001D4A2) return 1;
2075 if (ch >= 0x0001D4A5) {
2076 if (ch <= 0x0001D4A6) return 1;
2077 if (ch >= 0x0001D4A9) {
2078 if (ch <= 0x0001D4AC) return 1;
2079 if (ch >= 0x0001D4AE) {
2080 if (ch <= 0x0001D4B9) return 1;
2081 if (ch == 0x0001D4BB) return 1;
2082 if (ch >= 0x0001D4BD) {
2083 if (ch <= 0x0001D4C3) return 1;
2084 if (ch >= 0x0001D4C5) {
2085 if (ch <= 0x0001D505) return 1;
2086 if (ch >= 0x0001D507) {
2087 if (ch <= 0x0001D50A) return 1;
2088 if (ch >= 0x0001D50D) {
2089 if (ch <= 0x0001D514) return 1;
2090 if (ch >= 0x0001D516) {
2091 if (ch <= 0x0001D51C) return 1;
2092 if (ch >= 0x0001D51E) {
2093 if (ch <= 0x0001D539) return 1;
2094 if (ch >= 0x0001D53B) {
2095 if (ch <= 0x0001D53E) return 1;
2096 if (ch >= 0x0001D540) {
2097 if (ch <= 0x0001D544) return 1;
2098 if (ch == 0x0001D546) return 1;
2099 if (ch >= 0x0001D54A) {
2100 if (ch <= 0x0001D550) return 1;
2101 if (ch >= 0x0001D552) {
2102 if (ch <= 0x0001D6A5) return 1;
2103 if (ch >= 0x0001D6A8) {
2104 if (ch <= 0x0001D6C0) return 1;
2105 if (ch >= 0x0001D6C2) {
2106 if (ch <= 0x0001D6DA) return 1;
2107 if (ch >= 0x0001D6DC) {
2108 if (ch <= 0x0001D6FA) return 1;
2109 if (ch >= 0x0001D6FC) {
2110 if (ch <= 0x0001D714) return 1;
2111 if (ch >= 0x0001D716) {
2112 if (ch <= 0x0001D734) return 1;
2113 if (ch >= 0x0001D736) {
2114 if (ch <= 0x0001D74E) return 1;
2115 if (ch >= 0x0001D750) {
2116 if (ch <= 0x0001D76E) return 1;
2117 if (ch >= 0x0001D770) {
2118 if (ch <= 0x0001D788) return 1;
2119 if (ch >= 0x0001D78A) {
2120 if (ch <= 0x0001D7A8) return 1;
2121 if (ch >= 0x0001D7AA) {
2122 if (ch <= 0x0001D7C2) return 1;
2123 if (ch >= 0x0001D7C4) {
2124 if (ch <= 0x0001D7CB) return 1;
2125 if (ch >= 0x0001D7CE) {
2126 if (ch <= 0x0001D7FF) return 1;
2127 }}}}}}}}}}}}}}}}}}}}}}}}}}}}
2128 break;
2129 case 0x00000078:
2130 if (ch >= 0x0001E000) {
2131 if (ch <= 0x0001E006) return 1;
2132 if (ch >= 0x0001E008) {
2133 if (ch <= 0x0001E018) return 1;
2134 if (ch >= 0x0001E01B) {
2135 if (ch <= 0x0001E021) return 1;
2136 if (ch >= 0x0001E023) {
2137 if (ch <= 0x0001E024) return 1;
2138 if (ch >= 0x0001E026) {
2139 if (ch <= 0x0001E02A) return 1;
2140 }}}}}
2141 break;
2142 case 0x0000007A:
2143 if (ch >= 0x0001E800) {
2144 if (ch <= 0x0001E8C4) return 1;
2145 if (ch >= 0x0001E900) {
2146 if (ch <= 0x0001E943) return 1;
2147 if (ch == 0x0001E947) return 1;
2148 if (ch >= 0x0001E950) {
2149 if (ch <= 0x0001E959) return 1;
2150 }}}
2151 break;
2152 case 0x0000007B:
2153 if (ch >= 0x0001EE00) {
2154 if (ch <= 0x0001EE03) return 1;
2155 if (ch >= 0x0001EE05) {
2156 if (ch <= 0x0001EE1F) return 1;
2157 if (ch >= 0x0001EE21) {
2158 if (ch <= 0x0001EE22) return 1;
2159 if (ch == 0x0001EE24) return 1;
2160 if (ch == 0x0001EE27) return 1;
2161 if (ch >= 0x0001EE29) {
2162 if (ch <= 0x0001EE32) return 1;
2163 if (ch >= 0x0001EE34) {
2164 if (ch <= 0x0001EE37) return 1;
2165 if (ch == 0x0001EE39) return 1;
2166 if (ch == 0x0001EE3B) return 1;
2167 if (ch == 0x0001EE42) return 1;
2168 if (ch == 0x0001EE47) return 1;
2169 if (ch == 0x0001EE49) return 1;
2170 if (ch == 0x0001EE4B) return 1;
2171 if (ch >= 0x0001EE4D) {
2172 if (ch <= 0x0001EE4F) return 1;
2173 if (ch >= 0x0001EE51) {
2174 if (ch <= 0x0001EE52) return 1;
2175 if (ch == 0x0001EE54) return 1;
2176 if (ch == 0x0001EE57) return 1;
2177 if (ch == 0x0001EE59) return 1;
2178 if (ch == 0x0001EE5B) return 1;
2179 if (ch == 0x0001EE5D) return 1;
2180 if (ch == 0x0001EE5F) return 1;
2181 if (ch >= 0x0001EE61) {
2182 if (ch <= 0x0001EE62) return 1;
2183 if (ch == 0x0001EE64) return 1;
2184 if (ch >= 0x0001EE67) {
2185 if (ch <= 0x0001EE6A) return 1;
2186 if (ch >= 0x0001EE6C) {
2187 if (ch <= 0x0001EE72) return 1;
2188 if (ch >= 0x0001EE74) {
2189 if (ch <= 0x0001EE77) return 1;
2190 if (ch >= 0x0001EE79) {
2191 if (ch <= 0x0001EE7C) return 1;
2192 if (ch == 0x0001EE7E) return 1;
2193 if (ch >= 0x0001EE80) {
2194 if (ch <= 0x0001EE89) return 1;
2195 if (ch >= 0x0001EE8B) {
2196 if (ch <= 0x0001EE9B) return 1;
2197 if (ch >= 0x0001EEA1) {
2198 if (ch <= 0x0001EEA3) return 1;
2199 if (ch >= 0x0001EEA5) {
2200 if (ch <= 0x0001EEA9) return 1;
2201 if (ch >= 0x0001EEAB) {
2202 if (ch <= 0x0001EEBB) return 1;
2203 }}}}}}}}}}}}}}}}}
2204 break;
2205 case 0x0000007C:
2206 if (ch >= 0x0001F130) {
2207 if (ch <= 0x0001F149) return 1;
2208 if (ch >= 0x0001F150) {
2209 if (ch <= 0x0001F169) return 1;
2210 if (ch >= 0x0001F170) {
2211 if (ch <= 0x0001F189) return 1;
2212 }}}
2213 break;
2214 case 0x00000080:
2215 if (ch >= 0x00020000) {
2216 if (ch <= 0x0002A6D6) return 1;
2217 }
2218 break;
2219 case 0x000000A9:
2220 if (ch >= 0x0002A700) {
2221 if (ch <= 0x0002B734) return 1;
2222 }
2223 break;
2224 case 0x000000AD:
2225 if (ch >= 0x0002B740) {
2226 if (ch <= 0x0002B81D) return 1;
2227 }
2228 break;
2229 case 0x000000AE:
2230 if (ch >= 0x0002B820) {
2231 if (ch <= 0x0002CEA1) return 1;
2232 }
2233 break;
2234 case 0x000000B3:
2235 if (ch >= 0x0002CEB0) {
2236 if (ch <= 0x0002EBE0) return 1;
2237 }
2238 break;
2239 case 0x000000BE:
2240 if (ch >= 0x0002F800) {
2241 if (ch <= 0x0002FA1D) return 1;
2242 }
2243 break;
2244 }
2245
2246 /* END::UTF8SWITCH */
2247 #endif
2248
2249 return 0;
2250 }
2251
2252 static inline zend_bool isualnum(unsigned ch)
2253 {
2254 /* digits */
2255 if (ch >= 0x30 && ch <= 0x39) {
2256 return 1;
2257 }
2258 return isualpha(ch);
2259 }
2260
2261 static inline size_t wctoutf16(unsigned short u16[2], unsigned wc)
2262 {
2263 if (wc > 0x10ffff || (wc >= 0xd800 && wc <= 0xdfff)) {
2264 return 0;
2265 }
2266
2267 if (wc <= 0xffff) {
2268 u16[0] = (unsigned short) wc;
2269 return 1;
2270 }
2271
2272 wc -= 0x10000;
2273 u16[0] = (unsigned short) ((wc >> 10) + 0xd800);
2274 u16[1] = (unsigned short) ((wc & 0x3ff) + 0xdc00);
2275 return 2;
2276 }
2277
2278 static inline size_t utf16towc(unsigned *wc, unsigned short *u16_str, size_t u16_len)
2279 {
2280 if (u16_len < 1) {
2281 return 0;
2282 }
2283 if (u16_str[0] - 0xd800 >= 0x800) {
2284 *wc = u16_str[0];
2285 return 1;
2286 }
2287 if (u16_len < 2 || (u16_str[0] & 0xfffffc00) != 0xd800 || (u16_str[1] & 0xfffffc00) != 0xdc00) {
2288 return 0;
2289 }
2290 *wc = (u16_str[0] << 10) + u16_str[1] - 0x35fdc00;
2291 return 2;
2292 }
2293
2294 #endif /* PHP_HTTP_UTF8_H */
2295
2296 /*
2297 * Local variables:
2298 * tab-width: 4
2299 * c-basic-offset: 4
2300 * End:
2301 * vim600: noet sw=4 ts=4 fdm=marker
2302 * vim<600: noet sw=4 ts=4
2303 */