xorriso  1.5.4.pl02
About: GNU xorriso creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions. It is suitable for incremental data backup and for production of bootable ISO 9660 images. GNU xorriso is a statical compilation of the libraries libburn, libisofs, libisoburn, and libjte.
  Fossies Dox: xorriso-1.5.4.pl02.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

hfsplus_decompose_ts_test.c
Go to the documentation of this file.
1 /*
2 cc -g -o demo/decompose libisofs/hfsplus_decompose_ts_test.c
3 */
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdio.h>
7 
8 
9 #ifdef HAVE_CONFIG_H
10 #include "../config.h"
11 #endif
12 
13 #include "hfsplus.h"
14 
15 /*
16  Cased on tn1150 (HFS+ format specification)
17 */
18 
19 
20 static const uint16_t page00[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
21  [0xc0] = { 0x0041, 0x0300, 0x0000 },
22  [0xc1] = { 0x0041, 0x0301, 0x0000 },
23  [0xc2] = { 0x0041, 0x0302, 0x0000 },
24  [0xc3] = { 0x0041, 0x0303, 0x0000 },
25  [0xc4] = { 0x0041, 0x0308, 0x0000 },
26  [0xc5] = { 0x0041, 0x030A, 0x0000 },
27  [0xc7] = { 0x0043, 0x0327, 0x0000 },
28  [0xc8] = { 0x0045, 0x0300, 0x0000 },
29  [0xc9] = { 0x0045, 0x0301, 0x0000 },
30  [0xca] = { 0x0045, 0x0302, 0x0000 },
31  [0xcb] = { 0x0045, 0x0308, 0x0000 },
32  [0xcc] = { 0x0049, 0x0300, 0x0000 },
33  [0xcd] = { 0x0049, 0x0301, 0x0000 },
34  [0xce] = { 0x0049, 0x0302, 0x0000 },
35  [0xcf] = { 0x0049, 0x0308, 0x0000 },
36  [0xd1] = { 0x004E, 0x0303, 0x0000 },
37  [0xd2] = { 0x004F, 0x0300, 0x0000 },
38  [0xd3] = { 0x004F, 0x0301, 0x0000 },
39  [0xd4] = { 0x004F, 0x0302, 0x0000 },
40  [0xd5] = { 0x004F, 0x0303, 0x0000 },
41  [0xd6] = { 0x004F, 0x0308, 0x0000 },
42  [0xd9] = { 0x0055, 0x0300, 0x0000 },
43  [0xda] = { 0x0055, 0x0301, 0x0000 },
44  [0xdb] = { 0x0055, 0x0302, 0x0000 },
45  [0xdc] = { 0x0055, 0x0308, 0x0000 },
46  [0xdd] = { 0x0059, 0x0301, 0x0000 },
47  [0xe0] = { 0x0061, 0x0300, 0x0000 },
48  [0xe1] = { 0x0061, 0x0301, 0x0000 },
49  [0xe2] = { 0x0061, 0x0302, 0x0000 },
50  [0xe3] = { 0x0061, 0x0303, 0x0000 },
51  [0xe4] = { 0x0061, 0x0308, 0x0000 },
52  [0xe5] = { 0x0061, 0x030A, 0x0000 },
53  [0xe7] = { 0x0063, 0x0327, 0x0000 },
54  [0xe8] = { 0x0065, 0x0300, 0x0000 },
55  [0xe9] = { 0x0065, 0x0301, 0x0000 },
56  [0xea] = { 0x0065, 0x0302, 0x0000 },
57  [0xeb] = { 0x0065, 0x0308, 0x0000 },
58  [0xec] = { 0x0069, 0x0300, 0x0000 },
59  [0xed] = { 0x0069, 0x0301, 0x0000 },
60  [0xee] = { 0x0069, 0x0302, 0x0000 },
61  [0xef] = { 0x0069, 0x0308, 0x0000 },
62  [0xf1] = { 0x006E, 0x0303, 0x0000 },
63  [0xf2] = { 0x006F, 0x0300, 0x0000 },
64  [0xf3] = { 0x006F, 0x0301, 0x0000 },
65  [0xf4] = { 0x006F, 0x0302, 0x0000 },
66  [0xf5] = { 0x006F, 0x0303, 0x0000 },
67  [0xf6] = { 0x006F, 0x0308, 0x0000 },
68  [0xf9] = { 0x0075, 0x0300, 0x0000 },
69  [0xfa] = { 0x0075, 0x0301, 0x0000 },
70  [0xfb] = { 0x0075, 0x0302, 0x0000 },
71  [0xfc] = { 0x0075, 0x0308, 0x0000 },
72  [0xfd] = { 0x0079, 0x0301, 0x0000 },
73  [0xff] = { 0x0079, 0x0308, 0x0000 },
74 };
75 
76 static const uint16_t page01[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
77  [0x00] = { 0x0041, 0x0304, 0x0000 },
78  [0x01] = { 0x0061, 0x0304, 0x0000 },
79  [0x02] = { 0x0041, 0x0306, 0x0000 },
80  [0x03] = { 0x0061, 0x0306, 0x0000 },
81  [0x04] = { 0x0041, 0x0328, 0x0000 },
82  [0x05] = { 0x0061, 0x0328, 0x0000 },
83  [0x06] = { 0x0043, 0x0301, 0x0000 },
84  [0x07] = { 0x0063, 0x0301, 0x0000 },
85  [0x08] = { 0x0043, 0x0302, 0x0000 },
86  [0x09] = { 0x0063, 0x0302, 0x0000 },
87  [0x0a] = { 0x0043, 0x0307, 0x0000 },
88  [0x0b] = { 0x0063, 0x0307, 0x0000 },
89  [0x0c] = { 0x0043, 0x030C, 0x0000 },
90  [0x0d] = { 0x0063, 0x030C, 0x0000 },
91  [0x0e] = { 0x0044, 0x030C, 0x0000 },
92  [0x0f] = { 0x0064, 0x030C, 0x0000 },
93  [0x12] = { 0x0045, 0x0304, 0x0000 },
94  [0x13] = { 0x0065, 0x0304, 0x0000 },
95  [0x14] = { 0x0045, 0x0306, 0x0000 },
96  [0x15] = { 0x0065, 0x0306, 0x0000 },
97  [0x16] = { 0x0045, 0x0307, 0x0000 },
98  [0x17] = { 0x0065, 0x0307, 0x0000 },
99  [0x18] = { 0x0045, 0x0328, 0x0000 },
100  [0x19] = { 0x0065, 0x0328, 0x0000 },
101  [0x1a] = { 0x0045, 0x030C, 0x0000 },
102  [0x1b] = { 0x0065, 0x030C, 0x0000 },
103  [0x1c] = { 0x0047, 0x0302, 0x0000 },
104  [0x1d] = { 0x0067, 0x0302, 0x0000 },
105  [0x1e] = { 0x0047, 0x0306, 0x0000 },
106  [0x1f] = { 0x0067, 0x0306, 0x0000 },
107  [0x20] = { 0x0047, 0x0307, 0x0000 },
108  [0x21] = { 0x0067, 0x0307, 0x0000 },
109  [0x22] = { 0x0047, 0x0327, 0x0000 },
110  [0x23] = { 0x0067, 0x0327, 0x0000 },
111  [0x24] = { 0x0048, 0x0302, 0x0000 },
112  [0x25] = { 0x0068, 0x0302, 0x0000 },
113  [0x28] = { 0x0049, 0x0303, 0x0000 },
114  [0x29] = { 0x0069, 0x0303, 0x0000 },
115  [0x2a] = { 0x0049, 0x0304, 0x0000 },
116  [0x2b] = { 0x0069, 0x0304, 0x0000 },
117  [0x2c] = { 0x0049, 0x0306, 0x0000 },
118  [0x2d] = { 0x0069, 0x0306, 0x0000 },
119  [0x2e] = { 0x0049, 0x0328, 0x0000 },
120  [0x2f] = { 0x0069, 0x0328, 0x0000 },
121  [0x30] = { 0x0049, 0x0307, 0x0000 },
122  [0x34] = { 0x004A, 0x0302, 0x0000 },
123  [0x35] = { 0x006A, 0x0302, 0x0000 },
124  [0x36] = { 0x004B, 0x0327, 0x0000 },
125  [0x37] = { 0x006B, 0x0327, 0x0000 },
126  [0x39] = { 0x004C, 0x0301, 0x0000 },
127  [0x3a] = { 0x006C, 0x0301, 0x0000 },
128  [0x3b] = { 0x004C, 0x0327, 0x0000 },
129  [0x3c] = { 0x006C, 0x0327, 0x0000 },
130  [0x3d] = { 0x004C, 0x030C, 0x0000 },
131  [0x3e] = { 0x006C, 0x030C, 0x0000 },
132  [0x43] = { 0x004E, 0x0301, 0x0000 },
133  [0x44] = { 0x006E, 0x0301, 0x0000 },
134  [0x45] = { 0x004E, 0x0327, 0x0000 },
135  [0x46] = { 0x006E, 0x0327, 0x0000 },
136  [0x47] = { 0x004E, 0x030C, 0x0000 },
137  [0x48] = { 0x006E, 0x030C, 0x0000 },
138  [0x4c] = { 0x004F, 0x0304, 0x0000 },
139  [0x4d] = { 0x006F, 0x0304, 0x0000 },
140  [0x4e] = { 0x004F, 0x0306, 0x0000 },
141  [0x4f] = { 0x006F, 0x0306, 0x0000 },
142  [0x50] = { 0x004F, 0x030B, 0x0000 },
143  [0x51] = { 0x006F, 0x030B, 0x0000 },
144  [0x54] = { 0x0052, 0x0301, 0x0000 },
145  [0x55] = { 0x0072, 0x0301, 0x0000 },
146  [0x56] = { 0x0052, 0x0327, 0x0000 },
147  [0x57] = { 0x0072, 0x0327, 0x0000 },
148  [0x58] = { 0x0052, 0x030C, 0x0000 },
149  [0x59] = { 0x0072, 0x030C, 0x0000 },
150  [0x5a] = { 0x0053, 0x0301, 0x0000 },
151  [0x5b] = { 0x0073, 0x0301, 0x0000 },
152  [0x5c] = { 0x0053, 0x0302, 0x0000 },
153  [0x5d] = { 0x0073, 0x0302, 0x0000 },
154  [0x5e] = { 0x0053, 0x0327, 0x0000 },
155  [0x5f] = { 0x0073, 0x0327, 0x0000 },
156  [0x60] = { 0x0053, 0x030C, 0x0000 },
157  [0x61] = { 0x0073, 0x030C, 0x0000 },
158  [0x62] = { 0x0054, 0x0327, 0x0000 },
159  [0x63] = { 0x0074, 0x0327, 0x0000 },
160  [0x64] = { 0x0054, 0x030C, 0x0000 },
161  [0x65] = { 0x0074, 0x030C, 0x0000 },
162  [0x68] = { 0x0055, 0x0303, 0x0000 },
163  [0x69] = { 0x0075, 0x0303, 0x0000 },
164  [0x6a] = { 0x0055, 0x0304, 0x0000 },
165  [0x6b] = { 0x0075, 0x0304, 0x0000 },
166  [0x6c] = { 0x0055, 0x0306, 0x0000 },
167  [0x6d] = { 0x0075, 0x0306, 0x0000 },
168  [0x6e] = { 0x0055, 0x030A, 0x0000 },
169  [0x6f] = { 0x0075, 0x030A, 0x0000 },
170  [0x70] = { 0x0055, 0x030B, 0x0000 },
171  [0x71] = { 0x0075, 0x030B, 0x0000 },
172  [0x72] = { 0x0055, 0x0328, 0x0000 },
173  [0x73] = { 0x0075, 0x0328, 0x0000 },
174  [0x74] = { 0x0057, 0x0302, 0x0000 },
175  [0x75] = { 0x0077, 0x0302, 0x0000 },
176  [0x76] = { 0x0059, 0x0302, 0x0000 },
177  [0x77] = { 0x0079, 0x0302, 0x0000 },
178  [0x78] = { 0x0059, 0x0308, 0x0000 },
179  [0x79] = { 0x005A, 0x0301, 0x0000 },
180  [0x7a] = { 0x007A, 0x0301, 0x0000 },
181  [0x7b] = { 0x005A, 0x0307, 0x0000 },
182  [0x7c] = { 0x007A, 0x0307, 0x0000 },
183  [0x7d] = { 0x005A, 0x030C, 0x0000 },
184  [0x7e] = { 0x007A, 0x030C, 0x0000 },
185  [0xa0] = { 0x004F, 0x031B, 0x0000 },
186  [0xa1] = { 0x006F, 0x031B, 0x0000 },
187  [0xaf] = { 0x0055, 0x031B, 0x0000 },
188  [0xb0] = { 0x0075, 0x031B, 0x0000 },
189  [0xcd] = { 0x0041, 0x030C, 0x0000 },
190  [0xce] = { 0x0061, 0x030C, 0x0000 },
191  [0xcf] = { 0x0049, 0x030C, 0x0000 },
192  [0xd0] = { 0x0069, 0x030C, 0x0000 },
193  [0xd1] = { 0x004F, 0x030C, 0x0000 },
194  [0xd2] = { 0x006F, 0x030C, 0x0000 },
195  [0xd3] = { 0x0055, 0x030C, 0x0000 },
196  [0xd4] = { 0x0075, 0x030C, 0x0000 },
197  [0xd5] = { 0x0055, 0x0308, 0x0304, 0x0000 },
198  [0xd6] = { 0x0075, 0x0308, 0x0304, 0x0000 },
199  [0xd7] = { 0x0055, 0x0308, 0x0301, 0x0000 },
200  [0xd8] = { 0x0075, 0x0308, 0x0301, 0x0000 },
201  [0xd9] = { 0x0055, 0x0308, 0x030C, 0x0000 },
202  [0xda] = { 0x0075, 0x0308, 0x030C, 0x0000 },
203  [0xdb] = { 0x0055, 0x0308, 0x0300, 0x0000 },
204  [0xdc] = { 0x0075, 0x0308, 0x0300, 0x0000 },
205  [0xde] = { 0x0041, 0x0308, 0x0304, 0x0000 },
206  [0xdf] = { 0x0061, 0x0308, 0x0304, 0x0000 },
207  [0xe0] = { 0x0041, 0x0307, 0x0304, 0x0000 },
208  [0xe1] = { 0x0061, 0x0307, 0x0304, 0x0000 },
209  [0xe2] = { 0x00C6, 0x0304, 0x0000 },
210  [0xe3] = { 0x00E6, 0x0304, 0x0000 },
211  [0xe6] = { 0x0047, 0x030C, 0x0000 },
212  [0xe7] = { 0x0067, 0x030C, 0x0000 },
213  [0xe8] = { 0x004B, 0x030C, 0x0000 },
214  [0xe9] = { 0x006B, 0x030C, 0x0000 },
215  [0xea] = { 0x004F, 0x0328, 0x0000 },
216  [0xeb] = { 0x006F, 0x0328, 0x0000 },
217  [0xec] = { 0x004F, 0x0328, 0x0304, 0x0000 },
218  [0xed] = { 0x006F, 0x0328, 0x0304, 0x0000 },
219  [0xee] = { 0x01B7, 0x030C, 0x0000 },
220  [0xef] = { 0x0292, 0x030C, 0x0000 },
221  [0xf0] = { 0x006A, 0x030C, 0x0000 },
222  [0xf4] = { 0x0047, 0x0301, 0x0000 },
223  [0xf5] = { 0x0067, 0x0301, 0x0000 },
224  [0xfa] = { 0x0041, 0x030A, 0x0301, 0x0000 },
225  [0xfb] = { 0x0061, 0x030A, 0x0301, 0x0000 },
226  [0xfc] = { 0x00C6, 0x0301, 0x0000 },
227  [0xfd] = { 0x00E6, 0x0301, 0x0000 },
228  [0xfe] = { 0x00D8, 0x0301, 0x0000 },
229  [0xff] = { 0x00F8, 0x0301, 0x0000 },
230 };
231 
232 static const uint16_t page02[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
233  [0x00] = { 0x0041, 0x030F, 0x0000 },
234  [0x01] = { 0x0061, 0x030F, 0x0000 },
235  [0x02] = { 0x0041, 0x0311, 0x0000 },
236  [0x03] = { 0x0061, 0x0311, 0x0000 },
237  [0x04] = { 0x0045, 0x030F, 0x0000 },
238  [0x05] = { 0x0065, 0x030F, 0x0000 },
239  [0x06] = { 0x0045, 0x0311, 0x0000 },
240  [0x07] = { 0x0065, 0x0311, 0x0000 },
241  [0x08] = { 0x0049, 0x030F, 0x0000 },
242  [0x09] = { 0x0069, 0x030F, 0x0000 },
243  [0x0a] = { 0x0049, 0x0311, 0x0000 },
244  [0x0b] = { 0x0069, 0x0311, 0x0000 },
245  [0x0c] = { 0x004F, 0x030F, 0x0000 },
246  [0x0d] = { 0x006F, 0x030F, 0x0000 },
247  [0x0e] = { 0x004F, 0x0311, 0x0000 },
248  [0x0f] = { 0x006F, 0x0311, 0x0000 },
249  [0x10] = { 0x0052, 0x030F, 0x0000 },
250  [0x11] = { 0x0072, 0x030F, 0x0000 },
251  [0x12] = { 0x0052, 0x0311, 0x0000 },
252  [0x13] = { 0x0072, 0x0311, 0x0000 },
253  [0x14] = { 0x0055, 0x030F, 0x0000 },
254  [0x15] = { 0x0075, 0x030F, 0x0000 },
255  [0x16] = { 0x0055, 0x0311, 0x0000 },
256  [0x17] = { 0x0075, 0x0311, 0x0000 },
257 };
258 
259 static const uint16_t page03[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
260  [0x10] = { 0x0306, 0x0307, 0x0000 },
261  [0x40] = { 0x0300, 0x0000 },
262  [0x41] = { 0x0301, 0x0000 },
263  [0x43] = { 0x0313, 0x0000 },
264  [0x44] = { 0x0308, 0x030D, 0x0000 },
265  [0x74] = { 0x02B9, 0x0000 },
266  [0x7e] = { 0x003B, 0x0000 },
267  [0x85] = { 0x00A8, 0x030D, 0x0000 },
268  [0x86] = { 0x0391, 0x030D, 0x0000 },
269  [0x87] = { 0x00B7, 0x0000 },
270  [0x88] = { 0x0395, 0x030D, 0x0000 },
271  [0x89] = { 0x0397, 0x030D, 0x0000 },
272  [0x8a] = { 0x0399, 0x030D, 0x0000 },
273  [0x8c] = { 0x039F, 0x030D, 0x0000 },
274  [0x8e] = { 0x03A5, 0x030D, 0x0000 },
275  [0x8f] = { 0x03A9, 0x030D, 0x0000 },
276  [0x90] = { 0x03B9, 0x0308, 0x030D, 0x0000 },
277  [0xaa] = { 0x0399, 0x0308, 0x0000 },
278  [0xab] = { 0x03A5, 0x0308, 0x0000 },
279  [0xac] = { 0x03B1, 0x030D, 0x0000 },
280  [0xad] = { 0x03B5, 0x030D, 0x0000 },
281  [0xae] = { 0x03B7, 0x030D, 0x0000 },
282  [0xaf] = { 0x03B9, 0x030D, 0x0000 },
283  [0xb0] = { 0x03C5, 0x0308, 0x030D, 0x0000 },
284  [0xca] = { 0x03B9, 0x0308, 0x0000 },
285  [0xcb] = { 0x03C5, 0x0308, 0x0000 },
286  [0xcc] = { 0x03BF, 0x030D, 0x0000 },
287  [0xcd] = { 0x03C5, 0x030D, 0x0000 },
288  [0xce] = { 0x03C9, 0x030D, 0x0000 },
289  [0xd3] = { 0x03D2, 0x030D, 0x0000 },
290  [0xd4] = { 0x03D2, 0x0308, 0x0000 },
291 };
292 
293 static const uint16_t page04[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
294  [0x01] = { 0x0415, 0x0308, 0x0000 },
295  [0x03] = { 0x0413, 0x0301, 0x0000 },
296  [0x07] = { 0x0406, 0x0308, 0x0000 },
297  [0x0c] = { 0x041A, 0x0301, 0x0000 },
298  [0x0e] = { 0x0423, 0x0306, 0x0000 },
299  [0x19] = { 0x0418, 0x0306, 0x0000 },
300  [0x39] = { 0x0438, 0x0306, 0x0000 },
301  [0x51] = { 0x0435, 0x0308, 0x0000 },
302  [0x53] = { 0x0433, 0x0301, 0x0000 },
303  [0x57] = { 0x0456, 0x0308, 0x0000 },
304  [0x5c] = { 0x043A, 0x0301, 0x0000 },
305  [0x5e] = { 0x0443, 0x0306, 0x0000 },
306  [0x76] = { 0x0474, 0x030F, 0x0000 },
307  [0x77] = { 0x0475, 0x030F, 0x0000 },
308  [0xc1] = { 0x0416, 0x0306, 0x0000 },
309  [0xc2] = { 0x0436, 0x0306, 0x0000 },
310  [0xd0] = { 0x0410, 0x0306, 0x0000 },
311  [0xd1] = { 0x0430, 0x0306, 0x0000 },
312  [0xd2] = { 0x0410, 0x0308, 0x0000 },
313  [0xd3] = { 0x0430, 0x0308, 0x0000 },
314  [0xd4] = { 0x00C6, 0x0000 },
315  [0xd5] = { 0x00E6, 0x0000 },
316  [0xd6] = { 0x0415, 0x0306, 0x0000 },
317  [0xd7] = { 0x0435, 0x0306, 0x0000 },
318  [0xd8] = { 0x018F, 0x0000 },
319  [0xd9] = { 0x0259, 0x0000 },
320  [0xda] = { 0x018F, 0x0308, 0x0000 },
321  [0xdb] = { 0x0259, 0x0308, 0x0000 },
322  [0xdc] = { 0x0416, 0x0308, 0x0000 },
323  [0xdd] = { 0x0436, 0x0308, 0x0000 },
324  [0xde] = { 0x0417, 0x0308, 0x0000 },
325  [0xdf] = { 0x0437, 0x0308, 0x0000 },
326  [0xe0] = { 0x01B7, 0x0000 },
327  [0xe1] = { 0x0292, 0x0000 },
328  [0xe2] = { 0x0418, 0x0304, 0x0000 },
329  [0xe3] = { 0x0438, 0x0304, 0x0000 },
330  [0xe4] = { 0x0418, 0x0308, 0x0000 },
331  [0xe5] = { 0x0438, 0x0308, 0x0000 },
332  [0xe6] = { 0x041E, 0x0308, 0x0000 },
333  [0xe7] = { 0x043E, 0x0308, 0x0000 },
334  [0xe8] = { 0x019F, 0x0000 },
335  [0xe9] = { 0x0275, 0x0000 },
336  [0xea] = { 0x019F, 0x0308, 0x0000 },
337  [0xeb] = { 0x0275, 0x0308, 0x0000 },
338  [0xee] = { 0x0423, 0x0304, 0x0000 },
339  [0xef] = { 0x0443, 0x0304, 0x0000 },
340  [0xf0] = { 0x0423, 0x0308, 0x0000 },
341  [0xf1] = { 0x0443, 0x0308, 0x0000 },
342  [0xf2] = { 0x0423, 0x030B, 0x0000 },
343  [0xf3] = { 0x0443, 0x030B, 0x0000 },
344  [0xf4] = { 0x0427, 0x0308, 0x0000 },
345  [0xf5] = { 0x0447, 0x0308, 0x0000 },
346  [0xf8] = { 0x042B, 0x0308, 0x0000 },
347  [0xf9] = { 0x044B, 0x0308, 0x0000 },
348 };
349 
350 static const uint16_t page09[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
351  [0x29] = { 0x0928, 0x093C, 0x0000 },
352  [0x31] = { 0x0930, 0x093C, 0x0000 },
353  [0x34] = { 0x0933, 0x093C, 0x0000 },
354  [0x58] = { 0x0915, 0x093C, 0x0000 },
355  [0x59] = { 0x0916, 0x093C, 0x0000 },
356  [0x5a] = { 0x0917, 0x093C, 0x0000 },
357  [0x5b] = { 0x091C, 0x093C, 0x0000 },
358  [0x5c] = { 0x0921, 0x093C, 0x0000 },
359  [0x5d] = { 0x0922, 0x093C, 0x0000 },
360  [0x5e] = { 0x092B, 0x093C, 0x0000 },
361  [0x5f] = { 0x092F, 0x093C, 0x0000 },
362  [0xb0] = { 0x09AC, 0x09BC, 0x0000 },
363  [0xcb] = { 0x09C7, 0x09BE, 0x0000 },
364  [0xcc] = { 0x09C7, 0x09D7, 0x0000 },
365  [0xdc] = { 0x09A1, 0x09BC, 0x0000 },
366  [0xdd] = { 0x09A2, 0x09BC, 0x0000 },
367  [0xdf] = { 0x09AF, 0x09BC, 0x0000 },
368 };
369 
370 static const uint16_t page0a[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
371  [0x59] = { 0x0A16, 0x0A3C, 0x0000 },
372  [0x5a] = { 0x0A17, 0x0A3C, 0x0000 },
373  [0x5b] = { 0x0A1C, 0x0A3C, 0x0000 },
374  [0x5c] = { 0x0A21, 0x0A3C, 0x0000 },
375  [0x5e] = { 0x0A2B, 0x0A3C, 0x0000 },
376 };
377 
378 static const uint16_t page0b[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
379  [0x48] = { 0x0B47, 0x0B56, 0x0000 },
380  [0x4b] = { 0x0B47, 0x0B3E, 0x0000 },
381  [0x4c] = { 0x0B47, 0x0B57, 0x0000 },
382  [0x5c] = { 0x0B21, 0x0B3C, 0x0000 },
383  [0x5d] = { 0x0B22, 0x0B3C, 0x0000 },
384  [0x5f] = { 0x0B2F, 0x0B3C, 0x0000 },
385  [0x94] = { 0x0B92, 0x0BD7, 0x0000 },
386  [0xca] = { 0x0BC6, 0x0BBE, 0x0000 },
387  [0xcb] = { 0x0BC7, 0x0BBE, 0x0000 },
388  [0xcc] = { 0x0BC6, 0x0BD7, 0x0000 },
389 };
390 
391 static const uint16_t page0c[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
392  [0x48] = { 0x0C46, 0x0C56, 0x0000 },
393  [0xc0] = { 0x0CBF, 0x0CD5, 0x0000 },
394  [0xc7] = { 0x0CC6, 0x0CD5, 0x0000 },
395  [0xc8] = { 0x0CC6, 0x0CD6, 0x0000 },
396  [0xca] = { 0x0CC6, 0x0CC2, 0x0000 },
397  [0xcb] = { 0x0CC6, 0x0CC2, 0x0CD5, 0x0000 },
398 };
399 
400 static const uint16_t page0d[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
401  [0x4a] = { 0x0D46, 0x0D3E, 0x0000 },
402  [0x4b] = { 0x0D47, 0x0D3E, 0x0000 },
403  [0x4c] = { 0x0D46, 0x0D57, 0x0000 },
404 };
405 
406 static const uint16_t page0e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
407  [0x33] = { 0x0E4D, 0x0E32, 0x0000 },
408  [0xb3] = { 0x0ECD, 0x0EB2, 0x0000 },
409 };
410 
411 static const uint16_t page0f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
412  [0x43] = { 0x0F42, 0x0FB7, 0x0000 },
413  [0x4d] = { 0x0F4C, 0x0FB7, 0x0000 },
414  [0x52] = { 0x0F51, 0x0FB7, 0x0000 },
415  [0x57] = { 0x0F56, 0x0FB7, 0x0000 },
416  [0x5c] = { 0x0F5B, 0x0FB7, 0x0000 },
417  [0x69] = { 0x0F40, 0x0FB5, 0x0000 },
418  [0x73] = { 0x0F72, 0x0F71, 0x0000 },
419  [0x75] = { 0x0F74, 0x0F71, 0x0000 },
420  [0x76] = { 0x0FB2, 0x0F80, 0x0000 },
421  [0x77] = { 0x0FB2, 0x0F80, 0x0F71, 0x0000 },
422  [0x78] = { 0x0FB3, 0x0F80, 0x0000 },
423  [0x79] = { 0x0FB3, 0x0F80, 0x0F71, 0x0000 },
424  [0x81] = { 0x0F80, 0x0F71, 0x0000 },
425  [0x93] = { 0x0F92, 0x0FB7, 0x0000 },
426  [0x9d] = { 0x0F9C, 0x0FB7, 0x0000 },
427  [0xa2] = { 0x0FA1, 0x0FB7, 0x0000 },
428  [0xa7] = { 0x0FA6, 0x0FB7, 0x0000 },
429  [0xac] = { 0x0FAB, 0x0FB7, 0x0000 },
430  [0xb9] = { 0x0F90, 0x0FB5, 0x0000 },
431 };
432 
433 static const uint16_t page1e[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
434  [0x00] = { 0x0041, 0x0325, 0x0000 },
435  [0x01] = { 0x0061, 0x0325, 0x0000 },
436  [0x02] = { 0x0042, 0x0307, 0x0000 },
437  [0x03] = { 0x0062, 0x0307, 0x0000 },
438  [0x04] = { 0x0042, 0x0323, 0x0000 },
439  [0x05] = { 0x0062, 0x0323, 0x0000 },
440  [0x06] = { 0x0042, 0x0331, 0x0000 },
441  [0x07] = { 0x0062, 0x0331, 0x0000 },
442  [0x08] = { 0x0043, 0x0327, 0x0301, 0x0000 },
443  [0x09] = { 0x0063, 0x0327, 0x0301, 0x0000 },
444  [0x0a] = { 0x0044, 0x0307, 0x0000 },
445  [0x0b] = { 0x0064, 0x0307, 0x0000 },
446  [0x0c] = { 0x0044, 0x0323, 0x0000 },
447  [0x0d] = { 0x0064, 0x0323, 0x0000 },
448  [0x0e] = { 0x0044, 0x0331, 0x0000 },
449  [0x0f] = { 0x0064, 0x0331, 0x0000 },
450  [0x10] = { 0x0044, 0x0327, 0x0000 },
451  [0x11] = { 0x0064, 0x0327, 0x0000 },
452  [0x12] = { 0x0044, 0x032D, 0x0000 },
453  [0x13] = { 0x0064, 0x032D, 0x0000 },
454  [0x14] = { 0x0045, 0x0304, 0x0300, 0x0000 },
455  [0x15] = { 0x0065, 0x0304, 0x0300, 0x0000 },
456  [0x16] = { 0x0045, 0x0304, 0x0301, 0x0000 },
457  [0x17] = { 0x0065, 0x0304, 0x0301, 0x0000 },
458  [0x18] = { 0x0045, 0x032D, 0x0000 },
459  [0x19] = { 0x0065, 0x032D, 0x0000 },
460  [0x1a] = { 0x0045, 0x0330, 0x0000 },
461  [0x1b] = { 0x0065, 0x0330, 0x0000 },
462  [0x1c] = { 0x0045, 0x0327, 0x0306, 0x0000 },
463  [0x1d] = { 0x0065, 0x0327, 0x0306, 0x0000 },
464  [0x1e] = { 0x0046, 0x0307, 0x0000 },
465  [0x1f] = { 0x0066, 0x0307, 0x0000 },
466  [0x20] = { 0x0047, 0x0304, 0x0000 },
467  [0x21] = { 0x0067, 0x0304, 0x0000 },
468  [0x22] = { 0x0048, 0x0307, 0x0000 },
469  [0x23] = { 0x0068, 0x0307, 0x0000 },
470  [0x24] = { 0x0048, 0x0323, 0x0000 },
471  [0x25] = { 0x0068, 0x0323, 0x0000 },
472  [0x26] = { 0x0048, 0x0308, 0x0000 },
473  [0x27] = { 0x0068, 0x0308, 0x0000 },
474  [0x28] = { 0x0048, 0x0327, 0x0000 },
475  [0x29] = { 0x0068, 0x0327, 0x0000 },
476  [0x2a] = { 0x0048, 0x032E, 0x0000 },
477  [0x2b] = { 0x0068, 0x032E, 0x0000 },
478  [0x2c] = { 0x0049, 0x0330, 0x0000 },
479  [0x2d] = { 0x0069, 0x0330, 0x0000 },
480  [0x2e] = { 0x0049, 0x0308, 0x0301, 0x0000 },
481  [0x2f] = { 0x0069, 0x0308, 0x0301, 0x0000 },
482  [0x30] = { 0x004B, 0x0301, 0x0000 },
483  [0x31] = { 0x006B, 0x0301, 0x0000 },
484  [0x32] = { 0x004B, 0x0323, 0x0000 },
485  [0x33] = { 0x006B, 0x0323, 0x0000 },
486  [0x34] = { 0x004B, 0x0331, 0x0000 },
487  [0x35] = { 0x006B, 0x0331, 0x0000 },
488  [0x36] = { 0x004C, 0x0323, 0x0000 },
489  [0x37] = { 0x006C, 0x0323, 0x0000 },
490  [0x38] = { 0x004C, 0x0323, 0x0304, 0x0000 },
491  [0x39] = { 0x006C, 0x0323, 0x0304, 0x0000 },
492  [0x3a] = { 0x004C, 0x0331, 0x0000 },
493  [0x3b] = { 0x006C, 0x0331, 0x0000 },
494  [0x3c] = { 0x004C, 0x032D, 0x0000 },
495  [0x3d] = { 0x006C, 0x032D, 0x0000 },
496  [0x3e] = { 0x004D, 0x0301, 0x0000 },
497  [0x3f] = { 0x006D, 0x0301, 0x0000 },
498  [0x40] = { 0x004D, 0x0307, 0x0000 },
499  [0x41] = { 0x006D, 0x0307, 0x0000 },
500  [0x42] = { 0x004D, 0x0323, 0x0000 },
501  [0x43] = { 0x006D, 0x0323, 0x0000 },
502  [0x44] = { 0x004E, 0x0307, 0x0000 },
503  [0x45] = { 0x006E, 0x0307, 0x0000 },
504  [0x46] = { 0x004E, 0x0323, 0x0000 },
505  [0x47] = { 0x006E, 0x0323, 0x0000 },
506  [0x48] = { 0x004E, 0x0331, 0x0000 },
507  [0x49] = { 0x006E, 0x0331, 0x0000 },
508  [0x4a] = { 0x004E, 0x032D, 0x0000 },
509  [0x4b] = { 0x006E, 0x032D, 0x0000 },
510  [0x4c] = { 0x004F, 0x0303, 0x0301, 0x0000 },
511  [0x4d] = { 0x006F, 0x0303, 0x0301, 0x0000 },
512  [0x4e] = { 0x004F, 0x0303, 0x0308, 0x0000 },
513  [0x4f] = { 0x006F, 0x0303, 0x0308, 0x0000 },
514  [0x50] = { 0x004F, 0x0304, 0x0300, 0x0000 },
515  [0x51] = { 0x006F, 0x0304, 0x0300, 0x0000 },
516  [0x52] = { 0x004F, 0x0304, 0x0301, 0x0000 },
517  [0x53] = { 0x006F, 0x0304, 0x0301, 0x0000 },
518  [0x54] = { 0x0050, 0x0301, 0x0000 },
519  [0x55] = { 0x0070, 0x0301, 0x0000 },
520  [0x56] = { 0x0050, 0x0307, 0x0000 },
521  [0x57] = { 0x0070, 0x0307, 0x0000 },
522  [0x58] = { 0x0052, 0x0307, 0x0000 },
523  [0x59] = { 0x0072, 0x0307, 0x0000 },
524  [0x5a] = { 0x0052, 0x0323, 0x0000 },
525  [0x5b] = { 0x0072, 0x0323, 0x0000 },
526  [0x5c] = { 0x0052, 0x0323, 0x0304, 0x0000 },
527  [0x5d] = { 0x0072, 0x0323, 0x0304, 0x0000 },
528  [0x5e] = { 0x0052, 0x0331, 0x0000 },
529  [0x5f] = { 0x0072, 0x0331, 0x0000 },
530  [0x60] = { 0x0053, 0x0307, 0x0000 },
531  [0x61] = { 0x0073, 0x0307, 0x0000 },
532  [0x62] = { 0x0053, 0x0323, 0x0000 },
533  [0x63] = { 0x0073, 0x0323, 0x0000 },
534  [0x64] = { 0x0053, 0x0301, 0x0307, 0x0000 },
535  [0x65] = { 0x0073, 0x0301, 0x0307, 0x0000 },
536  [0x66] = { 0x0053, 0x030C, 0x0307, 0x0000 },
537  [0x67] = { 0x0073, 0x030C, 0x0307, 0x0000 },
538  [0x68] = { 0x0053, 0x0323, 0x0307, 0x0000 },
539  [0x69] = { 0x0073, 0x0323, 0x0307, 0x0000 },
540  [0x6a] = { 0x0054, 0x0307, 0x0000 },
541  [0x6b] = { 0x0074, 0x0307, 0x0000 },
542  [0x6c] = { 0x0054, 0x0323, 0x0000 },
543  [0x6d] = { 0x0074, 0x0323, 0x0000 },
544  [0x6e] = { 0x0054, 0x0331, 0x0000 },
545  [0x6f] = { 0x0074, 0x0331, 0x0000 },
546  [0x70] = { 0x0054, 0x032D, 0x0000 },
547  [0x71] = { 0x0074, 0x032D, 0x0000 },
548  [0x72] = { 0x0055, 0x0324, 0x0000 },
549  [0x73] = { 0x0075, 0x0324, 0x0000 },
550  [0x74] = { 0x0055, 0x0330, 0x0000 },
551  [0x75] = { 0x0075, 0x0330, 0x0000 },
552  [0x76] = { 0x0055, 0x032D, 0x0000 },
553  [0x77] = { 0x0075, 0x032D, 0x0000 },
554  [0x78] = { 0x0055, 0x0303, 0x0301, 0x0000 },
555  [0x79] = { 0x0075, 0x0303, 0x0301, 0x0000 },
556  [0x7a] = { 0x0055, 0x0304, 0x0308, 0x0000 },
557  [0x7b] = { 0x0075, 0x0304, 0x0308, 0x0000 },
558  [0x7c] = { 0x0056, 0x0303, 0x0000 },
559  [0x7d] = { 0x0076, 0x0303, 0x0000 },
560  [0x7e] = { 0x0056, 0x0323, 0x0000 },
561  [0x7f] = { 0x0076, 0x0323, 0x0000 },
562  [0x80] = { 0x0057, 0x0300, 0x0000 },
563  [0x81] = { 0x0077, 0x0300, 0x0000 },
564  [0x82] = { 0x0057, 0x0301, 0x0000 },
565  [0x83] = { 0x0077, 0x0301, 0x0000 },
566  [0x84] = { 0x0057, 0x0308, 0x0000 },
567  [0x85] = { 0x0077, 0x0308, 0x0000 },
568  [0x86] = { 0x0057, 0x0307, 0x0000 },
569  [0x87] = { 0x0077, 0x0307, 0x0000 },
570  [0x88] = { 0x0057, 0x0323, 0x0000 },
571  [0x89] = { 0x0077, 0x0323, 0x0000 },
572  [0x8a] = { 0x0058, 0x0307, 0x0000 },
573  [0x8b] = { 0x0078, 0x0307, 0x0000 },
574  [0x8c] = { 0x0058, 0x0308, 0x0000 },
575  [0x8d] = { 0x0078, 0x0308, 0x0000 },
576  [0x8e] = { 0x0059, 0x0307, 0x0000 },
577  [0x8f] = { 0x0079, 0x0307, 0x0000 },
578  [0x90] = { 0x005A, 0x0302, 0x0000 },
579  [0x91] = { 0x007A, 0x0302, 0x0000 },
580  [0x92] = { 0x005A, 0x0323, 0x0000 },
581  [0x93] = { 0x007A, 0x0323, 0x0000 },
582  [0x94] = { 0x005A, 0x0331, 0x0000 },
583  [0x95] = { 0x007A, 0x0331, 0x0000 },
584  [0x96] = { 0x0068, 0x0331, 0x0000 },
585  [0x97] = { 0x0074, 0x0308, 0x0000 },
586  [0x98] = { 0x0077, 0x030A, 0x0000 },
587  [0x99] = { 0x0079, 0x030A, 0x0000 },
588  [0x9b] = { 0x017F, 0x0307, 0x0000 },
589  [0xa0] = { 0x0041, 0x0323, 0x0000 },
590  [0xa1] = { 0x0061, 0x0323, 0x0000 },
591  [0xa2] = { 0x0041, 0x0309, 0x0000 },
592  [0xa3] = { 0x0061, 0x0309, 0x0000 },
593  [0xa4] = { 0x0041, 0x0302, 0x0301, 0x0000 },
594  [0xa5] = { 0x0061, 0x0302, 0x0301, 0x0000 },
595  [0xa6] = { 0x0041, 0x0302, 0x0300, 0x0000 },
596  [0xa7] = { 0x0061, 0x0302, 0x0300, 0x0000 },
597  [0xa8] = { 0x0041, 0x0302, 0x0309, 0x0000 },
598  [0xa9] = { 0x0061, 0x0302, 0x0309, 0x0000 },
599  [0xaa] = { 0x0041, 0x0302, 0x0303, 0x0000 },
600  [0xab] = { 0x0061, 0x0302, 0x0303, 0x0000 },
601  [0xac] = { 0x0041, 0x0323, 0x0302, 0x0000 },
602  [0xad] = { 0x0061, 0x0323, 0x0302, 0x0000 },
603  [0xae] = { 0x0041, 0x0306, 0x0301, 0x0000 },
604  [0xaf] = { 0x0061, 0x0306, 0x0301, 0x0000 },
605  [0xb0] = { 0x0041, 0x0306, 0x0300, 0x0000 },
606  [0xb1] = { 0x0061, 0x0306, 0x0300, 0x0000 },
607  [0xb2] = { 0x0041, 0x0306, 0x0309, 0x0000 },
608  [0xb3] = { 0x0061, 0x0306, 0x0309, 0x0000 },
609  [0xb4] = { 0x0041, 0x0306, 0x0303, 0x0000 },
610  [0xb5] = { 0x0061, 0x0306, 0x0303, 0x0000 },
611  [0xb6] = { 0x0041, 0x0323, 0x0306, 0x0000 },
612  [0xb7] = { 0x0061, 0x0323, 0x0306, 0x0000 },
613  [0xb8] = { 0x0045, 0x0323, 0x0000 },
614  [0xb9] = { 0x0065, 0x0323, 0x0000 },
615  [0xba] = { 0x0045, 0x0309, 0x0000 },
616  [0xbb] = { 0x0065, 0x0309, 0x0000 },
617  [0xbc] = { 0x0045, 0x0303, 0x0000 },
618  [0xbd] = { 0x0065, 0x0303, 0x0000 },
619  [0xbe] = { 0x0045, 0x0302, 0x0301, 0x0000 },
620  [0xbf] = { 0x0065, 0x0302, 0x0301, 0x0000 },
621  [0xc0] = { 0x0045, 0x0302, 0x0300, 0x0000 },
622  [0xc1] = { 0x0065, 0x0302, 0x0300, 0x0000 },
623  [0xc2] = { 0x0045, 0x0302, 0x0309, 0x0000 },
624  [0xc3] = { 0x0065, 0x0302, 0x0309, 0x0000 },
625  [0xc4] = { 0x0045, 0x0302, 0x0303, 0x0000 },
626  [0xc5] = { 0x0065, 0x0302, 0x0303, 0x0000 },
627  [0xc6] = { 0x0045, 0x0323, 0x0302, 0x0000 },
628  [0xc7] = { 0x0065, 0x0323, 0x0302, 0x0000 },
629  [0xc8] = { 0x0049, 0x0309, 0x0000 },
630  [0xc9] = { 0x0069, 0x0309, 0x0000 },
631  [0xca] = { 0x0049, 0x0323, 0x0000 },
632  [0xcb] = { 0x0069, 0x0323, 0x0000 },
633  [0xcc] = { 0x004F, 0x0323, 0x0000 },
634  [0xcd] = { 0x006F, 0x0323, 0x0000 },
635  [0xce] = { 0x004F, 0x0309, 0x0000 },
636  [0xcf] = { 0x006F, 0x0309, 0x0000 },
637  [0xd0] = { 0x004F, 0x0302, 0x0301, 0x0000 },
638  [0xd1] = { 0x006F, 0x0302, 0x0301, 0x0000 },
639  [0xd2] = { 0x004F, 0x0302, 0x0300, 0x0000 },
640  [0xd3] = { 0x006F, 0x0302, 0x0300, 0x0000 },
641  [0xd4] = { 0x004F, 0x0302, 0x0309, 0x0000 },
642  [0xd5] = { 0x006F, 0x0302, 0x0309, 0x0000 },
643  [0xd6] = { 0x004F, 0x0302, 0x0303, 0x0000 },
644  [0xd7] = { 0x006F, 0x0302, 0x0303, 0x0000 },
645  [0xd8] = { 0x004F, 0x0323, 0x0302, 0x0000 },
646  [0xd9] = { 0x006F, 0x0323, 0x0302, 0x0000 },
647  [0xda] = { 0x004F, 0x031B, 0x0301, 0x0000 },
648  [0xdb] = { 0x006F, 0x031B, 0x0301, 0x0000 },
649  [0xdc] = { 0x004F, 0x031B, 0x0300, 0x0000 },
650  [0xdd] = { 0x006F, 0x031B, 0x0300, 0x0000 },
651  [0xde] = { 0x004F, 0x031B, 0x0309, 0x0000 },
652  [0xdf] = { 0x006F, 0x031B, 0x0309, 0x0000 },
653  [0xe0] = { 0x004F, 0x031B, 0x0303, 0x0000 },
654  [0xe1] = { 0x006F, 0x031B, 0x0303, 0x0000 },
655  [0xe2] = { 0x004F, 0x031B, 0x0323, 0x0000 },
656  [0xe3] = { 0x006F, 0x031B, 0x0323, 0x0000 },
657  [0xe4] = { 0x0055, 0x0323, 0x0000 },
658  [0xe5] = { 0x0075, 0x0323, 0x0000 },
659  [0xe6] = { 0x0055, 0x0309, 0x0000 },
660  [0xe7] = { 0x0075, 0x0309, 0x0000 },
661  [0xe8] = { 0x0055, 0x031B, 0x0301, 0x0000 },
662  [0xe9] = { 0x0075, 0x031B, 0x0301, 0x0000 },
663  [0xea] = { 0x0055, 0x031B, 0x0300, 0x0000 },
664  [0xeb] = { 0x0075, 0x031B, 0x0300, 0x0000 },
665  [0xec] = { 0x0055, 0x031B, 0x0309, 0x0000 },
666  [0xed] = { 0x0075, 0x031B, 0x0309, 0x0000 },
667  [0xee] = { 0x0055, 0x031B, 0x0303, 0x0000 },
668  [0xef] = { 0x0075, 0x031B, 0x0303, 0x0000 },
669  [0xf0] = { 0x0055, 0x031B, 0x0323, 0x0000 },
670  [0xf1] = { 0x0075, 0x031B, 0x0323, 0x0000 },
671  [0xf2] = { 0x0059, 0x0300, 0x0000 },
672  [0xf3] = { 0x0079, 0x0300, 0x0000 },
673  [0xf4] = { 0x0059, 0x0323, 0x0000 },
674  [0xf5] = { 0x0079, 0x0323, 0x0000 },
675  [0xf6] = { 0x0059, 0x0309, 0x0000 },
676  [0xf7] = { 0x0079, 0x0309, 0x0000 },
677  [0xf8] = { 0x0059, 0x0303, 0x0000 },
678  [0xf9] = { 0x0079, 0x0303, 0x0000 },
679 };
680 
681 static const uint16_t page1f[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
682  [0x00] = { 0x03B1, 0x0313, 0x0000 },
683  [0x01] = { 0x03B1, 0x0314, 0x0000 },
684  [0x02] = { 0x03B1, 0x0313, 0x0300, 0x0000 },
685  [0x03] = { 0x03B1, 0x0314, 0x0300, 0x0000 },
686  [0x04] = { 0x03B1, 0x0313, 0x0301, 0x0000 },
687  [0x05] = { 0x03B1, 0x0314, 0x0301, 0x0000 },
688  [0x06] = { 0x03B1, 0x0313, 0x0342, 0x0000 },
689  [0x07] = { 0x03B1, 0x0314, 0x0342, 0x0000 },
690  [0x08] = { 0x0391, 0x0313, 0x0000 },
691  [0x09] = { 0x0391, 0x0314, 0x0000 },
692  [0x0a] = { 0x0391, 0x0313, 0x0300, 0x0000 },
693  [0x0b] = { 0x0391, 0x0314, 0x0300, 0x0000 },
694  [0x0c] = { 0x0391, 0x0313, 0x0301, 0x0000 },
695  [0x0d] = { 0x0391, 0x0314, 0x0301, 0x0000 },
696  [0x0e] = { 0x0391, 0x0313, 0x0342, 0x0000 },
697  [0x0f] = { 0x0391, 0x0314, 0x0342, 0x0000 },
698  [0x10] = { 0x03B5, 0x0313, 0x0000 },
699  [0x11] = { 0x03B5, 0x0314, 0x0000 },
700  [0x12] = { 0x03B5, 0x0313, 0x0300, 0x0000 },
701  [0x13] = { 0x03B5, 0x0314, 0x0300, 0x0000 },
702  [0x14] = { 0x03B5, 0x0313, 0x0301, 0x0000 },
703  [0x15] = { 0x03B5, 0x0314, 0x0301, 0x0000 },
704  [0x18] = { 0x0395, 0x0313, 0x0000 },
705  [0x19] = { 0x0395, 0x0314, 0x0000 },
706  [0x1a] = { 0x0395, 0x0313, 0x0300, 0x0000 },
707  [0x1b] = { 0x0395, 0x0314, 0x0300, 0x0000 },
708  [0x1c] = { 0x0395, 0x0313, 0x0301, 0x0000 },
709  [0x1d] = { 0x0395, 0x0314, 0x0301, 0x0000 },
710  [0x20] = { 0x03B7, 0x0313, 0x0000 },
711  [0x21] = { 0x03B7, 0x0314, 0x0000 },
712  [0x22] = { 0x03B7, 0x0313, 0x0300, 0x0000 },
713  [0x23] = { 0x03B7, 0x0314, 0x0300, 0x0000 },
714  [0x24] = { 0x03B7, 0x0313, 0x0301, 0x0000 },
715  [0x25] = { 0x03B7, 0x0314, 0x0301, 0x0000 },
716  [0x26] = { 0x03B7, 0x0313, 0x0342, 0x0000 },
717  [0x27] = { 0x03B7, 0x0314, 0x0342, 0x0000 },
718  [0x28] = { 0x0397, 0x0313, 0x0000 },
719  [0x29] = { 0x0397, 0x0314, 0x0000 },
720  [0x2a] = { 0x0397, 0x0313, 0x0300, 0x0000 },
721  [0x2b] = { 0x0397, 0x0314, 0x0300, 0x0000 },
722  [0x2c] = { 0x0397, 0x0313, 0x0301, 0x0000 },
723  [0x2d] = { 0x0397, 0x0314, 0x0301, 0x0000 },
724  [0x2e] = { 0x0397, 0x0313, 0x0342, 0x0000 },
725  [0x2f] = { 0x0397, 0x0314, 0x0342, 0x0000 },
726  [0x30] = { 0x03B9, 0x0313, 0x0000 },
727  [0x31] = { 0x03B9, 0x0314, 0x0000 },
728  [0x32] = { 0x03B9, 0x0313, 0x0300, 0x0000 },
729  [0x33] = { 0x03B9, 0x0314, 0x0300, 0x0000 },
730  [0x34] = { 0x03B9, 0x0313, 0x0301, 0x0000 },
731  [0x35] = { 0x03B9, 0x0314, 0x0301, 0x0000 },
732  [0x36] = { 0x03B9, 0x0313, 0x0342, 0x0000 },
733  [0x37] = { 0x03B9, 0x0314, 0x0342, 0x0000 },
734  [0x38] = { 0x0399, 0x0313, 0x0000 },
735  [0x39] = { 0x0399, 0x0314, 0x0000 },
736  [0x3a] = { 0x0399, 0x0313, 0x0300, 0x0000 },
737  [0x3b] = { 0x0399, 0x0314, 0x0300, 0x0000 },
738  [0x3c] = { 0x0399, 0x0313, 0x0301, 0x0000 },
739  [0x3d] = { 0x0399, 0x0314, 0x0301, 0x0000 },
740  [0x3e] = { 0x0399, 0x0313, 0x0342, 0x0000 },
741  [0x3f] = { 0x0399, 0x0314, 0x0342, 0x0000 },
742  [0x40] = { 0x03BF, 0x0313, 0x0000 },
743  [0x41] = { 0x03BF, 0x0314, 0x0000 },
744  [0x42] = { 0x03BF, 0x0313, 0x0300, 0x0000 },
745  [0x43] = { 0x03BF, 0x0314, 0x0300, 0x0000 },
746  [0x44] = { 0x03BF, 0x0313, 0x0301, 0x0000 },
747  [0x45] = { 0x03BF, 0x0314, 0x0301, 0x0000 },
748  [0x48] = { 0x039F, 0x0313, 0x0000 },
749  [0x49] = { 0x039F, 0x0314, 0x0000 },
750  [0x4a] = { 0x039F, 0x0313, 0x0300, 0x0000 },
751  [0x4b] = { 0x039F, 0x0314, 0x0300, 0x0000 },
752  [0x4c] = { 0x039F, 0x0313, 0x0301, 0x0000 },
753  [0x4d] = { 0x039F, 0x0314, 0x0301, 0x0000 },
754  [0x50] = { 0x03C5, 0x0313, 0x0000 },
755  [0x51] = { 0x03C5, 0x0314, 0x0000 },
756  [0x52] = { 0x03C5, 0x0313, 0x0300, 0x0000 },
757  [0x53] = { 0x03C5, 0x0314, 0x0300, 0x0000 },
758  [0x54] = { 0x03C5, 0x0313, 0x0301, 0x0000 },
759  [0x55] = { 0x03C5, 0x0314, 0x0301, 0x0000 },
760  [0x56] = { 0x03C5, 0x0313, 0x0342, 0x0000 },
761  [0x57] = { 0x03C5, 0x0314, 0x0342, 0x0000 },
762  [0x59] = { 0x03A5, 0x0314, 0x0000 },
763  [0x5b] = { 0x03A5, 0x0314, 0x0300, 0x0000 },
764  [0x5d] = { 0x03A5, 0x0314, 0x0301, 0x0000 },
765  [0x5f] = { 0x03A5, 0x0314, 0x0342, 0x0000 },
766  [0x60] = { 0x03C9, 0x0313, 0x0000 },
767  [0x61] = { 0x03C9, 0x0314, 0x0000 },
768  [0x62] = { 0x03C9, 0x0313, 0x0300, 0x0000 },
769  [0x63] = { 0x03C9, 0x0314, 0x0300, 0x0000 },
770  [0x64] = { 0x03C9, 0x0313, 0x0301, 0x0000 },
771  [0x65] = { 0x03C9, 0x0314, 0x0301, 0x0000 },
772  [0x66] = { 0x03C9, 0x0313, 0x0342, 0x0000 },
773  [0x67] = { 0x03C9, 0x0314, 0x0342, 0x0000 },
774  [0x68] = { 0x03A9, 0x0313, 0x0000 },
775  [0x69] = { 0x03A9, 0x0314, 0x0000 },
776  [0x6a] = { 0x03A9, 0x0313, 0x0300, 0x0000 },
777  [0x6b] = { 0x03A9, 0x0314, 0x0300, 0x0000 },
778  [0x6c] = { 0x03A9, 0x0313, 0x0301, 0x0000 },
779  [0x6d] = { 0x03A9, 0x0314, 0x0301, 0x0000 },
780  [0x6e] = { 0x03A9, 0x0313, 0x0342, 0x0000 },
781  [0x6f] = { 0x03A9, 0x0314, 0x0342, 0x0000 },
782  [0x70] = { 0x03B1, 0x0300, 0x0000 },
783  [0x71] = { 0x03B1, 0x0301, 0x0000 },
784  [0x72] = { 0x03B5, 0x0300, 0x0000 },
785  [0x73] = { 0x03B5, 0x0301, 0x0000 },
786  [0x74] = { 0x03B7, 0x0300, 0x0000 },
787  [0x75] = { 0x03B7, 0x0301, 0x0000 },
788  [0x76] = { 0x03B9, 0x0300, 0x0000 },
789  [0x77] = { 0x03B9, 0x0301, 0x0000 },
790  [0x78] = { 0x03BF, 0x0300, 0x0000 },
791  [0x79] = { 0x03BF, 0x0301, 0x0000 },
792  [0x7a] = { 0x03C5, 0x0300, 0x0000 },
793  [0x7b] = { 0x03C5, 0x0301, 0x0000 },
794  [0x7c] = { 0x03C9, 0x0300, 0x0000 },
795  [0x7d] = { 0x03C9, 0x0301, 0x0000 },
796  [0x80] = { 0x03B1, 0x0345, 0x0313, 0x0000 },
797  [0x81] = { 0x03B1, 0x0345, 0x0314, 0x0000 },
798  [0x82] = { 0x03B1, 0x0345, 0x0313, 0x0300, 0x0000 },
799  [0x83] = { 0x03B1, 0x0345, 0x0314, 0x0300, 0x0000 },
800  [0x84] = { 0x03B1, 0x0345, 0x0313, 0x0301, 0x0000 },
801  [0x85] = { 0x03B1, 0x0345, 0x0314, 0x0301, 0x0000 },
802  [0x86] = { 0x03B1, 0x0345, 0x0313, 0x0342, 0x0000 },
803  [0x87] = { 0x03B1, 0x0345, 0x0314, 0x0342, 0x0000 },
804  [0x88] = { 0x0391, 0x0345, 0x0313, 0x0000 },
805  [0x89] = { 0x0391, 0x0345, 0x0314, 0x0000 },
806  [0x8a] = { 0x0391, 0x0345, 0x0313, 0x0300, 0x0000 },
807  [0x8b] = { 0x0391, 0x0345, 0x0314, 0x0300, 0x0000 },
808  [0x8c] = { 0x0391, 0x0345, 0x0313, 0x0301, 0x0000 },
809  [0x8d] = { 0x0391, 0x0345, 0x0314, 0x0301, 0x0000 },
810  [0x8e] = { 0x0391, 0x0345, 0x0313, 0x0342, 0x0000 },
811  [0x8f] = { 0x0391, 0x0345, 0x0314, 0x0342, 0x0000 },
812  [0x90] = { 0x03B7, 0x0345, 0x0313, 0x0000 },
813  [0x91] = { 0x03B7, 0x0345, 0x0314, 0x0000 },
814  [0x92] = { 0x03B7, 0x0345, 0x0313, 0x0300, 0x0000 },
815  [0x93] = { 0x03B7, 0x0345, 0x0314, 0x0300, 0x0000 },
816  [0x94] = { 0x03B7, 0x0345, 0x0313, 0x0301, 0x0000 },
817  [0x95] = { 0x03B7, 0x0345, 0x0314, 0x0301, 0x0000 },
818  [0x96] = { 0x03B7, 0x0345, 0x0313, 0x0342, 0x0000 },
819  [0x97] = { 0x03B7, 0x0345, 0x0314, 0x0342, 0x0000 },
820  [0x98] = { 0x0397, 0x0345, 0x0313, 0x0000 },
821  [0x99] = { 0x0397, 0x0345, 0x0314, 0x0000 },
822  [0x9a] = { 0x0397, 0x0345, 0x0313, 0x0300, 0x0000 },
823  [0x9b] = { 0x0397, 0x0345, 0x0314, 0x0300, 0x0000 },
824  [0x9c] = { 0x0397, 0x0345, 0x0313, 0x0301, 0x0000 },
825  [0x9d] = { 0x0397, 0x0345, 0x0314, 0x0301, 0x0000 },
826  [0x9e] = { 0x0397, 0x0345, 0x0313, 0x0342, 0x0000 },
827  [0x9f] = { 0x0397, 0x0345, 0x0314, 0x0342, 0x0000 },
828  [0xa0] = { 0x03C9, 0x0345, 0x0313, 0x0000 },
829  [0xa1] = { 0x03C9, 0x0345, 0x0314, 0x0000 },
830  [0xa2] = { 0x03C9, 0x0345, 0x0313, 0x0300, 0x0000 },
831  [0xa3] = { 0x03C9, 0x0345, 0x0314, 0x0300, 0x0000 },
832  [0xa4] = { 0x03C9, 0x0345, 0x0313, 0x0301, 0x0000 },
833  [0xa5] = { 0x03C9, 0x0345, 0x0314, 0x0301, 0x0000 },
834  [0xa6] = { 0x03C9, 0x0345, 0x0313, 0x0342, 0x0000 },
835  [0xa7] = { 0x03C9, 0x0345, 0x0314, 0x0342, 0x0000 },
836  [0xa8] = { 0x03A9, 0x0345, 0x0313, 0x0000 },
837  [0xa9] = { 0x03A9, 0x0345, 0x0314, 0x0000 },
838  [0xaa] = { 0x03A9, 0x0345, 0x0313, 0x0300, 0x0000 },
839  [0xab] = { 0x03A9, 0x0345, 0x0314, 0x0300, 0x0000 },
840  [0xac] = { 0x03A9, 0x0345, 0x0313, 0x0301, 0x0000 },
841  [0xad] = { 0x03A9, 0x0345, 0x0314, 0x0301, 0x0000 },
842  [0xae] = { 0x03A9, 0x0345, 0x0313, 0x0342, 0x0000 },
843  [0xaf] = { 0x03A9, 0x0345, 0x0314, 0x0342, 0x0000 },
844  [0xb0] = { 0x03B1, 0x0306, 0x0000 },
845  [0xb1] = { 0x03B1, 0x0304, 0x0000 },
846  [0xb2] = { 0x03B1, 0x0345, 0x0300, 0x0000 },
847  [0xb3] = { 0x03B1, 0x0345, 0x0000 },
848  [0xb4] = { 0x03B1, 0x0345, 0x0301, 0x0000 },
849  [0xb6] = { 0x03B1, 0x0342, 0x0000 },
850  [0xb7] = { 0x03B1, 0x0345, 0x0342, 0x0000 },
851  [0xb8] = { 0x0391, 0x0306, 0x0000 },
852  [0xb9] = { 0x0391, 0x0304, 0x0000 },
853  [0xba] = { 0x0391, 0x0300, 0x0000 },
854  [0xbb] = { 0x0391, 0x0301, 0x0000 },
855  [0xbc] = { 0x0391, 0x0345, 0x0000 },
856  [0xbe] = { 0x03B9, 0x0000 },
857  [0xc1] = { 0x00A8, 0x0342, 0x0000 },
858  [0xc2] = { 0x03B7, 0x0345, 0x0300, 0x0000 },
859  [0xc3] = { 0x03B7, 0x0345, 0x0000 },
860  [0xc4] = { 0x03B7, 0x0345, 0x0301, 0x0000 },
861  [0xc6] = { 0x03B7, 0x0342, 0x0000 },
862  [0xc7] = { 0x03B7, 0x0345, 0x0342, 0x0000 },
863  [0xc8] = { 0x0395, 0x0300, 0x0000 },
864  [0xc9] = { 0x0395, 0x0301, 0x0000 },
865  [0xca] = { 0x0397, 0x0300, 0x0000 },
866  [0xcb] = { 0x0397, 0x0301, 0x0000 },
867  [0xcc] = { 0x0397, 0x0345, 0x0000 },
868  [0xcd] = { 0x1FBF, 0x0300, 0x0000 },
869  [0xce] = { 0x1FBF, 0x0301, 0x0000 },
870  [0xcf] = { 0x1FBF, 0x0342, 0x0000 },
871  [0xd0] = { 0x03B9, 0x0306, 0x0000 },
872  [0xd1] = { 0x03B9, 0x0304, 0x0000 },
873  [0xd2] = { 0x03B9, 0x0308, 0x0300, 0x0000 },
874  [0xd3] = { 0x03B9, 0x0308, 0x0301, 0x0000 },
875  [0xd6] = { 0x03B9, 0x0342, 0x0000 },
876  [0xd7] = { 0x03B9, 0x0308, 0x0342, 0x0000 },
877  [0xd8] = { 0x0399, 0x0306, 0x0000 },
878  [0xd9] = { 0x0399, 0x0304, 0x0000 },
879  [0xda] = { 0x0399, 0x0300, 0x0000 },
880  [0xdb] = { 0x0399, 0x0301, 0x0000 },
881  [0xdd] = { 0x1FFE, 0x0300, 0x0000 },
882  [0xde] = { 0x1FFE, 0x0301, 0x0000 },
883  [0xdf] = { 0x1FFE, 0x0342, 0x0000 },
884  [0xe0] = { 0x03C5, 0x0306, 0x0000 },
885  [0xe1] = { 0x03C5, 0x0304, 0x0000 },
886  [0xe2] = { 0x03C5, 0x0308, 0x0300, 0x0000 },
887  [0xe3] = { 0x03C5, 0x0308, 0x0301, 0x0000 },
888  [0xe4] = { 0x03C1, 0x0313, 0x0000 },
889  [0xe5] = { 0x03C1, 0x0314, 0x0000 },
890  [0xe6] = { 0x03C5, 0x0342, 0x0000 },
891  [0xe7] = { 0x03C5, 0x0308, 0x0342, 0x0000 },
892  [0xe8] = { 0x03A5, 0x0306, 0x0000 },
893  [0xe9] = { 0x03A5, 0x0304, 0x0000 },
894  [0xea] = { 0x03A5, 0x0300, 0x0000 },
895  [0xeb] = { 0x03A5, 0x0301, 0x0000 },
896  [0xec] = { 0x03A1, 0x0314, 0x0000 },
897  [0xed] = { 0x00A8, 0x0300, 0x0000 },
898  [0xee] = { 0x00A8, 0x0301, 0x0000 },
899  [0xef] = { 0x0060, 0x0000 },
900  [0xf2] = { 0x03C9, 0x0345, 0x0300, 0x0000 },
901  [0xf3] = { 0x03C9, 0x0345, 0x0000 },
902  [0xf4] = { 0x03BF, 0x0345, 0x0301, 0x0000 },
903  [0xf6] = { 0x03C9, 0x0342, 0x0000 },
904  [0xf7] = { 0x03C9, 0x0345, 0x0342, 0x0000 },
905  [0xf8] = { 0x039F, 0x0300, 0x0000 },
906  [0xf9] = { 0x039F, 0x0301, 0x0000 },
907  [0xfa] = { 0x03A9, 0x0300, 0x0000 },
908  [0xfb] = { 0x03A9, 0x0301, 0x0000 },
909  [0xfc] = { 0x03A9, 0x0345, 0x0000 },
910  [0xfd] = { 0x00B4, 0x0000 },
911 };
912 
913 static const uint16_t page30[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
914  [0x4c] = { 0x304B, 0x3099, 0x0000 },
915  [0x4e] = { 0x304D, 0x3099, 0x0000 },
916  [0x50] = { 0x304F, 0x3099, 0x0000 },
917  [0x52] = { 0x3051, 0x3099, 0x0000 },
918  [0x54] = { 0x3053, 0x3099, 0x0000 },
919  [0x56] = { 0x3055, 0x3099, 0x0000 },
920  [0x58] = { 0x3057, 0x3099, 0x0000 },
921  [0x5a] = { 0x3059, 0x3099, 0x0000 },
922  [0x5c] = { 0x305B, 0x3099, 0x0000 },
923  [0x5e] = { 0x305D, 0x3099, 0x0000 },
924  [0x60] = { 0x305F, 0x3099, 0x0000 },
925  [0x62] = { 0x3061, 0x3099, 0x0000 },
926  [0x65] = { 0x3064, 0x3099, 0x0000 },
927  [0x67] = { 0x3066, 0x3099, 0x0000 },
928  [0x69] = { 0x3068, 0x3099, 0x0000 },
929  [0x70] = { 0x306F, 0x3099, 0x0000 },
930  [0x71] = { 0x306F, 0x309A, 0x0000 },
931  [0x73] = { 0x3072, 0x3099, 0x0000 },
932  [0x74] = { 0x3072, 0x309A, 0x0000 },
933  [0x76] = { 0x3075, 0x3099, 0x0000 },
934  [0x77] = { 0x3075, 0x309A, 0x0000 },
935  [0x79] = { 0x3078, 0x3099, 0x0000 },
936  [0x7a] = { 0x3078, 0x309A, 0x0000 },
937  [0x7c] = { 0x307B, 0x3099, 0x0000 },
938  [0x7d] = { 0x307B, 0x309A, 0x0000 },
939  [0x94] = { 0x3046, 0x3099, 0x0000 },
940  [0x9e] = { 0x309D, 0x3099, 0x0000 },
941  [0xac] = { 0x30AB, 0x3099, 0x0000 },
942  [0xae] = { 0x30AD, 0x3099, 0x0000 },
943  [0xb0] = { 0x30AF, 0x3099, 0x0000 },
944  [0xb2] = { 0x30B1, 0x3099, 0x0000 },
945  [0xb4] = { 0x30B3, 0x3099, 0x0000 },
946  [0xb6] = { 0x30B5, 0x3099, 0x0000 },
947  [0xb8] = { 0x30B7, 0x3099, 0x0000 },
948  [0xba] = { 0x30B9, 0x3099, 0x0000 },
949  [0xbc] = { 0x30BB, 0x3099, 0x0000 },
950  [0xbe] = { 0x30BD, 0x3099, 0x0000 },
951  [0xc0] = { 0x30BF, 0x3099, 0x0000 },
952  [0xc2] = { 0x30C1, 0x3099, 0x0000 },
953  [0xc5] = { 0x30C4, 0x3099, 0x0000 },
954  [0xc7] = { 0x30C6, 0x3099, 0x0000 },
955  [0xc9] = { 0x30C8, 0x3099, 0x0000 },
956  [0xd0] = { 0x30CF, 0x3099, 0x0000 },
957  [0xd1] = { 0x30CF, 0x309A, 0x0000 },
958  [0xd3] = { 0x30D2, 0x3099, 0x0000 },
959  [0xd4] = { 0x30D2, 0x309A, 0x0000 },
960  [0xd6] = { 0x30D5, 0x3099, 0x0000 },
961  [0xd7] = { 0x30D5, 0x309A, 0x0000 },
962  [0xd9] = { 0x30D8, 0x3099, 0x0000 },
963  [0xda] = { 0x30D8, 0x309A, 0x0000 },
964  [0xdc] = { 0x30DB, 0x3099, 0x0000 },
965  [0xdd] = { 0x30DB, 0x309A, 0x0000 },
966  [0xf4] = { 0x30A6, 0x3099, 0x0000 },
967  [0xf7] = { 0x30EF, 0x3099, 0x0000 },
968  [0xf8] = { 0x30F0, 0x3099, 0x0000 },
969  [0xf9] = { 0x30F1, 0x3099, 0x0000 },
970  [0xfa] = { 0x30F2, 0x3099, 0x0000 },
971  [0xfe] = { 0x30FD, 0x3099, 0x0000 },
972 };
973 
974 static const uint16_t pagefb[256][HFSPLUS_MAX_DECOMPOSE_LEN + 1] = {
975  [0x1f] = { 0x05F2, 0x05B7, 0x0000 },
976  [0x2a] = { 0x05E9, 0x05C1, 0x0000 },
977  [0x2b] = { 0x05E9, 0x05C2, 0x0000 },
978  [0x2c] = { 0x05E9, 0x05BC, 0x05C1, 0x0000 },
979  [0x2d] = { 0x05E9, 0x05BC, 0x05C2, 0x0000 },
980  [0x2e] = { 0x05D0, 0x05B7, 0x0000 },
981  [0x2f] = { 0x05D0, 0x05B8, 0x0000 },
982  [0x30] = { 0x05D0, 0x05BC, 0x0000 },
983  [0x31] = { 0x05D1, 0x05BC, 0x0000 },
984  [0x32] = { 0x05D2, 0x05BC, 0x0000 },
985  [0x33] = { 0x05D3, 0x05BC, 0x0000 },
986  [0x34] = { 0x05D4, 0x05BC, 0x0000 },
987  [0x35] = { 0x05D5, 0x05BC, 0x0000 },
988  [0x36] = { 0x05D6, 0x05BC, 0x0000 },
989  [0x38] = { 0x05D8, 0x05BC, 0x0000 },
990  [0x39] = { 0x05D9, 0x05BC, 0x0000 },
991  [0x3a] = { 0x05DA, 0x05BC, 0x0000 },
992  [0x3b] = { 0x05DB, 0x05BC, 0x0000 },
993  [0x3c] = { 0x05DC, 0x05BC, 0x0000 },
994  [0x3e] = { 0x05DE, 0x05BC, 0x0000 },
995  [0x40] = { 0x05E0, 0x05BC, 0x0000 },
996  [0x41] = { 0x05E1, 0x05BC, 0x0000 },
997  [0x43] = { 0x05E3, 0x05BC, 0x0000 },
998  [0x44] = { 0x05E4, 0x05BC, 0x0000 },
999  [0x46] = { 0x05E6, 0x05BC, 0x0000 },
1000  [0x47] = { 0x05E7, 0x05BC, 0x0000 },
1001  [0x48] = { 0x05E8, 0x05BC, 0x0000 },
1002  [0x49] = { 0x05E9, 0x05BC, 0x0000 },
1003  [0x4a] = { 0x05EA, 0x05BC, 0x0000 },
1004  [0x4b] = { 0x05D5, 0x05B9, 0x0000 },
1005  [0x4c] = { 0x05D1, 0x05BF, 0x0000 },
1006  [0x4d] = { 0x05DB, 0x05BF, 0x0000 },
1007  [0x4e] = { 0x05E4, 0x05BF, 0x0000 },
1008 };
1009 
1011  [0x00] = page00,
1012  [0x01] = page01,
1013  [0x02] = page02,
1014  [0x03] = page03,
1015  [0x04] = page04,
1016  [0x09] = page09,
1017  [0x0a] = page0a,
1018  [0x0b] = page0b,
1019  [0x0c] = page0c,
1020  [0x0d] = page0d,
1021  [0x0e] = page0e,
1022  [0x0f] = page0f,
1023  [0x1e] = page1e,
1024  [0x1f] = page1f,
1025  [0x30] = page30,
1026  [0xfb] = pagefb,
1027 };
1028 
1029 /* ====================================== ts ============================= */
1030 
1031 /* This encodes a matrix of page and character, with a number of
1032  HFSPLUS_MAX_DECOMPOSE_LEN + 1 elements of 16 bit each.
1033  Initially the matrix ist filled with zeros.
1034  1: The first element is the page number.
1035  If it is equal or lower than the previous one, then the matrix is done.
1036  2: The next element is the character number
1037  If it is equal or lower than the previous one, the page is done. Goto 1.
1038  3: The next elements are matrix elements.
1039  If element 0 is encountered, then the character is done. Goto 2.
1040 */
1041 
1042 static const uint16_t decompose_page_data[] = {
1043 
1044  /* page00 */
1045  0x00,
1046  0xc0, 0x0041, 0x0300, 0,
1047  0xc1, 0x0041, 0x0301, 0,
1048  0xc2, 0x0041, 0x0302, 0,
1049  0xc3, 0x0041, 0x0303, 0,
1050  0xc4, 0x0041, 0x0308, 0,
1051  0xc5, 0x0041, 0x030A, 0,
1052  0xc7, 0x0043, 0x0327, 0,
1053  0xc8, 0x0045, 0x0300, 0,
1054  0xc9, 0x0045, 0x0301, 0,
1055  0xca, 0x0045, 0x0302, 0,
1056  0xcb, 0x0045, 0x0308, 0,
1057  0xcc, 0x0049, 0x0300, 0,
1058  0xcd, 0x0049, 0x0301, 0,
1059  0xce, 0x0049, 0x0302, 0,
1060  0xcf, 0x0049, 0x0308, 0,
1061  0xd1, 0x004E, 0x0303, 0,
1062  0xd2, 0x004F, 0x0300, 0,
1063  0xd3, 0x004F, 0x0301, 0,
1064  0xd4, 0x004F, 0x0302, 0,
1065  0xd5, 0x004F, 0x0303, 0,
1066  0xd6, 0x004F, 0x0308, 0,
1067  0xd9, 0x0055, 0x0300, 0,
1068  0xda, 0x0055, 0x0301, 0,
1069  0xdb, 0x0055, 0x0302, 0,
1070  0xdc, 0x0055, 0x0308, 0,
1071  0xdd, 0x0059, 0x0301, 0,
1072  0xe0, 0x0061, 0x0300, 0,
1073  0xe1, 0x0061, 0x0301, 0,
1074  0xe2, 0x0061, 0x0302, 0,
1075  0xe3, 0x0061, 0x0303, 0,
1076  0xe4, 0x0061, 0x0308, 0,
1077  0xe5, 0x0061, 0x030A, 0,
1078  0xe7, 0x0063, 0x0327, 0,
1079  0xe8, 0x0065, 0x0300, 0,
1080  0xe9, 0x0065, 0x0301, 0,
1081  0xea, 0x0065, 0x0302, 0,
1082  0xeb, 0x0065, 0x0308, 0,
1083  0xec, 0x0069, 0x0300, 0,
1084  0xed, 0x0069, 0x0301, 0,
1085  0xee, 0x0069, 0x0302, 0,
1086  0xef, 0x0069, 0x0308, 0,
1087  0xf1, 0x006E, 0x0303, 0,
1088  0xf2, 0x006F, 0x0300, 0,
1089  0xf3, 0x006F, 0x0301, 0,
1090  0xf4, 0x006F, 0x0302, 0,
1091  0xf5, 0x006F, 0x0303, 0,
1092  0xf6, 0x006F, 0x0308, 0,
1093  0xf9, 0x0075, 0x0300, 0,
1094  0xfa, 0x0075, 0x0301, 0,
1095  0xfb, 0x0075, 0x0302, 0,
1096  0xfc, 0x0075, 0x0308, 0,
1097  0xfd, 0x0079, 0x0301, 0,
1098  0xff, 0x0079, 0x0308, 0,
1099  0x00,
1100 
1101  /* page01 */
1102  0x01,
1103  0x00, 0x0041, 0x0304, 0,
1104  0x01, 0x0061, 0x0304, 0,
1105  0x02, 0x0041, 0x0306, 0,
1106  0x03, 0x0061, 0x0306, 0,
1107  0x04, 0x0041, 0x0328, 0,
1108  0x05, 0x0061, 0x0328, 0,
1109  0x06, 0x0043, 0x0301, 0,
1110  0x07, 0x0063, 0x0301, 0,
1111  0x08, 0x0043, 0x0302, 0,
1112  0x09, 0x0063, 0x0302, 0,
1113  0x0a, 0x0043, 0x0307, 0,
1114  0x0b, 0x0063, 0x0307, 0,
1115  0x0c, 0x0043, 0x030C, 0,
1116  0x0d, 0x0063, 0x030C, 0,
1117  0x0e, 0x0044, 0x030C, 0,
1118  0x0f, 0x0064, 0x030C, 0,
1119  0x12, 0x0045, 0x0304, 0,
1120  0x13, 0x0065, 0x0304, 0,
1121  0x14, 0x0045, 0x0306, 0,
1122  0x15, 0x0065, 0x0306, 0,
1123  0x16, 0x0045, 0x0307, 0,
1124  0x17, 0x0065, 0x0307, 0,
1125  0x18, 0x0045, 0x0328, 0,
1126  0x19, 0x0065, 0x0328, 0,
1127  0x1a, 0x0045, 0x030C, 0,
1128  0x1b, 0x0065, 0x030C, 0,
1129  0x1c, 0x0047, 0x0302, 0,
1130  0x1d, 0x0067, 0x0302, 0,
1131  0x1e, 0x0047, 0x0306, 0,
1132  0x1f, 0x0067, 0x0306, 0,
1133  0x20, 0x0047, 0x0307, 0,
1134  0x21, 0x0067, 0x0307, 0,
1135  0x22, 0x0047, 0x0327, 0,
1136  0x23, 0x0067, 0x0327, 0,
1137  0x24, 0x0048, 0x0302, 0,
1138  0x25, 0x0068, 0x0302, 0,
1139  0x28, 0x0049, 0x0303, 0,
1140  0x29, 0x0069, 0x0303, 0,
1141  0x2a, 0x0049, 0x0304, 0,
1142  0x2b, 0x0069, 0x0304, 0,
1143  0x2c, 0x0049, 0x0306, 0,
1144  0x2d, 0x0069, 0x0306, 0,
1145  0x2e, 0x0049, 0x0328, 0,
1146  0x2f, 0x0069, 0x0328, 0,
1147  0x30, 0x0049, 0x0307, 0,
1148  0x34, 0x004A, 0x0302, 0,
1149  0x35, 0x006A, 0x0302, 0,
1150  0x36, 0x004B, 0x0327, 0,
1151  0x37, 0x006B, 0x0327, 0,
1152  0x39, 0x004C, 0x0301, 0,
1153  0x3a, 0x006C, 0x0301, 0,
1154  0x3b, 0x004C, 0x0327, 0,
1155  0x3c, 0x006C, 0x0327, 0,
1156  0x3d, 0x004C, 0x030C, 0,
1157  0x3e, 0x006C, 0x030C, 0,
1158  0x43, 0x004E, 0x0301, 0,
1159  0x44, 0x006E, 0x0301, 0,
1160  0x45, 0x004E, 0x0327, 0,
1161  0x46, 0x006E, 0x0327, 0,
1162  0x47, 0x004E, 0x030C, 0,
1163  0x48, 0x006E, 0x030C, 0,
1164  0x4c, 0x004F, 0x0304, 0,
1165  0x4d, 0x006F, 0x0304, 0,
1166  0x4e, 0x004F, 0x0306, 0,
1167  0x4f, 0x006F, 0x0306, 0,
1168  0x50, 0x004F, 0x030B, 0,
1169  0x51, 0x006F, 0x030B, 0,
1170  0x54, 0x0052, 0x0301, 0,
1171  0x55, 0x0072, 0x0301, 0,
1172  0x56, 0x0052, 0x0327, 0,
1173  0x57, 0x0072, 0x0327, 0,
1174  0x58, 0x0052, 0x030C, 0,
1175  0x59, 0x0072, 0x030C, 0,
1176  0x5a, 0x0053, 0x0301, 0,
1177  0x5b, 0x0073, 0x0301, 0,
1178  0x5c, 0x0053, 0x0302, 0,
1179  0x5d, 0x0073, 0x0302, 0,
1180  0x5e, 0x0053, 0x0327, 0,
1181  0x5f, 0x0073, 0x0327, 0,
1182  0x60, 0x0053, 0x030C, 0,
1183  0x61, 0x0073, 0x030C, 0,
1184  0x62, 0x0054, 0x0327, 0,
1185  0x63, 0x0074, 0x0327, 0,
1186  0x64, 0x0054, 0x030C, 0,
1187  0x65, 0x0074, 0x030C, 0,
1188  0x68, 0x0055, 0x0303, 0,
1189  0x69, 0x0075, 0x0303, 0,
1190  0x6a, 0x0055, 0x0304, 0,
1191  0x6b, 0x0075, 0x0304, 0,
1192  0x6c, 0x0055, 0x0306, 0,
1193  0x6d, 0x0075, 0x0306, 0,
1194  0x6e, 0x0055, 0x030A, 0,
1195  0x6f, 0x0075, 0x030A, 0,
1196  0x70, 0x0055, 0x030B, 0,
1197  0x71, 0x0075, 0x030B, 0,
1198  0x72, 0x0055, 0x0328, 0,
1199  0x73, 0x0075, 0x0328, 0,
1200  0x74, 0x0057, 0x0302, 0,
1201  0x75, 0x0077, 0x0302, 0,
1202  0x76, 0x0059, 0x0302, 0,
1203  0x77, 0x0079, 0x0302, 0,
1204  0x78, 0x0059, 0x0308, 0,
1205  0x79, 0x005A, 0x0301, 0,
1206  0x7a, 0x007A, 0x0301, 0,
1207  0x7b, 0x005A, 0x0307, 0,
1208  0x7c, 0x007A, 0x0307, 0,
1209  0x7d, 0x005A, 0x030C, 0,
1210  0x7e, 0x007A, 0x030C, 0,
1211  0xa0, 0x004F, 0x031B, 0,
1212  0xa1, 0x006F, 0x031B, 0,
1213  0xaf, 0x0055, 0x031B, 0,
1214  0xb0, 0x0075, 0x031B, 0,
1215  0xcd, 0x0041, 0x030C, 0,
1216  0xce, 0x0061, 0x030C, 0,
1217  0xcf, 0x0049, 0x030C, 0,
1218  0xd0, 0x0069, 0x030C, 0,
1219  0xd1, 0x004F, 0x030C, 0,
1220  0xd2, 0x006F, 0x030C, 0,
1221  0xd3, 0x0055, 0x030C, 0,
1222  0xd4, 0x0075, 0x030C, 0,
1223  0xd5, 0x0055, 0x0308, 0x0304, 0,
1224  0xd6, 0x0075, 0x0308, 0x0304, 0,
1225  0xd7, 0x0055, 0x0308, 0x0301, 0,
1226  0xd8, 0x0075, 0x0308, 0x0301, 0,
1227  0xd9, 0x0055, 0x0308, 0x030C, 0,
1228  0xda, 0x0075, 0x0308, 0x030C, 0,
1229  0xdb, 0x0055, 0x0308, 0x0300, 0,
1230  0xdc, 0x0075, 0x0308, 0x0300, 0,
1231  0xde, 0x0041, 0x0308, 0x0304, 0,
1232  0xdf, 0x0061, 0x0308, 0x0304, 0,
1233  0xe0, 0x0041, 0x0307, 0x0304, 0,
1234  0xe1, 0x0061, 0x0307, 0x0304, 0,
1235  0xe2, 0x00C6, 0x0304, 0,
1236  0xe3, 0x00E6, 0x0304, 0,
1237  0xe6, 0x0047, 0x030C, 0,
1238  0xe7, 0x0067, 0x030C, 0,
1239  0xe8, 0x004B, 0x030C, 0,
1240  0xe9, 0x006B, 0x030C, 0,
1241  0xea, 0x004F, 0x0328, 0,
1242  0xeb, 0x006F, 0x0328, 0,
1243  0xec, 0x004F, 0x0328, 0x0304, 0,
1244  0xed, 0x006F, 0x0328, 0x0304, 0,
1245  0xee, 0x01B7, 0x030C, 0,
1246  0xef, 0x0292, 0x030C, 0,
1247  0xf0, 0x006A, 0x030C, 0,
1248  0xf4, 0x0047, 0x0301, 0,
1249  0xf5, 0x0067, 0x0301, 0,
1250  0xfa, 0x0041, 0x030A, 0x0301, 0,
1251  0xfb, 0x0061, 0x030A, 0x0301, 0,
1252  0xfc, 0x00C6, 0x0301, 0,
1253  0xfd, 0x00E6, 0x0301, 0,
1254  0xfe, 0x00D8, 0x0301, 0,
1255  0xff, 0x00F8, 0x0301, 0,
1256  0x00,
1257 
1258  /* page02 */
1259  0x02,
1260  0x00, 0x0041, 0x030F, 0,
1261  0x01, 0x0061, 0x030F, 0,
1262  0x02, 0x0041, 0x0311, 0,
1263  0x03, 0x0061, 0x0311, 0,
1264  0x04, 0x0045, 0x030F, 0,
1265  0x05, 0x0065, 0x030F, 0,
1266  0x06, 0x0045, 0x0311, 0,
1267  0x07, 0x0065, 0x0311, 0,
1268  0x08, 0x0049, 0x030F, 0,
1269  0x09, 0x0069, 0x030F, 0,
1270  0x0a, 0x0049, 0x0311, 0,
1271  0x0b, 0x0069, 0x0311, 0,
1272  0x0c, 0x004F, 0x030F, 0,
1273  0x0d, 0x006F, 0x030F, 0,
1274  0x0e, 0x004F, 0x0311, 0,
1275  0x0f, 0x006F, 0x0311, 0,
1276  0x10, 0x0052, 0x030F, 0,
1277  0x11, 0x0072, 0x030F, 0,
1278  0x12, 0x0052, 0x0311, 0,
1279  0x13, 0x0072, 0x0311, 0,
1280  0x14, 0x0055, 0x030F, 0,
1281  0x15, 0x0075, 0x030F, 0,
1282  0x16, 0x0055, 0x0311, 0,
1283  0x17, 0x0075, 0x0311, 0,
1284  0x00,
1285 
1286  /* page03 */
1287  0x03,
1288  0x10, 0x0306, 0x0307, 0,
1289  0x40, 0x0300, 0,
1290  0x41, 0x0301, 0,
1291  0x43, 0x0313, 0,
1292  0x44, 0x0308, 0x030D, 0,
1293  0x74, 0x02B9, 0,
1294  0x7e, 0x003B, 0,
1295  0x85, 0x00A8, 0x030D, 0,
1296  0x86, 0x0391, 0x030D, 0,
1297  0x87, 0x00B7, 0,
1298  0x88, 0x0395, 0x030D, 0,
1299  0x89, 0x0397, 0x030D, 0,
1300  0x8a, 0x0399, 0x030D, 0,
1301  0x8c, 0x039F, 0x030D, 0,
1302  0x8e, 0x03A5, 0x030D, 0,
1303  0x8f, 0x03A9, 0x030D, 0,
1304  0x90, 0x03B9, 0x0308, 0x030D, 0,
1305  0xaa, 0x0399, 0x0308, 0,
1306  0xab, 0x03A5, 0x0308, 0,
1307  0xac, 0x03B1, 0x030D, 0,
1308  0xad, 0x03B5, 0x030D, 0,
1309  0xae, 0x03B7, 0x030D, 0,
1310  0xaf, 0x03B9, 0x030D, 0,
1311  0xb0, 0x03C5, 0x0308, 0x030D, 0,
1312  0xca, 0x03B9, 0x0308, 0,
1313  0xcb, 0x03C5, 0x0308, 0,
1314  0xcc, 0x03BF, 0x030D, 0,
1315  0xcd, 0x03C5, 0x030D, 0,
1316  0xce, 0x03C9, 0x030D, 0,
1317  0xd3, 0x03D2, 0x030D, 0,
1318  0xd4, 0x03D2, 0x0308, 0,
1319  0x00,
1320 
1321  /* page04 */
1322  0x04,
1323  0x01, 0x0415, 0x0308, 0,
1324  0x03, 0x0413, 0x0301, 0,
1325  0x07, 0x0406, 0x0308, 0,
1326  0x0c, 0x041A, 0x0301, 0,
1327  0x0e, 0x0423, 0x0306, 0,
1328  0x19, 0x0418, 0x0306, 0,
1329  0x39, 0x0438, 0x0306, 0,
1330  0x51, 0x0435, 0x0308, 0,
1331  0x53, 0x0433, 0x0301, 0,
1332  0x57, 0x0456, 0x0308, 0,
1333  0x5c, 0x043A, 0x0301, 0,
1334  0x5e, 0x0443, 0x0306, 0,
1335  0x76, 0x0474, 0x030F, 0,
1336  0x77, 0x0475, 0x030F, 0,
1337  0xc1, 0x0416, 0x0306, 0,
1338  0xc2, 0x0436, 0x0306, 0,
1339  0xd0, 0x0410, 0x0306, 0,
1340  0xd1, 0x0430, 0x0306, 0,
1341  0xd2, 0x0410, 0x0308, 0,
1342  0xd3, 0x0430, 0x0308, 0,
1343  0xd4, 0x00C6, 0,
1344  0xd5, 0x00E6, 0,
1345  0xd6, 0x0415, 0x0306, 0,
1346  0xd7, 0x0435, 0x0306, 0,
1347  0xd8, 0x018F, 0,
1348  0xd9, 0x0259, 0,
1349  0xda, 0x018F, 0x0308, 0,
1350  0xdb, 0x0259, 0x0308, 0,
1351  0xdc, 0x0416, 0x0308, 0,
1352  0xdd, 0x0436, 0x0308, 0,
1353  0xde, 0x0417, 0x0308, 0,
1354  0xdf, 0x0437, 0x0308, 0,
1355  0xe0, 0x01B7, 0,
1356  0xe1, 0x0292, 0,
1357  0xe2, 0x0418, 0x0304, 0,
1358  0xe3, 0x0438, 0x0304, 0,
1359  0xe4, 0x0418, 0x0308, 0,
1360  0xe5, 0x0438, 0x0308, 0,
1361  0xe6, 0x041E, 0x0308, 0,
1362  0xe7, 0x043E, 0x0308, 0,
1363  0xe8, 0x019F, 0,
1364  0xe9, 0x0275, 0,
1365  0xea, 0x019F, 0x0308, 0,
1366  0xeb, 0x0275, 0x0308, 0,
1367  0xee, 0x0423, 0x0304, 0,
1368  0xef, 0x0443, 0x0304, 0,
1369  0xf0, 0x0423, 0x0308, 0,
1370  0xf1, 0x0443, 0x0308, 0,
1371  0xf2, 0x0423, 0x030B, 0,
1372  0xf3, 0x0443, 0x030B, 0,
1373  0xf4, 0x0427, 0x0308, 0,
1374  0xf5, 0x0447, 0x0308, 0,
1375  0xf8, 0x042B, 0x0308, 0,
1376  0xf9, 0x044B, 0x0308, 0,
1377  0x00,
1378 
1379  /* page09 */
1380  0x09,
1381  0x29, 0x0928, 0x093C, 0,
1382  0x31, 0x0930, 0x093C, 0,
1383  0x34, 0x0933, 0x093C, 0,
1384  0x58, 0x0915, 0x093C, 0,
1385  0x59, 0x0916, 0x093C, 0,
1386  0x5a, 0x0917, 0x093C, 0,
1387  0x5b, 0x091C, 0x093C, 0,
1388  0x5c, 0x0921, 0x093C, 0,
1389  0x5d, 0x0922, 0x093C, 0,
1390  0x5e, 0x092B, 0x093C, 0,
1391  0x5f, 0x092F, 0x093C, 0,
1392  0xb0, 0x09AC, 0x09BC, 0,
1393  0xcb, 0x09C7, 0x09BE, 0,
1394  0xcc, 0x09C7, 0x09D7, 0,
1395  0xdc, 0x09A1, 0x09BC, 0,
1396  0xdd, 0x09A2, 0x09BC, 0,
1397  0xdf, 0x09AF, 0x09BC, 0,
1398  0x00,
1399 
1400  /* page0a */
1401  0x0a,
1402  0x59, 0x0A16, 0x0A3C, 0,
1403  0x5a, 0x0A17, 0x0A3C, 0,
1404  0x5b, 0x0A1C, 0x0A3C, 0,
1405  0x5c, 0x0A21, 0x0A3C, 0,
1406  0x5e, 0x0A2B, 0x0A3C, 0,
1407  0x00,
1408 
1409  /* page0b */
1410  0x0b,
1411  0x48, 0x0B47, 0x0B56, 0,
1412  0x4b, 0x0B47, 0x0B3E, 0,
1413  0x4c, 0x0B47, 0x0B57, 0,
1414  0x5c, 0x0B21, 0x0B3C, 0,
1415  0x5d, 0x0B22, 0x0B3C, 0,
1416  0x5f, 0x0B2F, 0x0B3C, 0,
1417  0x94, 0x0B92, 0x0BD7, 0,
1418  0xca, 0x0BC6, 0x0BBE, 0,
1419  0xcb, 0x0BC7, 0x0BBE, 0,
1420  0xcc, 0x0BC6, 0x0BD7, 0,
1421  0x00,
1422 
1423  /* page0c */
1424  0x0c,
1425  0x48, 0x0C46, 0x0C56, 0,
1426  0xc0, 0x0CBF, 0x0CD5, 0,
1427  0xc7, 0x0CC6, 0x0CD5, 0,
1428  0xc8, 0x0CC6, 0x0CD6, 0,
1429  0xca, 0x0CC6, 0x0CC2, 0,
1430  0xcb, 0x0CC6, 0x0CC2, 0x0CD5, 0,
1431  0x00,
1432 
1433  /* page0d */
1434  0x0d,
1435  0x4a, 0x0D46, 0x0D3E, 0,
1436  0x4b, 0x0D47, 0x0D3E, 0,
1437  0x4c, 0x0D46, 0x0D57, 0,
1438  0x00,
1439 
1440  /* page0e */
1441  0x0e,
1442  0x33, 0x0E4D, 0x0E32, 0,
1443  0xb3, 0x0ECD, 0x0EB2, 0,
1444  0x00,
1445 
1446  /* page0f */
1447  0x0f,
1448  0x43, 0x0F42, 0x0FB7, 0,
1449  0x4d, 0x0F4C, 0x0FB7, 0,
1450  0x52, 0x0F51, 0x0FB7, 0,
1451  0x57, 0x0F56, 0x0FB7, 0,
1452  0x5c, 0x0F5B, 0x0FB7, 0,
1453  0x69, 0x0F40, 0x0FB5, 0,
1454  0x73, 0x0F72, 0x0F71, 0,
1455  0x75, 0x0F74, 0x0F71, 0,
1456  0x76, 0x0FB2, 0x0F80, 0,
1457  0x77, 0x0FB2, 0x0F80, 0x0F71, 0,
1458  0x78, 0x0FB3, 0x0F80, 0,
1459  0x79, 0x0FB3, 0x0F80, 0x0F71, 0,
1460  0x81, 0x0F80, 0x0F71, 0,
1461  0x93, 0x0F92, 0x0FB7, 0,
1462  0x9d, 0x0F9C, 0x0FB7, 0,
1463  0xa2, 0x0FA1, 0x0FB7, 0,
1464  0xa7, 0x0FA6, 0x0FB7, 0,
1465  0xac, 0x0FAB, 0x0FB7, 0,
1466  0xb9, 0x0F90, 0x0FB5, 0,
1467  0x00,
1468 
1469  /* page1e */
1470  0x1e,
1471  0x00, 0x0041, 0x0325, 0,
1472  0x01, 0x0061, 0x0325, 0,
1473  0x02, 0x0042, 0x0307, 0,
1474  0x03, 0x0062, 0x0307, 0,
1475  0x04, 0x0042, 0x0323, 0,
1476  0x05, 0x0062, 0x0323, 0,
1477  0x06, 0x0042, 0x0331, 0,
1478  0x07, 0x0062, 0x0331, 0,
1479  0x08, 0x0043, 0x0327, 0x0301, 0,
1480  0x09, 0x0063, 0x0327, 0x0301, 0,
1481  0x0a, 0x0044, 0x0307, 0,
1482  0x0b, 0x0064, 0x0307, 0,
1483  0x0c, 0x0044, 0x0323, 0,
1484  0x0d, 0x0064, 0x0323, 0,
1485  0x0e, 0x0044, 0x0331, 0,
1486  0x0f, 0x0064, 0x0331, 0,
1487  0x10, 0x0044, 0x0327, 0,
1488  0x11, 0x0064, 0x0327, 0,
1489  0x12, 0x0044, 0x032D, 0,
1490  0x13, 0x0064, 0x032D, 0,
1491  0x14, 0x0045, 0x0304, 0x0300, 0,
1492  0x15, 0x0065, 0x0304, 0x0300, 0,
1493  0x16, 0x0045, 0x0304, 0x0301, 0,
1494  0x17, 0x0065, 0x0304, 0x0301, 0,
1495  0x18, 0x0045, 0x032D, 0,
1496  0x19, 0x0065, 0x032D, 0,
1497  0x1a, 0x0045, 0x0330, 0,
1498  0x1b, 0x0065, 0x0330, 0,
1499  0x1c, 0x0045, 0x0327, 0x0306, 0,
1500  0x1d, 0x0065, 0x0327, 0x0306, 0,
1501  0x1e, 0x0046, 0x0307, 0,
1502  0x1f, 0x0066, 0x0307, 0,
1503  0x20, 0x0047, 0x0304, 0,
1504  0x21, 0x0067, 0x0304, 0,
1505  0x22, 0x0048, 0x0307, 0,
1506  0x23, 0x0068, 0x0307, 0,
1507  0x24, 0x0048, 0x0323, 0,
1508  0x25, 0x0068, 0x0323, 0,
1509  0x26, 0x0048, 0x0308, 0,
1510  0x27, 0x0068, 0x0308, 0,
1511  0x28, 0x0048, 0x0327, 0,
1512  0x29, 0x0068, 0x0327, 0,
1513  0x2a, 0x0048, 0x032E, 0,
1514  0x2b, 0x0068, 0x032E, 0,
1515  0x2c, 0x0049, 0x0330, 0,
1516  0x2d, 0x0069, 0x0330, 0,
1517  0x2e, 0x0049, 0x0308, 0x0301, 0,
1518  0x2f, 0x0069, 0x0308, 0x0301, 0,
1519  0x30, 0x004B, 0x0301, 0,
1520  0x31, 0x006B, 0x0301, 0,
1521  0x32, 0x004B, 0x0323, 0,
1522  0x33, 0x006B, 0x0323, 0,
1523  0x34, 0x004B, 0x0331, 0,
1524  0x35, 0x006B, 0x0331, 0,
1525  0x36, 0x004C, 0x0323, 0,
1526  0x37, 0x006C, 0x0323, 0,
1527  0x38, 0x004C, 0x0323, 0x0304, 0,
1528  0x39, 0x006C, 0x0323, 0x0304, 0,
1529  0x3a, 0x004C, 0x0331, 0,
1530  0x3b, 0x006C, 0x0331, 0,
1531  0x3c, 0x004C, 0x032D, 0,
1532  0x3d, 0x006C, 0x032D, 0,
1533  0x3e, 0x004D, 0x0301, 0,
1534  0x3f, 0x006D, 0x0301, 0,
1535  0x40, 0x004D, 0x0307, 0,
1536  0x41, 0x006D, 0x0307, 0,
1537  0x42, 0x004D, 0x0323, 0,
1538  0x43, 0x006D, 0x0323, 0,
1539  0x44, 0x004E, 0x0307, 0,
1540  0x45, 0x006E, 0x0307, 0,
1541  0x46, 0x004E, 0x0323, 0,
1542  0x47, 0x006E, 0x0323, 0,
1543  0x48, 0x004E, 0x0331, 0,
1544  0x49, 0x006E, 0x0331, 0,
1545  0x4a, 0x004E, 0x032D, 0,
1546  0x4b, 0x006E, 0x032D, 0,
1547  0x4c, 0x004F, 0x0303, 0x0301, 0,
1548  0x4d, 0x006F, 0x0303, 0x0301, 0,
1549  0x4e, 0x004F, 0x0303, 0x0308, 0,
1550  0x4f, 0x006F, 0x0303, 0x0308, 0,
1551  0x50, 0x004F, 0x0304, 0x0300, 0,
1552  0x51, 0x006F, 0x0304, 0x0300, 0,
1553  0x52, 0x004F, 0x0304, 0x0301, 0,
1554  0x53, 0x006F, 0x0304, 0x0301, 0,
1555  0x54, 0x0050, 0x0301, 0,
1556  0x55, 0x0070, 0x0301, 0,
1557  0x56, 0x0050, 0x0307, 0,
1558  0x57, 0x0070, 0x0307, 0,
1559  0x58, 0x0052, 0x0307, 0,
1560  0x59, 0x0072, 0x0307, 0,
1561  0x5a, 0x0052, 0x0323, 0,
1562  0x5b, 0x0072, 0x0323, 0,
1563  0x5c, 0x0052, 0x0323, 0x0304, 0,
1564  0x5d, 0x0072, 0x0323, 0x0304, 0,
1565  0x5e, 0x0052, 0x0331, 0,
1566  0x5f, 0x0072, 0x0331, 0,
1567  0x60, 0x0053, 0x0307, 0,
1568  0x61, 0x0073, 0x0307, 0,
1569  0x62, 0x0053, 0x0323, 0,
1570  0x63, 0x0073, 0x0323, 0,
1571  0x64, 0x0053, 0x0301, 0x0307, 0,
1572  0x65, 0x0073, 0x0301, 0x0307, 0,
1573  0x66, 0x0053, 0x030C, 0x0307, 0,
1574  0x67, 0x0073, 0x030C, 0x0307, 0,
1575  0x68, 0x0053, 0x0323, 0x0307, 0,
1576  0x69, 0x0073, 0x0323, 0x0307, 0,
1577  0x6a, 0x0054, 0x0307, 0,
1578  0x6b, 0x0074, 0x0307, 0,
1579  0x6c, 0x0054, 0x0323, 0,
1580  0x6d, 0x0074, 0x0323, 0,
1581  0x6e, 0x0054, 0x0331, 0,
1582  0x6f, 0x0074, 0x0331, 0,
1583  0x70, 0x0054, 0x032D, 0,
1584  0x71, 0x0074, 0x032D, 0,
1585  0x72, 0x0055, 0x0324, 0,
1586  0x73, 0x0075, 0x0324, 0,
1587  0x74, 0x0055, 0x0330, 0,
1588  0x75, 0x0075, 0x0330, 0,
1589  0x76, 0x0055, 0x032D, 0,
1590  0x77, 0x0075, 0x032D, 0,
1591  0x78, 0x0055, 0x0303, 0x0301, 0,
1592  0x79, 0x0075, 0x0303, 0x0301, 0,
1593  0x7a, 0x0055, 0x0304, 0x0308, 0,
1594  0x7b, 0x0075, 0x0304, 0x0308, 0,
1595  0x7c, 0x0056, 0x0303, 0,
1596  0x7d, 0x0076, 0x0303, 0,
1597  0x7e, 0x0056, 0x0323, 0,
1598  0x7f, 0x0076, 0x0323, 0,
1599  0x80, 0x0057, 0x0300, 0,
1600  0x81, 0x0077, 0x0300, 0,
1601  0x82, 0x0057, 0x0301, 0,
1602  0x83, 0x0077, 0x0301, 0,
1603  0x84, 0x0057, 0x0308, 0,
1604  0x85, 0x0077, 0x0308, 0,
1605  0x86, 0x0057, 0x0307, 0,
1606  0x87, 0x0077, 0x0307, 0,
1607  0x88, 0x0057, 0x0323, 0,
1608  0x89, 0x0077, 0x0323, 0,
1609  0x8a, 0x0058, 0x0307, 0,
1610  0x8b, 0x0078, 0x0307, 0,
1611  0x8c, 0x0058, 0x0308, 0,
1612  0x8d, 0x0078, 0x0308, 0,
1613  0x8e, 0x0059, 0x0307, 0,
1614  0x8f, 0x0079, 0x0307, 0,
1615  0x90, 0x005A, 0x0302, 0,
1616  0x91, 0x007A, 0x0302, 0,
1617  0x92, 0x005A, 0x0323, 0,
1618  0x93, 0x007A, 0x0323, 0,
1619  0x94, 0x005A, 0x0331, 0,
1620  0x95, 0x007A, 0x0331, 0,
1621  0x96, 0x0068, 0x0331, 0,
1622  0x97, 0x0074, 0x0308, 0,
1623  0x98, 0x0077, 0x030A, 0,
1624  0x99, 0x0079, 0x030A, 0,
1625  0x9b, 0x017F, 0x0307, 0,
1626  0xa0, 0x0041, 0x0323, 0,
1627  0xa1, 0x0061, 0x0323, 0,
1628  0xa2, 0x0041, 0x0309, 0,
1629  0xa3, 0x0061, 0x0309, 0,
1630  0xa4, 0x0041, 0x0302, 0x0301, 0,
1631  0xa5, 0x0061, 0x0302, 0x0301, 0,
1632  0xa6, 0x0041, 0x0302, 0x0300, 0,
1633  0xa7, 0x0061, 0x0302, 0x0300, 0,
1634  0xa8, 0x0041, 0x0302, 0x0309, 0,
1635  0xa9, 0x0061, 0x0302, 0x0309, 0,
1636  0xaa, 0x0041, 0x0302, 0x0303, 0,
1637  0xab, 0x0061, 0x0302, 0x0303, 0,
1638  0xac, 0x0041, 0x0323, 0x0302, 0,
1639  0xad, 0x0061, 0x0323, 0x0302, 0,
1640  0xae, 0x0041, 0x0306, 0x0301, 0,
1641  0xaf, 0x0061, 0x0306, 0x0301, 0,
1642  0xb0, 0x0041, 0x0306, 0x0300, 0,
1643  0xb1, 0x0061, 0x0306, 0x0300, 0,
1644  0xb2, 0x0041, 0x0306, 0x0309, 0,
1645  0xb3, 0x0061, 0x0306, 0x0309, 0,
1646  0xb4, 0x0041, 0x0306, 0x0303, 0,
1647  0xb5, 0x0061, 0x0306, 0x0303, 0,
1648  0xb6, 0x0041, 0x0323, 0x0306, 0,
1649  0xb7, 0x0061, 0x0323, 0x0306, 0,
1650  0xb8, 0x0045, 0x0323, 0,
1651  0xb9, 0x0065, 0x0323, 0,
1652  0xba, 0x0045, 0x0309, 0,
1653  0xbb, 0x0065, 0x0309, 0,
1654  0xbc, 0x0045, 0x0303, 0,
1655  0xbd, 0x0065, 0x0303, 0,
1656  0xbe, 0x0045, 0x0302, 0x0301, 0,
1657  0xbf, 0x0065, 0x0302, 0x0301, 0,
1658  0xc0, 0x0045, 0x0302, 0x0300, 0,
1659  0xc1, 0x0065, 0x0302, 0x0300, 0,
1660  0xc2, 0x0045, 0x0302, 0x0309, 0,
1661  0xc3, 0x0065, 0x0302, 0x0309, 0,
1662  0xc4, 0x0045, 0x0302, 0x0303, 0,
1663  0xc5, 0x0065, 0x0302, 0x0303, 0,
1664  0xc6, 0x0045, 0x0323, 0x0302, 0,
1665  0xc7, 0x0065, 0x0323, 0x0302, 0,
1666  0xc8, 0x0049, 0x0309, 0,
1667  0xc9, 0x0069, 0x0309, 0,
1668  0xca, 0x0049, 0x0323, 0,
1669  0xcb, 0x0069, 0x0323, 0,
1670  0xcc, 0x004F, 0x0323, 0,
1671  0xcd, 0x006F, 0x0323, 0,
1672  0xce, 0x004F, 0x0309, 0,
1673  0xcf, 0x006F, 0x0309, 0,
1674  0xd0, 0x004F, 0x0302, 0x0301, 0,
1675  0xd1, 0x006F, 0x0302, 0x0301, 0,
1676  0xd2, 0x004F, 0x0302, 0x0300, 0,
1677  0xd3, 0x006F, 0x0302, 0x0300, 0,
1678  0xd4, 0x004F, 0x0302, 0x0309, 0,
1679  0xd5, 0x006F, 0x0302, 0x0309, 0,
1680  0xd6, 0x004F, 0x0302, 0x0303, 0,
1681  0xd7, 0x006F, 0x0302, 0x0303, 0,
1682  0xd8, 0x004F, 0x0323, 0x0302, 0,
1683  0xd9, 0x006F, 0x0323, 0x0302, 0,
1684  0xda, 0x004F, 0x031B, 0x0301, 0,
1685  0xdb, 0x006F, 0x031B, 0x0301, 0,
1686  0xdc, 0x004F, 0x031B, 0x0300, 0,
1687  0xdd, 0x006F, 0x031B, 0x0300, 0,
1688  0xde, 0x004F, 0x031B, 0x0309, 0,
1689  0xdf, 0x006F, 0x031B, 0x0309, 0,
1690  0xe0, 0x004F, 0x031B, 0x0303, 0,
1691  0xe1, 0x006F, 0x031B, 0x0303, 0,
1692  0xe2, 0x004F, 0x031B, 0x0323, 0,
1693  0xe3, 0x006F, 0x031B, 0x0323, 0,
1694  0xe4, 0x0055, 0x0323, 0,
1695  0xe5, 0x0075, 0x0323, 0,
1696  0xe6, 0x0055, 0x0309, 0,
1697  0xe7, 0x0075, 0x0309, 0,
1698  0xe8, 0x0055, 0x031B, 0x0301, 0,
1699  0xe9, 0x0075, 0x031B, 0x0301, 0,
1700  0xea, 0x0055, 0x031B, 0x0300, 0,
1701  0xeb, 0x0075, 0x031B, 0x0300, 0,
1702  0xec, 0x0055, 0x031B, 0x0309, 0,
1703  0xed, 0x0075, 0x031B, 0x0309, 0,
1704  0xee, 0x0055, 0x031B, 0x0303, 0,
1705  0xef, 0x0075, 0x031B, 0x0303, 0,
1706  0xf0, 0x0055, 0x031B, 0x0323, 0,
1707  0xf1, 0x0075, 0x031B, 0x0323, 0,
1708  0xf2, 0x0059, 0x0300, 0,
1709  0xf3, 0x0079, 0x0300, 0,
1710  0xf4, 0x0059, 0x0323, 0,
1711  0xf5, 0x0079, 0x0323, 0,
1712  0xf6, 0x0059, 0x0309, 0,
1713  0xf7, 0x0079, 0x0309, 0,
1714  0xf8, 0x0059, 0x0303, 0,
1715  0xf9, 0x0079, 0x0303, 0,
1716  0x00,
1717 
1718  /* page1f */
1719  0x1f,
1720  0x00, 0x03B1, 0x0313, 0,
1721  0x01, 0x03B1, 0x0314, 0,
1722  0x02, 0x03B1, 0x0313, 0x0300, 0,
1723  0x03, 0x03B1, 0x0314, 0x0300, 0,
1724  0x04, 0x03B1, 0x0313, 0x0301, 0,
1725  0x05, 0x03B1, 0x0314, 0x0301, 0,
1726  0x06, 0x03B1, 0x0313, 0x0342, 0,
1727  0x07, 0x03B1, 0x0314, 0x0342, 0,
1728  0x08, 0x0391, 0x0313, 0,
1729  0x09, 0x0391, 0x0314, 0,
1730  0x0a, 0x0391, 0x0313, 0x0300, 0,
1731  0x0b, 0x0391, 0x0314, 0x0300, 0,
1732  0x0c, 0x0391, 0x0313, 0x0301, 0,
1733  0x0d, 0x0391, 0x0314, 0x0301, 0,
1734  0x0e, 0x0391, 0x0313, 0x0342, 0,
1735  0x0f, 0x0391, 0x0314, 0x0342, 0,
1736  0x10, 0x03B5, 0x0313, 0,
1737  0x11, 0x03B5, 0x0314, 0,
1738  0x12, 0x03B5, 0x0313, 0x0300, 0,
1739  0x13, 0x03B5, 0x0314, 0x0300, 0,
1740  0x14, 0x03B5, 0x0313, 0x0301, 0,
1741  0x15, 0x03B5, 0x0314, 0x0301, 0,
1742  0x18, 0x0395, 0x0313, 0,
1743  0x19, 0x0395, 0x0314, 0,
1744  0x1a, 0x0395, 0x0313, 0x0300, 0,
1745  0x1b, 0x0395, 0x0314, 0x0300, 0,
1746  0x1c, 0x0395, 0x0313, 0x0301, 0,
1747  0x1d, 0x0395, 0x0314, 0x0301, 0,
1748  0x20, 0x03B7, 0x0313, 0,
1749  0x21, 0x03B7, 0x0314, 0,
1750  0x22, 0x03B7, 0x0313, 0x0300, 0,
1751  0x23, 0x03B7, 0x0314, 0x0300, 0,
1752  0x24, 0x03B7, 0x0313, 0x0301, 0,
1753  0x25, 0x03B7, 0x0314, 0x0301, 0,
1754  0x26, 0x03B7, 0x0313, 0x0342, 0,
1755  0x27, 0x03B7, 0x0314, 0x0342, 0,
1756  0x28, 0x0397, 0x0313, 0,
1757  0x29, 0x0397, 0x0314, 0,
1758  0x2a, 0x0397, 0x0313, 0x0300, 0,
1759  0x2b, 0x0397, 0x0314, 0x0300, 0,
1760  0x2c, 0x0397, 0x0313, 0x0301, 0,
1761  0x2d, 0x0397, 0x0314, 0x0301, 0,
1762  0x2e, 0x0397, 0x0313, 0x0342, 0,
1763  0x2f, 0x0397, 0x0314, 0x0342, 0,
1764  0x30, 0x03B9, 0x0313, 0,
1765  0x31, 0x03B9, 0x0314, 0,
1766  0x32, 0x03B9, 0x0313, 0x0300, 0,
1767  0x33, 0x03B9, 0x0314, 0x0300, 0,
1768  0x34, 0x03B9, 0x0313, 0x0301, 0,
1769  0x35, 0x03B9, 0x0314, 0x0301, 0,
1770  0x36, 0x03B9, 0x0313, 0x0342, 0,
1771  0x37, 0x03B9, 0x0314, 0x0342, 0,
1772  0x38, 0x0399, 0x0313, 0,
1773  0x39, 0x0399, 0x0314, 0,
1774  0x3a, 0x0399, 0x0313, 0x0300, 0,
1775  0x3b, 0x0399, 0x0314, 0x0300, 0,
1776  0x3c, 0x0399, 0x0313, 0x0301, 0,
1777  0x3d, 0x0399, 0x0314, 0x0301, 0,
1778  0x3e, 0x0399, 0x0313, 0x0342, 0,
1779  0x3f, 0x0399, 0x0314, 0x0342, 0,
1780  0x40, 0x03BF, 0x0313, 0,
1781  0x41, 0x03BF, 0x0314, 0,
1782  0x42, 0x03BF, 0x0313, 0x0300, 0,
1783  0x43, 0x03BF, 0x0314, 0x0300, 0,
1784  0x44, 0x03BF, 0x0313, 0x0301, 0,
1785  0x45, 0x03BF, 0x0314, 0x0301, 0,
1786  0x48, 0x039F, 0x0313, 0,
1787  0x49, 0x039F, 0x0314, 0,
1788  0x4a, 0x039F, 0x0313, 0x0300, 0,
1789  0x4b, 0x039F, 0x0314, 0x0300, 0,
1790  0x4c, 0x039F, 0x0313, 0x0301, 0,
1791  0x4d, 0x039F, 0x0314, 0x0301, 0,
1792  0x50, 0x03C5, 0x0313, 0,
1793  0x51, 0x03C5, 0x0314, 0,
1794  0x52, 0x03C5, 0x0313, 0x0300, 0,
1795  0x53, 0x03C5, 0x0314, 0x0300, 0,
1796  0x54, 0x03C5, 0x0313, 0x0301, 0,
1797  0x55, 0x03C5, 0x0314, 0x0301, 0,
1798  0x56, 0x03C5, 0x0313, 0x0342, 0,
1799  0x57, 0x03C5, 0x0314, 0x0342, 0,
1800  0x59, 0x03A5, 0x0314, 0,
1801  0x5b, 0x03A5, 0x0314, 0x0300, 0,
1802  0x5d, 0x03A5, 0x0314, 0x0301, 0,
1803  0x5f, 0x03A5, 0x0314, 0x0342, 0,
1804  0x60, 0x03C9, 0x0313, 0,
1805  0x61, 0x03C9, 0x0314, 0,
1806  0x62, 0x03C9, 0x0313, 0x0300, 0,
1807  0x63, 0x03C9, 0x0314, 0x0300, 0,
1808  0x64, 0x03C9, 0x0313, 0x0301, 0,
1809  0x65, 0x03C9, 0x0314, 0x0301, 0,
1810  0x66, 0x03C9, 0x0313, 0x0342, 0,
1811  0x67, 0x03C9, 0x0314, 0x0342, 0,
1812  0x68, 0x03A9, 0x0313, 0,
1813  0x69, 0x03A9, 0x0314, 0,
1814  0x6a, 0x03A9, 0x0313, 0x0300, 0,
1815  0x6b, 0x03A9, 0x0314, 0x0300, 0,
1816  0x6c, 0x03A9, 0x0313, 0x0301, 0,
1817  0x6d, 0x03A9, 0x0314, 0x0301, 0,
1818  0x6e, 0x03A9, 0x0313, 0x0342, 0,
1819  0x6f, 0x03A9, 0x0314, 0x0342, 0,
1820  0x70, 0x03B1, 0x0300, 0,
1821  0x71, 0x03B1, 0x0301, 0,
1822  0x72, 0x03B5, 0x0300, 0,
1823  0x73, 0x03B5, 0x0301, 0,
1824  0x74, 0x03B7, 0x0300, 0,
1825  0x75, 0x03B7, 0x0301, 0,
1826  0x76, 0x03B9, 0x0300, 0,
1827  0x77, 0x03B9, 0x0301, 0,
1828  0x78, 0x03BF, 0x0300, 0,
1829  0x79, 0x03BF, 0x0301, 0,
1830  0x7a, 0x03C5, 0x0300, 0,
1831  0x7b, 0x03C5, 0x0301, 0,
1832  0x7c, 0x03C9, 0x0300, 0,
1833  0x7d, 0x03C9, 0x0301, 0,
1834  0x80, 0x03B1, 0x0345, 0x0313, 0,
1835  0x81, 0x03B1, 0x0345, 0x0314, 0,
1836  0x82, 0x03B1, 0x0345, 0x0313, 0x0300, 0,
1837  0x83, 0x03B1, 0x0345, 0x0314, 0x0300, 0,
1838  0x84, 0x03B1, 0x0345, 0x0313, 0x0301, 0,
1839  0x85, 0x03B1, 0x0345, 0x0314, 0x0301, 0,
1840  0x86, 0x03B1, 0x0345, 0x0313, 0x0342, 0,
1841  0x87, 0x03B1, 0x0345, 0x0314, 0x0342, 0,
1842  0x88, 0x0391, 0x0345, 0x0313, 0,
1843  0x89, 0x0391, 0x0345, 0x0314, 0,
1844  0x8a, 0x0391, 0x0345, 0x0313, 0x0300, 0,
1845  0x8b, 0x0391, 0x0345, 0x0314, 0x0300, 0,
1846  0x8c, 0x0391, 0x0345, 0x0313, 0x0301, 0,
1847  0x8d, 0x0391, 0x0345, 0x0314, 0x0301, 0,
1848  0x8e, 0x0391, 0x0345, 0x0313, 0x0342, 0,
1849  0x8f, 0x0391, 0x0345, 0x0314, 0x0342, 0,
1850  0x90, 0x03B7, 0x0345, 0x0313, 0,
1851  0x91, 0x03B7, 0x0345, 0x0314, 0,
1852  0x92, 0x03B7, 0x0345, 0x0313, 0x0300, 0,
1853  0x93, 0x03B7, 0x0345, 0x0314, 0x0300, 0,
1854  0x94, 0x03B7, 0x0345, 0x0313, 0x0301, 0,
1855  0x95, 0x03B7, 0x0345, 0x0314, 0x0301, 0,
1856  0x96, 0x03B7, 0x0345, 0x0313, 0x0342, 0,
1857  0x97, 0x03B7, 0x0345, 0x0314, 0x0342, 0,
1858  0x98, 0x0397, 0x0345, 0x0313, 0,
1859  0x99, 0x0397, 0x0345, 0x0314, 0,
1860  0x9a, 0x0397, 0x0345, 0x0313, 0x0300, 0,
1861  0x9b, 0x0397, 0x0345, 0x0314, 0x0300, 0,
1862  0x9c, 0x0397, 0x0345, 0x0313, 0x0301, 0,
1863  0x9d, 0x0397, 0x0345, 0x0314, 0x0301, 0,
1864  0x9e, 0x0397, 0x0345, 0x0313, 0x0342, 0,
1865  0x9f, 0x0397, 0x0345, 0x0314, 0x0342, 0,
1866  0xa0, 0x03C9, 0x0345, 0x0313, 0,
1867  0xa1, 0x03C9, 0x0345, 0x0314, 0,
1868  0xa2, 0x03C9, 0x0345, 0x0313, 0x0300, 0,
1869  0xa3, 0x03C9, 0x0345, 0x0314, 0x0300, 0,
1870  0xa4, 0x03C9, 0x0345, 0x0313, 0x0301, 0,
1871  0xa5, 0x03C9, 0x0345, 0x0314, 0x0301, 0,
1872  0xa6, 0x03C9, 0x0345, 0x0313, 0x0342, 0,
1873  0xa7, 0x03C9, 0x0345, 0x0314, 0x0342, 0,
1874  0xa8, 0x03A9, 0x0345, 0x0313, 0,
1875  0xa9, 0x03A9, 0x0345, 0x0314, 0,
1876  0xaa, 0x03A9, 0x0345, 0x0313, 0x0300, 0,
1877  0xab, 0x03A9, 0x0345, 0x0314, 0x0300, 0,
1878  0xac, 0x03A9, 0x0345, 0x0313, 0x0301, 0,
1879  0xad, 0x03A9, 0x0345, 0x0314, 0x0301, 0,
1880  0xae, 0x03A9, 0x0345, 0x0313, 0x0342, 0,
1881  0xaf, 0x03A9, 0x0345, 0x0314, 0x0342, 0,
1882  0xb0, 0x03B1, 0x0306, 0,
1883  0xb1, 0x03B1, 0x0304, 0,
1884  0xb2, 0x03B1, 0x0345, 0x0300, 0,
1885  0xb3, 0x03B1, 0x0345, 0,
1886  0xb4, 0x03B1, 0x0345, 0x0301, 0,
1887  0xb6, 0x03B1, 0x0342, 0,
1888  0xb7, 0x03B1, 0x0345, 0x0342, 0,
1889  0xb8, 0x0391, 0x0306, 0,
1890  0xb9, 0x0391, 0x0304, 0,
1891  0xba, 0x0391, 0x0300, 0,
1892  0xbb, 0x0391, 0x0301, 0,
1893  0xbc, 0x0391, 0x0345, 0,
1894  0xbe, 0x03B9, 0,
1895  0xc1, 0x00A8, 0x0342, 0,
1896  0xc2, 0x03B7, 0x0345, 0x0300, 0,
1897  0xc3, 0x03B7, 0x0345, 0,
1898  0xc4, 0x03B7, 0x0345, 0x0301, 0,
1899  0xc6, 0x03B7, 0x0342, 0,
1900  0xc7, 0x03B7, 0x0345, 0x0342, 0,
1901  0xc8, 0x0395, 0x0300, 0,
1902  0xc9, 0x0395, 0x0301, 0,
1903  0xca, 0x0397, 0x0300, 0,
1904  0xcb, 0x0397, 0x0301, 0,
1905  0xcc, 0x0397, 0x0345, 0,
1906  0xcd, 0x1FBF, 0x0300, 0,
1907  0xce, 0x1FBF, 0x0301, 0,
1908  0xcf, 0x1FBF, 0x0342, 0,
1909  0xd0, 0x03B9, 0x0306, 0,
1910  0xd1, 0x03B9, 0x0304, 0,
1911  0xd2, 0x03B9, 0x0308, 0x0300, 0,
1912  0xd3, 0x03B9, 0x0308, 0x0301, 0,
1913  0xd6, 0x03B9, 0x0342, 0,
1914  0xd7, 0x03B9, 0x0308, 0x0342, 0,
1915  0xd8, 0x0399, 0x0306, 0,
1916  0xd9, 0x0399, 0x0304, 0,
1917  0xda, 0x0399, 0x0300, 0,
1918  0xdb, 0x0399, 0x0301, 0,
1919  0xdd, 0x1FFE, 0x0300, 0,
1920  0xde, 0x1FFE, 0x0301, 0,
1921  0xdf, 0x1FFE, 0x0342, 0,
1922  0xe0, 0x03C5, 0x0306, 0,
1923  0xe1, 0x03C5, 0x0304, 0,
1924  0xe2, 0x03C5, 0x0308, 0x0300, 0,
1925  0xe3, 0x03C5, 0x0308, 0x0301, 0,
1926  0xe4, 0x03C1, 0x0313, 0,
1927  0xe5, 0x03C1, 0x0314, 0,
1928  0xe6, 0x03C5, 0x0342, 0,
1929  0xe7, 0x03C5, 0x0308, 0x0342, 0,
1930  0xe8, 0x03A5, 0x0306, 0,
1931  0xe9, 0x03A5, 0x0304, 0,
1932  0xea, 0x03A5, 0x0300, 0,
1933  0xeb, 0x03A5, 0x0301, 0,
1934  0xec, 0x03A1, 0x0314, 0,
1935  0xed, 0x00A8, 0x0300, 0,
1936  0xee, 0x00A8, 0x0301, 0,
1937  0xef, 0x0060, 0,
1938  0xf2, 0x03C9, 0x0345, 0x0300, 0,
1939  0xf3, 0x03C9, 0x0345, 0,
1940  0xf4, 0x03BF, 0x0345, 0x0301, 0,
1941  0xf6, 0x03C9, 0x0342, 0,
1942  0xf7, 0x03C9, 0x0345, 0x0342, 0,
1943  0xf8, 0x039F, 0x0300, 0,
1944  0xf9, 0x039F, 0x0301, 0,
1945  0xfa, 0x03A9, 0x0300, 0,
1946  0xfb, 0x03A9, 0x0301, 0,
1947  0xfc, 0x03A9, 0x0345, 0,
1948  0xfd, 0x00B4, 0,
1949  0x00,
1950 
1951  /* page30 */
1952  0x30,
1953  0x4c, 0x304B, 0x3099, 0,
1954  0x4e, 0x304D, 0x3099, 0,
1955  0x50, 0x304F, 0x3099, 0,
1956  0x52, 0x3051, 0x3099, 0,
1957  0x54, 0x3053, 0x3099, 0,
1958  0x56, 0x3055, 0x3099, 0,
1959  0x58, 0x3057, 0x3099, 0,
1960  0x5a, 0x3059, 0x3099, 0,
1961  0x5c, 0x305B, 0x3099, 0,
1962  0x5e, 0x305D, 0x3099, 0,
1963  0x60, 0x305F, 0x3099, 0,
1964  0x62, 0x3061, 0x3099, 0,
1965  0x65, 0x3064, 0x3099, 0,
1966  0x67, 0x3066, 0x3099, 0,
1967  0x69, 0x3068, 0x3099, 0,
1968  0x70, 0x306F, 0x3099, 0,
1969  0x71, 0x306F, 0x309A, 0,
1970  0x73, 0x3072, 0x3099, 0,
1971  0x74, 0x3072, 0x309A, 0,
1972  0x76, 0x3075, 0x3099, 0,
1973  0x77, 0x3075, 0x309A, 0,
1974  0x79, 0x3078, 0x3099, 0,
1975  0x7a, 0x3078, 0x309A, 0,
1976  0x7c, 0x307B, 0x3099, 0,
1977  0x7d, 0x307B, 0x309A, 0,
1978  0x94, 0x3046, 0x3099, 0,
1979  0x9e, 0x309D, 0x3099, 0,
1980  0xac, 0x30AB, 0x3099, 0,
1981  0xae, 0x30AD, 0x3099, 0,
1982  0xb0, 0x30AF, 0x3099, 0,
1983  0xb2, 0x30B1, 0x3099, 0,
1984  0xb4, 0x30B3, 0x3099, 0,
1985  0xb6, 0x30B5, 0x3099, 0,
1986  0xb8, 0x30B7, 0x3099, 0,
1987  0xba, 0x30B9, 0x3099, 0,
1988  0xbc, 0x30BB, 0x3099, 0,
1989  0xbe, 0x30BD, 0x3099, 0,
1990  0xc0, 0x30BF, 0x3099, 0,
1991  0xc2, 0x30C1, 0x3099, 0,
1992  0xc5, 0x30C4, 0x3099, 0,
1993  0xc7, 0x30C6, 0x3099, 0,
1994  0xc9, 0x30C8, 0x3099, 0,
1995  0xd0, 0x30CF, 0x3099, 0,
1996  0xd1, 0x30CF, 0x309A, 0,
1997  0xd3, 0x30D2, 0x3099, 0,
1998  0xd4, 0x30D2, 0x309A, 0,
1999  0xd6, 0x30D5, 0x3099, 0,
2000  0xd7, 0x30D5, 0x309A, 0,
2001  0xd9, 0x30D8, 0x3099, 0,
2002  0xda, 0x30D8, 0x309A, 0,
2003  0xdc, 0x30DB, 0x3099, 0,
2004  0xdd, 0x30DB, 0x309A, 0,
2005  0xf4, 0x30A6, 0x3099, 0,
2006  0xf7, 0x30EF, 0x3099, 0,
2007  0xf8, 0x30F0, 0x3099, 0,
2008  0xf9, 0x30F1, 0x3099, 0,
2009  0xfa, 0x30F2, 0x3099, 0,
2010  0xfe, 0x30FD, 0x3099, 0,
2011  0x00,
2012 
2013  /* pagefb */
2014  0xfb,
2015  0x1f, 0x05F2, 0x05B7, 0,
2016  0x2a, 0x05E9, 0x05C1, 0,
2017  0x2b, 0x05E9, 0x05C2, 0,
2018  0x2c, 0x05E9, 0x05BC, 0x05C1, 0,
2019  0x2d, 0x05E9, 0x05BC, 0x05C2, 0,
2020  0x2e, 0x05D0, 0x05B7, 0,
2021  0x2f, 0x05D0, 0x05B8, 0,
2022  0x30, 0x05D0, 0x05BC, 0,
2023  0x31, 0x05D1, 0x05BC, 0,
2024  0x32, 0x05D2, 0x05BC, 0,
2025  0x33, 0x05D3, 0x05BC, 0,
2026  0x34, 0x05D4, 0x05BC, 0,
2027  0x35, 0x05D5, 0x05BC, 0,
2028  0x36, 0x05D6, 0x05BC, 0,
2029  0x38, 0x05D8, 0x05BC, 0,
2030  0x39, 0x05D9, 0x05BC, 0,
2031  0x3a, 0x05DA, 0x05BC, 0,
2032  0x3b, 0x05DB, 0x05BC, 0,
2033  0x3c, 0x05DC, 0x05BC, 0,
2034  0x3e, 0x05DE, 0x05BC, 0,
2035  0x40, 0x05E0, 0x05BC, 0,
2036  0x41, 0x05E1, 0x05BC, 0,
2037  0x43, 0x05E3, 0x05BC, 0,
2038  0x44, 0x05E4, 0x05BC, 0,
2039  0x46, 0x05E6, 0x05BC, 0,
2040  0x47, 0x05E7, 0x05BC, 0,
2041  0x48, 0x05E8, 0x05BC, 0,
2042  0x49, 0x05E9, 0x05BC, 0,
2043  0x4a, 0x05EA, 0x05BC, 0,
2044  0x4b, 0x05D5, 0x05B9, 0,
2045  0x4c, 0x05D1, 0x05BF, 0,
2046  0x4d, 0x05DB, 0x05BF, 0,
2047  0x4e, 0x05E4, 0x05BF, 0,
2048  0x00,
2049 
2050  /* end of list */
2051  0x00
2052 };
2053 
2054 #define HFSPLUS_DECOMPOSE_PAGE_SIZE (256 * (HFSPLUS_MAX_DECOMPOSE_LEN + 1))
2055 
2056 static uint16_t decompose_pages[16 * 256][HFSPLUS_MAX_DECOMPOSE_LEN + 1];
2057 
2059 
2060 
2062 {
2063  int page_idx = -1, char_idx, i;
2064  uint16_t *rpt, *page_pt, *value_pt;
2065  int page_count = 0;
2066 
2067 
2069  for (i = 0; i < 256; i++)
2070  hfsplus_decompose_pages[i] = NULL;
2071 
2072  rpt = (uint16_t *) decompose_page_data;
2073  page_pt = (uint16_t *) decompose_pages;
2074  while (1) {
2075  if (*rpt <= page_idx)
2076  break;
2077 
2078  /* <<< only for development */
2079  page_count++;
2080  if (page_count > 16) {
2081  fprintf(stderr, "FATAL: More than 16 pages encountered\n");
2082  exit(1);
2083  }
2084 
2085  page_idx = *(rpt++);
2086  char_idx = -1;
2087  while (1) {
2088  if(*rpt <= char_idx)
2089  break;
2090  char_idx = *(rpt++);
2091  value_pt = page_pt + char_idx * (HFSPLUS_MAX_DECOMPOSE_LEN + 1);
2092  while (1) {
2093  if(*rpt == 0)
2094  break;
2095  *(value_pt++) = *(rpt++);
2096  }
2097  rpt++;
2098  }
2099  rpt++;
2100  hfsplus_decompose_pages[page_idx] =
2101  decompose_pages + (page_count - 1) * 256;
2102  page_pt += HFSPLUS_DECOMPOSE_PAGE_SIZE;
2103  }
2104 
2105  /* <<< only for development */
2106  rpt++;
2107  printf("Items read: %d\n", (int) (rpt - decompose_page_data));
2108  if (page_count != 16) {
2109  fprintf(stderr, "FATAL: Less than 16 pages encountered: %d\n",
2110  page_count);
2111  exit(1);
2112  }
2113 }
2114 
2115 
2117 {
2118  int i, j, k;
2119 
2120  for (i = 0; i < 256; i++) {
2121  if (hfsplus_decompose_pages_old[i] == NULL) {
2122  if (hfsplus_decompose_pages[i] == NULL)
2123  continue;
2124  fprintf(stderr, "DIFF : i= %d , ts != NULL\n", i);
2125  return 0;
2126  } else if (hfsplus_decompose_pages[i] == NULL) {
2127  fprintf(stderr, "DIFF : i= %d , ts == NULL\n", i);
2128  return 0;
2129  }
2130 
2131  for (j = 0; j < 256; j++)
2132  for (k = 0; k < HFSPLUS_MAX_DECOMPOSE_LEN + 1; k++)
2133  if (hfsplus_decompose_pages_old[i][j][k] !=
2134  hfsplus_decompose_pages[i][j][k]) {
2135  fprintf(stderr,
2136  "DIFF : i= %d , j= %d , k= %d : %4.4x !+ %4.4x\n",
2137  i, j, k, hfsplus_decompose_pages[i][j][k],
2138  hfsplus_decompose_pages[i][j][k]);
2139  return 0;
2140  }
2141  }
2142  return 1;
2143 }
2144 
2145 
2147 {
2148 
2150 
2151  /* <<< intentional deviations */
2152  /* hfsplus_decompose_pages[1][4][0] = 0xffff; */
2153  /* hfsplus_decompose_pages_old[3] = NULL; */
2154 
2156 
2157  exit(0);
2158 }
2159 
#define HFSPLUS_MAX_DECOMPOSE_LEN
Definition: hfsplus.h:187
static const uint16_t page0a[256][4+1]
static const uint16_t page09[256][4+1]
static const uint16_t decompose_page_data[]
#define HFSPLUS_DECOMPOSE_PAGE_SIZE
const uint16_t(*[256] hfsplus_decompose_pages_old)[4+1]
static const uint16_t page01[256][4+1]
static const uint16_t page1e[256][4+1]
static const uint16_t page04[256][4+1]
static const uint16_t page0d[256][4+1]
static const uint16_t page03[256][4+1]
static const uint16_t page0f[256][4+1]
void make_hfsplus_decompose_pages()
static const uint16_t page02[256][4+1]
static const uint16_t page1f[256][4+1]
uint16_t(*[256] hfsplus_decompose_pages)[4+1]
static const uint16_t page00[256][4+1]
static int compare_decompose_pages()
static const uint16_t page0e[256][4+1]
static const uint16_t pagefb[256][4+1]
static uint16_t decompose_pages[16 *256][4+1]
static const uint16_t page0b[256][4+1]
static const uint16_t page0c[256][4+1]
static const uint16_t page30[256][4+1]