1 /*
2 * Do not edit this file!
3 * This file is generated from:
4 * UnicodeData.txt (version 6.3.0)
5 * SpecialCasing.txt (version 6.3.0)
6 */
7
8 #include <stddef.h>
9 #include <idn/utf32.h>
10 #include <idn/auto/lowercase.h>
11
12 /*
13 * Lowercase tables.
14 */
15 #define LOWERCASE_BITS_0 9
16 #define LOWERCASE_BITS_1 7
17 #define LOWERCASE_BITS_2 5
18
19 static const unsigned short lowercase_imap[] = {
20 272, 400, 528, 656, 656, 656, 656, 656,
21 656, 656, 784, 656, 656, 656, 656, 912,
22 1040, 656, 656, 656, 656, 656, 656, 656,
23 656, 656, 656, 656, 656, 656, 656, 656,
24 656, 656, 656, 656, 656, 656, 656, 656,
25 656, 656, 656, 656, 656, 656, 656, 656,
26 656, 656, 656, 656, 656, 656, 656, 656,
27 656, 656, 656, 656, 656, 656, 656, 656,
28 656, 656, 656, 656, 656, 656, 656, 656,
29 656, 656, 656, 656, 656, 656, 656, 656,
30 656, 656, 656, 656, 656, 656, 656, 656,
31 656, 656, 656, 656, 656, 656, 656, 656,
32 656, 656, 656, 656, 656, 656, 656, 656,
33 656, 656, 656, 656, 656, 656, 656, 656,
34 656, 656, 656, 656, 656, 656, 656, 656,
35 656, 656, 656, 656, 656, 656, 656, 656,
36 656, 656, 656, 656, 656, 656, 656, 656,
37 656, 656, 656, 656, 656, 656, 656, 656,
38 656, 656, 656, 656, 656, 656, 656, 656,
39 656, 656, 656, 656, 656, 656, 656, 656,
40 656, 656, 656, 656, 656, 656, 656, 656,
41 656, 656, 656, 656, 656, 656, 656, 656,
42 656, 656, 656, 656, 656, 656, 656, 656,
43 656, 656, 656, 656, 656, 656, 656, 656,
44 656, 656, 656, 656, 656, 656, 656, 656,
45 656, 656, 656, 656, 656, 656, 656, 656,
46 656, 656, 656, 656, 656, 656, 656, 656,
47 656, 656, 656, 656, 656, 656, 656, 656,
48 656, 656, 656, 656, 656, 656, 656, 656,
49 656, 656, 656, 656, 656, 656, 656, 656,
50 656, 656, 656, 656, 656, 656, 656, 656,
51 656, 656, 656, 656, 656, 656, 656, 656,
52 656, 656, 656, 656, 656, 656, 656, 656,
53 656, 656, 656, 656, 656, 656, 656, 656,
54 0, 0, 1, 0, 0, 0, 2, 0,
55 3, 4, 5, 6, 7, 8, 9, 10,
56 11, 12, 13, 0, 0, 0, 0, 0,
57 14, 0, 0, 15, 16, 17, 18, 19,
58 20, 21, 0, 22, 23, 24, 25, 26,
59 27, 28, 29, 0, 0, 0, 0, 0,
60 0, 0, 0, 0, 0, 0, 0, 0,
61 0, 0, 0, 0, 0, 0, 0, 0,
62 0, 0, 0, 0, 0, 0, 0, 0,
63 0, 0, 0, 0, 0, 0, 0, 0,
64 0, 0, 0, 0, 0, 0, 0, 0,
65 0, 0, 0, 0, 0, 0, 0, 0,
66 0, 0, 0, 0, 0, 0, 0, 0,
67 0, 0, 0, 0, 0, 0, 0, 0,
68 0, 0, 0, 0, 0, 0, 0, 0,
69 0, 0, 0, 0, 0, 0, 0, 0,
70 0, 0, 0, 0, 0, 30, 31, 0,
71 0, 0, 0, 0, 0, 0, 0, 0,
72 0, 0, 0, 0, 0, 0, 0, 0,
73 0, 0, 0, 0, 0, 0, 0, 0,
74 0, 0, 0, 0, 0, 0, 0, 0,
75 0, 0, 0, 0, 0, 0, 0, 0,
76 0, 0, 0, 0, 0, 0, 0, 0,
77 0, 0, 0, 0, 0, 0, 0, 0,
78 0, 0, 0, 0, 0, 0, 0, 0,
79 0, 0, 0, 0, 0, 0, 0, 0,
80 0, 0, 0, 0, 0, 0, 0, 0,
81 0, 0, 0, 0, 0, 0, 0, 0,
82 0, 0, 0, 0, 0, 0, 0, 0,
83 0, 0, 0, 0, 0, 0, 0, 0,
84 32, 33, 34, 35, 36, 37, 38, 39,
85 40, 41, 42, 43, 44, 45, 46, 47,
86 0, 0, 0, 0, 0, 0, 0, 0,
87 0, 48, 0, 49, 50, 0, 0, 0,
88 0, 0, 0, 0, 0, 0, 0, 0,
89 0, 0, 0, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 51, 52, 0,
91 0, 0, 0, 0, 0, 0, 0, 0,
92 0, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0,
94 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 0, 0, 0, 0,
96 0, 0, 0, 0, 0, 0, 0, 0,
97 0, 0, 0, 0, 0, 0, 0, 0,
98 53, 54, 0, 55, 56, 57, 58, 59,
99 0, 0, 0, 0, 0, 0, 0, 0,
100 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 0, 0, 0, 0, 0, 0,
102 0, 0, 0, 0, 0, 0, 0, 0,
103 0, 0, 0, 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0, 0, 0, 0,
105 0, 0, 0, 0, 0, 0, 0, 0,
106 0, 0, 0, 0, 0, 0, 0, 0,
107 0, 0, 0, 0, 0, 0, 0, 0,
108 0, 0, 0, 0, 0, 0, 0, 0,
109 0, 0, 0, 0, 0, 0, 0, 0,
110 0, 0, 0, 0, 0, 0, 0, 0,
111 0, 0, 0, 0, 0, 0, 0, 0,
112 0, 0, 0, 0, 0, 0, 0, 0,
113 0, 0, 0, 0, 0, 0, 0, 0,
114 0, 0, 0, 0, 0, 0, 0, 0,
115 0, 0, 0, 0, 0, 0, 0, 0,
116 0, 0, 0, 0, 0, 0, 0, 0,
117 0, 0, 0, 0, 0, 0, 0, 0,
118 0, 0, 0, 0, 0, 0, 0, 0,
119 0, 0, 0, 0, 0, 0, 0, 0,
120 0, 0, 0, 0, 0, 0, 0, 0,
121 0, 0, 0, 0, 0, 0, 0, 0,
122 0, 0, 0, 0, 0, 0, 0, 0,
123 0, 0, 0, 0, 0, 0, 0, 0,
124 0, 0, 60, 61, 62, 0, 0, 0,
125 0, 63, 64, 65, 66, 67, 0, 0,
126 0, 0, 0, 0, 0, 0, 0, 0,
127 0, 0, 0, 0, 0, 0, 0, 0,
128 0, 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0, 0,
130 0, 0, 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 0, 0, 0, 0, 0,
132 0, 0, 0, 0, 0, 0, 0, 0,
133 0, 0, 0, 0, 0, 0, 0, 0,
134 0, 0, 0, 0, 0, 0, 0, 0,
135 0, 0, 0, 0, 0, 0, 0, 0,
136 0, 0, 0, 0, 0, 0, 0, 0,
137 0, 0, 0, 0, 0, 0, 0, 0,
138 0, 0, 0, 0, 0, 0, 0, 0,
139 0, 0, 0, 0, 0, 0, 0, 0,
140 0, 0, 0, 0, 0, 0, 0, 0,
141 0, 0, 0, 0, 0, 0, 0, 0,
142 0, 0, 0, 0, 0, 0, 0, 0,
143 0, 0, 0, 0, 0, 0, 0, 0,
144 0, 0, 0, 0, 0, 0, 0, 0,
145 0, 0, 0, 0, 0, 0, 0, 0,
146 0, 0, 0, 0, 0, 0, 0, 0,
147 0, 0, 0, 0, 0, 0, 0, 0,
148 0, 0, 0, 0, 0, 0, 0, 0,
149 0, 68, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 0, 0,
151 0, 0, 0, 0, 0, 0, 0, 0,
152 0, 0, 0, 0, 0, 0, 0, 0,
153 0, 0, 0, 0, 0, 0, 0, 0,
154 69, 70, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 0, 0, 0, 0, 0,
156 0, 0, 0, 0, 0, 0, 0, 0,
157 0, 0, 0, 0, 0, 0, 0, 0,
158 0, 0, 0, 0, 0, 0, 0, 0,
159 0, 0, 0, 0, 0, 0, 0, 0,
160 0, 0, 0, 0, 0, 0, 0, 0,
161 0, 0, 0, 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 0,
164 0, 0, 0, 0, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0, 0,
166 };
167
168 static const struct {
169 unsigned long tbl[32];
170 } lowercase_table[] = {
171 {{
172 0UL, 0UL, 0UL, 0UL, 0UL,
173 0UL, 0UL, 0UL, 0UL, 0UL,
174 0UL, 0UL, 0UL, 0UL, 0UL,
175 0UL, 0UL, 0UL, 0UL, 0UL,
176 0UL, 0UL, 0UL, 0UL, 0UL,
177 0UL, 0UL, 0UL, 0UL, 0UL,
178 0UL, 0UL,
179 }},
180 {{
181 0UL, 97UL, 98UL, 99UL, 100UL,
182 101UL, 102UL, 103UL, 104UL, 2147483753UL,
183 2147483754UL, 107UL, 108UL, 109UL, 110UL,
184 111UL, 112UL, 113UL, 114UL, 115UL,
185 116UL, 117UL, 118UL, 119UL, 120UL,
186 121UL, 122UL, 0UL, 0UL, 0UL,
187 0UL, 0UL,
188 }},
189 {{
190 224UL, 225UL, 226UL, 227UL, 228UL,
191 229UL, 230UL, 231UL, 232UL, 233UL,
192 234UL, 235UL, 2147483884UL, 2147483885UL, 238UL,
193 239UL, 240UL, 241UL, 242UL, 243UL,
194 244UL, 245UL, 246UL, 0UL, 248UL,
195 249UL, 250UL, 251UL, 252UL, 253UL,
196 254UL, 0UL,
197 }},
198 {{
199 257UL, 0UL, 259UL, 0UL, 261UL,
200 0UL, 263UL, 0UL, 265UL, 0UL,
201 267UL, 0UL, 269UL, 0UL, 271UL,
202 0UL, 273UL, 0UL, 275UL, 0UL,
203 277UL, 0UL, 279UL, 0UL, 281UL,
204 0UL, 283UL, 0UL, 285UL, 0UL,
205 287UL, 0UL,
206 }},
207 {{
208 289UL, 0UL, 291UL, 0UL, 293UL,
209 0UL, 295UL, 0UL, 2147483945UL, 0UL,
210 299UL, 0UL, 301UL, 0UL, 2147483951UL,
211 0UL, 2147483753UL, 0UL, 307UL, 0UL,
212 309UL, 0UL, 311UL, 0UL, 0UL,
213 314UL, 0UL, 316UL, 0UL, 318UL,
214 0UL, 320UL,
215 }},
216 {{
217 0UL, 322UL, 0UL, 324UL, 0UL,
218 326UL, 0UL, 328UL, 0UL, 0UL,
219 331UL, 0UL, 333UL, 0UL, 335UL,
220 0UL, 337UL, 0UL, 339UL, 0UL,
221 341UL, 0UL, 343UL, 0UL, 345UL,
222 0UL, 347UL, 0UL, 349UL, 0UL,
223 351UL, 0UL,
224 }},
225 {{
226 353UL, 0UL, 355UL, 0UL, 357UL,
227 0UL, 359UL, 0UL, 361UL, 0UL,
228 363UL, 0UL, 365UL, 0UL, 367UL,
229 0UL, 369UL, 0UL, 371UL, 0UL,
230 373UL, 0UL, 375UL, 0UL, 255UL,
231 378UL, 0UL, 380UL, 0UL, 382UL,
232 0UL, 0UL,
233 }},
234 {{
235 0UL, 595UL, 387UL, 0UL, 389UL,
236 0UL, 596UL, 392UL, 0UL, 598UL,
237 599UL, 396UL, 0UL, 0UL, 477UL,
238 601UL, 603UL, 402UL, 0UL, 608UL,
239 611UL, 0UL, 617UL, 616UL, 409UL,
240 0UL, 0UL, 0UL, 623UL, 626UL,
241 0UL, 629UL,
242 }},
243 {{
244 417UL, 0UL, 419UL, 0UL, 421UL,
245 0UL, 640UL, 424UL, 0UL, 643UL,
246 0UL, 0UL, 429UL, 0UL, 648UL,
247 432UL, 0UL, 650UL, 651UL, 436UL,
248 0UL, 438UL, 0UL, 658UL, 441UL,
249 0UL, 0UL, 0UL, 445UL, 0UL,
250 0UL, 0UL,
251 }},
252 {{
253 0UL, 0UL, 0UL, 0UL, 454UL,
254 454UL, 0UL, 457UL, 457UL, 0UL,
255 460UL, 460UL, 0UL, 462UL, 0UL,
256 464UL, 0UL, 466UL, 0UL, 468UL,
257 0UL, 470UL, 0UL, 472UL, 0UL,
258 474UL, 0UL, 476UL, 0UL, 0UL,
259 479UL, 0UL,
260 }},
261 {{
262 481UL, 0UL, 483UL, 0UL, 485UL,
263 0UL, 487UL, 0UL, 489UL, 0UL,
264 491UL, 0UL, 493UL, 0UL, 495UL,
265 0UL, 0UL, 499UL, 499UL, 0UL,
266 501UL, 0UL, 405UL, 447UL, 505UL,
267 0UL, 507UL, 0UL, 509UL, 0UL,
268 511UL, 0UL,
269 }},
270 {{
271 513UL, 0UL, 515UL, 0UL, 517UL,
272 0UL, 519UL, 0UL, 521UL, 0UL,
273 523UL, 0UL, 525UL, 0UL, 527UL,
274 0UL, 529UL, 0UL, 531UL, 0UL,
275 533UL, 0UL, 535UL, 0UL, 537UL,
276 0UL, 539UL, 0UL, 541UL, 0UL,
277 543UL, 0UL,
278 }},
279 {{
280 414UL, 0UL, 547UL, 0UL, 549UL,
281 0UL, 551UL, 0UL, 553UL, 0UL,
282 555UL, 0UL, 557UL, 0UL, 559UL,
283 0UL, 561UL, 0UL, 563UL, 0UL,
284 0UL, 0UL, 0UL, 0UL, 0UL,
285 0UL, 11365UL, 572UL, 0UL, 410UL,
286 11366UL, 0UL,
287 }},
288 {{
289 0UL, 578UL, 0UL, 384UL, 649UL,
290 652UL, 583UL, 0UL, 585UL, 0UL,
291 587UL, 0UL, 589UL, 0UL, 591UL,
292 0UL, 0UL, 0UL, 0UL, 0UL,
293 0UL, 0UL, 0UL, 0UL, 0UL,
294 0UL, 0UL, 0UL, 0UL, 0UL,
295 0UL, 0UL,
296 }},
297 {{
298 0UL, 0UL, 0UL, 0UL, 0UL,
299 0UL, 0UL, 2147484423UL, 0UL, 0UL,
300 0UL, 0UL, 0UL, 0UL, 0UL,
301 0UL, 0UL, 0UL, 0UL, 0UL,
302 0UL, 0UL, 0UL, 0UL, 0UL,
303 0UL, 0UL, 0UL, 0UL, 0UL,
304 0UL, 0UL,
305 }},
306 {{
307 0UL, 0UL, 0UL, 0UL, 0UL,
308 0UL, 0UL, 0UL, 0UL, 0UL,
309 0UL, 0UL, 0UL, 0UL, 0UL,
310 0UL, 881UL, 0UL, 883UL, 0UL,
311 0UL, 0UL, 887UL, 0UL, 0UL,
312 0UL, 0UL, 0UL, 0UL, 0UL,
313 0UL, 0UL,
314 }},
315 {{
316 0UL, 0UL, 0UL, 0UL, 0UL,
317 0UL, 940UL, 0UL, 941UL, 942UL,
318 943UL, 0UL, 972UL, 0UL, 973UL,
319 974UL, 0UL, 945UL, 946UL, 947UL,
320 948UL, 949UL, 950UL, 951UL, 952UL,
321 953UL, 954UL, 955UL, 956UL, 957UL,
322 958UL, 959UL,
323 }},
324 {{
325 960UL, 961UL, 0UL, 2147484611UL, 964UL,
326 965UL, 966UL, 967UL, 968UL, 969UL,
327 970UL, 971UL, 0UL, 0UL, 0UL,
328 0UL, 0UL, 0UL, 0UL, 0UL,
329 0UL, 0UL, 0UL, 0UL, 0UL,
330 0UL, 0UL, 0UL, 0UL, 0UL,
331 0UL, 0UL,
332 }},
333 {{
334 0UL, 0UL, 0UL, 0UL, 0UL,
335 0UL, 0UL, 0UL, 0UL, 0UL,
336 0UL, 0UL, 0UL, 0UL, 0UL,
337 983UL, 0UL, 0UL, 0UL, 0UL,
338 0UL, 0UL, 0UL, 0UL, 985UL,
339 0UL, 987UL, 0UL, 989UL, 0UL,
340 991UL, 0UL,
341 }},
342 {{
343 993UL, 0UL, 995UL, 0UL, 997UL,
344 0UL, 999UL, 0UL, 1001UL, 0UL,
345 1003UL, 0UL, 1005UL, 0UL, 1007UL,
346 0UL, 0UL, 0UL, 0UL, 0UL,
347 952UL, 0UL, 0UL, 1016UL, 0UL,
348 1010UL, 1019UL, 0UL, 0UL, 891UL,
349 892UL, 893UL,
350 }},
351 {{
352 1104UL, 1105UL, 1106UL, 1107UL, 1108UL,
353 1109UL, 1110UL, 1111UL, 1112UL, 1113UL,
354 1114UL, 1115UL, 1116UL, 1117UL, 1118UL,
355 1119UL, 1072UL, 1073UL, 1074UL, 1075UL,
356 1076UL, 1077UL, 1078UL, 1079UL, 1080UL,
357 1081UL, 1082UL, 1083UL, 1084UL, 1085UL,
358 1086UL, 1087UL,
359 }},
360 {{
361 1088UL, 1089UL, 1090UL, 1091UL, 1092UL,
362 1093UL, 1094UL, 1095UL, 1096UL, 1097UL,
363 1098UL, 1099UL, 1100UL, 1101UL, 1102UL,
364 1103UL, 0UL, 0UL, 0UL, 0UL,
365 0UL, 0UL, 0UL, 0UL, 0UL,
366 0UL, 0UL, 0UL, 0UL, 0UL,
367 0UL, 0UL,
368 }},
369 {{
370 1121UL, 0UL, 1123UL, 0UL, 1125UL,
371 0UL, 1127UL, 0UL, 1129UL, 0UL,
372 1131UL, 0UL, 1133UL, 0UL, 1135UL,
373 0UL, 1137UL, 0UL, 1139UL, 0UL,
374 1141UL, 0UL, 1143UL, 0UL, 1145UL,
375 0UL, 1147UL, 0UL, 1149UL, 0UL,
376 1151UL, 0UL,
377 }},
378 {{
379 1153UL, 0UL, 0UL, 0UL, 0UL,
380 0UL, 0UL, 0UL, 0UL, 0UL,
381 1163UL, 0UL, 1165UL, 0UL, 1167UL,
382 0UL, 1169UL, 0UL, 1171UL, 0UL,
383 1173UL, 0UL, 1175UL, 0UL, 1177UL,
384 0UL, 1179UL, 0UL, 1181UL, 0UL,
385 1183UL, 0UL,
386 }},
387 {{
388 1185UL, 0UL, 1187UL, 0UL, 1189UL,
389 0UL, 1191UL, 0UL, 1193UL, 0UL,
390 1195UL, 0UL, 1197UL, 0UL, 1199UL,
391 0UL, 1201UL, 0UL, 1203UL, 0UL,
392 1205UL, 0UL, 1207UL, 0UL, 1209UL,
393 0UL, 1211UL, 0UL, 1213UL, 0UL,
394 1215UL, 0UL,
395 }},
396 {{
397 1231UL, 1218UL, 0UL, 1220UL, 0UL,
398 1222UL, 0UL, 1224UL, 0UL, 1226UL,
399 0UL, 1228UL, 0UL, 1230UL, 0UL,
400 0UL, 1233UL, 0UL, 1235UL, 0UL,
401 1237UL, 0UL, 1239UL, 0UL, 1241UL,
402 0UL, 1243UL, 0UL, 1245UL, 0UL,
403 1247UL, 0UL,
404 }},
405 {{
406 1249UL, 0UL, 1251UL, 0UL, 1253UL,
407 0UL, 1255UL, 0UL, 1257UL, 0UL,
408 1259UL, 0UL, 1261UL, 0UL, 1263UL,
409 0UL, 1265UL, 0UL, 1267UL, 0UL,
410 1269UL, 0UL, 1271UL, 0UL, 1273UL,
411 0UL, 1275UL, 0UL, 1277UL, 0UL,
412 1279UL, 0UL,
413 }},
414 {{
415 1281UL, 0UL, 1283UL, 0UL, 1285UL,
416 0UL, 1287UL, 0UL, 1289UL, 0UL,
417 1291UL, 0UL, 1293UL, 0UL, 1295UL,
418 0UL, 1297UL, 0UL, 1299UL, 0UL,
419 1301UL, 0UL, 1303UL, 0UL, 1305UL,
420 0UL, 1307UL, 0UL, 1309UL, 0UL,
421 1311UL, 0UL,
422 }},
423 {{
424 1313UL, 0UL, 1315UL, 0UL, 1317UL,
425 0UL, 1319UL, 0UL, 0UL, 0UL,
426 0UL, 0UL, 0UL, 0UL, 0UL,
427 0UL, 0UL, 1377UL, 1378UL, 1379UL,
428 1380UL, 1381UL, 1382UL, 1383UL, 1384UL,
429 1385UL, 1386UL, 1387UL, 1388UL, 1389UL,
430 1390UL, 1391UL,
431 }},
432 {{
433 1392UL, 1393UL, 1394UL, 1395UL, 1396UL,
434 1397UL, 1398UL, 1399UL, 1400UL, 1401UL,
435 1402UL, 1403UL, 1404UL, 1405UL, 1406UL,
436 1407UL, 1408UL, 1409UL, 1410UL, 1411UL,
437 1412UL, 1413UL, 1414UL, 0UL, 0UL,
438 0UL, 0UL, 0UL, 0UL, 0UL,
439 0UL, 0UL,
440 }},
441 {{
442 11520UL, 11521UL, 11522UL, 11523UL, 11524UL,
443 11525UL, 11526UL, 11527UL, 11528UL, 11529UL,
444 11530UL, 11531UL, 11532UL, 11533UL, 11534UL,
445 11535UL, 11536UL, 11537UL, 11538UL, 11539UL,
446 11540UL, 11541UL, 11542UL, 11543UL, 11544UL,
447 11545UL, 11546UL, 11547UL, 11548UL, 11549UL,
448 11550UL, 11551UL,
449 }},
450 {{
451 11552UL, 11553UL, 11554UL, 11555UL, 11556UL,
452 11557UL, 0UL, 11559UL, 0UL, 0UL,
453 0UL, 0UL, 0UL, 11565UL, 0UL,
454 0UL, 0UL, 0UL, 0UL, 0UL,
455 0UL, 0UL, 0UL, 0UL, 0UL,
456 0UL, 0UL, 0UL, 0UL, 0UL,
457 0UL, 0UL,
458 }},
459 {{
460 7681UL, 0UL, 7683UL, 0UL, 7685UL,
461 0UL, 7687UL, 0UL, 7689UL, 0UL,
462 7691UL, 0UL, 7693UL, 0UL, 7695UL,
463 0UL, 7697UL, 0UL, 7699UL, 0UL,
464 7701UL, 0UL, 7703UL, 0UL, 7705UL,
465 0UL, 7707UL, 0UL, 7709UL, 0UL,
466 7711UL, 0UL,
467 }},
468 {{
469 7713UL, 0UL, 7715UL, 0UL, 7717UL,
470 0UL, 7719UL, 0UL, 7721UL, 0UL,
471 7723UL, 0UL, 7725UL, 0UL, 7727UL,
472 0UL, 7729UL, 0UL, 7731UL, 0UL,
473 7733UL, 0UL, 7735UL, 0UL, 7737UL,
474 0UL, 7739UL, 0UL, 7741UL, 0UL,
475 7743UL, 0UL,
476 }},
477 {{
478 7745UL, 0UL, 7747UL, 0UL, 7749UL,
479 0UL, 7751UL, 0UL, 7753UL, 0UL,
480 7755UL, 0UL, 7757UL, 0UL, 7759UL,
481 0UL, 7761UL, 0UL, 7763UL, 0UL,
482 7765UL, 0UL, 7767UL, 0UL, 7769UL,
483 0UL, 7771UL, 0UL, 7773UL, 0UL,
484 7775UL, 0UL,
485 }},
486 {{
487 7777UL, 0UL, 7779UL, 0UL, 7781UL,
488 0UL, 7783UL, 0UL, 7785UL, 0UL,
489 7787UL, 0UL, 7789UL, 0UL, 7791UL,
490 0UL, 7793UL, 0UL, 7795UL, 0UL,
491 7797UL, 0UL, 7799UL, 0UL, 7801UL,
492 0UL, 7803UL, 0UL, 7805UL, 0UL,
493 7807UL, 0UL,
494 }},
495 {{
496 7809UL, 0UL, 7811UL, 0UL, 7813UL,
497 0UL, 7815UL, 0UL, 7817UL, 0UL,
498 7819UL, 0UL, 7821UL, 0UL, 7823UL,
499 0UL, 7825UL, 0UL, 7827UL, 0UL,
500 7829UL, 0UL, 0UL, 0UL, 0UL,
501 0UL, 0UL, 0UL, 0UL, 0UL,
502 223UL, 0UL,
503 }},
504 {{
505 7841UL, 0UL, 7843UL, 0UL, 7845UL,
506 0UL, 7847UL, 0UL, 7849UL, 0UL,
507 7851UL, 0UL, 7853UL, 0UL, 7855UL,
508 0UL, 7857UL, 0UL, 7859UL, 0UL,
509 7861UL, 0UL, 7863UL, 0UL, 7865UL,
510 0UL, 7867UL, 0UL, 7869UL, 0UL,
511 7871UL, 0UL,
512 }},
513 {{
514 7873UL, 0UL, 7875UL, 0UL, 7877UL,
515 0UL, 7879UL, 0UL, 7881UL, 0UL,
516 7883UL, 0UL, 7885UL, 0UL, 7887UL,
517 0UL, 7889UL, 0UL, 7891UL, 0UL,
518 7893UL, 0UL, 7895UL, 0UL, 7897UL,
519 0UL, 7899UL, 0UL, 7901UL, 0UL,
520 7903UL, 0UL,
521 }},
522 {{
523 7905UL, 0UL, 7907UL, 0UL, 7909UL,
524 0UL, 7911UL, 0UL, 7913UL, 0UL,
525 7915UL, 0UL, 7917UL, 0UL, 7919UL,
526 0UL, 7921UL, 0UL, 7923UL, 0UL,
527 7925UL, 0UL, 7927UL, 0UL, 7929UL,
528 0UL, 7931UL, 0UL, 7933UL, 0UL,
529 7935UL, 0UL,
530 }},
531 {{
532 0UL, 0UL, 0UL, 0UL, 0UL,
533 0UL, 0UL, 0UL, 7936UL, 7937UL,
534 7938UL, 7939UL, 7940UL, 7941UL, 7942UL,
535 7943UL, 0UL, 0UL, 0UL, 0UL,
536 0UL, 0UL, 0UL, 0UL, 7952UL,
537 7953UL, 7954UL, 7955UL, 7956UL, 7957UL,
538 0UL, 0UL,
539 }},
540 {{
541 0UL, 0UL, 0UL, 0UL, 0UL,
542 0UL, 0UL, 0UL, 7968UL, 7969UL,
543 7970UL, 7971UL, 7972UL, 7973UL, 7974UL,
544 7975UL, 0UL, 0UL, 0UL, 0UL,
545 0UL, 0UL, 0UL, 0UL, 7984UL,
546 7985UL, 7986UL, 7987UL, 7988UL, 7989UL,
547 7990UL, 7991UL,
548 }},
549 {{
550 0UL, 0UL, 0UL, 0UL, 0UL,
551 0UL, 0UL, 0UL, 8000UL, 8001UL,
552 8002UL, 8003UL, 8004UL, 8005UL, 0UL,
553 0UL, 0UL, 0UL, 0UL, 0UL,
554 0UL, 0UL, 0UL, 0UL, 0UL,
555 8017UL, 0UL, 8019UL, 0UL, 8021UL,
556 0UL, 8023UL,
557 }},
558 {{
559 0UL, 0UL, 0UL, 0UL, 0UL,
560 0UL, 0UL, 0UL, 8032UL, 8033UL,
561 8034UL, 8035UL, 8036UL, 8037UL, 8038UL,
562 8039UL, 0UL, 0UL, 0UL, 0UL,
563 0UL, 0UL, 0UL, 0UL, 0UL,
564 0UL, 0UL, 0UL, 0UL, 0UL,
565 0UL, 0UL,
566 }},
567 {{
568 0UL, 0UL, 0UL, 0UL, 0UL,
569 0UL, 0UL, 0UL, 8064UL, 8065UL,
570 8066UL, 8067UL, 8068UL, 8069UL, 8070UL,
571 8071UL, 0UL, 0UL, 0UL, 0UL,
572 0UL, 0UL, 0UL, 0UL, 8080UL,
573 8081UL, 8082UL, 8083UL, 8084UL, 8085UL,
574 8086UL, 8087UL,
575 }},
576 {{
577 0UL, 0UL, 0UL, 0UL, 0UL,
578 0UL, 0UL, 0UL, 8096UL, 8097UL,
579 8098UL, 8099UL, 8100UL, 8101UL, 8102UL,
580 8103UL, 0UL, 0UL, 0UL, 0UL,
581 0UL, 0UL, 0UL, 0UL, 8112UL,
582 8113UL, 8048UL, 8049UL, 8115UL, 0UL,
583 0UL, 0UL,
584 }},
585 {{
586 0UL, 0UL, 0UL, 0UL, 0UL,
587 0UL, 0UL, 0UL, 8050UL, 8051UL,
588 8052UL, 8053UL, 8131UL, 0UL, 0UL,
589 0UL, 0UL, 0UL, 0UL, 0UL,
590 0UL, 0UL, 0UL, 0UL, 8144UL,
591 8145UL, 8054UL, 8055UL, 0UL, 0UL,
592 0UL, 0UL,
593 }},
594 {{
595 0UL, 0UL, 0UL, 0UL, 0UL,
596 0UL, 0UL, 0UL, 8160UL, 8161UL,
597 8058UL, 8059UL, 8165UL, 0UL, 0UL,
598 0UL, 0UL, 0UL, 0UL, 0UL,
599 0UL, 0UL, 0UL, 0UL, 8056UL,
600 8057UL, 8060UL, 8061UL, 8179UL, 0UL,
601 0UL, 0UL,
602 }},
603 {{
604 0UL, 0UL, 0UL, 0UL, 0UL,
605 0UL, 969UL, 0UL, 0UL, 0UL,
606 107UL, 229UL, 0UL, 0UL, 0UL,
607 0UL, 0UL, 0UL, 8526UL, 0UL,
608 0UL, 0UL, 0UL, 0UL, 0UL,
609 0UL, 0UL, 0UL, 0UL, 0UL,
610 0UL, 0UL,
611 }},
612 {{
613 8560UL, 8561UL, 8562UL, 8563UL, 8564UL,
614 8565UL, 8566UL, 8567UL, 8568UL, 8569UL,
615 8570UL, 8571UL, 8572UL, 8573UL, 8574UL,
616 8575UL, 0UL, 0UL, 0UL, 0UL,
617 0UL, 0UL, 0UL, 0UL, 0UL,
618 0UL, 0UL, 0UL, 0UL, 0UL,
619 0UL, 0UL,
620 }},
621 {{
622 0UL, 0UL, 0UL, 8580UL, 0UL,
623 0UL, 0UL, 0UL, 0UL, 0UL,
624 0UL, 0UL, 0UL, 0UL, 0UL,
625 0UL, 0UL, 0UL, 0UL, 0UL,
626 0UL, 0UL, 0UL, 0UL, 0UL,
627 0UL, 0UL, 0UL, 0UL, 0UL,
628 0UL, 0UL,
629 }},
630 {{
631 0UL, 0UL, 0UL, 0UL, 0UL,
632 0UL, 0UL, 0UL, 0UL, 0UL,
633 0UL, 0UL, 0UL, 0UL, 0UL,
634 0UL, 0UL, 0UL, 0UL, 0UL,
635 0UL, 0UL, 9424UL, 9425UL, 9426UL,
636 9427UL, 9428UL, 9429UL, 9430UL, 9431UL,
637 9432UL, 9433UL,
638 }},
639 {{
640 9434UL, 9435UL, 9436UL, 9437UL, 9438UL,
641 9439UL, 9440UL, 9441UL, 9442UL, 9443UL,
642 9444UL, 9445UL, 9446UL, 9447UL, 9448UL,
643 9449UL, 0UL, 0UL, 0UL, 0UL,
644 0UL, 0UL, 0UL, 0UL, 0UL,
645 0UL, 0UL, 0UL, 0UL, 0UL,
646 0UL, 0UL,
647 }},
648 {{
649 11312UL, 11313UL, 11314UL, 11315UL, 11316UL,
650 11317UL, 11318UL, 11319UL, 11320UL, 11321UL,
651 11322UL, 11323UL, 11324UL, 11325UL, 11326UL,
652 11327UL, 11328UL, 11329UL, 11330UL, 11331UL,
653 11332UL, 11333UL, 11334UL, 11335UL, 11336UL,
654 11337UL, 11338UL, 11339UL, 11340UL, 11341UL,
655 11342UL, 11343UL,
656 }},
657 {{
658 11344UL, 11345UL, 11346UL, 11347UL, 11348UL,
659 11349UL, 11350UL, 11351UL, 11352UL, 11353UL,
660 11354UL, 11355UL, 11356UL, 11357UL, 11358UL,
661 0UL, 0UL, 0UL, 0UL, 0UL,
662 0UL, 0UL, 0UL, 0UL, 0UL,
663 0UL, 0UL, 0UL, 0UL, 0UL,
664 0UL, 0UL,
665 }},
666 {{
667 11361UL, 0UL, 619UL, 7549UL, 637UL,
668 0UL, 0UL, 11368UL, 0UL, 11370UL,
669 0UL, 11372UL, 0UL, 593UL, 625UL,
670 592UL, 594UL, 0UL, 11379UL, 0UL,
671 0UL, 11382UL, 0UL, 0UL, 0UL,
672 0UL, 0UL, 0UL, 0UL, 0UL,
673 575UL, 576UL,
674 }},
675 {{
676 11393UL, 0UL, 11395UL, 0UL, 11397UL,
677 0UL, 11399UL, 0UL, 11401UL, 0UL,
678 11403UL, 0UL, 11405UL, 0UL, 11407UL,
679 0UL, 11409UL, 0UL, 11411UL, 0UL,
680 11413UL, 0UL, 11415UL, 0UL, 11417UL,
681 0UL, 11419UL, 0UL, 11421UL, 0UL,
682 11423UL, 0UL,
683 }},
684 {{
685 11425UL, 0UL, 11427UL, 0UL, 11429UL,
686 0UL, 11431UL, 0UL, 11433UL, 0UL,
687 11435UL, 0UL, 11437UL, 0UL, 11439UL,
688 0UL, 11441UL, 0UL, 11443UL, 0UL,
689 11445UL, 0UL, 11447UL, 0UL, 11449UL,
690 0UL, 11451UL, 0UL, 11453UL, 0UL,
691 11455UL, 0UL,
692 }},
693 {{
694 11457UL, 0UL, 11459UL, 0UL, 11461UL,
695 0UL, 11463UL, 0UL, 11465UL, 0UL,
696 11467UL, 0UL, 11469UL, 0UL, 11471UL,
697 0UL, 11473UL, 0UL, 11475UL, 0UL,
698 11477UL, 0UL, 11479UL, 0UL, 11481UL,
699 0UL, 11483UL, 0UL, 11485UL, 0UL,
700 11487UL, 0UL,
701 }},
702 {{
703 11489UL, 0UL, 11491UL, 0UL, 0UL,
704 0UL, 0UL, 0UL, 0UL, 0UL,
705 0UL, 11500UL, 0UL, 11502UL, 0UL,
706 0UL, 0UL, 0UL, 11507UL, 0UL,
707 0UL, 0UL, 0UL, 0UL, 0UL,
708 0UL, 0UL, 0UL, 0UL, 0UL,
709 0UL, 0UL,
710 }},
711 {{
712 42561UL, 0UL, 42563UL, 0UL, 42565UL,
713 0UL, 42567UL, 0UL, 42569UL, 0UL,
714 42571UL, 0UL, 42573UL, 0UL, 42575UL,
715 0UL, 42577UL, 0UL, 42579UL, 0UL,
716 42581UL, 0UL, 42583UL, 0UL, 42585UL,
717 0UL, 42587UL, 0UL, 42589UL, 0UL,
718 42591UL, 0UL,
719 }},
720 {{
721 42593UL, 0UL, 42595UL, 0UL, 42597UL,
722 0UL, 42599UL, 0UL, 42601UL, 0UL,
723 42603UL, 0UL, 42605UL, 0UL, 0UL,
724 0UL, 0UL, 0UL, 0UL, 0UL,
725 0UL, 0UL, 0UL, 0UL, 0UL,
726 0UL, 0UL, 0UL, 0UL, 0UL,
727 0UL, 0UL,
728 }},
729 {{
730 42625UL, 0UL, 42627UL, 0UL, 42629UL,
731 0UL, 42631UL, 0UL, 42633UL, 0UL,
732 42635UL, 0UL, 42637UL, 0UL, 42639UL,
733 0UL, 42641UL, 0UL, 42643UL, 0UL,
734 42645UL, 0UL, 42647UL, 0UL, 0UL,
735 0UL, 0UL, 0UL, 0UL, 0UL,
736 0UL, 0UL,
737 }},
738 {{
739 0UL, 0UL, 42787UL, 0UL, 42789UL,
740 0UL, 42791UL, 0UL, 42793UL, 0UL,
741 42795UL, 0UL, 42797UL, 0UL, 42799UL,
742 0UL, 0UL, 0UL, 42803UL, 0UL,
743 42805UL, 0UL, 42807UL, 0UL, 42809UL,
744 0UL, 42811UL, 0UL, 42813UL, 0UL,
745 42815UL, 0UL,
746 }},
747 {{
748 42817UL, 0UL, 42819UL, 0UL, 42821UL,
749 0UL, 42823UL, 0UL, 42825UL, 0UL,
750 42827UL, 0UL, 42829UL, 0UL, 42831UL,
751 0UL, 42833UL, 0UL, 42835UL, 0UL,
752 42837UL, 0UL, 42839UL, 0UL, 42841UL,
753 0UL, 42843UL, 0UL, 42845UL, 0UL,
754 42847UL, 0UL,
755 }},
756 {{
757 42849UL, 0UL, 42851UL, 0UL, 42853UL,
758 0UL, 42855UL, 0UL, 42857UL, 0UL,
759 42859UL, 0UL, 42861UL, 0UL, 42863UL,
760 0UL, 0UL, 0UL, 0UL, 0UL,
761 0UL, 0UL, 0UL, 0UL, 0UL,
762 42874UL, 0UL, 42876UL, 0UL, 7545UL,
763 42879UL, 0UL,
764 }},
765 {{
766 42881UL, 0UL, 42883UL, 0UL, 42885UL,
767 0UL, 42887UL, 0UL, 0UL, 0UL,
768 0UL, 42892UL, 0UL, 613UL, 0UL,
769 0UL, 42897UL, 0UL, 42899UL, 0UL,
770 0UL, 0UL, 0UL, 0UL, 0UL,
771 0UL, 0UL, 0UL, 0UL, 0UL,
772 0UL, 0UL,
773 }},
774 {{
775 42913UL, 0UL, 42915UL, 0UL, 42917UL,
776 0UL, 42919UL, 0UL, 42921UL, 0UL,
777 614UL, 0UL, 0UL, 0UL, 0UL,
778 0UL, 0UL, 0UL, 0UL, 0UL,
779 0UL, 0UL, 0UL, 0UL, 0UL,
780 0UL, 0UL, 0UL, 0UL, 0UL,
781 0UL, 0UL,
782 }},
783 {{
784 0UL, 65345UL, 65346UL, 65347UL, 65348UL,
785 65349UL, 65350UL, 65351UL, 65352UL, 65353UL,
786 65354UL, 65355UL, 65356UL, 65357UL, 65358UL,
787 65359UL, 65360UL, 65361UL, 65362UL, 65363UL,
788 65364UL, 65365UL, 65366UL, 65367UL, 65368UL,
789 65369UL, 65370UL, 0UL, 0UL, 0UL,
790 0UL, 0UL,
791 }},
792 {{
793 66600UL, 66601UL, 66602UL, 66603UL, 66604UL,
794 66605UL, 66606UL, 66607UL, 66608UL, 66609UL,
795 66610UL, 66611UL, 66612UL, 66613UL, 66614UL,
796 66615UL, 66616UL, 66617UL, 66618UL, 66619UL,
797 66620UL, 66621UL, 66622UL, 66623UL, 66624UL,
798 66625UL, 66626UL, 66627UL, 66628UL, 66629UL,
799 66630UL, 66631UL,
800 }},
801 {{
802 66632UL, 66633UL, 66634UL, 66635UL, 66636UL,
803 66637UL, 66638UL, 66639UL, 0UL, 0UL,
804 0UL, 0UL, 0UL, 0UL, 0UL,
805 0UL, 0UL, 0UL, 0UL, 0UL,
806 0UL, 0UL, 0UL, 0UL, 0UL,
807 0UL, 0UL, 0UL, 0UL, 0UL,
808 0UL, 0UL,
809 }},
810 };
811
812 /*
813 * Table accessor.
814 */
815 unsigned long
idn__sparsemap_getlowercase(unsigned long v)816 idn__sparsemap_getlowercase(unsigned long v) {
817 int idx0, idx1, idx2;
818
819 if (v > UTF32_MAX)
820 return (0);
821 idx0 = v >> (LOWERCASE_BITS_1 + LOWERCASE_BITS_2);
822 idx1 = (v >> LOWERCASE_BITS_2) & ((1 << LOWERCASE_BITS_1) - 1);
823 idx2 = v & ((1 << LOWERCASE_BITS_2) - 1);
824 return (unsigned long) lowercase_table[lowercase_imap[lowercase_imap[idx0] + idx1]].tbl[idx2];
825 }
826
827 /*
828 * Special lowercase conversions
829 */
830 const idn__specialcase_t special_lowercases[] = {
831 {0x000049, "az", idn__casecontext_notbeforedot, {0x0131UL, 0x0000UL, 0x0000UL}, 3},
832 {0x000049, "tr", idn__casecontext_notbeforedot, {0x0131UL, 0x0000UL, 0x0000UL}, 2},
833 {0x000049, "lt", idn__casecontext_moreabove, {0x0069UL, 0x0307UL, 0x0000UL}, 1},
834 {0x00004a, "lt", idn__casecontext_moreabove, {0x006aUL, 0x0307UL, 0x0000UL}, 1},
835 {0x0000cc, "lt", NULL, {0x0069UL, 0x0307UL, 0x0300UL}, 1},
836 {0x0000cd, "lt", NULL, {0x0069UL, 0x0307UL, 0x0301UL}, 1},
837 {0x000128, "lt", NULL, {0x0069UL, 0x0307UL, 0x0303UL}, 1},
838 {0x00012e, "lt", idn__casecontext_moreabove, {0x012fUL, 0x0307UL, 0x0000UL}, 1},
839 {0x000130, "az", NULL, {0x0069UL, 0x0000UL, 0x0000UL}, 3},
840 {0x000130, "tr", NULL, {0x0069UL, 0x0000UL, 0x0000UL}, 2},
841 {0x000130, NULL, NULL, {0x0069UL, 0x0307UL, 0x0000UL}, 1},
842 {0x000307, "az", idn__casecontext_afteri, {0x0000UL, 0x0000UL, 0x0000UL}, 2},
843 {0x000307, "tr", idn__casecontext_afteri, {0x0000UL, 0x0000UL, 0x0000UL}, 1},
844 {0x0003a3, NULL, idn__casecontext_finalsigma, {0x03c2UL, 0x0000UL, 0x0000UL}, 1},
845 {0, NULL, NULL, {0UL, 0UL, 0UL}, 0}
846 };
847