Import libarchive-3.0.2.
[dragonfly.git] / contrib / libarchive / libarchive / archive_string_composition.h
1 /*-
2  * Copyright (c) 2011 libarchive Project
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) AS IS'' AND ANY EXPRESS OR
15  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17  * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
18  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  *
25  * $FreeBSD$
26  *
27  */
28
29 /*
30  * ATTENTION!
31  *  This file is generated by build/utils/gen_archive_string_composition_h.sh
32  *  from http://unicode.org/Public/UNIDATA/UnicodeData.txt
33  *
34  *  See also http://unicode.org/report/tr15/
35  */
36
37 #ifndef __LIBARCHIVE_BUILD
38 #error This header is only to be used internally to libarchive.
39 #endif
40
41 #ifndef ARCHIVE_STRING_COMPOSITION_H_INCLUDED
42 #define ARCHIVE_STRING_COMPOSITION_H_INCLUDED
43
44 struct unicode_composition_table {
45         uint32_t cp1;
46         uint32_t cp2;
47         uint32_t nfc;
48 };
49
50 static const struct unicode_composition_table u_composition_table[] = {
51         { 0x0003C , 0x00338 , 0x0226E },
52         { 0x0003D , 0x00338 , 0x02260 },
53         { 0x0003E , 0x00338 , 0x0226F },
54         { 0x00041 , 0x00300 , 0x000C0 },
55         { 0x00041 , 0x00301 , 0x000C1 },
56         { 0x00041 , 0x00302 , 0x000C2 },
57         { 0x00041 , 0x00303 , 0x000C3 },
58         { 0x00041 , 0x00304 , 0x00100 },
59         { 0x00041 , 0x00306 , 0x00102 },
60         { 0x00041 , 0x00307 , 0x00226 },
61         { 0x00041 , 0x00308 , 0x000C4 },
62         { 0x00041 , 0x00309 , 0x01EA2 },
63         { 0x00041 , 0x0030A , 0x000C5 },
64         { 0x00041 , 0x0030C , 0x001CD },
65         { 0x00041 , 0x0030F , 0x00200 },
66         { 0x00041 , 0x00311 , 0x00202 },
67         { 0x00041 , 0x00323 , 0x01EA0 },
68         { 0x00041 , 0x00325 , 0x01E00 },
69         { 0x00041 , 0x00328 , 0x00104 },
70         { 0x00042 , 0x00307 , 0x01E02 },
71         { 0x00042 , 0x00323 , 0x01E04 },
72         { 0x00042 , 0x00331 , 0x01E06 },
73         { 0x00043 , 0x00301 , 0x00106 },
74         { 0x00043 , 0x00302 , 0x00108 },
75         { 0x00043 , 0x00307 , 0x0010A },
76         { 0x00043 , 0x0030C , 0x0010C },
77         { 0x00043 , 0x00327 , 0x000C7 },
78         { 0x00044 , 0x00307 , 0x01E0A },
79         { 0x00044 , 0x0030C , 0x0010E },
80         { 0x00044 , 0x00323 , 0x01E0C },
81         { 0x00044 , 0x00327 , 0x01E10 },
82         { 0x00044 , 0x0032D , 0x01E12 },
83         { 0x00044 , 0x00331 , 0x01E0E },
84         { 0x00045 , 0x00300 , 0x000C8 },
85         { 0x00045 , 0x00301 , 0x000C9 },
86         { 0x00045 , 0x00302 , 0x000CA },
87         { 0x00045 , 0x00303 , 0x01EBC },
88         { 0x00045 , 0x00304 , 0x00112 },
89         { 0x00045 , 0x00306 , 0x00114 },
90         { 0x00045 , 0x00307 , 0x00116 },
91         { 0x00045 , 0x00308 , 0x000CB },
92         { 0x00045 , 0x00309 , 0x01EBA },
93         { 0x00045 , 0x0030C , 0x0011A },
94         { 0x00045 , 0x0030F , 0x00204 },
95         { 0x00045 , 0x00311 , 0x00206 },
96         { 0x00045 , 0x00323 , 0x01EB8 },
97         { 0x00045 , 0x00327 , 0x00228 },
98         { 0x00045 , 0x00328 , 0x00118 },
99         { 0x00045 , 0x0032D , 0x01E18 },
100         { 0x00045 , 0x00330 , 0x01E1A },
101         { 0x00046 , 0x00307 , 0x01E1E },
102         { 0x00047 , 0x00301 , 0x001F4 },
103         { 0x00047 , 0x00302 , 0x0011C },
104         { 0x00047 , 0x00304 , 0x01E20 },
105         { 0x00047 , 0x00306 , 0x0011E },
106         { 0x00047 , 0x00307 , 0x00120 },
107         { 0x00047 , 0x0030C , 0x001E6 },
108         { 0x00047 , 0x00327 , 0x00122 },
109         { 0x00048 , 0x00302 , 0x00124 },
110         { 0x00048 , 0x00307 , 0x01E22 },
111         { 0x00048 , 0x00308 , 0x01E26 },
112         { 0x00048 , 0x0030C , 0x0021E },
113         { 0x00048 , 0x00323 , 0x01E24 },
114         { 0x00048 , 0x00327 , 0x01E28 },
115         { 0x00048 , 0x0032E , 0x01E2A },
116         { 0x00049 , 0x00300 , 0x000CC },
117         { 0x00049 , 0x00301 , 0x000CD },
118         { 0x00049 , 0x00302 , 0x000CE },
119         { 0x00049 , 0x00303 , 0x00128 },
120         { 0x00049 , 0x00304 , 0x0012A },
121         { 0x00049 , 0x00306 , 0x0012C },
122         { 0x00049 , 0x00307 , 0x00130 },
123         { 0x00049 , 0x00308 , 0x000CF },
124         { 0x00049 , 0x00309 , 0x01EC8 },
125         { 0x00049 , 0x0030C , 0x001CF },
126         { 0x00049 , 0x0030F , 0x00208 },
127         { 0x00049 , 0x00311 , 0x0020A },
128         { 0x00049 , 0x00323 , 0x01ECA },
129         { 0x00049 , 0x00328 , 0x0012E },
130         { 0x00049 , 0x00330 , 0x01E2C },
131         { 0x0004A , 0x00302 , 0x00134 },
132         { 0x0004B , 0x00301 , 0x01E30 },
133         { 0x0004B , 0x0030C , 0x001E8 },
134         { 0x0004B , 0x00323 , 0x01E32 },
135         { 0x0004B , 0x00327 , 0x00136 },
136         { 0x0004B , 0x00331 , 0x01E34 },
137         { 0x0004C , 0x00301 , 0x00139 },
138         { 0x0004C , 0x0030C , 0x0013D },
139         { 0x0004C , 0x00323 , 0x01E36 },
140         { 0x0004C , 0x00327 , 0x0013B },
141         { 0x0004C , 0x0032D , 0x01E3C },
142         { 0x0004C , 0x00331 , 0x01E3A },
143         { 0x0004D , 0x00301 , 0x01E3E },
144         { 0x0004D , 0x00307 , 0x01E40 },
145         { 0x0004D , 0x00323 , 0x01E42 },
146         { 0x0004E , 0x00300 , 0x001F8 },
147         { 0x0004E , 0x00301 , 0x00143 },
148         { 0x0004E , 0x00303 , 0x000D1 },
149         { 0x0004E , 0x00307 , 0x01E44 },
150         { 0x0004E , 0x0030C , 0x00147 },
151         { 0x0004E , 0x00323 , 0x01E46 },
152         { 0x0004E , 0x00327 , 0x00145 },
153         { 0x0004E , 0x0032D , 0x01E4A },
154         { 0x0004E , 0x00331 , 0x01E48 },
155         { 0x0004F , 0x00300 , 0x000D2 },
156         { 0x0004F , 0x00301 , 0x000D3 },
157         { 0x0004F , 0x00302 , 0x000D4 },
158         { 0x0004F , 0x00303 , 0x000D5 },
159         { 0x0004F , 0x00304 , 0x0014C },
160         { 0x0004F , 0x00306 , 0x0014E },
161         { 0x0004F , 0x00307 , 0x0022E },
162         { 0x0004F , 0x00308 , 0x000D6 },
163         { 0x0004F , 0x00309 , 0x01ECE },
164         { 0x0004F , 0x0030B , 0x00150 },
165         { 0x0004F , 0x0030C , 0x001D1 },
166         { 0x0004F , 0x0030F , 0x0020C },
167         { 0x0004F , 0x00311 , 0x0020E },
168         { 0x0004F , 0x0031B , 0x001A0 },
169         { 0x0004F , 0x00323 , 0x01ECC },
170         { 0x0004F , 0x00328 , 0x001EA },
171         { 0x00050 , 0x00301 , 0x01E54 },
172         { 0x00050 , 0x00307 , 0x01E56 },
173         { 0x00052 , 0x00301 , 0x00154 },
174         { 0x00052 , 0x00307 , 0x01E58 },
175         { 0x00052 , 0x0030C , 0x00158 },
176         { 0x00052 , 0x0030F , 0x00210 },
177         { 0x00052 , 0x00311 , 0x00212 },
178         { 0x00052 , 0x00323 , 0x01E5A },
179         { 0x00052 , 0x00327 , 0x00156 },
180         { 0x00052 , 0x00331 , 0x01E5E },
181         { 0x00053 , 0x00301 , 0x0015A },
182         { 0x00053 , 0x00302 , 0x0015C },
183         { 0x00053 , 0x00307 , 0x01E60 },
184         { 0x00053 , 0x0030C , 0x00160 },
185         { 0x00053 , 0x00323 , 0x01E62 },
186         { 0x00053 , 0x00326 , 0x00218 },
187         { 0x00053 , 0x00327 , 0x0015E },
188         { 0x00054 , 0x00307 , 0x01E6A },
189         { 0x00054 , 0x0030C , 0x00164 },
190         { 0x00054 , 0x00323 , 0x01E6C },
191         { 0x00054 , 0x00326 , 0x0021A },
192         { 0x00054 , 0x00327 , 0x00162 },
193         { 0x00054 , 0x0032D , 0x01E70 },
194         { 0x00054 , 0x00331 , 0x01E6E },
195         { 0x00055 , 0x00300 , 0x000D9 },
196         { 0x00055 , 0x00301 , 0x000DA },
197         { 0x00055 , 0x00302 , 0x000DB },
198         { 0x00055 , 0x00303 , 0x00168 },
199         { 0x00055 , 0x00304 , 0x0016A },
200         { 0x00055 , 0x00306 , 0x0016C },
201         { 0x00055 , 0x00308 , 0x000DC },
202         { 0x00055 , 0x00309 , 0x01EE6 },
203         { 0x00055 , 0x0030A , 0x0016E },
204         { 0x00055 , 0x0030B , 0x00170 },
205         { 0x00055 , 0x0030C , 0x001D3 },
206         { 0x00055 , 0x0030F , 0x00214 },
207         { 0x00055 , 0x00311 , 0x00216 },
208         { 0x00055 , 0x0031B , 0x001AF },
209         { 0x00055 , 0x00323 , 0x01EE4 },
210         { 0x00055 , 0x00324 , 0x01E72 },
211         { 0x00055 , 0x00328 , 0x00172 },
212         { 0x00055 , 0x0032D , 0x01E76 },
213         { 0x00055 , 0x00330 , 0x01E74 },
214         { 0x00056 , 0x00303 , 0x01E7C },
215         { 0x00056 , 0x00323 , 0x01E7E },
216         { 0x00057 , 0x00300 , 0x01E80 },
217         { 0x00057 , 0x00301 , 0x01E82 },
218         { 0x00057 , 0x00302 , 0x00174 },
219         { 0x00057 , 0x00307 , 0x01E86 },
220         { 0x00057 , 0x00308 , 0x01E84 },
221         { 0x00057 , 0x00323 , 0x01E88 },
222         { 0x00058 , 0x00307 , 0x01E8A },
223         { 0x00058 , 0x00308 , 0x01E8C },
224         { 0x00059 , 0x00300 , 0x01EF2 },
225         { 0x00059 , 0x00301 , 0x000DD },
226         { 0x00059 , 0x00302 , 0x00176 },
227         { 0x00059 , 0x00303 , 0x01EF8 },
228         { 0x00059 , 0x00304 , 0x00232 },
229         { 0x00059 , 0x00307 , 0x01E8E },
230         { 0x00059 , 0x00308 , 0x00178 },
231         { 0x00059 , 0x00309 , 0x01EF6 },
232         { 0x00059 , 0x00323 , 0x01EF4 },
233         { 0x0005A , 0x00301 , 0x00179 },
234         { 0x0005A , 0x00302 , 0x01E90 },
235         { 0x0005A , 0x00307 , 0x0017B },
236         { 0x0005A , 0x0030C , 0x0017D },
237         { 0x0005A , 0x00323 , 0x01E92 },
238         { 0x0005A , 0x00331 , 0x01E94 },
239         { 0x00061 , 0x00300 , 0x000E0 },
240         { 0x00061 , 0x00301 , 0x000E1 },
241         { 0x00061 , 0x00302 , 0x000E2 },
242         { 0x00061 , 0x00303 , 0x000E3 },
243         { 0x00061 , 0x00304 , 0x00101 },
244         { 0x00061 , 0x00306 , 0x00103 },
245         { 0x00061 , 0x00307 , 0x00227 },
246         { 0x00061 , 0x00308 , 0x000E4 },
247         { 0x00061 , 0x00309 , 0x01EA3 },
248         { 0x00061 , 0x0030A , 0x000E5 },
249         { 0x00061 , 0x0030C , 0x001CE },
250         { 0x00061 , 0x0030F , 0x00201 },
251         { 0x00061 , 0x00311 , 0x00203 },
252         { 0x00061 , 0x00323 , 0x01EA1 },
253         { 0x00061 , 0x00325 , 0x01E01 },
254         { 0x00061 , 0x00328 , 0x00105 },
255         { 0x00062 , 0x00307 , 0x01E03 },
256         { 0x00062 , 0x00323 , 0x01E05 },
257         { 0x00062 , 0x00331 , 0x01E07 },
258         { 0x00063 , 0x00301 , 0x00107 },
259         { 0x00063 , 0x00302 , 0x00109 },
260         { 0x00063 , 0x00307 , 0x0010B },
261         { 0x00063 , 0x0030C , 0x0010D },
262         { 0x00063 , 0x00327 , 0x000E7 },
263         { 0x00064 , 0x00307 , 0x01E0B },
264         { 0x00064 , 0x0030C , 0x0010F },
265         { 0x00064 , 0x00323 , 0x01E0D },
266         { 0x00064 , 0x00327 , 0x01E11 },
267         { 0x00064 , 0x0032D , 0x01E13 },
268         { 0x00064 , 0x00331 , 0x01E0F },
269         { 0x00065 , 0x00300 , 0x000E8 },
270         { 0x00065 , 0x00301 , 0x000E9 },
271         { 0x00065 , 0x00302 , 0x000EA },
272         { 0x00065 , 0x00303 , 0x01EBD },
273         { 0x00065 , 0x00304 , 0x00113 },
274         { 0x00065 , 0x00306 , 0x00115 },
275         { 0x00065 , 0x00307 , 0x00117 },
276         { 0x00065 , 0x00308 , 0x000EB },
277         { 0x00065 , 0x00309 , 0x01EBB },
278         { 0x00065 , 0x0030C , 0x0011B },
279         { 0x00065 , 0x0030F , 0x00205 },
280         { 0x00065 , 0x00311 , 0x00207 },
281         { 0x00065 , 0x00323 , 0x01EB9 },
282         { 0x00065 , 0x00327 , 0x00229 },
283         { 0x00065 , 0x00328 , 0x00119 },
284         { 0x00065 , 0x0032D , 0x01E19 },
285         { 0x00065 , 0x00330 , 0x01E1B },
286         { 0x00066 , 0x00307 , 0x01E1F },
287         { 0x00067 , 0x00301 , 0x001F5 },
288         { 0x00067 , 0x00302 , 0x0011D },
289         { 0x00067 , 0x00304 , 0x01E21 },
290         { 0x00067 , 0x00306 , 0x0011F },
291         { 0x00067 , 0x00307 , 0x00121 },
292         { 0x00067 , 0x0030C , 0x001E7 },
293         { 0x00067 , 0x00327 , 0x00123 },
294         { 0x00068 , 0x00302 , 0x00125 },
295         { 0x00068 , 0x00307 , 0x01E23 },
296         { 0x00068 , 0x00308 , 0x01E27 },
297         { 0x00068 , 0x0030C , 0x0021F },
298         { 0x00068 , 0x00323 , 0x01E25 },
299         { 0x00068 , 0x00327 , 0x01E29 },
300         { 0x00068 , 0x0032E , 0x01E2B },
301         { 0x00068 , 0x00331 , 0x01E96 },
302         { 0x00069 , 0x00300 , 0x000EC },
303         { 0x00069 , 0x00301 , 0x000ED },
304         { 0x00069 , 0x00302 , 0x000EE },
305         { 0x00069 , 0x00303 , 0x00129 },
306         { 0x00069 , 0x00304 , 0x0012B },
307         { 0x00069 , 0x00306 , 0x0012D },
308         { 0x00069 , 0x00308 , 0x000EF },
309         { 0x00069 , 0x00309 , 0x01EC9 },
310         { 0x00069 , 0x0030C , 0x001D0 },
311         { 0x00069 , 0x0030F , 0x00209 },
312         { 0x00069 , 0x00311 , 0x0020B },
313         { 0x00069 , 0x00323 , 0x01ECB },
314         { 0x00069 , 0x00328 , 0x0012F },
315         { 0x00069 , 0x00330 , 0x01E2D },
316         { 0x0006A , 0x00302 , 0x00135 },
317         { 0x0006A , 0x0030C , 0x001F0 },
318         { 0x0006B , 0x00301 , 0x01E31 },
319         { 0x0006B , 0x0030C , 0x001E9 },
320         { 0x0006B , 0x00323 , 0x01E33 },
321         { 0x0006B , 0x00327 , 0x00137 },
322         { 0x0006B , 0x00331 , 0x01E35 },
323         { 0x0006C , 0x00301 , 0x0013A },
324         { 0x0006C , 0x0030C , 0x0013E },
325         { 0x0006C , 0x00323 , 0x01E37 },
326         { 0x0006C , 0x00327 , 0x0013C },
327         { 0x0006C , 0x0032D , 0x01E3D },
328         { 0x0006C , 0x00331 , 0x01E3B },
329         { 0x0006D , 0x00301 , 0x01E3F },
330         { 0x0006D , 0x00307 , 0x01E41 },
331         { 0x0006D , 0x00323 , 0x01E43 },
332         { 0x0006E , 0x00300 , 0x001F9 },
333         { 0x0006E , 0x00301 , 0x00144 },
334         { 0x0006E , 0x00303 , 0x000F1 },
335         { 0x0006E , 0x00307 , 0x01E45 },
336         { 0x0006E , 0x0030C , 0x00148 },
337         { 0x0006E , 0x00323 , 0x01E47 },
338         { 0x0006E , 0x00327 , 0x00146 },
339         { 0x0006E , 0x0032D , 0x01E4B },
340         { 0x0006E , 0x00331 , 0x01E49 },
341         { 0x0006F , 0x00300 , 0x000F2 },
342         { 0x0006F , 0x00301 , 0x000F3 },
343         { 0x0006F , 0x00302 , 0x000F4 },
344         { 0x0006F , 0x00303 , 0x000F5 },
345         { 0x0006F , 0x00304 , 0x0014D },
346         { 0x0006F , 0x00306 , 0x0014F },
347         { 0x0006F , 0x00307 , 0x0022F },
348         { 0x0006F , 0x00308 , 0x000F6 },
349         { 0x0006F , 0x00309 , 0x01ECF },
350         { 0x0006F , 0x0030B , 0x00151 },
351         { 0x0006F , 0x0030C , 0x001D2 },
352         { 0x0006F , 0x0030F , 0x0020D },
353         { 0x0006F , 0x00311 , 0x0020F },
354         { 0x0006F , 0x0031B , 0x001A1 },
355         { 0x0006F , 0x00323 , 0x01ECD },
356         { 0x0006F , 0x00328 , 0x001EB },
357         { 0x00070 , 0x00301 , 0x01E55 },
358         { 0x00070 , 0x00307 , 0x01E57 },
359         { 0x00072 , 0x00301 , 0x00155 },
360         { 0x00072 , 0x00307 , 0x01E59 },
361         { 0x00072 , 0x0030C , 0x00159 },
362         { 0x00072 , 0x0030F , 0x00211 },
363         { 0x00072 , 0x00311 , 0x00213 },
364         { 0x00072 , 0x00323 , 0x01E5B },
365         { 0x00072 , 0x00327 , 0x00157 },
366         { 0x00072 , 0x00331 , 0x01E5F },
367         { 0x00073 , 0x00301 , 0x0015B },
368         { 0x00073 , 0x00302 , 0x0015D },
369         { 0x00073 , 0x00307 , 0x01E61 },
370         { 0x00073 , 0x0030C , 0x00161 },
371         { 0x00073 , 0x00323 , 0x01E63 },
372         { 0x00073 , 0x00326 , 0x00219 },
373         { 0x00073 , 0x00327 , 0x0015F },
374         { 0x00074 , 0x00307 , 0x01E6B },
375         { 0x00074 , 0x00308 , 0x01E97 },
376         { 0x00074 , 0x0030C , 0x00165 },
377         { 0x00074 , 0x00323 , 0x01E6D },
378         { 0x00074 , 0x00326 , 0x0021B },
379         { 0x00074 , 0x00327 , 0x00163 },
380         { 0x00074 , 0x0032D , 0x01E71 },
381         { 0x00074 , 0x00331 , 0x01E6F },
382         { 0x00075 , 0x00300 , 0x000F9 },
383         { 0x00075 , 0x00301 , 0x000FA },
384         { 0x00075 , 0x00302 , 0x000FB },
385         { 0x00075 , 0x00303 , 0x00169 },
386         { 0x00075 , 0x00304 , 0x0016B },
387         { 0x00075 , 0x00306 , 0x0016D },
388         { 0x00075 , 0x00308 , 0x000FC },
389         { 0x00075 , 0x00309 , 0x01EE7 },
390         { 0x00075 , 0x0030A , 0x0016F },
391         { 0x00075 , 0x0030B , 0x00171 },
392         { 0x00075 , 0x0030C , 0x001D4 },
393         { 0x00075 , 0x0030F , 0x00215 },
394         { 0x00075 , 0x00311 , 0x00217 },
395         { 0x00075 , 0x0031B , 0x001B0 },
396         { 0x00075 , 0x00323 , 0x01EE5 },
397         { 0x00075 , 0x00324 , 0x01E73 },
398         { 0x00075 , 0x00328 , 0x00173 },
399         { 0x00075 , 0x0032D , 0x01E77 },
400         { 0x00075 , 0x00330 , 0x01E75 },
401         { 0x00076 , 0x00303 , 0x01E7D },
402         { 0x00076 , 0x00323 , 0x01E7F },
403         { 0x00077 , 0x00300 , 0x01E81 },
404         { 0x00077 , 0x00301 , 0x01E83 },
405         { 0x00077 , 0x00302 , 0x00175 },
406         { 0x00077 , 0x00307 , 0x01E87 },
407         { 0x00077 , 0x00308 , 0x01E85 },
408         { 0x00077 , 0x0030A , 0x01E98 },
409         { 0x00077 , 0x00323 , 0x01E89 },
410         { 0x00078 , 0x00307 , 0x01E8B },
411         { 0x00078 , 0x00308 , 0x01E8D },
412         { 0x00079 , 0x00300 , 0x01EF3 },
413         { 0x00079 , 0x00301 , 0x000FD },
414         { 0x00079 , 0x00302 , 0x00177 },
415         { 0x00079 , 0x00303 , 0x01EF9 },
416         { 0x00079 , 0x00304 , 0x00233 },
417         { 0x00079 , 0x00307 , 0x01E8F },
418         { 0x00079 , 0x00308 , 0x000FF },
419         { 0x00079 , 0x00309 , 0x01EF7 },
420         { 0x00079 , 0x0030A , 0x01E99 },
421         { 0x00079 , 0x00323 , 0x01EF5 },
422         { 0x0007A , 0x00301 , 0x0017A },
423         { 0x0007A , 0x00302 , 0x01E91 },
424         { 0x0007A , 0x00307 , 0x0017C },
425         { 0x0007A , 0x0030C , 0x0017E },
426         { 0x0007A , 0x00323 , 0x01E93 },
427         { 0x0007A , 0x00331 , 0x01E95 },
428         { 0x000A8 , 0x00300 , 0x01FED },
429         { 0x000A8 , 0x00301 , 0x00385 },
430         { 0x000A8 , 0x00342 , 0x01FC1 },
431         { 0x000C2 , 0x00300 , 0x01EA6 },
432         { 0x000C2 , 0x00301 , 0x01EA4 },
433         { 0x000C2 , 0x00303 , 0x01EAA },
434         { 0x000C2 , 0x00309 , 0x01EA8 },
435         { 0x000C4 , 0x00304 , 0x001DE },
436         { 0x000C5 , 0x00301 , 0x001FA },
437         { 0x000C6 , 0x00301 , 0x001FC },
438         { 0x000C6 , 0x00304 , 0x001E2 },
439         { 0x000C7 , 0x00301 , 0x01E08 },
440         { 0x000CA , 0x00300 , 0x01EC0 },
441         { 0x000CA , 0x00301 , 0x01EBE },
442         { 0x000CA , 0x00303 , 0x01EC4 },
443         { 0x000CA , 0x00309 , 0x01EC2 },
444         { 0x000CF , 0x00301 , 0x01E2E },
445         { 0x000D4 , 0x00300 , 0x01ED2 },
446         { 0x000D4 , 0x00301 , 0x01ED0 },
447         { 0x000D4 , 0x00303 , 0x01ED6 },
448         { 0x000D4 , 0x00309 , 0x01ED4 },
449         { 0x000D5 , 0x00301 , 0x01E4C },
450         { 0x000D5 , 0x00304 , 0x0022C },
451         { 0x000D5 , 0x00308 , 0x01E4E },
452         { 0x000D6 , 0x00304 , 0x0022A },
453         { 0x000D8 , 0x00301 , 0x001FE },
454         { 0x000DC , 0x00300 , 0x001DB },
455         { 0x000DC , 0x00301 , 0x001D7 },
456         { 0x000DC , 0x00304 , 0x001D5 },
457         { 0x000DC , 0x0030C , 0x001D9 },
458         { 0x000E2 , 0x00300 , 0x01EA7 },
459         { 0x000E2 , 0x00301 , 0x01EA5 },
460         { 0x000E2 , 0x00303 , 0x01EAB },
461         { 0x000E2 , 0x00309 , 0x01EA9 },
462         { 0x000E4 , 0x00304 , 0x001DF },
463         { 0x000E5 , 0x00301 , 0x001FB },
464         { 0x000E6 , 0x00301 , 0x001FD },
465         { 0x000E6 , 0x00304 , 0x001E3 },
466         { 0x000E7 , 0x00301 , 0x01E09 },
467         { 0x000EA , 0x00300 , 0x01EC1 },
468         { 0x000EA , 0x00301 , 0x01EBF },
469         { 0x000EA , 0x00303 , 0x01EC5 },
470         { 0x000EA , 0x00309 , 0x01EC3 },
471         { 0x000EF , 0x00301 , 0x01E2F },
472         { 0x000F4 , 0x00300 , 0x01ED3 },
473         { 0x000F4 , 0x00301 , 0x01ED1 },
474         { 0x000F4 , 0x00303 , 0x01ED7 },
475         { 0x000F4 , 0x00309 , 0x01ED5 },
476         { 0x000F5 , 0x00301 , 0x01E4D },
477         { 0x000F5 , 0x00304 , 0x0022D },
478         { 0x000F5 , 0x00308 , 0x01E4F },
479         { 0x000F6 , 0x00304 , 0x0022B },
480         { 0x000F8 , 0x00301 , 0x001FF },
481         { 0x000FC , 0x00300 , 0x001DC },
482         { 0x000FC , 0x00301 , 0x001D8 },
483         { 0x000FC , 0x00304 , 0x001D6 },
484         { 0x000FC , 0x0030C , 0x001DA },
485         { 0x00102 , 0x00300 , 0x01EB0 },
486         { 0x00102 , 0x00301 , 0x01EAE },
487         { 0x00102 , 0x00303 , 0x01EB4 },
488         { 0x00102 , 0x00309 , 0x01EB2 },
489         { 0x00103 , 0x00300 , 0x01EB1 },
490         { 0x00103 , 0x00301 , 0x01EAF },
491         { 0x00103 , 0x00303 , 0x01EB5 },
492         { 0x00103 , 0x00309 , 0x01EB3 },
493         { 0x00112 , 0x00300 , 0x01E14 },
494         { 0x00112 , 0x00301 , 0x01E16 },
495         { 0x00113 , 0x00300 , 0x01E15 },
496         { 0x00113 , 0x00301 , 0x01E17 },
497         { 0x0014C , 0x00300 , 0x01E50 },
498         { 0x0014C , 0x00301 , 0x01E52 },
499         { 0x0014D , 0x00300 , 0x01E51 },
500         { 0x0014D , 0x00301 , 0x01E53 },
501         { 0x0015A , 0x00307 , 0x01E64 },
502         { 0x0015B , 0x00307 , 0x01E65 },
503         { 0x00160 , 0x00307 , 0x01E66 },
504         { 0x00161 , 0x00307 , 0x01E67 },
505         { 0x00168 , 0x00301 , 0x01E78 },
506         { 0x00169 , 0x00301 , 0x01E79 },
507         { 0x0016A , 0x00308 , 0x01E7A },
508         { 0x0016B , 0x00308 , 0x01E7B },
509         { 0x0017F , 0x00307 , 0x01E9B },
510         { 0x001A0 , 0x00300 , 0x01EDC },
511         { 0x001A0 , 0x00301 , 0x01EDA },
512         { 0x001A0 , 0x00303 , 0x01EE0 },
513         { 0x001A0 , 0x00309 , 0x01EDE },
514         { 0x001A0 , 0x00323 , 0x01EE2 },
515         { 0x001A1 , 0x00300 , 0x01EDD },
516         { 0x001A1 , 0x00301 , 0x01EDB },
517         { 0x001A1 , 0x00303 , 0x01EE1 },
518         { 0x001A1 , 0x00309 , 0x01EDF },
519         { 0x001A1 , 0x00323 , 0x01EE3 },
520         { 0x001AF , 0x00300 , 0x01EEA },
521         { 0x001AF , 0x00301 , 0x01EE8 },
522         { 0x001AF , 0x00303 , 0x01EEE },
523         { 0x001AF , 0x00309 , 0x01EEC },
524         { 0x001AF , 0x00323 , 0x01EF0 },
525         { 0x001B0 , 0x00300 , 0x01EEB },
526         { 0x001B0 , 0x00301 , 0x01EE9 },
527         { 0x001B0 , 0x00303 , 0x01EEF },
528         { 0x001B0 , 0x00309 , 0x01EED },
529         { 0x001B0 , 0x00323 , 0x01EF1 },
530         { 0x001B7 , 0x0030C , 0x001EE },
531         { 0x001EA , 0x00304 , 0x001EC },
532         { 0x001EB , 0x00304 , 0x001ED },
533         { 0x00226 , 0x00304 , 0x001E0 },
534         { 0x00227 , 0x00304 , 0x001E1 },
535         { 0x00228 , 0x00306 , 0x01E1C },
536         { 0x00229 , 0x00306 , 0x01E1D },
537         { 0x0022E , 0x00304 , 0x00230 },
538         { 0x0022F , 0x00304 , 0x00231 },
539         { 0x00292 , 0x0030C , 0x001EF },
540         { 0x00391 , 0x00300 , 0x01FBA },
541         { 0x00391 , 0x00301 , 0x00386 },
542         { 0x00391 , 0x00304 , 0x01FB9 },
543         { 0x00391 , 0x00306 , 0x01FB8 },
544         { 0x00391 , 0x00313 , 0x01F08 },
545         { 0x00391 , 0x00314 , 0x01F09 },
546         { 0x00391 , 0x00345 , 0x01FBC },
547         { 0x00395 , 0x00300 , 0x01FC8 },
548         { 0x00395 , 0x00301 , 0x00388 },
549         { 0x00395 , 0x00313 , 0x01F18 },
550         { 0x00395 , 0x00314 , 0x01F19 },
551         { 0x00397 , 0x00300 , 0x01FCA },
552         { 0x00397 , 0x00301 , 0x00389 },
553         { 0x00397 , 0x00313 , 0x01F28 },
554         { 0x00397 , 0x00314 , 0x01F29 },
555         { 0x00397 , 0x00345 , 0x01FCC },
556         { 0x00399 , 0x00300 , 0x01FDA },
557         { 0x00399 , 0x00301 , 0x0038A },
558         { 0x00399 , 0x00304 , 0x01FD9 },
559         { 0x00399 , 0x00306 , 0x01FD8 },
560         { 0x00399 , 0x00308 , 0x003AA },
561         { 0x00399 , 0x00313 , 0x01F38 },
562         { 0x00399 , 0x00314 , 0x01F39 },
563         { 0x0039F , 0x00300 , 0x01FF8 },
564         { 0x0039F , 0x00301 , 0x0038C },
565         { 0x0039F , 0x00313 , 0x01F48 },
566         { 0x0039F , 0x00314 , 0x01F49 },
567         { 0x003A1 , 0x00314 , 0x01FEC },
568         { 0x003A5 , 0x00300 , 0x01FEA },
569         { 0x003A5 , 0x00301 , 0x0038E },
570         { 0x003A5 , 0x00304 , 0x01FE9 },
571         { 0x003A5 , 0x00306 , 0x01FE8 },
572         { 0x003A5 , 0x00308 , 0x003AB },
573         { 0x003A5 , 0x00314 , 0x01F59 },
574         { 0x003A9 , 0x00300 , 0x01FFA },
575         { 0x003A9 , 0x00301 , 0x0038F },
576         { 0x003A9 , 0x00313 , 0x01F68 },
577         { 0x003A9 , 0x00314 , 0x01F69 },
578         { 0x003A9 , 0x00345 , 0x01FFC },
579         { 0x003AC , 0x00345 , 0x01FB4 },
580         { 0x003AE , 0x00345 , 0x01FC4 },
581         { 0x003B1 , 0x00300 , 0x01F70 },
582         { 0x003B1 , 0x00301 , 0x003AC },
583         { 0x003B1 , 0x00304 , 0x01FB1 },
584         { 0x003B1 , 0x00306 , 0x01FB0 },
585         { 0x003B1 , 0x00313 , 0x01F00 },
586         { 0x003B1 , 0x00314 , 0x01F01 },
587         { 0x003B1 , 0x00342 , 0x01FB6 },
588         { 0x003B1 , 0x00345 , 0x01FB3 },
589         { 0x003B5 , 0x00300 , 0x01F72 },
590         { 0x003B5 , 0x00301 , 0x003AD },
591         { 0x003B5 , 0x00313 , 0x01F10 },
592         { 0x003B5 , 0x00314 , 0x01F11 },
593         { 0x003B7 , 0x00300 , 0x01F74 },
594         { 0x003B7 , 0x00301 , 0x003AE },
595         { 0x003B7 , 0x00313 , 0x01F20 },
596         { 0x003B7 , 0x00314 , 0x01F21 },
597         { 0x003B7 , 0x00342 , 0x01FC6 },
598         { 0x003B7 , 0x00345 , 0x01FC3 },
599         { 0x003B9 , 0x00300 , 0x01F76 },
600         { 0x003B9 , 0x00301 , 0x003AF },
601         { 0x003B9 , 0x00304 , 0x01FD1 },
602         { 0x003B9 , 0x00306 , 0x01FD0 },
603         { 0x003B9 , 0x00308 , 0x003CA },
604         { 0x003B9 , 0x00313 , 0x01F30 },
605         { 0x003B9 , 0x00314 , 0x01F31 },
606         { 0x003B9 , 0x00342 , 0x01FD6 },
607         { 0x003BF , 0x00300 , 0x01F78 },
608         { 0x003BF , 0x00301 , 0x003CC },
609         { 0x003BF , 0x00313 , 0x01F40 },
610         { 0x003BF , 0x00314 , 0x01F41 },
611         { 0x003C1 , 0x00313 , 0x01FE4 },
612         { 0x003C1 , 0x00314 , 0x01FE5 },
613         { 0x003C5 , 0x00300 , 0x01F7A },
614         { 0x003C5 , 0x00301 , 0x003CD },
615         { 0x003C5 , 0x00304 , 0x01FE1 },
616         { 0x003C5 , 0x00306 , 0x01FE0 },
617         { 0x003C5 , 0x00308 , 0x003CB },
618         { 0x003C5 , 0x00313 , 0x01F50 },
619         { 0x003C5 , 0x00314 , 0x01F51 },
620         { 0x003C5 , 0x00342 , 0x01FE6 },
621         { 0x003C9 , 0x00300 , 0x01F7C },
622         { 0x003C9 , 0x00301 , 0x003CE },
623         { 0x003C9 , 0x00313 , 0x01F60 },
624         { 0x003C9 , 0x00314 , 0x01F61 },
625         { 0x003C9 , 0x00342 , 0x01FF6 },
626         { 0x003C9 , 0x00345 , 0x01FF3 },
627         { 0x003CA , 0x00300 , 0x01FD2 },
628         { 0x003CA , 0x00301 , 0x00390 },
629         { 0x003CA , 0x00342 , 0x01FD7 },
630         { 0x003CB , 0x00300 , 0x01FE2 },
631         { 0x003CB , 0x00301 , 0x003B0 },
632         { 0x003CB , 0x00342 , 0x01FE7 },
633         { 0x003CE , 0x00345 , 0x01FF4 },
634         { 0x003D2 , 0x00301 , 0x003D3 },
635         { 0x003D2 , 0x00308 , 0x003D4 },
636         { 0x00406 , 0x00308 , 0x00407 },
637         { 0x00410 , 0x00306 , 0x004D0 },
638         { 0x00410 , 0x00308 , 0x004D2 },
639         { 0x00413 , 0x00301 , 0x00403 },
640         { 0x00415 , 0x00300 , 0x00400 },
641         { 0x00415 , 0x00306 , 0x004D6 },
642         { 0x00415 , 0x00308 , 0x00401 },
643         { 0x00416 , 0x00306 , 0x004C1 },
644         { 0x00416 , 0x00308 , 0x004DC },
645         { 0x00417 , 0x00308 , 0x004DE },
646         { 0x00418 , 0x00300 , 0x0040D },
647         { 0x00418 , 0x00304 , 0x004E2 },
648         { 0x00418 , 0x00306 , 0x00419 },
649         { 0x00418 , 0x00308 , 0x004E4 },
650         { 0x0041A , 0x00301 , 0x0040C },
651         { 0x0041E , 0x00308 , 0x004E6 },
652         { 0x00423 , 0x00304 , 0x004EE },
653         { 0x00423 , 0x00306 , 0x0040E },
654         { 0x00423 , 0x00308 , 0x004F0 },
655         { 0x00423 , 0x0030B , 0x004F2 },
656         { 0x00427 , 0x00308 , 0x004F4 },
657         { 0x0042B , 0x00308 , 0x004F8 },
658         { 0x0042D , 0x00308 , 0x004EC },
659         { 0x00430 , 0x00306 , 0x004D1 },
660         { 0x00430 , 0x00308 , 0x004D3 },
661         { 0x00433 , 0x00301 , 0x00453 },
662         { 0x00435 , 0x00300 , 0x00450 },
663         { 0x00435 , 0x00306 , 0x004D7 },
664         { 0x00435 , 0x00308 , 0x00451 },
665         { 0x00436 , 0x00306 , 0x004C2 },
666         { 0x00436 , 0x00308 , 0x004DD },
667         { 0x00437 , 0x00308 , 0x004DF },
668         { 0x00438 , 0x00300 , 0x0045D },
669         { 0x00438 , 0x00304 , 0x004E3 },
670         { 0x00438 , 0x00306 , 0x00439 },
671         { 0x00438 , 0x00308 , 0x004E5 },
672         { 0x0043A , 0x00301 , 0x0045C },
673         { 0x0043E , 0x00308 , 0x004E7 },
674         { 0x00443 , 0x00304 , 0x004EF },
675         { 0x00443 , 0x00306 , 0x0045E },
676         { 0x00443 , 0x00308 , 0x004F1 },
677         { 0x00443 , 0x0030B , 0x004F3 },
678         { 0x00447 , 0x00308 , 0x004F5 },
679         { 0x0044B , 0x00308 , 0x004F9 },
680         { 0x0044D , 0x00308 , 0x004ED },
681         { 0x00456 , 0x00308 , 0x00457 },
682         { 0x00474 , 0x0030F , 0x00476 },
683         { 0x00475 , 0x0030F , 0x00477 },
684         { 0x004D8 , 0x00308 , 0x004DA },
685         { 0x004D9 , 0x00308 , 0x004DB },
686         { 0x004E8 , 0x00308 , 0x004EA },
687         { 0x004E9 , 0x00308 , 0x004EB },
688         { 0x00627 , 0x00653 , 0x00622 },
689         { 0x00627 , 0x00654 , 0x00623 },
690         { 0x00627 , 0x00655 , 0x00625 },
691         { 0x00648 , 0x00654 , 0x00624 },
692         { 0x0064A , 0x00654 , 0x00626 },
693         { 0x006C1 , 0x00654 , 0x006C2 },
694         { 0x006D2 , 0x00654 , 0x006D3 },
695         { 0x006D5 , 0x00654 , 0x006C0 },
696         { 0x00928 , 0x0093C , 0x00929 },
697         { 0x00930 , 0x0093C , 0x00931 },
698         { 0x00933 , 0x0093C , 0x00934 },
699         { 0x009C7 , 0x009BE , 0x009CB },
700         { 0x009C7 , 0x009D7 , 0x009CC },
701         { 0x00B47 , 0x00B3E , 0x00B4B },
702         { 0x00B47 , 0x00B56 , 0x00B48 },
703         { 0x00B47 , 0x00B57 , 0x00B4C },
704         { 0x00B92 , 0x00BD7 , 0x00B94 },
705         { 0x00BC6 , 0x00BBE , 0x00BCA },
706         { 0x00BC6 , 0x00BD7 , 0x00BCC },
707         { 0x00BC7 , 0x00BBE , 0x00BCB },
708         { 0x00C46 , 0x00C56 , 0x00C48 },
709         { 0x00CBF , 0x00CD5 , 0x00CC0 },
710         { 0x00CC6 , 0x00CC2 , 0x00CCA },
711         { 0x00CC6 , 0x00CD5 , 0x00CC7 },
712         { 0x00CC6 , 0x00CD6 , 0x00CC8 },
713         { 0x00CCA , 0x00CD5 , 0x00CCB },
714         { 0x00D46 , 0x00D3E , 0x00D4A },
715         { 0x00D46 , 0x00D57 , 0x00D4C },
716         { 0x00D47 , 0x00D3E , 0x00D4B },
717         { 0x00DD9 , 0x00DCA , 0x00DDA },
718         { 0x00DD9 , 0x00DCF , 0x00DDC },
719         { 0x00DD9 , 0x00DDF , 0x00DDE },
720         { 0x00DDC , 0x00DCA , 0x00DDD },
721         { 0x01025 , 0x0102E , 0x01026 },
722         { 0x01B05 , 0x01B35 , 0x01B06 },
723         { 0x01B07 , 0x01B35 , 0x01B08 },
724         { 0x01B09 , 0x01B35 , 0x01B0A },
725         { 0x01B0B , 0x01B35 , 0x01B0C },
726         { 0x01B0D , 0x01B35 , 0x01B0E },
727         { 0x01B11 , 0x01B35 , 0x01B12 },
728         { 0x01B3A , 0x01B35 , 0x01B3B },
729         { 0x01B3C , 0x01B35 , 0x01B3D },
730         { 0x01B3E , 0x01B35 , 0x01B40 },
731         { 0x01B3F , 0x01B35 , 0x01B41 },
732         { 0x01B42 , 0x01B35 , 0x01B43 },
733         { 0x01E36 , 0x00304 , 0x01E38 },
734         { 0x01E37 , 0x00304 , 0x01E39 },
735         { 0x01E5A , 0x00304 , 0x01E5C },
736         { 0x01E5B , 0x00304 , 0x01E5D },
737         { 0x01E62 , 0x00307 , 0x01E68 },
738         { 0x01E63 , 0x00307 , 0x01E69 },
739         { 0x01EA0 , 0x00302 , 0x01EAC },
740         { 0x01EA0 , 0x00306 , 0x01EB6 },
741         { 0x01EA1 , 0x00302 , 0x01EAD },
742         { 0x01EA1 , 0x00306 , 0x01EB7 },
743         { 0x01EB8 , 0x00302 , 0x01EC6 },
744         { 0x01EB9 , 0x00302 , 0x01EC7 },
745         { 0x01ECC , 0x00302 , 0x01ED8 },
746         { 0x01ECD , 0x00302 , 0x01ED9 },
747         { 0x01F00 , 0x00300 , 0x01F02 },
748         { 0x01F00 , 0x00301 , 0x01F04 },
749         { 0x01F00 , 0x00342 , 0x01F06 },
750         { 0x01F00 , 0x00345 , 0x01F80 },
751         { 0x01F01 , 0x00300 , 0x01F03 },
752         { 0x01F01 , 0x00301 , 0x01F05 },
753         { 0x01F01 , 0x00342 , 0x01F07 },
754         { 0x01F01 , 0x00345 , 0x01F81 },
755         { 0x01F02 , 0x00345 , 0x01F82 },
756         { 0x01F03 , 0x00345 , 0x01F83 },
757         { 0x01F04 , 0x00345 , 0x01F84 },
758         { 0x01F05 , 0x00345 , 0x01F85 },
759         { 0x01F06 , 0x00345 , 0x01F86 },
760         { 0x01F07 , 0x00345 , 0x01F87 },
761         { 0x01F08 , 0x00300 , 0x01F0A },
762         { 0x01F08 , 0x00301 , 0x01F0C },
763         { 0x01F08 , 0x00342 , 0x01F0E },
764         { 0x01F08 , 0x00345 , 0x01F88 },
765         { 0x01F09 , 0x00300 , 0x01F0B },
766         { 0x01F09 , 0x00301 , 0x01F0D },
767         { 0x01F09 , 0x00342 , 0x01F0F },
768         { 0x01F09 , 0x00345 , 0x01F89 },
769         { 0x01F0A , 0x00345 , 0x01F8A },
770         { 0x01F0B , 0x00345 , 0x01F8B },
771         { 0x01F0C , 0x00345 , 0x01F8C },
772         { 0x01F0D , 0x00345 , 0x01F8D },
773         { 0x01F0E , 0x00345 , 0x01F8E },
774         { 0x01F0F , 0x00345 , 0x01F8F },
775         { 0x01F10 , 0x00300 , 0x01F12 },
776         { 0x01F10 , 0x00301 , 0x01F14 },
777         { 0x01F11 , 0x00300 , 0x01F13 },
778         { 0x01F11 , 0x00301 , 0x01F15 },
779         { 0x01F18 , 0x00300 , 0x01F1A },
780         { 0x01F18 , 0x00301 , 0x01F1C },
781         { 0x01F19 , 0x00300 , 0x01F1B },
782         { 0x01F19 , 0x00301 , 0x01F1D },
783         { 0x01F20 , 0x00300 , 0x01F22 },
784         { 0x01F20 , 0x00301 , 0x01F24 },
785         { 0x01F20 , 0x00342 , 0x01F26 },
786         { 0x01F20 , 0x00345 , 0x01F90 },
787         { 0x01F21 , 0x00300 , 0x01F23 },
788         { 0x01F21 , 0x00301 , 0x01F25 },
789         { 0x01F21 , 0x00342 , 0x01F27 },
790         { 0x01F21 , 0x00345 , 0x01F91 },
791         { 0x01F22 , 0x00345 , 0x01F92 },
792         { 0x01F23 , 0x00345 , 0x01F93 },
793         { 0x01F24 , 0x00345 , 0x01F94 },
794         { 0x01F25 , 0x00345 , 0x01F95 },
795         { 0x01F26 , 0x00345 , 0x01F96 },
796         { 0x01F27 , 0x00345 , 0x01F97 },
797         { 0x01F28 , 0x00300 , 0x01F2A },
798         { 0x01F28 , 0x00301 , 0x01F2C },
799         { 0x01F28 , 0x00342 , 0x01F2E },
800         { 0x01F28 , 0x00345 , 0x01F98 },
801         { 0x01F29 , 0x00300 , 0x01F2B },
802         { 0x01F29 , 0x00301 , 0x01F2D },
803         { 0x01F29 , 0x00342 , 0x01F2F },
804         { 0x01F29 , 0x00345 , 0x01F99 },
805         { 0x01F2A , 0x00345 , 0x01F9A },
806         { 0x01F2B , 0x00345 , 0x01F9B },
807         { 0x01F2C , 0x00345 , 0x01F9C },
808         { 0x01F2D , 0x00345 , 0x01F9D },
809         { 0x01F2E , 0x00345 , 0x01F9E },
810         { 0x01F2F , 0x00345 , 0x01F9F },
811         { 0x01F30 , 0x00300 , 0x01F32 },
812         { 0x01F30 , 0x00301 , 0x01F34 },
813         { 0x01F30 , 0x00342 , 0x01F36 },
814         { 0x01F31 , 0x00300 , 0x01F33 },
815         { 0x01F31 , 0x00301 , 0x01F35 },
816         { 0x01F31 , 0x00342 , 0x01F37 },
817         { 0x01F38 , 0x00300 , 0x01F3A },
818         { 0x01F38 , 0x00301 , 0x01F3C },
819         { 0x01F38 , 0x00342 , 0x01F3E },
820         { 0x01F39 , 0x00300 , 0x01F3B },
821         { 0x01F39 , 0x00301 , 0x01F3D },
822         { 0x01F39 , 0x00342 , 0x01F3F },
823         { 0x01F40 , 0x00300 , 0x01F42 },
824         { 0x01F40 , 0x00301 , 0x01F44 },
825         { 0x01F41 , 0x00300 , 0x01F43 },
826         { 0x01F41 , 0x00301 , 0x01F45 },
827         { 0x01F48 , 0x00300 , 0x01F4A },
828         { 0x01F48 , 0x00301 , 0x01F4C },
829         { 0x01F49 , 0x00300 , 0x01F4B },
830         { 0x01F49 , 0x00301 , 0x01F4D },
831         { 0x01F50 , 0x00300 , 0x01F52 },
832         { 0x01F50 , 0x00301 , 0x01F54 },
833         { 0x01F50 , 0x00342 , 0x01F56 },
834         { 0x01F51 , 0x00300 , 0x01F53 },
835         { 0x01F51 , 0x00301 , 0x01F55 },
836         { 0x01F51 , 0x00342 , 0x01F57 },
837         { 0x01F59 , 0x00300 , 0x01F5B },
838         { 0x01F59 , 0x00301 , 0x01F5D },
839         { 0x01F59 , 0x00342 , 0x01F5F },
840         { 0x01F60 , 0x00300 , 0x01F62 },
841         { 0x01F60 , 0x00301 , 0x01F64 },
842         { 0x01F60 , 0x00342 , 0x01F66 },
843         { 0x01F60 , 0x00345 , 0x01FA0 },
844         { 0x01F61 , 0x00300 , 0x01F63 },
845         { 0x01F61 , 0x00301 , 0x01F65 },
846         { 0x01F61 , 0x00342 , 0x01F67 },
847         { 0x01F61 , 0x00345 , 0x01FA1 },
848         { 0x01F62 , 0x00345 , 0x01FA2 },
849         { 0x01F63 , 0x00345 , 0x01FA3 },
850         { 0x01F64 , 0x00345 , 0x01FA4 },
851         { 0x01F65 , 0x00345 , 0x01FA5 },
852         { 0x01F66 , 0x00345 , 0x01FA6 },
853         { 0x01F67 , 0x00345 , 0x01FA7 },
854         { 0x01F68 , 0x00300 , 0x01F6A },
855         { 0x01F68 , 0x00301 , 0x01F6C },
856         { 0x01F68 , 0x00342 , 0x01F6E },
857         { 0x01F68 , 0x00345 , 0x01FA8 },
858         { 0x01F69 , 0x00300 , 0x01F6B },
859         { 0x01F69 , 0x00301 , 0x01F6D },
860         { 0x01F69 , 0x00342 , 0x01F6F },
861         { 0x01F69 , 0x00345 , 0x01FA9 },
862         { 0x01F6A , 0x00345 , 0x01FAA },
863         { 0x01F6B , 0x00345 , 0x01FAB },
864         { 0x01F6C , 0x00345 , 0x01FAC },
865         { 0x01F6D , 0x00345 , 0x01FAD },
866         { 0x01F6E , 0x00345 , 0x01FAE },
867         { 0x01F6F , 0x00345 , 0x01FAF },
868         { 0x01F70 , 0x00345 , 0x01FB2 },
869         { 0x01F74 , 0x00345 , 0x01FC2 },
870         { 0x01F7C , 0x00345 , 0x01FF2 },
871         { 0x01FB6 , 0x00345 , 0x01FB7 },
872         { 0x01FBF , 0x00300 , 0x01FCD },
873         { 0x01FBF , 0x00301 , 0x01FCE },
874         { 0x01FBF , 0x00342 , 0x01FCF },
875         { 0x01FC6 , 0x00345 , 0x01FC7 },
876         { 0x01FF6 , 0x00345 , 0x01FF7 },
877         { 0x01FFE , 0x00300 , 0x01FDD },
878         { 0x01FFE , 0x00301 , 0x01FDE },
879         { 0x01FFE , 0x00342 , 0x01FDF },
880         { 0x02190 , 0x00338 , 0x0219A },
881         { 0x02192 , 0x00338 , 0x0219B },
882         { 0x02194 , 0x00338 , 0x021AE },
883         { 0x021D0 , 0x00338 , 0x021CD },
884         { 0x021D2 , 0x00338 , 0x021CF },
885         { 0x021D4 , 0x00338 , 0x021CE },
886         { 0x02203 , 0x00338 , 0x02204 },
887         { 0x02208 , 0x00338 , 0x02209 },
888         { 0x0220B , 0x00338 , 0x0220C },
889         { 0x02223 , 0x00338 , 0x02224 },
890         { 0x02225 , 0x00338 , 0x02226 },
891         { 0x0223C , 0x00338 , 0x02241 },
892         { 0x02243 , 0x00338 , 0x02244 },
893         { 0x02245 , 0x00338 , 0x02247 },
894         { 0x02248 , 0x00338 , 0x02249 },
895         { 0x0224D , 0x00338 , 0x0226D },
896         { 0x02261 , 0x00338 , 0x02262 },
897         { 0x02264 , 0x00338 , 0x02270 },
898         { 0x02265 , 0x00338 , 0x02271 },
899         { 0x02272 , 0x00338 , 0x02274 },
900         { 0x02273 , 0x00338 , 0x02275 },
901         { 0x02276 , 0x00338 , 0x02278 },
902         { 0x02277 , 0x00338 , 0x02279 },
903         { 0x0227A , 0x00338 , 0x02280 },
904         { 0x0227B , 0x00338 , 0x02281 },
905         { 0x0227C , 0x00338 , 0x022E0 },
906         { 0x0227D , 0x00338 , 0x022E1 },
907         { 0x02282 , 0x00338 , 0x02284 },
908         { 0x02283 , 0x00338 , 0x02285 },
909         { 0x02286 , 0x00338 , 0x02288 },
910         { 0x02287 , 0x00338 , 0x02289 },
911         { 0x02291 , 0x00338 , 0x022E2 },
912         { 0x02292 , 0x00338 , 0x022E3 },
913         { 0x022A2 , 0x00338 , 0x022AC },
914         { 0x022A8 , 0x00338 , 0x022AD },
915         { 0x022A9 , 0x00338 , 0x022AE },
916         { 0x022AB , 0x00338 , 0x022AF },
917         { 0x022B2 , 0x00338 , 0x022EA },
918         { 0x022B3 , 0x00338 , 0x022EB },
919         { 0x022B4 , 0x00338 , 0x022EC },
920         { 0x022B5 , 0x00338 , 0x022ED },
921         { 0x03046 , 0x03099 , 0x03094 },
922         { 0x0304B , 0x03099 , 0x0304C },
923         { 0x0304D , 0x03099 , 0x0304E },
924         { 0x0304F , 0x03099 , 0x03050 },
925         { 0x03051 , 0x03099 , 0x03052 },
926         { 0x03053 , 0x03099 , 0x03054 },
927         { 0x03055 , 0x03099 , 0x03056 },
928         { 0x03057 , 0x03099 , 0x03058 },
929         { 0x03059 , 0x03099 , 0x0305A },
930         { 0x0305B , 0x03099 , 0x0305C },
931         { 0x0305D , 0x03099 , 0x0305E },
932         { 0x0305F , 0x03099 , 0x03060 },
933         { 0x03061 , 0x03099 , 0x03062 },
934         { 0x03064 , 0x03099 , 0x03065 },
935         { 0x03066 , 0x03099 , 0x03067 },
936         { 0x03068 , 0x03099 , 0x03069 },
937         { 0x0306F , 0x03099 , 0x03070 },
938         { 0x0306F , 0x0309A , 0x03071 },
939         { 0x03072 , 0x03099 , 0x03073 },
940         { 0x03072 , 0x0309A , 0x03074 },
941         { 0x03075 , 0x03099 , 0x03076 },
942         { 0x03075 , 0x0309A , 0x03077 },
943         { 0x03078 , 0x03099 , 0x03079 },
944         { 0x03078 , 0x0309A , 0x0307A },
945         { 0x0307B , 0x03099 , 0x0307C },
946         { 0x0307B , 0x0309A , 0x0307D },
947         { 0x0309D , 0x03099 , 0x0309E },
948         { 0x030A6 , 0x03099 , 0x030F4 },
949         { 0x030AB , 0x03099 , 0x030AC },
950         { 0x030AD , 0x03099 , 0x030AE },
951         { 0x030AF , 0x03099 , 0x030B0 },
952         { 0x030B1 , 0x03099 , 0x030B2 },
953         { 0x030B3 , 0x03099 , 0x030B4 },
954         { 0x030B5 , 0x03099 , 0x030B6 },
955         { 0x030B7 , 0x03099 , 0x030B8 },
956         { 0x030B9 , 0x03099 , 0x030BA },
957         { 0x030BB , 0x03099 , 0x030BC },
958         { 0x030BD , 0x03099 , 0x030BE },
959         { 0x030BF , 0x03099 , 0x030C0 },
960         { 0x030C1 , 0x03099 , 0x030C2 },
961         { 0x030C4 , 0x03099 , 0x030C5 },
962         { 0x030C6 , 0x03099 , 0x030C7 },
963         { 0x030C8 , 0x03099 , 0x030C9 },
964         { 0x030CF , 0x03099 , 0x030D0 },
965         { 0x030CF , 0x0309A , 0x030D1 },
966         { 0x030D2 , 0x03099 , 0x030D3 },
967         { 0x030D2 , 0x0309A , 0x030D4 },
968         { 0x030D5 , 0x03099 , 0x030D6 },
969         { 0x030D5 , 0x0309A , 0x030D7 },
970         { 0x030D8 , 0x03099 , 0x030D9 },
971         { 0x030D8 , 0x0309A , 0x030DA },
972         { 0x030DB , 0x03099 , 0x030DC },
973         { 0x030DB , 0x0309A , 0x030DD },
974         { 0x030EF , 0x03099 , 0x030F7 },
975         { 0x030F0 , 0x03099 , 0x030F8 },
976         { 0x030F1 , 0x03099 , 0x030F9 },
977         { 0x030F2 , 0x03099 , 0x030FA },
978         { 0x030FD , 0x03099 , 0x030FE },
979         { 0x11099 , 0x110BA , 0x1109A },
980         { 0x1109B , 0x110BA , 0x1109C },
981         { 0x110A5 , 0x110BA , 0x110AB },
982 };
983
984 #define CANONICAL_CLASS_MIN     0x0300
985 #define CANONICAL_CLASS_MAX     0x1D244
986
987 #define IS_DECOMPOSABLE_BLOCK(uc)       \
988         (((uc)>>8) <= 0x1D2 && u_decomposable_blocks[(uc)>>8])
989 static const char u_decomposable_blocks[0x1D2+1] = {
990         0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,1,1,1,1,1,1,0,0,
991         1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
993         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
994         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
995         0,0,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
996         1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,
997         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,
998         0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
999         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1001         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1002         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1003         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1004         0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1005 };
1006
1007 /* Get Canonical Combining Class(CCC). */
1008 #define CCC(uc) \
1009         (((uc) > 0x1D244)?0:\
1010         ccc_val[ccc_val_index[ccc_index[(uc)>>8]][((uc)>>4)&0x0F]][(uc)&0x0F])
1011
1012 /* The table of the value of Canonical Cimbining Class */
1013 static const unsigned char ccc_val[][16] = {
1014  /* idx=0: XXXX0 - XXXXF */
1015  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1016  /* idx=1: 00300 - 0030F */
1017  {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 },
1018  /* idx=2: 00310 - 0031F */
1019  {230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220 },
1020  /* idx=3: 00320 - 0032F */
1021  {220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220 },
1022  /* idx=4: 00330 - 0033F */
1023  {220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230 },
1024  /* idx=5: 00340 - 0034F */
1025  {230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0 },
1026  /* idx=6: 00350 - 0035F */
1027  {230, 230, 230, 220, 220, 220, 220, 230, 232, 220, 220, 230, 233, 234, 234, 233 },
1028  /* idx=7: 00360 - 0036F */
1029  {234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 },
1030  /* idx=8: 00480 - 0048F */
1031  {0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0 },
1032  /* idx=9: 00590 - 0059F */
1033  {0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230 },
1034  /* idx=10: 005A0 - 005AF */
1035  {230, 230, 220, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230 },
1036  /* idx=11: 005B0 - 005BF */
1037  {10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 0, 23 },
1038  /* idx=12: 005C0 - 005CF */
1039  {0, 24, 25, 0, 230, 220, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0 },
1040  /* idx=13: 00610 - 0061F */
1041  {230, 230, 230, 230, 230, 230, 230, 230, 30, 31, 32, 0, 0, 0, 0, 0 },
1042  /* idx=14: 00640 - 0064F */
1043  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 29, 30, 31 },
1044  /* idx=15: 00650 - 0065F */
1045  {32, 33, 34, 230, 230, 220, 220, 230, 230, 230, 230, 230, 220, 230, 230, 220 },
1046  /* idx=16: 00670 - 0067F */
1047  {35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1048  /* idx=17: 006D0 - 006DF */
1049  {0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230 },
1050  /* idx=18: 006E0 - 006EF */
1051  {230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0 },
1052  /* idx=19: 00710 - 0071F */
1053  {0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1054  /* idx=20: 00730 - 0073F */
1055  {230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230 },
1056  /* idx=21: 00740 - 0074F */
1057  {230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 0, 0, 0, 0, 0 },
1058  /* idx=22: 007E0 - 007EF */
1059  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230 },
1060  /* idx=23: 007F0 - 007FF */
1061  {230, 230, 220, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1062  /* idx=24: 00810 - 0081F */
1063  {0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 230, 230, 230, 230, 230 },
1064  /* idx=25: 00820 - 0082F */
1065  {230, 230, 230, 230, 0, 230, 230, 230, 0, 230, 230, 230, 230, 230, 0, 0 },
1066  /* idx=26: 00850 - 0085F */
1067  {0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0 },
1068  /* idx=27: 00930 - 0093F */
1069  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 },
1070  /* idx=28: 00940 - 0094F */
1071  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1072  /* idx=29: 00950 - 0095F */
1073  {0, 230, 220, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1074  /* idx=30: 009B0 - 009BF */
1075  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 },
1076  /* idx=31: 009C0 - 009CF */
1077  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1078  /* idx=32: 00A30 - 00A3F */
1079  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 },
1080  /* idx=33: 00A40 - 00A4F */
1081  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1082  /* idx=34: 00AB0 - 00ABF */
1083  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 },
1084  /* idx=35: 00AC0 - 00ACF */
1085  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1086  /* idx=36: 00B30 - 00B3F */
1087  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 },
1088  /* idx=37: 00B40 - 00B4F */
1089  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1090  /* idx=38: 00BC0 - 00BCF */
1091  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1092  /* idx=39: 00C40 - 00C4F */
1093  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1094  /* idx=40: 00C50 - 00C5F */
1095  {0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1096  /* idx=41: 00CB0 - 00CBF */
1097  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0 },
1098  /* idx=42: 00CC0 - 00CCF */
1099  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1100  /* idx=43: 00D40 - 00D4F */
1101  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1102  /* idx=44: 00DC0 - 00DCF */
1103  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0 },
1104  /* idx=45: 00E30 - 00E3F */
1105  {0, 0, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0 },
1106  /* idx=46: 00E40 - 00E4F */
1107  {0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 0, 0, 0, 0 },
1108  /* idx=47: 00EB0 - 00EBF */
1109  {0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0 },
1110  /* idx=48: 00EC0 - 00ECF */
1111  {0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 0, 0, 0, 0 },
1112  /* idx=49: 00F10 - 00F1F */
1113  {0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 0, 0, 0, 0, 0, 0 },
1114  /* idx=50: 00F30 - 00F3F */
1115  {0, 0, 0, 0, 0, 220, 0, 220, 0, 216, 0, 0, 0, 0, 0, 0 },
1116  /* idx=51: 00F70 - 00F7F */
1117  {0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0 },
1118  /* idx=52: 00F80 - 00F8F */
1119  {130, 0, 230, 230, 9, 0, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0 },
1120  /* idx=53: 00FC0 - 00FCF */
1121  {0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1122  /* idx=54: 01030 - 0103F */
1123  {0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 0, 0, 0 },
1124  /* idx=55: 01080 - 0108F */
1125  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0 },
1126  /* idx=56: 01350 - 0135F */
1127  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230 },
1128  /* idx=57: 01710 - 0171F */
1129  {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1130  /* idx=58: 01730 - 0173F */
1131  {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1132  /* idx=59: 017D0 - 017DF */
1133  {0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0 },
1134  /* idx=60: 018A0 - 018AF */
1135  {0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0 },
1136  /* idx=61: 01930 - 0193F */
1137  {0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 230, 220, 0, 0, 0, 0 },
1138  /* idx=62: 01A10 - 01A1F */
1139  {0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0, 0, 0, 0, 0 },
1140  /* idx=63: 01A60 - 01A6F */
1141  {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1142  /* idx=64: 01A70 - 01A7F */
1143  {0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 0, 0, 220 },
1144  /* idx=65: 01B30 - 01B3F */
1145  {0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1146  /* idx=66: 01B40 - 01B4F */
1147  {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1148  /* idx=67: 01B60 - 01B6F */
1149  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230 },
1150  /* idx=68: 01B70 - 01B7F */
1151  {230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1152  /* idx=69: 01BA0 - 01BAF */
1153  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0 },
1154  /* idx=70: 01BE0 - 01BEF */
1155  {0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1156  /* idx=71: 01BF0 - 01BFF */
1157  {0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1158  /* idx=72: 01C30 - 01C3F */
1159  {0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0 },
1160  /* idx=73: 01CD0 - 01CDF */
1161  {230, 230, 230, 0, 1, 220, 220, 220, 220, 220, 230, 230, 220, 220, 220, 220 },
1162  /* idx=74: 01CE0 - 01CEF */
1163  {230, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 220, 0, 0 },
1164  /* idx=75: 01DC0 - 01DCF */
1165  {230, 230, 220, 230, 230, 230, 230, 230, 230, 230, 220, 230, 230, 234, 214, 220 },
1166  /* idx=76: 01DD0 - 01DDF */
1167  {202, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 },
1168  /* idx=77: 01DE0 - 01DEF */
1169  {230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1170  /* idx=78: 01DF0 - 01DFF */
1171  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 220, 230, 220 },
1172  /* idx=79: 020D0 - 020DF */
1173  {230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0 },
1174  /* idx=80: 020E0 - 020EF */
1175  {0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 1, 220, 220, 220, 220 },
1176  /* idx=81: 020F0 - 020FF */
1177  {230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1178  /* idx=82: 02CE0 - 02CEF */
1179  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230 },
1180  /* idx=83: 02CF0 - 02CFF */
1181  {230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1182  /* idx=84: 02D70 - 02D7F */
1183  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9 },
1184  /* idx=85: 02DE0 - 02DEF */
1185  {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 },
1186  /* idx=86: 02DF0 - 02DFF */
1187  {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 },
1188  /* idx=87: 03020 - 0302F */
1189  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224 },
1190  /* idx=88: 03090 - 0309F */
1191  {0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0 },
1192  /* idx=89: 0A660 - 0A66F */
1193  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230 },
1194  /* idx=90: 0A670 - 0A67F */
1195  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 0, 0 },
1196  /* idx=91: 0A6F0 - 0A6FF */
1197  {230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1198  /* idx=92: 0A800 - 0A80F */
1199  {0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1200  /* idx=93: 0A8C0 - 0A8CF */
1201  {0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1202  /* idx=94: 0A8E0 - 0A8EF */
1203  {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230 },
1204  /* idx=95: 0A8F0 - 0A8FF */
1205  {230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1206  /* idx=96: 0A920 - 0A92F */
1207  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0 },
1208  /* idx=97: 0A950 - 0A95F */
1209  {0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1210  /* idx=98: 0A9B0 - 0A9BF */
1211  {0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1212  /* idx=99: 0A9C0 - 0A9CF */
1213  {9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1214  /* idx=100: 0AAB0 - 0AABF */
1215  {230, 0, 230, 230, 220, 0, 0, 230, 230, 0, 0, 0, 0, 0, 230, 230 },
1216  /* idx=101: 0AAC0 - 0AACF */
1217  {0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1218  /* idx=102: 0ABE0 - 0ABEF */
1219  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0 },
1220  /* idx=103: 0FB10 - 0FB1F */
1221  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0 },
1222  /* idx=104: 0FE20 - 0FE2F */
1223  {230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1224  /* idx=105: 101F0 - 101FF */
1225  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0 },
1226  /* idx=106: 10A00 - 10A0F */
1227  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 230 },
1228  /* idx=107: 10A30 - 10A3F */
1229  {0, 0, 0, 0, 0, 0, 0, 0, 230, 1, 220, 0, 0, 0, 0, 9 },
1230  /* idx=108: 11040 - 1104F */
1231  {0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1232  /* idx=109: 110B0 - 110BF */
1233  {0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0 },
1234  /* idx=110: 1D160 - 1D16F */
1235  {0, 0, 0, 0, 0, 216, 216, 1, 1, 1, 0, 0, 0, 226, 216, 216 },
1236  /* idx=111: 1D170 - 1D17F */
1237  {216, 216, 216, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220 },
1238  /* idx=112: 1D180 - 1D18F */
1239  {220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, 220, 0, 0, 0, 0 },
1240  /* idx=113: 1D1A0 - 1D1AF */
1241  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0 },
1242  /* idx=114: 1D240 - 1D24F */
1243  {0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1244 };
1245
1246 /* The index table to ccc_val[*][16] */
1247 static const unsigned char ccc_val_index[][16] = {
1248  /* idx=0: XXX00 - XXXFF */
1249  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1250  /* idx=1: 00300 - 003FF */
1251  { 1, 2, 3, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1252  /* idx=2: 00400 - 004FF */
1253  { 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0 },
1254  /* idx=3: 00500 - 005FF */
1255  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,10,11,12, 0, 0, 0 },
1256  /* idx=4: 00600 - 006FF */
1257  { 0,13, 0, 0,14,15, 0,16, 0, 0, 0, 0, 0,17,18, 0 },
1258  /* idx=5: 00700 - 007FF */
1259  { 0,19, 0,20,21, 0, 0, 0, 0, 0, 0, 0, 0, 0,22,23 },
1260  /* idx=6: 00800 - 008FF */
1261  { 0,24,25, 0, 0,26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1262  /* idx=7: 00900 - 009FF */
1263  { 0, 0, 0,27,28,29, 0, 0, 0, 0, 0,30,31, 0, 0, 0 },
1264  /* idx=8: 00A00 - 00AFF */
1265  { 0, 0, 0,32,33, 0, 0, 0, 0, 0, 0,34,35, 0, 0, 0 },
1266  /* idx=9: 00B00 - 00BFF */
1267  { 0, 0, 0,36,37, 0, 0, 0, 0, 0, 0, 0,38, 0, 0, 0 },
1268  /* idx=10: 00C00 - 00CFF */
1269  { 0, 0, 0, 0,39,40, 0, 0, 0, 0, 0,41,42, 0, 0, 0 },
1270  /* idx=11: 00D00 - 00DFF */
1271  { 0, 0, 0, 0,43, 0, 0, 0, 0, 0, 0, 0,44, 0, 0, 0 },
1272  /* idx=12: 00E00 - 00EFF */
1273  { 0, 0, 0,45,46, 0, 0, 0, 0, 0, 0,47,48, 0, 0, 0 },
1274  /* idx=13: 00F00 - 00FFF */
1275  { 0,49, 0,50, 0, 0, 0,51,52, 0, 0, 0,53, 0, 0, 0 },
1276  /* idx=14: 01000 - 010FF */
1277  { 0, 0, 0,54, 0, 0, 0, 0,55, 0, 0, 0, 0, 0, 0, 0 },
1278  /* idx=15: 01300 - 013FF */
1279  { 0, 0, 0, 0, 0,56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1280  /* idx=16: 01700 - 017FF */
1281  { 0,57, 0,58, 0, 0, 0, 0, 0, 0, 0, 0, 0,59, 0, 0 },
1282  /* idx=17: 01800 - 018FF */
1283  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,60, 0, 0, 0, 0, 0 },
1284  /* idx=18: 01900 - 019FF */
1285  { 0, 0, 0,61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1286  /* idx=19: 01A00 - 01AFF */
1287  { 0,62, 0, 0, 0, 0,63,64, 0, 0, 0, 0, 0, 0, 0, 0 },
1288  /* idx=20: 01B00 - 01BFF */
1289  { 0, 0, 0,65,66, 0,67,68, 0, 0,69, 0, 0, 0,70,71 },
1290  /* idx=21: 01C00 - 01CFF */
1291  { 0, 0, 0,72, 0, 0, 0, 0, 0, 0, 0, 0, 0,73,74, 0 },
1292  /* idx=22: 01D00 - 01DFF */
1293  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,75,76,77,78 },
1294  /* idx=23: 02000 - 020FF */
1295  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,79,80,81 },
1296  /* idx=24: 02C00 - 02CFF */
1297  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,82,83 },
1298  /* idx=25: 02D00 - 02DFF */
1299  { 0, 0, 0, 0, 0, 0, 0,84, 0, 0, 0, 0, 0, 0,85,86 },
1300  /* idx=26: 03000 - 030FF */
1301  { 0, 0,87, 0, 0, 0, 0, 0, 0,88, 0, 0, 0, 0, 0, 0 },
1302  /* idx=27: 0A600 - 0A6FF */
1303  { 0, 0, 0, 0, 0, 0,89,90, 0, 0, 0, 0, 0, 0, 0,91 },
1304  /* idx=28: 0A800 - 0A8FF */
1305  {92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,93, 0,94,95 },
1306  /* idx=29: 0A900 - 0A9FF */
1307  { 0, 0,96, 0, 0,97, 0, 0, 0, 0, 0,98,99, 0, 0, 0 },
1308  /* idx=30: 0AA00 - 0AAFF */
1309  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,101, 0, 0, 0 },
1310  /* idx=31: 0AB00 - 0ABFF */
1311  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,102, 0 },
1312  /* idx=32: 0FB00 - 0FBFF */
1313  { 0,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1314  /* idx=33: 0FE00 - 0FEFF */
1315  { 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1316  /* idx=34: 10100 - 101FF */
1317  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105 },
1318  /* idx=35: 10A00 - 10AFF */
1319  {106, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1320  /* idx=36: 11000 - 110FF */
1321  { 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 0,109, 0, 0, 0, 0 },
1322  /* idx=37: 1D100 - 1D1FF */
1323  { 0, 0, 0, 0, 0, 0,110,111,112, 0,113, 0, 0, 0, 0, 0 },
1324  /* idx=38: 1D200 - 1D2FF */
1325  { 0, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
1326 };
1327
1328 /* The index table to ccc_val_index[*][16] */
1329 static const unsigned char ccc_index[] = {
1330   0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14, 0, 0,15, 0, 0, 0,16,
1331  17,18,19,20,21,22, 0, 0,23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,24,25, 0, 0,
1332  26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1333   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1334   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1335   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1336   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,27, 0,
1337  28,29,30,31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1338   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1339   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1340   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,32, 0, 0,33, 0, 0,34, 0, 0, 0, 0, 0, 0,
1341   0, 0,35, 0, 0, 0, 0, 0,36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1342   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1343   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1344   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1345   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1346   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1347   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1348   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1349   0, 0, 0, 0, 0, 0, 0, 0, 0,37,38,};
1350
1351 #endif /* ARCHIVE_STRING_COMPOSITION_H_INCLUDED */