1 /*
2 * Do not edit this file!
3 * This file is generated from:
4 * idna-tables.xml (version rfc6452 (2011-11-14))
5 */
6
7 #include <stddef.h>
8 #include <idn/utf32.h>
9 #include <idn/auto/idnacategory.h>
10
11 /*
12 * IDNA code point tables.
13 */
14 #define IDNACATEGORY_BITS_0 9
15 #define IDNACATEGORY_BITS_1 7
16 #define IDNACATEGORY_BITS_2 5
17
18 static const unsigned short idnacategory_imap[] = {
19 272, 400, 528, 656, 784, 912, 912, 912,
20 912, 1040, 1168, 912, 912, 1296, 1424, 1552,
21 1680, 1808, 1936, 2064, 2192, 2192, 2320, 2192,
22 2192, 2192, 2192, 2448, 2192, 2576, 2704, 2832,
23 912, 912, 912, 912, 912, 912, 912, 912,
24 912, 912, 2960, 3088, 2192, 2192, 2192, 3216,
25 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
26 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
27 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
28 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
29 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
30 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
31 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
32 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
33 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
34 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
35 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
36 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
37 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
38 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
39 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
40 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
41 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
42 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
43 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
44 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
45 2192, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
46 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
47 3472, 2192, 2192, 2192, 2192, 2192, 2192, 2192,
48 2192, 2192, 2192, 2192, 2192, 2192, 2192, 3344,
49 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424,
50 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424,
51 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424,
52 1424, 1424, 1424, 1424, 1424, 1424, 1424, 1424,
53 0, 1, 0, 2, 0, 3, 4, 5,
54 6, 7, 8, 9, 10, 11, 12, 13,
55 6, 14, 15, 16, 16, 17, 18, 19,
56 16, 16, 20, 21, 22, 23, 24, 25,
57 0, 26, 16, 6, 27, 6, 28, 6,
58 6, 29, 30, 31, 32, 33, 34, 35,
59 36, 16, 37, 38, 16, 16, 39, 40,
60 41, 16, 42, 16, 16, 43, 16, 44,
61 16, 45, 46, 47, 47, 48, 47, 49,
62 16, 16, 50, 51, 52, 53, 54, 55,
63 56, 57, 58, 59, 60, 61, 62, 63,
64 52, 61, 64, 65, 66, 67, 68, 69,
65 70, 71, 72, 73, 74, 75, 76, 77,
66 74, 78, 79, 80, 81, 82, 83, 84,
67 31, 85, 86, 47, 87, 88, 89, 47,
68 90, 91, 92, 93, 94, 95, 96, 47,
69 16, 16, 97, 16, 98, 0, 99, 100,
70 0, 0, 0, 0, 0, 0, 0, 0,
71 16, 16, 101, 16, 102, 103, 104, 16,
72 105, 16, 78, 106, 107, 16, 16, 108,
73 37, 16, 16, 16, 16, 16, 16, 16,
74 16, 16, 16, 16, 16, 16, 16, 16,
75 16, 16, 16, 109, 110, 16, 16, 111,
76 112, 113, 114, 115, 16, 116, 117, 118,
77 119, 16, 16, 120, 16, 121, 16, 122,
78 123, 124, 125, 126, 16, 127, 128, 0,
79 129, 16, 130, 131, 132, 133, 47, 47,
80 16, 16, 134, 135, 16, 16, 16, 136,
81 16, 137, 138, 98, 47, 47, 139, 140,
82 16, 141, 142, 143, 144, 0, 16, 145,
83 6, 6, 6, 6, 146, 6, 6, 6,
84 147, 148, 149, 150, 0, 151, 152, 153,
85 154, 0, 0, 155, 156, 157, 158, 159,
86 0, 0, 142, 0, 160, 0, 0, 0,
87 0, 0, 0, 0, 0, 0, 0, 0,
88 0, 0, 0, 0, 0, 0, 0, 161,
89 0, 162, 163, 0, 0, 0, 0, 0,
90 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0,
92 164, 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, 165, 47, 47, 47, 47, 47,
97 0, 166, 130, 167, 6, 6, 6, 168,
98 16, 169, 16, 170, 140, 171, 171, 16,
99 0, 172, 47, 47, 173, 0, 0, 161,
100 0, 0, 0, 0, 0, 0, 174, 175,
101 176, 177, 31, 16, 178, 37, 16, 179,
102 180, 181, 0, 0, 182, 183, 0, 184,
103 185, 0, 0, 0, 0, 0, 0, 185,
104 0, 0, 0, 0, 0, 0, 0, 0,
105 16, 16, 16, 16, 16, 16, 16, 16,
106 16, 16, 16, 16, 16, 16, 16, 16,
107 16, 16, 16, 16, 16, 16, 16, 16,
108 16, 16, 16, 16, 16, 16, 16, 16,
109 16, 16, 16, 16, 16, 16, 16, 16,
110 16, 16, 16, 16, 16, 16, 16, 16,
111 16, 16, 16, 16, 16, 16, 16, 16,
112 16, 16, 16, 16, 16, 16, 16, 16,
113 16, 16, 16, 16, 16, 16, 16, 16,
114 16, 16, 16, 16, 16, 16, 16, 16,
115 16, 16, 16, 16, 16, 16, 16, 16,
116 16, 16, 16, 16, 16, 16, 16, 16,
117 16, 16, 16, 16, 16, 16, 16, 16,
118 16, 16, 16, 16, 16, 16, 16, 16,
119 16, 16, 16, 16, 16, 16, 16, 16,
120 16, 16, 16, 16, 16, 16, 16, 16,
121 16, 16, 16, 16, 16, 16, 16, 16,
122 16, 16, 16, 16, 16, 16, 16, 16,
123 16, 16, 16, 16, 16, 16, 16, 16,
124 16, 16, 16, 16, 16, 16, 16, 16,
125 16, 16, 16, 16, 16, 16, 16, 16,
126 16, 16, 16, 16, 16, 16, 16, 16,
127 16, 16, 16, 16, 16, 16, 16, 16,
128 16, 16, 16, 16, 16, 16, 16, 16,
129 16, 16, 16, 16, 16, 16, 16, 16,
130 16, 16, 16, 16, 16, 122, 0, 0,
131 16, 16, 16, 16, 16, 16, 16, 16,
132 16, 16, 16, 16, 16, 16, 16, 16,
133 16, 16, 16, 16, 16, 16, 16, 16,
134 16, 16, 16, 16, 16, 16, 16, 16,
135 16, 16, 16, 16, 16, 16, 16, 16,
136 16, 16, 16, 16, 16, 16, 16, 16,
137 16, 16, 16, 16, 16, 16, 16, 16,
138 16, 16, 16, 16, 16, 16, 16, 16,
139 16, 16, 16, 16, 16, 16, 16, 16,
140 16, 16, 16, 16, 16, 16, 16, 16,
141 16, 16, 16, 16, 16, 16, 16, 16,
142 16, 16, 16, 16, 16, 16, 16, 16,
143 16, 16, 16, 16, 16, 16, 16, 16,
144 16, 16, 16, 16, 16, 16, 16, 16,
145 16, 16, 16, 16, 16, 16, 16, 16,
146 16, 16, 16, 16, 16, 16, 16, 16,
147 16, 16, 16, 16, 16, 16, 16, 16,
148 16, 16, 16, 16, 16, 16, 16, 16,
149 16, 16, 16, 16, 16, 16, 16, 16,
150 16, 16, 16, 16, 16, 16, 16, 16,
151 16, 16, 16, 16, 16, 16, 16, 16,
152 16, 16, 16, 16, 16, 16, 16, 16,
153 16, 16, 16, 16, 16, 16, 16, 16,
154 16, 16, 16, 16, 16, 16, 16, 16,
155 16, 16, 16, 16, 16, 16, 16, 16,
156 16, 16, 16, 16, 16, 16, 16, 16,
157 16, 16, 16, 16, 16, 16, 16, 16,
158 16, 16, 16, 16, 16, 16, 16, 16,
159 16, 16, 16, 16, 16, 16, 16, 16,
160 16, 16, 16, 16, 16, 16, 16, 16,
161 16, 16, 16, 16, 16, 16, 16, 16,
162 16, 16, 16, 16, 16, 16, 16, 16,
163 16, 16, 16, 16, 16, 16, 16, 16,
164 16, 16, 16, 16, 16, 16, 186, 47,
165 16, 16, 16, 16, 16, 16, 16, 16,
166 16, 16, 16, 16, 16, 16, 16, 16,
167 16, 16, 16, 16, 16, 16, 16, 16,
168 16, 16, 16, 16, 16, 16, 16, 16,
169 16, 16, 16, 16, 187, 0, 188, 98,
170 16, 16, 16, 16, 16, 16, 16, 16,
171 189, 190, 6, 191, 192, 16, 16, 193,
172 194, 195, 6, 196, 197, 198, 47, 199,
173 16, 200, 16, 201, 16, 16, 202, 203,
174 16, 204, 205, 106, 16, 16, 206, 47,
175 16, 140, 207, 208, 16, 16, 209, 210,
176 211, 212, 47, 47, 47, 47, 16, 213,
177 16, 16, 16, 16, 16, 16, 16, 16,
178 16, 16, 16, 16, 16, 16, 16, 16,
179 16, 16, 16, 16, 16, 16, 16, 16,
180 16, 16, 16, 16, 16, 16, 16, 16,
181 16, 16, 16, 16, 16, 16, 16, 16,
182 16, 16, 16, 16, 16, 16, 16, 16,
183 16, 16, 16, 16, 16, 16, 16, 16,
184 16, 16, 16, 16, 16, 16, 16, 16,
185 16, 16, 16, 16, 16, 16, 16, 16,
186 16, 16, 16, 16, 16, 16, 16, 16,
187 16, 16, 16, 16, 16, 16, 16, 16,
188 16, 16, 16, 16, 16, 214, 215, 216,
189 0, 0, 0, 0, 0, 0, 0, 0,
190 0, 0, 0, 0, 0, 0, 0, 0,
191 0, 0, 0, 0, 0, 0, 0, 0,
192 0, 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0, 0, 0, 0,
194 0, 0, 0, 0, 0, 0, 0, 0,
195 0, 0, 0, 0, 0, 0, 0, 0,
196 0, 0, 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0, 0, 0, 0,
200 0, 0, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0,
202 0, 0, 0, 0, 0, 0, 0, 0,
203 0, 0, 0, 0, 0, 0, 0, 0,
204 0, 0, 0, 0, 0, 0, 0, 0,
205 0, 0, 0, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0,
210 0, 0, 0, 0, 0, 0, 0, 0,
211 0, 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0,
214 0, 0, 0, 0, 0, 0, 0, 0,
215 0, 0, 0, 0, 0, 0, 0, 0,
216 0, 0, 0, 0, 0, 0, 0, 0,
217 0, 0, 0, 0, 0, 0, 0, 0,
218 0, 0, 0, 0, 0, 0, 0, 0,
219 0, 0, 0, 0, 0, 0, 0, 0,
220 0, 0, 0, 0, 0, 0, 0, 0,
221 0, 0, 0, 0, 0, 0, 0, 0,
222 0, 0, 0, 0, 0, 0, 0, 0,
223 217, 218, 0, 219, 0, 0, 220, 47,
224 221, 222, 223, 0, 0, 0, 224, 0,
225 0, 0, 0, 0, 0, 0, 0, 0,
226 0, 0, 158, 0, 225, 0, 226, 227,
227 220, 228, 229, 230, 0, 0, 0, 231,
228 164, 0, 0, 0, 0, 185, 232, 233,
229 234, 235, 236, 47, 16, 16, 16, 183,
230 237, 238, 0, 0, 239, 47, 158, 240,
231 47, 47, 47, 47, 123, 16, 241, 47,
232 130, 184, 242, 47, 243, 16, 244, 47,
233 0, 245, 16, 16, 246, 247, 47, 47,
234 47, 47, 47, 47, 47, 47, 47, 47,
235 47, 47, 47, 47, 47, 47, 47, 47,
236 47, 47, 47, 47, 47, 47, 47, 47,
237 248, 249, 250, 47, 47, 47, 47, 47,
238 251, 252, 47, 47, 16, 253, 47, 47,
239 254, 255, 256, 257, 47, 47, 47, 47,
240 16, 258, 259, 260, 47, 47, 47, 47,
241 16, 16, 261, 47, 47, 47, 47, 47,
242 47, 47, 47, 47, 47, 47, 47, 47,
243 47, 47, 47, 185, 47, 47, 47, 47,
244 47, 47, 47, 47, 47, 47, 47, 47,
245 16, 16, 262, 263, 16, 144, 264, 265,
246 16, 266, 267, 47, 16, 16, 268, 47,
247 47, 47, 47, 47, 47, 47, 47, 47,
248 47, 47, 47, 47, 47, 47, 47, 47,
249 47, 47, 47, 47, 47, 47, 47, 47,
250 47, 47, 47, 47, 47, 47, 47, 47,
251 47, 47, 47, 47, 16, 120, 247, 47,
252 47, 47, 47, 47, 47, 47, 47, 47,
253 47, 47, 47, 47, 47, 47, 47, 47,
254 47, 47, 47, 47, 47, 47, 47, 47,
255 47, 47, 47, 47, 47, 47, 47, 47,
256 47, 47, 47, 47, 47, 47, 47, 47,
257 47, 47, 47, 47, 47, 47, 47, 47,
258 47, 47, 47, 47, 47, 47, 47, 47,
259 47, 47, 47, 47, 47, 47, 47, 47,
260 47, 47, 47, 47, 47, 47, 47, 47,
261 16, 16, 16, 16, 16, 16, 16, 16,
262 16, 16, 16, 16, 16, 16, 16, 16,
263 16, 16, 16, 16, 16, 16, 16, 16,
264 16, 16, 16, 269, 47, 47, 47, 47,
265 0, 0, 0, 270, 47, 47, 47, 47,
266 47, 47, 47, 47, 47, 47, 47, 47,
267 47, 47, 47, 47, 47, 47, 47, 47,
268 47, 47, 47, 47, 47, 47, 47, 47,
269 47, 47, 47, 47, 47, 47, 47, 47,
270 47, 47, 47, 47, 47, 47, 47, 47,
271 47, 47, 47, 47, 47, 47, 47, 47,
272 47, 47, 47, 47, 47, 47, 47, 47,
273 47, 47, 47, 47, 47, 47, 47, 47,
274 47, 47, 47, 47, 47, 47, 47, 47,
275 47, 47, 47, 47, 47, 47, 47, 47,
276 47, 47, 47, 47, 47, 47, 47, 47,
277 16, 16, 16, 16, 16, 16, 16, 16,
278 16, 16, 16, 16, 16, 16, 16, 16,
279 16, 16, 16, 16, 16, 16, 16, 16,
280 16, 16, 16, 16, 16, 16, 16, 16,
281 16, 269, 47, 47, 47, 47, 47, 47,
282 47, 47, 47, 47, 47, 47, 47, 47,
283 47, 47, 47, 47, 47, 47, 47, 47,
284 47, 47, 47, 47, 47, 47, 47, 47,
285 47, 47, 47, 47, 47, 47, 47, 47,
286 47, 47, 47, 47, 47, 47, 47, 47,
287 47, 47, 47, 47, 47, 47, 47, 47,
288 47, 47, 47, 47, 47, 47, 47, 47,
289 47, 47, 47, 47, 47, 47, 47, 47,
290 47, 47, 47, 47, 47, 47, 47, 47,
291 47, 47, 47, 47, 47, 47, 47, 47,
292 47, 47, 47, 47, 47, 47, 47, 47,
293 47, 47, 47, 47, 47, 47, 47, 47,
294 47, 47, 47, 47, 47, 47, 47, 47,
295 47, 47, 47, 47, 47, 47, 47, 47,
296 47, 47, 47, 47, 47, 47, 47, 47,
297 47, 47, 47, 47, 47, 47, 47, 47,
298 47, 47, 47, 47, 47, 47, 47, 47,
299 47, 47, 47, 47, 47, 47, 47, 47,
300 47, 47, 47, 47, 47, 47, 47, 47,
301 47, 47, 47, 47, 47, 47, 47, 47,
302 47, 47, 47, 47, 47, 47, 47, 47,
303 47, 47, 47, 47, 47, 47, 47, 47,
304 47, 47, 47, 47, 47, 47, 47, 47,
305 47, 47, 47, 47, 47, 47, 47, 47,
306 47, 47, 47, 47, 47, 47, 47, 47,
307 47, 47, 47, 47, 47, 47, 47, 47,
308 47, 47, 47, 47, 47, 47, 47, 47,
309 47, 47, 47, 47, 47, 47, 47, 47,
310 47, 47, 47, 47, 47, 47, 47, 47,
311 47, 47, 47, 47, 47, 47, 47, 47,
312 47, 47, 47, 47, 47, 47, 47, 47,
313 47, 47, 47, 47, 47, 47, 47, 47,
314 47, 47, 47, 47, 47, 47, 47, 47,
315 47, 47, 47, 47, 47, 47, 47, 47,
316 47, 47, 47, 47, 47, 47, 47, 47,
317 16, 16, 16, 16, 16, 16, 16, 16,
318 16, 16, 16, 16, 16, 16, 16, 16,
319 16, 271, 47, 47, 47, 47, 47, 47,
320 47, 47, 47, 47, 47, 47, 47, 47,
321 47, 47, 47, 47, 47, 47, 47, 47,
322 47, 47, 47, 47, 47, 47, 47, 47,
323 47, 47, 47, 47, 47, 47, 47, 47,
324 16, 16, 272, 130, 273, 47, 47, 47,
325 274, 47, 47, 47, 47, 47, 47, 47,
326 47, 47, 47, 47, 47, 47, 47, 47,
327 47, 47, 47, 47, 47, 47, 47, 47,
328 47, 47, 47, 47, 47, 47, 47, 47,
329 47, 47, 47, 47, 47, 47, 47, 47,
330 47, 47, 47, 47, 47, 47, 47, 47,
331 47, 47, 47, 47, 47, 47, 47, 47,
332 47, 47, 47, 47, 47, 47, 47, 47,
333 47, 47, 47, 47, 47, 47, 47, 47,
334 47, 47, 47, 47, 47, 47, 47, 47,
335 47, 47, 47, 47, 47, 47, 47, 47,
336 47, 47, 47, 47, 47, 47, 47, 47,
337 47, 47, 47, 47, 47, 47, 47, 47,
338 47, 47, 47, 47, 47, 47, 47, 47,
339 47, 47, 47, 47, 47, 47, 47, 47,
340 47, 47, 47, 47, 47, 47, 47, 47,
341 0, 0, 0, 0, 0, 0, 0, 174,
342 0, 275, 0, 0, 0, 0, 227, 47,
343 0, 0, 276, 47, 47, 47, 47, 47,
344 0, 0, 277, 278, 47, 47, 47, 47,
345 0, 0, 279, 0, 280, 281, 282, 0,
346 283, 284, 285, 0, 0, 0, 0, 0,
347 0, 0, 0, 0, 0, 286, 0, 0,
348 0, 0, 0, 0, 0, 0, 287, 0,
349 47, 47, 47, 47, 47, 47, 47, 47,
350 47, 47, 47, 47, 47, 47, 47, 47,
351 47, 47, 47, 47, 47, 47, 47, 47,
352 47, 47, 47, 47, 47, 47, 47, 47,
353 47, 47, 47, 47, 47, 47, 47, 47,
354 47, 47, 47, 47, 47, 47, 47, 47,
355 47, 47, 47, 47, 47, 47, 47, 47,
356 47, 47, 47, 47, 47, 47, 47, 47,
357 47, 47, 47, 47, 47, 47, 47, 47,
358 47, 47, 47, 47, 47, 47, 47, 47,
359 47, 47, 47, 47, 47, 47, 47, 47,
360 47, 47, 47, 47, 47, 47, 47, 47,
361 47, 47, 47, 47, 47, 47, 47, 47,
362 47, 47, 47, 47, 47, 47, 47, 47,
363 47, 47, 47, 47, 47, 47, 47, 47,
364 47, 47, 47, 47, 47, 47, 47, 47,
365 47, 47, 47, 47, 47, 47, 47, 47,
366 47, 47, 47, 47, 47, 47, 47, 47,
367 47, 47, 47, 47, 47, 47, 47, 47,
368 47, 47, 47, 47, 47, 47, 47, 47,
369 47, 47, 47, 47, 47, 47, 47, 47,
370 47, 47, 47, 47, 47, 47, 47, 47,
371 282, 288, 289, 290, 291, 292, 47, 293,
372 47, 47, 47, 47, 47, 47, 47, 47,
373 0, 294, 0, 0, 161, 295, 296, 47,
374 297, 182, 0, 294, 157, 47, 47, 298,
375 299, 157, 300, 47, 47, 47, 47, 47,
376 0, 301, 0, 106, 161, 0, 302, 159,
377 0, 185, 303, 0, 0, 0, 0, 304,
378 0, 227, 305, 306, 47, 47, 47, 307,
379 0, 0, 308, 47, 0, 0, 276, 47,
380 0, 0, 0, 161, 47, 47, 47, 47,
381 47, 47, 47, 47, 47, 47, 47, 47,
382 47, 47, 47, 47, 47, 47, 47, 47,
383 47, 47, 47, 47, 47, 47, 47, 47,
384 47, 47, 47, 47, 47, 47, 47, 47,
385 47, 47, 47, 47, 47, 47, 47, 47,
386 47, 47, 47, 47, 47, 47, 47, 47,
387 47, 47, 47, 47, 47, 47, 47, 47,
388 47, 47, 47, 47, 47, 47, 47, 309,
389 16, 16, 16, 16, 16, 16, 16, 16,
390 16, 16, 16, 16, 16, 16, 16, 16,
391 16, 16, 16, 16, 16, 16, 16, 16,
392 16, 16, 16, 16, 16, 16, 16, 16,
393 16, 16, 16, 16, 16, 16, 16, 16,
394 16, 16, 16, 16, 16, 16, 16, 16,
395 16, 16, 16, 16, 16, 16, 140, 47,
396 16, 16, 16, 16, 16, 16, 16, 16,
397 16, 16, 16, 16, 16, 16, 16, 16,
398 16, 16, 16, 16, 16, 16, 16, 16,
399 16, 16, 16, 16, 16, 16, 16, 16,
400 16, 16, 16, 16, 16, 16, 16, 16,
401 16, 16, 16, 16, 16, 16, 16, 16,
402 16, 16, 16, 16, 16, 16, 16, 16,
403 16, 16, 16, 16, 16, 16, 16, 16,
404 16, 16, 16, 16, 16, 16, 16, 16,
405 16, 16, 16, 16, 16, 16, 16, 16,
406 16, 16, 16, 16, 16, 16, 16, 16,
407 16, 16, 16, 16, 16, 16, 16, 16,
408 16, 16, 16, 16, 16, 16, 16, 16,
409 16, 16, 16, 16, 16, 16, 16, 16,
410 16, 16, 16, 16, 16, 16, 16, 16,
411 16, 16, 16, 16, 16, 16, 16, 16,
412 16, 108, 16, 16, 16, 16, 16, 16,
413 246, 47, 47, 47, 47, 47, 47, 47,
414 47, 47, 47, 47, 47, 47, 47, 47,
415 47, 47, 47, 47, 47, 47, 47, 47,
416 47, 47, 47, 47, 47, 47, 47, 47,
417 47, 47, 47, 47, 47, 47, 47, 47,
418 47, 47, 47, 47, 47, 47, 47, 47,
419 47, 47, 47, 47, 47, 47, 47, 47,
420 47, 47, 47, 47, 47, 47, 47, 47,
421 47, 47, 47, 47, 47, 47, 47, 47,
422 47, 47, 47, 47, 47, 47, 47, 47,
423 47, 47, 47, 47, 47, 47, 47, 47,
424 47, 47, 47, 47, 47, 47, 47, 47,
425 47, 47, 47, 47, 47, 47, 47, 47,
426 47, 47, 47, 47, 47, 47, 47, 47,
427 47, 47, 47, 47, 47, 47, 47, 47,
428 47, 47, 47, 47, 47, 47, 47, 47,
429 0, 0, 0, 0, 0, 0, 0, 0,
430 0, 0, 0, 0, 0, 0, 0, 0,
431 227, 47, 47, 47, 47, 47, 47, 47,
432 47, 47, 47, 47, 47, 47, 47, 47,
433 47, 47, 47, 47, 47, 47, 47, 47,
434 47, 47, 47, 47, 47, 47, 47, 47,
435 47, 47, 47, 47, 47, 47, 47, 47,
436 47, 47, 47, 47, 47, 47, 47, 309,
437 47, 47, 47, 47, 47, 47, 47, 47,
438 47, 47, 47, 47, 47, 47, 47, 47,
439 47, 47, 47, 47, 47, 47, 47, 47,
440 47, 47, 47, 47, 47, 47, 47, 47,
441 47, 47, 47, 47, 47, 47, 47, 47,
442 47, 47, 47, 47, 47, 47, 47, 47,
443 47, 47, 47, 47, 47, 47, 47, 47,
444 47, 47, 47, 47, 47, 47, 47, 47,
445 47, 47, 47, 47, 47, 47, 47, 47,
446 47, 47, 47, 47, 47, 47, 47, 47,
447 47, 47, 47, 47, 47, 47, 47, 47,
448 47, 47, 47, 47, 47, 47, 47, 47,
449 47, 47, 47, 47, 47, 47, 47, 47,
450 47, 47, 47, 47, 47, 47, 47, 47,
451 47, 47, 47, 47, 47, 47, 47, 47,
452 47, 47, 47, 47, 47, 47, 47, 309,
453 310, 0, 0, 0, 47, 47, 47, 47,
454 0, 0, 0, 0, 0, 0, 0, 311,
455 47, 47, 47, 47, 47, 47, 47, 47,
456 47, 47, 47, 47, 47, 47, 47, 47,
457 47, 47, 47, 47, 47, 47, 47, 47,
458 47, 47, 47, 47, 47, 47, 47, 47,
459 47, 47, 47, 47, 47, 47, 47, 47,
460 47, 47, 47, 47, 47, 47, 47, 47,
461 47, 47, 47, 47, 47, 47, 47, 47,
462 47, 47, 47, 47, 47, 47, 47, 47,
463 47, 47, 47, 47, 47, 47, 47, 47,
464 47, 47, 47, 47, 47, 47, 47, 47,
465 47, 47, 47, 47, 47, 47, 47, 47,
466 47, 47, 47, 47, 47, 47, 47, 47,
467 47, 47, 47, 47, 47, 47, 47, 47,
468 47, 47, 47, 47, 47, 47, 47, 47,
469 };
470
471 static const struct {
472 unsigned char tbl[32];
473 } idnacategory_table[] = {
474 {{
475 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
476 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
477 }},
478 {{
479 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0,
480 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
481 }},
482 {{
483 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3,
485 }},
486 {{
487 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
488 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3,
489 }},
490 {{
491 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
492 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
493 }},
494 {{
495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
496 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0,
497 }},
498 {{
499 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
500 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
501 }},
502 {{
503 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
504 0, 3, 3, 3, 0, 3, 0, 0, 3, 0, 3, 0, 3, 0, 3,
505 }},
506 {{
507 3, 3, 0, 3, 0, 3, 0, 3, 0, 3, 3, 0, 3, 0, 3, 0, 3,
508 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
509 }},
510 {{
511 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
512 0, 3, 0, 3, 0, 3, 0, 3, 3, 0, 3, 0, 3, 0, 3,
513 }},
514 {{
515 0, 3, 3, 0, 3, 0, 3, 3, 0, 3, 3, 3, 0, 0, 3, 3, 3,
516 3, 0, 3, 3, 0, 3, 3, 3, 0, 0, 0, 3, 3, 0, 3,
517 }},
518 {{
519 3, 0, 3, 0, 3, 0, 3, 3, 0, 3, 0, 0, 3, 0, 3, 3, 0,
520 3, 3, 3, 0, 3, 0, 3, 3, 0, 0, 0, 3, 0, 0, 0,
521 }},
522 {{
523 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0,
524 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0, 3, 0,
525 }},
526 {{
527 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0,
528 3, 3, 3, 3, 0, 3, 3, 3, 0, 3, 0, 3, 0, 3, 0,
529 }},
530 {{
531 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
532 0, 3, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 3, 3, 0,
533 }},
534 {{
535 0, 3, 0, 3, 3, 3, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0,
536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
537 }},
538 {{
539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
541 }},
542 {{
543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
544 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
545 }},
546 {{
547 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
548 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
549 }},
550 {{
551 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 3, 3,
552 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
553 }},
554 {{
555 3, 3, 0, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
557 }},
558 {{
559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
560 0, 3, 0, 3, 2, 3, 0, 4, 4, 3, 0, 0, 0, 3, 4,
561 }},
562 {{
563 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 3, 0,
564 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
565 }},
566 {{
567 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
569 }},
570 {{
571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3,
572 3, 3, 3, 3, 3, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
573 }},
574 {{
575 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
576 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 0, 0, 3, 3, 3,
577 }},
578 {{
579 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
581 }},
582 {{
583 3, 0, 3, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3, 0, 3, 0, 3,
584 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
585 }},
586 {{
587 3, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0, 3,
588 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
589 }},
590 {{
591 3, 0, 3, 0, 3, 0, 3, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
592 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
593 }},
594 {{
595 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
596 3, 3, 3, 3, 3, 3, 4, 4, 0, 3, 3, 3, 3, 3, 3,
597 }},
598 {{
599 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
601 }},
602 {{
603 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 3, 4, 4, 4, 4, 3, 4,
604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
605 }},
606 {{
607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
609 }},
610 {{
611 3, 0, 0, 3, 0, 0, 3, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0,
612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
613 }},
614 {{
615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0,
616 0, 0, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
617 }},
618 {{
619 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 3,
621 }},
622 {{
623 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
625 }},
626 {{
627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 0, 0, 0,
628 0, 0, 0, 0, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0,
629 }},
630 {{
631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
632 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0,
633 }},
634 {{
635 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2,
636 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
637 }},
638 {{
639 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 0,
640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
641 }},
642 {{
643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0,
644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
645 }},
646 {{
647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
648 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
649 }},
650 {{
651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
652 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
653 }},
654 {{
655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 3,
656 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
657 }},
658 {{
659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 3, 4,
661 }},
662 {{
663 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
664 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
665 }},
666 {{
667 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4,
668 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
669 }},
670 {{
671 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
673 }},
674 {{
675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
676 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3,
677 }},
678 {{
679 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
680 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
681 }},
682 {{
683 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0,
684 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
685 }},
686 {{
687 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
688 4, 0, 4, 4, 4, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0,
689 }},
690 {{
691 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 0, 0, 0, 0, 4, 4,
692 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 3, 3, 4, 3,
693 }},
694 {{
695 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
696 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
697 }},
698 {{
699 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 0, 0,
700 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
701 }},
702 {{
703 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
704 4, 0, 3, 4, 0, 3, 4, 0, 0, 4, 4, 0, 4, 0, 0,
705 }},
706 {{
707 0, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 0, 4, 4, 4,
708 0, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 0, 4, 3, 4,
709 }},
710 {{
711 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
712 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
713 }},
714 {{
715 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,
716 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717 }},
718 {{
719 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
720 4, 0, 0, 4, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0,
721 }},
722 {{
723 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 4, 0,
724 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
725 }},
726 {{
727 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
728 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
729 }},
730 {{
731 0, 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 0, 0, 0, 4, 4, 4,
732 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 3, 3, 4, 0,
733 }},
734 {{
735 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
736 0, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
737 }},
738 {{
739 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0,
740 4, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 0, 4, 0, 0,
741 }},
742 {{
743 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 4, 0, 0, 0,
744 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 0, 0,
745 }},
746 {{
747 0, 0, 0, 4, 4, 4, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 0,
748 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4,
749 }},
750 {{
751 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
752 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
753 }},
754 {{
755 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
756 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
757 }},
758 {{
759 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
760 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0,
761 }},
762 {{
763 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4,
764 4, 4, 4, 4, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 4,
765 }},
766 {{
767 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
768 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
769 }},
770 {{
771 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
772 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
773 }},
774 {{
775 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
776 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0,
777 }},
778 {{
779 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 4,
780 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4,
781 }},
782 {{
783 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
784 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
785 }},
786 {{
787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0,
789 }},
790 {{
791 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 4,
792 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4,
793 }},
794 {{
795 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
796 3, 3, 3, 3, 3, 4, 4, 4, 3, 0, 0, 0, 0, 0, 0,
797 }},
798 {{
799 4, 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
800 0, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0,
801 }},
802 {{
803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
804 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4,
805 }},
806 {{
807 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 0, 4, 4, 4, 4, 0, 0,
808 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
809 }},
810 {{
811 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
812 4, 0, 0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
813 }},
814 {{
815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 3,
817 }},
818 {{
819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
820 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 4, 4,
821 }},
822 {{
823 4, 0, 0, 4, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, 4, 4, 4,
824 4, 4, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
825 }},
826 {{
827 4, 0, 0, 0, 4, 0, 4, 0, 4, 4, 0, 0, 4, 0, 0, 0, 0,
828 0, 0, 3, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 4,
829 }},
830 {{
831 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 4, 4, 0,
832 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 3, 3, 0, 0,
833 }},
834 {{
835 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3,
836 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3,
837 }},
838 {{
839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3,
840 3, 3, 3, 3, 0, 3, 0, 3, 0, 3, 3, 3, 3, 0, 0,
841 }},
842 {{
843 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 0, 0, 0,
844 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0,
845 }},
846 {{
847 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 4, 4, 4,
848 0, 0, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
849 }},
850 {{
851 0, 3, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
852 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 0, 3, 0, 0,
853 }},
854 {{
855 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0,
856 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 4, 3, 3,
857 }},
858 {{
859 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3,
860 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
861 }},
862 {{
863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0,
864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
865 }},
866 {{
867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
868 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3,
869 }},
870 {{
871 3, 3, 3, 3, 3, 3, 4, 3, 4, 4, 4, 4, 4, 3, 4, 4, 0,
872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
873 }},
874 {{
875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0,
877 }},
878 {{
879 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 0,
880 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 4,
881 }},
882 {{
883 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 4, 0,
884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
885 }},
886 {{
887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
888 4, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 4,
889 }},
890 {{
891 0, 4, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
892 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,
893 }},
894 {{
895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
896 4, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0,
897 }},
898 {{
899 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
900 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
901 }},
902 {{
903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
904 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
905 }},
906 {{
907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
908 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
909 }},
910 {{
911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0,
912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
913 }},
914 {{
915 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 4, 4,
917 }},
918 {{
919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
920 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
921 }},
922 {{
923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
924 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
925 }},
926 {{
927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
928 0, 0, 0, 0, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4,
929 }},
930 {{
931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
933 }},
934 {{
935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0,
936 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
937 }},
938 {{
939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
940 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
941 }},
942 {{
943 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
944 0, 0, 0, 3, 3, 3, 0, 3, 3, 3, 3, 0, 0, 4, 4,
945 }},
946 {{
947 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 3,
948 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
949 }},
950 {{
951 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 0,
952 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
953 }},
954 {{
955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
956 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4,
957 }},
958 {{
959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0,
960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
961 }},
962 {{
963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
964 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
965 }},
966 {{
967 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4,
969 }},
970 {{
971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 0,
972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4,
973 }},
974 {{
975 3, 4, 4, 4, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
977 }},
978 {{
979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0,
980 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
981 }},
982 {{
983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 0,
984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
985 }},
986 {{
987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0,
988 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 4, 4, 3, 3,
989 }},
990 {{
991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 3, 3,
993 }},
994 {{
995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
997 }},
998 {{
999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0,
1001 }},
1002 {{
1003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0,
1004 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
1005 }},
1006 {{
1007 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 4, 4, 4,
1008 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1009 }},
1010 {{
1011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 0,
1012 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
1013 }},
1014 {{
1015 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
1016 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
1017 }},
1018 {{
1019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1020 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3,
1021 }},
1022 {{
1023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1024 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 3, 3, 3, 3, 3,
1025 }},
1026 {{
1027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0,
1028 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1029 }},
1030 {{
1031 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1032 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1033 }},
1034 {{
1035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1036 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1037 }},
1038 {{
1039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 3,
1040 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3,
1041 }},
1042 {{
1043 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3,
1044 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1045 }},
1046 {{
1047 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0,
1048 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
1049 }},
1050 {{
1051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3,
1053 }},
1054 {{
1055 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1056 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0,
1057 }},
1058 {{
1059 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
1060 0, 3, 0, 3, 0, 0, 0, 0, 0, 3, 3, 0, 0, 3, 0,
1061 }},
1062 {{
1063 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1064 0, 0, 0, 0, 0, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4,
1065 }},
1066 {{
1067 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1068 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3,
1069 }},
1070 {{
1071 0, 0, 0, 0, 0, 0, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 0,
1072 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 3, 4, 3, 4, 3,
1073 }},
1074 {{
1075 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1076 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 4, 4,
1077 }},
1078 {{
1079 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1080 0, 3, 3, 3, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1081 }},
1082 {{
1083 3, 3, 3, 3, 3, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1084 0, 0, 3, 4, 4, 0, 0, 3, 3, 3, 3, 4, 3, 3, 3,
1085 }},
1086 {{
1087 0, 0, 0, 3, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1088 4, 3, 3, 3, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1089 }},
1090 {{
1091 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 3, 3, 3,
1092 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1093 }},
1094 {{
1095 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1096 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1097 }},
1098 {{
1099 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3,
1100 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
1101 }},
1102 {{
1103 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1104 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
1105 }},
1106 {{
1107 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1108 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1109 }},
1110 {{
1111 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1112 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1113 }},
1114 {{
1115 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 3,
1116 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1117 }},
1118 {{
1119 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1120 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1121 }},
1122 {{
1123 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1124 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1125 }},
1126 {{
1127 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
1128 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1129 }},
1130 {{
1131 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1132 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1133 }},
1134 {{
1135 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3,
1136 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
1137 }},
1138 {{
1139 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 0,
1140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1141 }},
1142 {{
1143 3, 0, 3, 3, 3, 0, 0, 3, 0, 3, 0, 3, 0, 3, 3, 3, 3,
1144 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3,
1145 }},
1146 {{
1147 3, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 0,
1148 0, 3, 0, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3,
1149 }},
1150 {{
1151 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 0, 4, 4, 0,
1152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1153 }},
1154 {{
1155 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 3, 3,
1156 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1157 }},
1158 {{
1159 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0,
1160 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4,
1161 }},
1162 {{
1163 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3,
1164 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
1165 }},
1166 {{
1167 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1168 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3,
1169 }},
1170 {{
1171 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1172 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1173 }},
1174 {{
1175 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1176 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
1177 }},
1178 {{
1179 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1180 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1181 }},
1182 {{
1183 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 3, 3, 3,
1184 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3,
1185 }},
1186 {{
1187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1188 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 3, 3, 0, 0, 3,
1189 }},
1190 {{
1191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3,
1193 }},
1194 {{
1195 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1197 }},
1198 {{
1199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4,
1200 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1201 }},
1202 {{
1203 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3,
1204 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1205 }},
1206 {{
1207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4,
1209 }},
1210 {{
1211 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1213 }},
1214 {{
1215 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1216 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1217 }},
1218 {{
1219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4,
1220 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1221 }},
1222 {{
1223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 3,
1224 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1225 }},
1226 {{
1227 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1229 }},
1230 {{
1231 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0,
1232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1233 }},
1234 {{
1235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4,
1236 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1237 }},
1238 {{
1239 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0, 0, 3,
1240 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
1241 }},
1242 {{
1243 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
1244 0, 3, 0, 3, 0, 3, 0, 4, 4, 4, 4, 4, 4, 4, 0,
1245 }},
1246 {{
1247 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1248 0, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
1249 }},
1250 {{
1251 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1252 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1253 }},
1254 {{
1255 3, 3, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 0,
1256 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
1257 }},
1258 {{
1259 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
1260 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, 3, 3, 0,
1261 }},
1262 {{
1263 3, 0, 3, 0, 3, 0, 3, 0, 0, 3, 3, 3, 0, 3, 0, 4, 3,
1264 0, 3, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1265 }},
1266 {{
1267 3, 0, 3, 0, 3, 0, 3, 0, 3, 0, 3, 4, 4, 4, 4, 4, 4,
1268 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1269 }},
1270 {{
1271 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1272 4, 4, 4, 4, 4, 4, 4, 3, 3, 0, 0, 0, 0, 0, 0,
1273 }},
1274 {{
1275 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 4, 4, 4, 4, 3,
1276 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
1277 }},
1278 {{
1279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1280 0, 0, 0, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
1281 }},
1282 {{
1283 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 0,
1284 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
1285 }},
1286 {{
1287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1288 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 4, 4, 4, 4,
1289 }},
1290 {{
1291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0,
1292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1293 }},
1294 {{
1295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1296 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1297 }},
1298 {{
1299 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 0, 0,
1300 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 3, 3,
1301 }},
1302 {{
1303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0,
1304 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 3, 3, 3, 3,
1305 }},
1306 {{
1307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1308 0, 0, 0, 0, 0, 0, 3, 3, 3, 0, 0, 4, 4, 4, 4,
1309 }},
1310 {{
1311 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1312 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 3, 3,
1313 }},
1314 {{
1315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,
1316 3, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1317 }},
1318 {{
1319 4, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 4, 4,
1320 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1321 }},
1322 {{
1323 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 4,
1324 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1325 }},
1326 {{
1327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 4, 4, 0,
1328 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
1329 }},
1330 {{
1331 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1332 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1333 }},
1334 {{
1335 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3,
1336 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1337 }},
1338 {{
1339 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1340 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
1341 }},
1342 {{
1343 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3,
1344 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0,
1345 }},
1346 {{
1347 3, 0, 3, 0, 0, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3,
1348 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1349 }},
1350 {{
1351 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3,
1352 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1353 }},
1354 {{
1355 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1356 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
1357 }},
1358 {{
1359 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1360 4, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 3, 0, 3,
1361 }},
1362 {{
1363 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1364 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 4, 3, 4,
1365 }},
1366 {{
1367 3, 3, 4, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1368 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1369 }},
1370 {{
1371 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1372 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1373 }},
1374 {{
1375 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1376 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1377 }},
1378 {{
1379 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1380 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1381 }},
1382 {{
1383 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1384 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4,
1385 }},
1386 {{
1387 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1388 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1389 }},
1390 {{
1391 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1392 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1393 }},
1394 {{
1395 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3,
1396 3, 3, 0, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1397 }},
1398 {{
1399 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1400 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3,
1401 }},
1402 {{
1403 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 4,
1404 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4,
1405 }},
1406 {{
1407 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 4, 4,
1408 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3,
1409 }},
1410 {{
1411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
1412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1413 }},
1414 {{
1415 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 4, 0,
1417 }},
1418 {{
1419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0,
1420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4,
1421 }},
1422 {{
1423 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1424 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1425 }},
1426 {{
1427 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1428 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1429 }},
1430 {{
1431 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 3,
1432 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
1433 }},
1434 {{
1435 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1436 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 4, 4,
1437 }},
1438 {{
1439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1440 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1441 }},
1442 {{
1443 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 4, 4, 4, 4, 4,
1444 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1445 }},
1446 {{
1447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3,
1449 }},
1450 {{
1451 0, 0, 0, 0, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 3,
1452 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1453 }},
1454 {{
1455 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1457 }},
1458 {{
1459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4,
1461 }},
1462 {{
1463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4,
1464 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1465 }},
1466 {{
1467 0, 0, 0, 0, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1469 }},
1470 {{
1471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1472 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 0, 4, 4, 0,
1473 }},
1474 {{
1475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1476 0, 0, 0, 0, 0, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1477 }},
1478 {{
1479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1480 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3,
1481 }},
1482 {{
1483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1484 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 3,
1485 }},
1486 {{
1487 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0,
1489 }},
1490 {{
1491 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0,
1492 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
1493 }},
1494 {{
1495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1496 0, 0, 0, 4, 4, 4, 4, 0, 0, 0, 4, 4, 4, 4, 0,
1497 }},
1498 {{
1499 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1500 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4,
1501 }},
1502 {{
1503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3,
1505 }},
1506 {{
1507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1508 0, 0, 0, 0, 0, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3,
1509 }},
1510 {{
1511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
1513 }},
1514 {{
1515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1516 0, 0, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
1517 }},
1518 {{
1519 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4,
1520 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1521 }},
1522 {{
1523 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4,
1524 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1525 }},
1526 {{
1527 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
1528 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1529 }},
1530 {{
1531 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1533 }},
1534 {{
1535 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0,
1536 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
1537 }},
1538 {{
1539 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1540 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1541 }},
1542 {{
1543 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1544 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1545 }},
1546 {{
1547 0, 0, 0, 0, 0, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 0,
1548 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4,
1549 }},
1550 {{
1551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4,
1552 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1553 }},
1554 {{
1555 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1556 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1557 }},
1558 {{
1559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1560 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4,
1561 }},
1562 {{
1563 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1565 }},
1566 {{
1567 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0,
1568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1569 }},
1570 {{
1571 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1572 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1573 }},
1574 {{
1575 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
1576 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1577 }},
1578 {{
1579 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1580 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1581 }},
1582 {{
1583 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1584 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1585 }},
1586 {{
1587 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1588 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1589 }},
1590 {{
1591 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1592 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1593 }},
1594 {{
1595 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1596 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3,
1597 }},
1598 {{
1599 4, 4, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 4, 3, 3, 3,
1600 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 3, 3,
1601 }},
1602 {{
1603 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1604 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1605 }},
1606 {{
1607 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3,
1608 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3,
1609 }},
1610 {{
1611 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1612 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4,
1613 }},
1614 {{
1615 3, 3, 3, 3, 3, 4, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3,
1616 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1617 }},
1618 {{
1619 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1620 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1621 }},
1622 {{
1623 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3,
1624 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1625 }},
1626 {{
1627 4, 3, 3, 4, 3, 4, 4, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3,
1628 3, 3, 4, 3, 3, 3, 3, 4, 3, 4, 3, 4, 4, 4, 4,
1629 }},
1630 {{
1631 4, 4, 3, 4, 4, 4, 4, 3, 4, 3, 4, 3, 4, 3, 3, 3, 4,
1632 3, 3, 4, 3, 4, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3,
1633 }},
1634 {{
1635 4, 3, 3, 4, 3, 4, 4, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3,
1636 3, 3, 4, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4, 3, 4,
1637 }},
1638 {{
1639 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3,
1640 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
1641 }},
1642 {{
1643 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3,
1644 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
1645 }},
1646 {{
1647 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1648 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1649 }},
1650 {{
1651 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 3,
1652 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1653 }},
1654 {{
1655 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4,
1656 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1657 }},
1658 {{
1659 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1660 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1661 }},
1662 {{
1663 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 3,
1664 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1665 }},
1666 {{
1667 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1668 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1669 }},
1670 {{
1671 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1672 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1673 }},
1674 {{
1675 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 3,
1676 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1677 }},
1678 {{
1679 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1680 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1681 }},
1682 {{
1683 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4,
1684 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1685 }},
1686 {{
1687 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1688 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1689 }},
1690 {{
1691 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1692 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4, 4, 4,
1693 }},
1694 {{
1695 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3,
1696 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1697 }},
1698 {{
1699 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1700 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1701 }},
1702 {{
1703 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1704 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3,
1705 }},
1706 {{
1707 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1708 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1709 }},
1710 {{
1711 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1712 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3,
1713 }},
1714 {{
1715 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1716 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1717 }},
1718 {{
1719 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4,
1720 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1721 }},
1722 };
1723
1724 /*
1725 * Table accessor.
1726 */
1727 idn__idnacategory_t
idn__sparsemap_getidnacategory(unsigned long v)1728 idn__sparsemap_getidnacategory(unsigned long v) {
1729 int idx0, idx1, idx2;
1730
1731 if (v > UTF32_MAX)
1732 return (idn__idnacategory_unknown);
1733 idx0 = v >> (IDNACATEGORY_BITS_1 + IDNACATEGORY_BITS_2);
1734 idx1 = (v >> IDNACATEGORY_BITS_2) & ((1 << IDNACATEGORY_BITS_1) - 1);
1735 idx2 = v & ((1 << IDNACATEGORY_BITS_2) - 1);
1736 return (idn__idnacategory_t) idnacategory_table[idnacategory_imap[idnacategory_imap[idx0] + idx1]].tbl[idx2];
1737 }
1738