Imported Upstream version 1.8.8
[platform/upstream/doxygen.git] / qtools / qstring.cpp
1 /****************************************************************************
2 ** 
3 **
4 ** Implementation of the QString class and related Unicode functions
5 **
6 ** Created : 920722
7 **
8 ** Copyright (C) 1992-2000 Trolltech AS.  All rights reserved.
9 **
10 ** This file is part of the tools module of the Qt GUI Toolkit.
11 **
12 ** This file may be distributed under the terms of the Q Public License
13 ** as defined by Trolltech AS of Norway and appearing in the file
14 ** LICENSE.QPL included in the packaging of this file.
15 **
16 ** This file may be distributed and/or modified under the terms of the
17 ** GNU General Public License version 2 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.GPL included in the
19 ** packaging of this file.
20 **
21 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22 ** licenses may use this file in accordance with the Qt Commercial License
23 ** Agreement provided with the Software.
24 **
25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 **
28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29 **   information about Qt Commercial License Agreements.
30 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
31 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
32 **
33 ** Contact info@trolltech.com if any conditions of this licensing are
34 ** not clear to you.
35 **
36 **********************************************************************/
37
38 // Don't define it while compiling this module, or USERS of Qt will
39 // not be able to link.
40 #ifdef QT_NO_CAST_ASCII
41 #undef QT_NO_CAST_ASCII
42 #endif
43
44 #include "qstring.h"
45 #include "qregexp.h"
46 #include "qdatastream.h"
47 #include "qtextcodec.h"
48 #include "qstack.h"
49 #include <stdio.h>
50 #include <stdlib.h>
51 #include <stdarg.h>
52 #include <ctype.h>
53 #include <limits.h>
54
55
56 /* -------------------------------------------------------------------------
57  * unicode information
58  * these tables are generated from the unicode reference file
59  * ftp://ftp.unicode.org/Public/3.0-Update/UnicodeData-3.0.0.html
60  *
61  * Lars Knoll <knoll@mpi-hd.mpg.de>
62  * -------------------------------------------------------------------------
63  */
64
65 /* Perl script to generate (run perl -x tools/qstring.cpp)
66
67 #!perl
68
69 sub numberize
70 {
71     my(%r, $n, $id);
72     for $id ( @_ ) {
73         $id="" if $id eq "EMPTY";
74         $r{$id}=$n++;
75     }
76     return %r;
77 }
78
79
80 # Code to integer mappings...
81 #
82 %category_code = numberize(qw{
83       EMPTY
84       Mn Mc Me
85       Nd Nl No
86       Zs Zl Zp
87       Cc Cf Cs Co Cn
88
89       Lu Ll Lt Lm Lo
90       Pc Pd Ps Pe Pi Pf Po
91       Sm Sc Sk So
92 });
93 %bidi_category_code = numberize(qw{
94       L R EN ES ET AN CS B S WS ON LRE LRO AL RLE RLO PDF NSM BN});
95 %character_decomposition_tag = numberize(qw{
96       <single> <canonical> <font> <noBreak> <initial> <medial>
97       <final> <isolated> <circle> <super> <sub> <vertical>
98       <wide> <narrow> <small> <square> <compat> <fraction>
99 });
100 %mirrored_code = numberize(qw{N Y});
101
102 %joining_code = numberize(qw{U D R C});
103
104 # Read data into hashes...
105 #
106 open IN, "UnicodeData.txt";
107 $position = 1;
108 while (<IN>) {
109     @fields = split /;/;
110     $code = shift @fields;
111     for $n (qw{
112       name category combining_class bidi_category
113       character_decomposition decimal_digit_value digit_value
114       numeric_value mirrored oldname comment
115       uppercase lowercase titlecase})
116     {
117         $id = shift @fields;
118         $codes = "${n}_code";
119         if ( defined %$codes && defined $$codes{$id} ) {
120             $id = $$codes{$id};
121         }
122         ${$n}{$code}=$id;
123     }
124     $decomp = $character_decomposition{$code};
125     if ( length $decomp == 0 ) {
126         $decomp = "<single>";
127     }
128     if (substr($decomp, 0, 1) ne '<') {
129         $decomp = "<canonical> " . $decomp;
130     }
131     @fields = split(" ", $decomp);
132     $tag = shift @fields;
133     $tag = $character_decomposition_tag{$tag};
134     $decomp = join( ", 0x", @fields );
135     $decomp = "0x".$decomp;
136     $decomposition{$code} = $decomp;
137     $decomposition_tag{$code} = $tag;
138     $decomposition_pos{$code} = $position;
139     $len = scalar(@fields);
140     $decomposition_len{$code} = $len;
141
142 #   we use canonical decompositions longer than 1 char
143 #   and all arabic ligatures for the ligature table
144     if(($len > 1 and $tag == 1) or ($tag > 3 and $tag < 8)) {
145 #      ligature to add...
146         $start = shift @fields;
147         $ligature{$start} = $ligature{$start}." ".$code;
148     }
149
150 #   adjust position
151     if($len != 0) {
152         $position += $len + 3;
153     }
154
155
156 }
157
158 open IN2, "ArabicShaping.txt";
159 $position = 1;
160 while (<IN2>) {
161     @fields = split /;/;
162     $code = shift @fields;
163     $dummy = shift @fields;
164     $join = shift @fields;
165     $join =~ s/ //g;
166     $join = $joining_code{$join};
167     $joining{$code}=$join;
168 }
169
170 # Build pages...
171 #
172 $rowtable_txt =
173     "static const Q_UINT8 * const unicode_info[256] = {";
174 for $row ( 0..255 ) {
175     $nonzero=0;
176     $txt = "";
177     for $cell ( 0..255 ) {
178         $code = sprintf("%02X%02X",$row,$cell);
179         $info = $category{$code};
180         $info = 0 if !defined $info;
181         $txt .= "\n    " if $cell%8 == 0;
182         $txt .= "$info, ";
183     }
184     $therow = $row{$txt};
185     if ( !defined $therow ) {
186         $size+=256;
187         $therow = "ui_".sprintf("%02X",$row);
188         $rowtext{$therow} =
189             "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
190         $row{$txt}=$therow;
191     }
192     $rowtable_txt .= "\n    " if $row%8 == 0;
193     $rowtable_txt .= "$therow, ";
194 }
195
196 print "// START OF GENERATED DATA\n\n";
197 print "#ifndef QT_NO_UNICODETABLES\n\n";
198
199 # Print pages...
200 #
201 for $r ( sort keys %rowtext ) {
202     print $rowtext{$r};
203 }
204 print "$rowtable_txt\n};\n";
205 $size += 256*4;
206 print "// $size bytes\n\n";
207
208 # Build decomposition tables
209 #
210 $rowtable_txt =
211     "static const Q_UINT16 * const decomposition_info[256] = {";
212 $table_txt =
213     "static const Q_UINT16 decomposition_map[] = {\n    0,\n";
214 for $row ( 0..255 ) {
215     $nonzero=0;
216     $txt = "";
217     for $cell ( 0..255 ) {
218         $code = sprintf("%02X%02X",$row,$cell);
219         $txt .= "\n   " if $cell%8 == 0;
220         if( $decomposition_tag{$code} != 0 ) {
221             $txt .= " $decomposition_pos{$code},";
222             $table_txt .= "    $decomposition_tag{$code},";
223             $table_txt .= " 0x$code,";
224             $table_txt .= " $decomposition{$code}, 0,\n";
225             $size += 2 * $decomposition_len{$code} + 6;
226         } else {
227             $txt .= " 0,";
228         }
229     }
230     $therow = $row{$txt};
231     if ( !defined $therow ) {
232         $size+=512;
233         $therow = "di_".sprintf("%02X",$row);
234         $dec_rowtext{$therow} =
235             "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
236         $row{$txt}=$therow;
237     }
238     $rowtable_txt .= "\n    " if $row%8 == 0;
239     $rowtable_txt .= "$therow, ";
240 }
241
242 # Print decomposition tables
243 #
244 print "$table_txt\n};\n\n";
245 for $r ( sort keys %dec_rowtext ) {
246     print $dec_rowtext{$r};
247 }
248 print "$rowtable_txt\n};\n";
249 $size += 256*4;
250 print "// $size bytes\n\n";
251
252
253 # build ligature tables
254 #
255 $size = 0;
256 $position = 1;
257 $rowtable_txt =
258     "static const Q_UINT16 * const ligature_info[256] = {";
259 $table_txt =
260     "static const Q_UINT16 ligature_map[] = {\n    0,\n";
261 for $lig_row ( 0..255 ) {
262     $nonzero=0;
263     $txt = "";
264     for $cell ( 0..255 ) {
265         $code = sprintf("%02X%02X",$lig_row,$cell);
266         $txt .= "\n   " if $cell%8 == 0;
267         if( defined $ligature{$code} ) {
268             $txt .= " $position,";
269             @ligature = split(" ", $ligature{$code});
270 #           we need to sort ligatures according to their length.
271 #           long ones have to come first!
272             @ligature_sort = sort { $decomposition_len{$b} <=>  $decomposition_len{$a} } @ligature;
273 #           now replace each code by it's position in
274 #           the decomposition map.
275             undef(@lig_pos);
276             for $n (@ligature_sort) {
277                 push(@lig_pos, $decomposition_pos{$n});
278             }
279 #           debug info
280             if( 0 ) {
281                 print "ligatures: $ligature{$code}\n";
282                 $sort = join(" ", @ligature_sort);
283                 print "sorted   : $sort\n";
284             }
285             $lig = join(", ", @lig_pos);
286             $table_txt .= "    $lig, 0,\n";
287             $size += 2 * scalar(@ligature) + 2;
288             $position += scalar(@ligature) + 1;
289         } else {
290             $txt .= " 0,";
291         }
292     }
293     $therow = $lig_row{$txt};
294     if ( !defined $therow ) {
295         $size+=512;
296         $therow = "li_".sprintf("%02X",$lig_row);
297         $lig_rowtext{$therow} =
298             "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
299         $lig_row{$txt}=$therow;
300     }
301     $rowtable_txt .= "\n    " if $lig_row%8 == 0;
302     $rowtable_txt .= "$therow, ";
303 }
304
305 # Print ligature tables
306 #
307 print "$table_txt\n};\n\n";
308 for $r ( sort keys %lig_rowtext ) {
309     print $lig_rowtext{$r};
310 }
311 print "$rowtable_txt\n};\n";
312 $size += 256*4;
313 print "// $size bytes\n\n";
314
315
316
317 # Build direction/joining/mirrored pages...
318 #
319 $rowtable_txt =
320     "static const Q_UINT8 * const direction_info[256] = {";
321 for $dir_row ( 0..255 ) {
322     $nonzero=0;
323     $txt = "";
324     for $cell ( 0..255 ) {
325         $code = sprintf("%02X%02X",$dir_row,$cell);
326         $dir = $bidi_category{$code};
327         $dir = 0 if !defined $dir;
328         $join = $joining{$code};
329         $join = 0 if !defined $join;
330         $mirr = $mirrored{$code};
331         $mirr = 0 if !defined $mirr;
332         $info = $dir + 32*$join + 128*$mirr;
333         $txt .= "\n    " if $cell%8 == 0;
334         $txt .= "$info, ";
335     }
336     $therow = $dir_row{$txt};
337     if ( !defined $therow ) {
338         $size+=256;
339         $therow = "dir_".sprintf("%02X",$dir_row);
340         $dir_rowtext{$therow} =
341             "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
342         $dir_row{$txt}=$therow;
343     }
344     $rowtable_txt .= "\n    " if $dir_row%8 == 0;
345     $rowtable_txt .= "$therow, ";
346 }
347
348 # Print pages...
349 #
350 for $r ( sort keys %dir_rowtext ) {
351     print $dir_rowtext{$r};
352 }
353 print "$rowtable_txt\n};\n";
354 $size += 256*4;
355 print "// $size bytes\n\n";
356
357
358
359 print "#endif\n\n";
360 print "// END OF GENERATED DATA\n\n";
361
362
363 __END__
364
365 */
366
367
368 // START OF GENERATED DATA
369
370 static const Q_UINT8 ui_00[] = {
371     10, 10, 10, 10, 10, 10, 10, 10,
372     10, 10, 10, 10, 10, 10, 10, 10,
373     10, 10, 10, 10, 10, 10, 10, 10,
374     10, 10, 10, 10, 10, 10, 10, 10,
375     7, 26, 26, 26, 28, 26, 26, 26,
376     22, 23, 26, 27, 26, 21, 26, 26,
377     4, 4, 4, 4, 4, 4, 4, 4,
378     4, 4, 26, 26, 27, 27, 27, 26,
379     26, 15, 15, 15, 15, 15, 15, 15,
380     15, 15, 15, 15, 15, 15, 15, 15,
381     15, 15, 15, 15, 15, 15, 15, 15,
382     15, 15, 15, 22, 26, 23, 29, 20,
383     29, 16, 16, 16, 16, 16, 16, 16,
384     16, 16, 16, 16, 16, 16, 16, 16,
385     16, 16, 16, 16, 16, 16, 16, 16,
386     16, 16, 16, 22, 27, 23, 27, 10,
387     10, 10, 10, 10, 10, 10, 10, 10,
388     10, 10, 10, 10, 10, 10, 10, 10,
389     10, 10, 10, 10, 10, 10, 10, 10,
390     10, 10, 10, 10, 10, 10, 10, 10,
391     7, 26, 28, 28, 28, 28, 30, 30,
392     29, 30, 16, 24, 27, 21, 30, 29,
393     30, 27, 6, 6, 29, 16, 30, 26,
394     29, 6, 16, 25, 6, 6, 6, 26,
395     15, 15, 15, 15, 15, 15, 15, 15,
396     15, 15, 15, 15, 15, 15, 15, 15,
397     15, 15, 15, 15, 15, 15, 15, 27,
398     15, 15, 15, 15, 15, 15, 15, 16,
399     16, 16, 16, 16, 16, 16, 16, 16,
400     16, 16, 16, 16, 16, 16, 16, 16,
401     16, 16, 16, 16, 16, 16, 16, 27,
402     16, 16, 16, 16, 16, 16, 16, 16,
403 };
404
405 #ifndef QT_NO_UNICODETABLES
406
407 static const Q_UINT8 ui_01[] = {
408     15, 16, 15, 16, 15, 16, 15, 16,
409     15, 16, 15, 16, 15, 16, 15, 16,
410     15, 16, 15, 16, 15, 16, 15, 16,
411     15, 16, 15, 16, 15, 16, 15, 16,
412     15, 16, 15, 16, 15, 16, 15, 16,
413     15, 16, 15, 16, 15, 16, 15, 16,
414     15, 16, 15, 16, 15, 16, 15, 16,
415     16, 15, 16, 15, 16, 15, 16, 15,
416     16, 15, 16, 15, 16, 15, 16, 15,
417     16, 16, 15, 16, 15, 16, 15, 16,
418     15, 16, 15, 16, 15, 16, 15, 16,
419     15, 16, 15, 16, 15, 16, 15, 16,
420     15, 16, 15, 16, 15, 16, 15, 16,
421     15, 16, 15, 16, 15, 16, 15, 16,
422     15, 16, 15, 16, 15, 16, 15, 16,
423     15, 15, 16, 15, 16, 15, 16, 16,
424     16, 15, 15, 16, 15, 16, 15, 15,
425     16, 15, 15, 15, 16, 16, 15, 15,
426     15, 15, 16, 15, 15, 16, 15, 15,
427     15, 16, 16, 16, 15, 15, 16, 15,
428     15, 16, 15, 16, 15, 16, 15, 15,
429     16, 15, 16, 16, 15, 16, 15, 15,
430     16, 15, 15, 15, 16, 15, 16, 15,
431     15, 16, 16, 19, 15, 16, 16, 16,
432     19, 19, 19, 19, 15, 17, 16, 15,
433     17, 16, 15, 17, 16, 15, 16, 15,
434     16, 15, 16, 15, 16, 15, 16, 15,
435     16, 15, 16, 15, 16, 16, 15, 16,
436     15, 16, 15, 16, 15, 16, 15, 16,
437     15, 16, 15, 16, 15, 16, 15, 16,
438     16, 15, 17, 16, 15, 16, 15, 15,
439     15, 16, 15, 16, 15, 16, 15, 16,
440 };
441
442 static const Q_UINT8 ui_02[] = {
443     15, 16, 15, 16, 15, 16, 15, 16,
444     15, 16, 15, 16, 15, 16, 15, 16,
445     15, 16, 15, 16, 15, 16, 15, 16,
446     15, 16, 15, 16, 15, 16, 15, 16,
447     0, 0, 15, 16, 15, 16, 15, 16,
448     15, 16, 15, 16, 15, 16, 15, 16,
449     15, 16, 15, 16, 0, 0, 0, 0,
450     0, 0, 0, 0, 0, 0, 0, 0,
451     0, 0, 0, 0, 0, 0, 0, 0,
452     0, 0, 0, 0, 0, 0, 0, 0,
453     16, 16, 16, 16, 16, 16, 16, 16,
454     16, 16, 16, 16, 16, 16, 16, 16,
455     16, 16, 16, 16, 16, 16, 16, 16,
456     16, 16, 16, 16, 16, 16, 16, 16,
457     16, 16, 16, 16, 16, 16, 16, 16,
458     16, 16, 16, 16, 16, 16, 16, 16,
459     16, 16, 16, 16, 16, 16, 16, 16,
460     16, 16, 16, 16, 16, 16, 16, 16,
461     16, 16, 16, 16, 16, 16, 16, 16,
462     16, 16, 16, 16, 16, 16, 16, 16,
463     16, 16, 16, 16, 16, 16, 16, 16,
464     16, 16, 16, 16, 16, 16, 0, 0,
465     18, 18, 18, 18, 18, 18, 18, 18,
466     18, 29, 29, 18, 18, 18, 18, 18,
467     18, 18, 29, 29, 29, 29, 29, 29,
468     29, 29, 29, 29, 29, 29, 29, 29,
469     18, 18, 29, 29, 29, 29, 29, 29,
470     29, 29, 29, 29, 29, 29, 29, 29,
471     18, 18, 18, 18, 18, 29, 29, 29,
472     29, 29, 29, 29, 29, 29, 18, 0,
473     0, 0, 0, 0, 0, 0, 0, 0,
474     0, 0, 0, 0, 0, 0, 0, 0,
475 };
476
477 static const Q_UINT8 ui_03[] = {
478     1, 1, 1, 1, 1, 1, 1, 1,
479     1, 1, 1, 1, 1, 1, 1, 1,
480     1, 1, 1, 1, 1, 1, 1, 1,
481     1, 1, 1, 1, 1, 1, 1, 1,
482     1, 1, 1, 1, 1, 1, 1, 1,
483     1, 1, 1, 1, 1, 1, 1, 1,
484     1, 1, 1, 1, 1, 1, 1, 1,
485     1, 1, 1, 1, 1, 1, 1, 1,
486     1, 1, 1, 1, 1, 1, 1, 1,
487     1, 1, 1, 1, 1, 1, 1, 0,
488     0, 0, 0, 0, 0, 0, 0, 0,
489     0, 0, 0, 0, 0, 0, 0, 0,
490     1, 1, 1, 0, 0, 0, 0, 0,
491     0, 0, 0, 0, 0, 0, 0, 0,
492     0, 0, 0, 0, 29, 29, 0, 0,
493     0, 0, 18, 0, 0, 0, 26, 0,
494     0, 0, 0, 0, 29, 29, 15, 26,
495     15, 15, 15, 0, 15, 0, 15, 15,
496     16, 15, 15, 15, 15, 15, 15, 15,
497     15, 15, 15, 15, 15, 15, 15, 15,
498     15, 15, 0, 15, 15, 15, 15, 15,
499     15, 15, 15, 15, 16, 16, 16, 16,
500     16, 16, 16, 16, 16, 16, 16, 16,
501     16, 16, 16, 16, 16, 16, 16, 16,
502     16, 16, 16, 16, 16, 16, 16, 16,
503     16, 16, 16, 16, 16, 16, 16, 0,
504     16, 16, 15, 15, 15, 16, 16, 16,
505     0, 0, 15, 16, 15, 16, 15, 16,
506     15, 16, 15, 16, 15, 16, 15, 16,
507     15, 16, 15, 16, 15, 16, 15, 16,
508     16, 16, 16, 16, 0, 0, 0, 0,
509     0, 0, 0, 0, 0, 0, 0, 0,
510 };
511
512 static const Q_UINT8 ui_04[] = {
513     15, 15, 15, 15, 15, 15, 15, 15,
514     15, 15, 15, 15, 15, 15, 15, 15,
515     15, 15, 15, 15, 15, 15, 15, 15,
516     15, 15, 15, 15, 15, 15, 15, 15,
517     15, 15, 15, 15, 15, 15, 15, 15,
518     15, 15, 15, 15, 15, 15, 15, 15,
519     16, 16, 16, 16, 16, 16, 16, 16,
520     16, 16, 16, 16, 16, 16, 16, 16,
521     16, 16, 16, 16, 16, 16, 16, 16,
522     16, 16, 16, 16, 16, 16, 16, 16,
523     16, 16, 16, 16, 16, 16, 16, 16,
524     16, 16, 16, 16, 16, 16, 16, 16,
525     15, 16, 15, 16, 15, 16, 15, 16,
526     15, 16, 15, 16, 15, 16, 15, 16,
527     15, 16, 15, 16, 15, 16, 15, 16,
528     15, 16, 15, 16, 15, 16, 15, 16,
529     15, 16, 30, 1, 1, 1, 1, 0,
530     3, 3, 0, 0, 15, 16, 15, 16,
531     15, 16, 15, 16, 15, 16, 15, 16,
532     15, 16, 15, 16, 15, 16, 15, 16,
533     15, 16, 15, 16, 15, 16, 15, 16,
534     15, 16, 15, 16, 15, 16, 15, 16,
535     15, 16, 15, 16, 15, 16, 15, 16,
536     15, 16, 15, 16, 15, 16, 15, 16,
537     15, 15, 16, 15, 16, 0, 0, 15,
538     16, 0, 0, 15, 16, 0, 0, 0,
539     15, 16, 15, 16, 15, 16, 15, 16,
540     15, 16, 15, 16, 15, 16, 15, 16,
541     15, 16, 15, 16, 15, 16, 15, 16,
542     15, 16, 15, 16, 15, 16, 15, 16,
543     15, 16, 15, 16, 15, 16, 0, 0,
544     15, 16, 0, 0, 0, 0, 0, 0,
545 };
546
547 static const Q_UINT8 ui_05[] = {
548     0, 0, 0, 0, 0, 0, 0, 0,
549     0, 0, 0, 0, 0, 0, 0, 0,
550     0, 0, 0, 0, 0, 0, 0, 0,
551     0, 0, 0, 0, 0, 0, 0, 0,
552     0, 0, 0, 0, 0, 0, 0, 0,
553     0, 0, 0, 0, 0, 0, 0, 0,
554     0, 15, 15, 15, 15, 15, 15, 15,
555     15, 15, 15, 15, 15, 15, 15, 15,
556     15, 15, 15, 15, 15, 15, 15, 15,
557     15, 15, 15, 15, 15, 15, 15, 15,
558     15, 15, 15, 15, 15, 15, 15, 0,
559     0, 18, 26, 26, 26, 26, 26, 26,
560     0, 16, 16, 16, 16, 16, 16, 16,
561     16, 16, 16, 16, 16, 16, 16, 16,
562     16, 16, 16, 16, 16, 16, 16, 16,
563     16, 16, 16, 16, 16, 16, 16, 16,
564     16, 16, 16, 16, 16, 16, 16, 16,
565     0, 26, 21, 0, 0, 0, 0, 0,
566     0, 1, 1, 1, 1, 1, 1, 1,
567     1, 1, 1, 1, 1, 1, 1, 1,
568     1, 1, 0, 1, 1, 1, 1, 1,
569     1, 1, 1, 1, 1, 1, 1, 1,
570     1, 1, 1, 1, 1, 1, 1, 1,
571     1, 1, 0, 1, 1, 1, 26, 1,
572     26, 1, 1, 26, 1, 0, 0, 0,
573     0, 0, 0, 0, 0, 0, 0, 0,
574     19, 19, 19, 19, 19, 19, 19, 19,
575     19, 19, 19, 19, 19, 19, 19, 19,
576     19, 19, 19, 19, 19, 19, 19, 19,
577     19, 19, 19, 0, 0, 0, 0, 0,
578     19, 19, 19, 26, 26, 0, 0, 0,
579     0, 0, 0, 0, 0, 0, 0, 0,
580 };
581
582 static const Q_UINT8 ui_06[] = {
583     0, 0, 0, 0, 0, 0, 0, 0,
584     0, 0, 0, 0, 26, 0, 0, 0,
585     0, 0, 0, 0, 0, 0, 0, 0,
586     0, 0, 0, 26, 0, 0, 0, 26,
587     0, 19, 19, 19, 19, 19, 19, 19,
588     19, 19, 19, 19, 19, 19, 19, 19,
589     19, 19, 19, 19, 19, 19, 19, 19,
590     19, 19, 19, 0, 0, 0, 0, 0,
591     18, 19, 19, 19, 19, 19, 19, 19,
592     19, 19, 19, 1, 1, 1, 1, 1,
593     1, 1, 1, 1, 1, 1, 0, 0,
594     0, 0, 0, 0, 0, 0, 0, 0,
595     4, 4, 4, 4, 4, 4, 4, 4,
596     4, 4, 26, 26, 26, 26, 0, 0,
597     1, 19, 19, 19, 19, 19, 19, 19,
598     19, 19, 19, 19, 19, 19, 19, 19,
599     19, 19, 19, 19, 19, 19, 19, 19,
600     19, 19, 19, 19, 19, 19, 19, 19,
601     19, 19, 19, 19, 19, 19, 19, 19,
602     19, 19, 19, 19, 19, 19, 19, 19,
603     19, 19, 19, 19, 19, 19, 19, 19,
604     19, 19, 19, 19, 19, 19, 19, 19,
605     19, 19, 19, 19, 19, 19, 19, 19,
606     19, 19, 19, 19, 19, 19, 19, 19,
607     19, 19, 19, 19, 19, 19, 19, 19,
608     19, 19, 19, 19, 19, 19, 19, 19,
609     19, 19, 19, 19, 26, 19, 1, 1,
610     1, 1, 1, 1, 1, 3, 3, 1,
611     1, 1, 1, 1, 1, 18, 18, 1,
612     1, 30, 1, 1, 1, 1, 0, 0,
613     4, 4, 4, 4, 4, 4, 4, 4,
614     4, 4, 19, 19, 19, 30, 30, 0,
615 };
616
617 static const Q_UINT8 ui_07[] = {
618     26, 26, 26, 26, 26, 26, 26, 26,
619     26, 26, 26, 26, 26, 26, 0, 11,
620     19, 1, 19, 19, 19, 19, 19, 19,
621     19, 19, 19, 19, 19, 19, 19, 19,
622     19, 19, 19, 19, 19, 19, 19, 19,
623     19, 19, 19, 19, 19, 0, 0, 0,
624     1, 1, 1, 1, 1, 1, 1, 1,
625     1, 1, 1, 1, 1, 1, 1, 1,
626     1, 1, 1, 1, 1, 1, 1, 1,
627     1, 1, 1, 0, 0, 0, 0, 0,
628     0, 0, 0, 0, 0, 0, 0, 0,
629     0, 0, 0, 0, 0, 0, 0, 0,
630     0, 0, 0, 0, 0, 0, 0, 0,
631     0, 0, 0, 0, 0, 0, 0, 0,
632     0, 0, 0, 0, 0, 0, 0, 0,
633     0, 0, 0, 0, 0, 0, 0, 0,
634     19, 19, 19, 19, 19, 19, 19, 19,
635     19, 19, 19, 19, 19, 19, 19, 19,
636     19, 19, 19, 19, 19, 19, 19, 19,
637     19, 19, 19, 19, 19, 19, 19, 19,
638     19, 19, 19, 19, 19, 19, 1, 1,
639     1, 1, 1, 1, 1, 1, 1, 1,
640     1, 0, 0, 0, 0, 0, 0, 0,
641     0, 0, 0, 0, 0, 0, 0, 0,
642     0, 0, 0, 0, 0, 0, 0, 0,
643     0, 0, 0, 0, 0, 0, 0, 0,
644     0, 0, 0, 0, 0, 0, 0, 0,
645     0, 0, 0, 0, 0, 0, 0, 0,
646     0, 0, 0, 0, 0, 0, 0, 0,
647     0, 0, 0, 0, 0, 0, 0, 0,
648     0, 0, 0, 0, 0, 0, 0, 0,
649     0, 0, 0, 0, 0, 0, 0, 0,
650 };
651
652 static const Q_UINT8 ui_08[] = {
653     0, 0, 0, 0, 0, 0, 0, 0,
654     0, 0, 0, 0, 0, 0, 0, 0,
655     0, 0, 0, 0, 0, 0, 0, 0,
656     0, 0, 0, 0, 0, 0, 0, 0,
657     0, 0, 0, 0, 0, 0, 0, 0,
658     0, 0, 0, 0, 0, 0, 0, 0,
659     0, 0, 0, 0, 0, 0, 0, 0,
660     0, 0, 0, 0, 0, 0, 0, 0,
661     0, 0, 0, 0, 0, 0, 0, 0,
662     0, 0, 0, 0, 0, 0, 0, 0,
663     0, 0, 0, 0, 0, 0, 0, 0,
664     0, 0, 0, 0, 0, 0, 0, 0,
665     0, 0, 0, 0, 0, 0, 0, 0,
666     0, 0, 0, 0, 0, 0, 0, 0,
667     0, 0, 0, 0, 0, 0, 0, 0,
668     0, 0, 0, 0, 0, 0, 0, 0,
669     0, 0, 0, 0, 0, 0, 0, 0,
670     0, 0, 0, 0, 0, 0, 0, 0,
671     0, 0, 0, 0, 0, 0, 0, 0,
672     0, 0, 0, 0, 0, 0, 0, 0,
673     0, 0, 0, 0, 0, 0, 0, 0,
674     0, 0, 0, 0, 0, 0, 0, 0,
675     0, 0, 0, 0, 0, 0, 0, 0,
676     0, 0, 0, 0, 0, 0, 0, 0,
677     0, 0, 0, 0, 0, 0, 0, 0,
678     0, 0, 0, 0, 0, 0, 0, 0,
679     0, 0, 0, 0, 0, 0, 0, 0,
680     0, 0, 0, 0, 0, 0, 0, 0,
681     0, 0, 0, 0, 0, 0, 0, 0,
682     0, 0, 0, 0, 0, 0, 0, 0,
683     0, 0, 0, 0, 0, 0, 0, 0,
684     0, 0, 0, 0, 0, 0, 0, 0,
685 };
686
687 static const Q_UINT8 ui_09[] = {
688     0, 1, 1, 2, 0, 19, 19, 19,
689     19, 19, 19, 19, 19, 19, 19, 19,
690     19, 19, 19, 19, 19, 19, 19, 19,
691     19, 19, 19, 19, 19, 19, 19, 19,
692     19, 19, 19, 19, 19, 19, 19, 19,
693     19, 19, 19, 19, 19, 19, 19, 19,
694     19, 19, 19, 19, 19, 19, 19, 19,
695     19, 19, 0, 0, 1, 19, 2, 2,
696     2, 1, 1, 1, 1, 1, 1, 1,
697     1, 2, 2, 2, 2, 1, 0, 0,
698     19, 1, 1, 1, 1, 0, 0, 0,
699     19, 19, 19, 19, 19, 19, 19, 19,
700     19, 19, 1, 1, 26, 26, 4, 4,
701     4, 4, 4, 4, 4, 4, 4, 4,
702     26, 0, 0, 0, 0, 0, 0, 0,
703     0, 0, 0, 0, 0, 0, 0, 0,
704     0, 1, 2, 2, 0, 19, 19, 19,
705     19, 19, 19, 19, 19, 0, 0, 19,
706     19, 0, 0, 19, 19, 19, 19, 19,
707     19, 19, 19, 19, 19, 19, 19, 19,
708     19, 19, 19, 19, 19, 19, 19, 19,
709     19, 0, 19, 19, 19, 19, 19, 19,
710     19, 0, 19, 0, 0, 0, 19, 19,
711     19, 19, 0, 0, 1, 0, 2, 2,
712     2, 1, 1, 1, 1, 0, 0, 2,
713     2, 0, 0, 2, 2, 1, 0, 0,
714     0, 0, 0, 0, 0, 0, 0, 2,
715     0, 0, 0, 0, 19, 19, 0, 19,
716     19, 19, 1, 1, 0, 0, 4, 4,
717     4, 4, 4, 4, 4, 4, 4, 4,
718     19, 19, 28, 28, 6, 6, 6, 6,
719     6, 6, 30, 0, 0, 0, 0, 0,
720 };
721
722 static const Q_UINT8 ui_0A[] = {
723     0, 0, 1, 0, 0, 19, 19, 19,
724     19, 19, 19, 0, 0, 0, 0, 19,
725     19, 0, 0, 19, 19, 19, 19, 19,
726     19, 19, 19, 19, 19, 19, 19, 19,
727     19, 19, 19, 19, 19, 19, 19, 19,
728     19, 0, 19, 19, 19, 19, 19, 19,
729     19, 0, 19, 19, 0, 19, 19, 0,
730     19, 19, 0, 0, 1, 0, 2, 2,
731     2, 1, 1, 0, 0, 0, 0, 1,
732     1, 0, 0, 1, 1, 1, 0, 0,
733     0, 0, 0, 0, 0, 0, 0, 0,
734     0, 19, 19, 19, 19, 0, 19, 0,
735     0, 0, 0, 0, 0, 0, 4, 4,
736     4, 4, 4, 4, 4, 4, 4, 4,
737     1, 1, 19, 19, 19, 0, 0, 0,
738     0, 0, 0, 0, 0, 0, 0, 0,
739     0, 1, 1, 2, 0, 19, 19, 19,
740     19, 19, 19, 19, 0, 19, 0, 19,
741     19, 19, 0, 19, 19, 19, 19, 19,
742     19, 19, 19, 19, 19, 19, 19, 19,
743     19, 19, 19, 19, 19, 19, 19, 19,
744     19, 0, 19, 19, 19, 19, 19, 19,
745     19, 0, 19, 19, 0, 19, 19, 19,
746     19, 19, 0, 0, 1, 19, 2, 2,
747     2, 1, 1, 1, 1, 1, 0, 1,
748     1, 2, 0, 2, 2, 1, 0, 0,
749     19, 0, 0, 0, 0, 0, 0, 0,
750     0, 0, 0, 0, 0, 0, 0, 0,
751     19, 0, 0, 0, 0, 0, 4, 4,
752     4, 4, 4, 4, 4, 4, 4, 4,
753     0, 0, 0, 0, 0, 0, 0, 0,
754     0, 0, 0, 0, 0, 0, 0, 0,
755 };
756
757 static const Q_UINT8 ui_0B[] = {
758     0, 1, 2, 2, 0, 19, 19, 19,
759     19, 19, 19, 19, 19, 0, 0, 19,
760     19, 0, 0, 19, 19, 19, 19, 19,
761     19, 19, 19, 19, 19, 19, 19, 19,
762     19, 19, 19, 19, 19, 19, 19, 19,
763     19, 0, 19, 19, 19, 19, 19, 19,
764     19, 0, 19, 19, 0, 0, 19, 19,
765     19, 19, 0, 0, 1, 19, 2, 1,
766     2, 1, 1, 1, 0, 0, 0, 2,
767     2, 0, 0, 2, 2, 1, 0, 0,
768     0, 0, 0, 0, 0, 0, 1, 2,
769     0, 0, 0, 0, 19, 19, 0, 19,
770     19, 19, 0, 0, 0, 0, 4, 4,
771     4, 4, 4, 4, 4, 4, 4, 4,
772     30, 0, 0, 0, 0, 0, 0, 0,
773     0, 0, 0, 0, 0, 0, 0, 0,
774     0, 0, 1, 2, 0, 19, 19, 19,
775     19, 19, 19, 0, 0, 0, 19, 19,
776     19, 0, 19, 19, 19, 19, 0, 0,
777     0, 19, 19, 0, 19, 0, 19, 19,
778     0, 0, 0, 19, 19, 0, 0, 0,
779     19, 19, 19, 0, 0, 0, 19, 19,
780     19, 19, 19, 19, 19, 19, 0, 19,
781     19, 19, 0, 0, 0, 0, 2, 2,
782     1, 2, 2, 0, 0, 0, 2, 2,
783     2, 0, 2, 2, 2, 1, 0, 0,
784     0, 0, 0, 0, 0, 0, 0, 2,
785     0, 0, 0, 0, 0, 0, 0, 0,
786     0, 0, 0, 0, 0, 0, 0, 4,
787     4, 4, 4, 4, 4, 4, 4, 4,
788     6, 6, 6, 0, 0, 0, 0, 0,
789     0, 0, 0, 0, 0, 0, 0, 0,
790 };
791
792 static const Q_UINT8 ui_0C[] = {
793     0, 2, 2, 2, 0, 19, 19, 19,
794     19, 19, 19, 19, 19, 0, 19, 19,
795     19, 0, 19, 19, 19, 19, 19, 19,
796     19, 19, 19, 19, 19, 19, 19, 19,
797     19, 19, 19, 19, 19, 19, 19, 19,
798     19, 0, 19, 19, 19, 19, 19, 19,
799     19, 19, 19, 19, 0, 19, 19, 19,
800     19, 19, 0, 0, 0, 0, 1, 1,
801     1, 2, 2, 2, 2, 0, 1, 1,
802     1, 0, 1, 1, 1, 1, 0, 0,
803     0, 0, 0, 0, 0, 1, 1, 0,
804     0, 0, 0, 0, 0, 0, 0, 0,
805     19, 19, 0, 0, 0, 0, 4, 4,
806     4, 4, 4, 4, 4, 4, 4, 4,
807     0, 0, 0, 0, 0, 0, 0, 0,
808     0, 0, 0, 0, 0, 0, 0, 0,
809     0, 0, 2, 2, 0, 19, 19, 19,
810     19, 19, 19, 19, 19, 0, 19, 19,
811     19, 0, 19, 19, 19, 19, 19, 19,
812     19, 19, 19, 19, 19, 19, 19, 19,
813     19, 19, 19, 19, 19, 19, 19, 19,
814     19, 0, 19, 19, 19, 19, 19, 19,
815     19, 19, 19, 19, 0, 19, 19, 19,
816     19, 19, 0, 0, 0, 0, 2, 1,
817     2, 2, 2, 2, 2, 0, 1, 2,
818     2, 0, 2, 2, 1, 1, 0, 0,
819     0, 0, 0, 0, 0, 2, 2, 0,
820     0, 0, 0, 0, 0, 0, 19, 0,
821     19, 19, 0, 0, 0, 0, 4, 4,
822     4, 4, 4, 4, 4, 4, 4, 4,
823     0, 0, 0, 0, 0, 0, 0, 0,
824     0, 0, 0, 0, 0, 0, 0, 0,
825 };
826
827 static const Q_UINT8 ui_0D[] = {
828     0, 0, 2, 2, 0, 19, 19, 19,
829     19, 19, 19, 19, 19, 0, 19, 19,
830     19, 0, 19, 19, 19, 19, 19, 19,
831     19, 19, 19, 19, 19, 19, 19, 19,
832     19, 19, 19, 19, 19, 19, 19, 19,
833     19, 0, 19, 19, 19, 19, 19, 19,
834     19, 19, 19, 19, 19, 19, 19, 19,
835     19, 19, 0, 0, 0, 0, 2, 2,
836     2, 1, 1, 1, 0, 0, 2, 2,
837     2, 0, 2, 2, 2, 1, 0, 0,
838     0, 0, 0, 0, 0, 0, 0, 2,
839     0, 0, 0, 0, 0, 0, 0, 0,
840     19, 19, 0, 0, 0, 0, 4, 4,
841     4, 4, 4, 4, 4, 4, 4, 4,
842     0, 0, 0, 0, 0, 0, 0, 0,
843     0, 0, 0, 0, 0, 0, 0, 0,
844     0, 0, 2, 2, 0, 19, 19, 19,
845     19, 19, 19, 19, 19, 19, 19, 19,
846     19, 19, 19, 19, 19, 19, 19, 0,
847     0, 0, 19, 19, 19, 19, 19, 19,
848     19, 19, 19, 19, 19, 19, 19, 19,
849     19, 19, 19, 19, 19, 19, 19, 19,
850     19, 19, 0, 19, 19, 19, 19, 19,
851     19, 19, 19, 19, 0, 19, 0, 0,
852     19, 19, 19, 19, 19, 19, 19, 0,
853     0, 0, 1, 0, 0, 0, 0, 2,
854     2, 2, 1, 1, 1, 0, 1, 0,
855     2, 2, 2, 2, 2, 2, 2, 2,
856     0, 0, 0, 0, 0, 0, 0, 0,
857     0, 0, 0, 0, 0, 0, 0, 0,
858     0, 0, 2, 2, 26, 0, 0, 0,
859     0, 0, 0, 0, 0, 0, 0, 0,
860 };
861
862 static const Q_UINT8 ui_0E[] = {
863     0, 19, 19, 19, 19, 19, 19, 19,
864     19, 19, 19, 19, 19, 19, 19, 19,
865     19, 19, 19, 19, 19, 19, 19, 19,
866     19, 19, 19, 19, 19, 19, 19, 19,
867     19, 19, 19, 19, 19, 19, 19, 19,
868     19, 19, 19, 19, 19, 19, 19, 19,
869     19, 1, 19, 19, 1, 1, 1, 1,
870     1, 1, 1, 0, 0, 0, 0, 28,
871     19, 19, 19, 19, 19, 19, 18, 1,
872     1, 1, 1, 1, 1, 1, 1, 26,
873     4, 4, 4, 4, 4, 4, 4, 4,
874     4, 4, 26, 26, 0, 0, 0, 0,
875     0, 0, 0, 0, 0, 0, 0, 0,
876     0, 0, 0, 0, 0, 0, 0, 0,
877     0, 0, 0, 0, 0, 0, 0, 0,
878     0, 0, 0, 0, 0, 0, 0, 0,
879     0, 19, 19, 0, 19, 0, 0, 19,
880     19, 0, 19, 0, 0, 19, 0, 0,
881     0, 0, 0, 0, 19, 19, 19, 19,
882     0, 19, 19, 19, 19, 19, 19, 19,
883     0, 19, 19, 19, 0, 19, 0, 19,
884     0, 0, 19, 19, 0, 19, 19, 19,
885     19, 1, 19, 19, 1, 1, 1, 1,
886     1, 1, 0, 1, 1, 19, 0, 0,
887     19, 19, 19, 19, 19, 0, 18, 0,
888     1, 1, 1, 1, 1, 1, 0, 0,
889     4, 4, 4, 4, 4, 4, 4, 4,
890     4, 4, 0, 0, 19, 19, 0, 0,
891     0, 0, 0, 0, 0, 0, 0, 0,
892     0, 0, 0, 0, 0, 0, 0, 0,
893     0, 0, 0, 0, 0, 0, 0, 0,
894     0, 0, 0, 0, 0, 0, 0, 0,
895 };
896
897 static const Q_UINT8 ui_0F[] = {
898     19, 30, 30, 30, 26, 26, 26, 26,
899     26, 26, 26, 26, 26, 26, 26, 26,
900     26, 26, 26, 30, 30, 30, 30, 30,
901     1, 1, 30, 30, 30, 30, 30, 30,
902     4, 4, 4, 4, 4, 4, 4, 4,
903     4, 4, 6, 6, 6, 6, 6, 6,
904     6, 6, 6, 6, 30, 1, 30, 1,
905     30, 1, 22, 23, 22, 23, 2, 2,
906     19, 19, 19, 19, 19, 19, 19, 19,
907     0, 19, 19, 19, 19, 19, 19, 19,
908     19, 19, 19, 19, 19, 19, 19, 19,
909     19, 19, 19, 19, 19, 19, 19, 19,
910     19, 19, 19, 19, 19, 19, 19, 19,
911     19, 19, 19, 0, 0, 0, 0, 0,
912     0, 1, 1, 1, 1, 1, 1, 1,
913     1, 1, 1, 1, 1, 1, 1, 2,
914     1, 1, 1, 1, 1, 26, 1, 1,
915     19, 19, 19, 19, 0, 0, 0, 0,
916     1, 1, 1, 1, 1, 1, 1, 1,
917     0, 1, 1, 1, 1, 1, 1, 1,
918     1, 1, 1, 1, 1, 1, 1, 1,
919     1, 1, 1, 1, 1, 1, 1, 1,
920     1, 1, 1, 1, 1, 1, 1, 1,
921     1, 1, 1, 1, 1, 0, 30, 30,
922     30, 30, 30, 30, 30, 30, 1, 30,
923     30, 30, 30, 30, 30, 0, 0, 30,
924     0, 0, 0, 0, 0, 0, 0, 0,
925     0, 0, 0, 0, 0, 0, 0, 0,
926     0, 0, 0, 0, 0, 0, 0, 0,
927     0, 0, 0, 0, 0, 0, 0, 0,
928     0, 0, 0, 0, 0, 0, 0, 0,
929     0, 0, 0, 0, 0, 0, 0, 0,
930 };
931
932 static const Q_UINT8 ui_10[] = {
933     19, 19, 19, 19, 19, 19, 19, 19,
934     19, 19, 19, 19, 19, 19, 19, 19,
935     19, 19, 19, 19, 19, 19, 19, 19,
936     19, 19, 19, 19, 19, 19, 19, 19,
937     19, 19, 0, 19, 19, 19, 19, 19,
938     0, 19, 19, 0, 2, 1, 1, 1,
939     1, 2, 1, 0, 0, 0, 1, 1,
940     2, 1, 0, 0, 0, 0, 0, 0,
941     4, 4, 4, 4, 4, 4, 4, 4,
942     4, 4, 26, 26, 26, 26, 26, 26,
943     19, 19, 19, 19, 19, 19, 2, 2,
944     1, 1, 0, 0, 0, 0, 0, 0,
945     0, 0, 0, 0, 0, 0, 0, 0,
946     0, 0, 0, 0, 0, 0, 0, 0,
947     0, 0, 0, 0, 0, 0, 0, 0,
948     0, 0, 0, 0, 0, 0, 0, 0,
949     0, 0, 0, 0, 0, 0, 0, 0,
950     0, 0, 0, 0, 0, 0, 0, 0,
951     0, 0, 0, 0, 0, 0, 0, 0,
952     0, 0, 0, 0, 0, 0, 0, 0,
953     15, 15, 15, 15, 15, 15, 15, 15,
954     15, 15, 15, 15, 15, 15, 15, 15,
955     15, 15, 15, 15, 15, 15, 15, 15,
956     15, 15, 15, 15, 15, 15, 15, 15,
957     15, 15, 15, 15, 15, 15, 0, 0,
958     0, 0, 0, 0, 0, 0, 0, 0,
959     19, 19, 19, 19, 19, 19, 19, 19,
960     19, 19, 19, 19, 19, 19, 19, 19,
961     19, 19, 19, 19, 19, 19, 19, 19,
962     19, 19, 19, 19, 19, 19, 19, 19,
963     19, 19, 19, 19, 19, 19, 19, 0,
964     0, 0, 0, 26, 0, 0, 0, 0,
965 };
966
967 static const Q_UINT8 ui_11[] = {
968     19, 19, 19, 19, 19, 19, 19, 19,
969     19, 19, 19, 19, 19, 19, 19, 19,
970     19, 19, 19, 19, 19, 19, 19, 19,
971     19, 19, 19, 19, 19, 19, 19, 19,
972     19, 19, 19, 19, 19, 19, 19, 19,
973     19, 19, 19, 19, 19, 19, 19, 19,
974     19, 19, 19, 19, 19, 19, 19, 19,
975     19, 19, 19, 19, 19, 19, 19, 19,
976     19, 19, 19, 19, 19, 19, 19, 19,
977     19, 19, 19, 19, 19, 19, 19, 19,
978     19, 19, 19, 19, 19, 19, 19, 19,
979     19, 19, 0, 0, 0, 0, 0, 19,
980     19, 19, 19, 19, 19, 19, 19, 19,
981     19, 19, 19, 19, 19, 19, 19, 19,
982     19, 19, 19, 19, 19, 19, 19, 19,
983     19, 19, 19, 19, 19, 19, 19, 19,
984     19, 19, 19, 19, 19, 19, 19, 19,
985     19, 19, 19, 19, 19, 19, 19, 19,
986     19, 19, 19, 19, 19, 19, 19, 19,
987     19, 19, 19, 19, 19, 19, 19, 19,
988     19, 19, 19, 0, 0, 0, 0, 0,
989     19, 19, 19, 19, 19, 19, 19, 19,
990     19, 19, 19, 19, 19, 19, 19, 19,
991     19, 19, 19, 19, 19, 19, 19, 19,
992     19, 19, 19, 19, 19, 19, 19, 19,
993     19, 19, 19, 19, 19, 19, 19, 19,
994     19, 19, 19, 19, 19, 19, 19, 19,
995     19, 19, 19, 19, 19, 19, 19, 19,
996     19, 19, 19, 19, 19, 19, 19, 19,
997     19, 19, 19, 19, 19, 19, 19, 19,
998     19, 19, 19, 19, 19, 19, 19, 19,
999     19, 19, 0, 0, 0, 0, 0, 0,
1000 };
1001
1002 static const Q_UINT8 ui_12[] = {
1003     19, 19, 19, 19, 19, 19, 19, 0,
1004     19, 19, 19, 19, 19, 19, 19, 19,
1005     19, 19, 19, 19, 19, 19, 19, 19,
1006     19, 19, 19, 19, 19, 19, 19, 19,
1007     19, 19, 19, 19, 19, 19, 19, 19,
1008     19, 19, 19, 19, 19, 19, 19, 19,
1009     19, 19, 19, 19, 19, 19, 19, 19,
1010     19, 19, 19, 19, 19, 19, 19, 19,
1011     19, 19, 19, 19, 19, 19, 19, 0,
1012     19, 0, 19, 19, 19, 19, 0, 0,
1013     19, 19, 19, 19, 19, 19, 19, 0,
1014     19, 0, 19, 19, 19, 19, 0, 0,
1015     19, 19, 19, 19, 19, 19, 19, 19,
1016     19, 19, 19, 19, 19, 19, 19, 19,
1017     19, 19, 19, 19, 19, 19, 19, 19,
1018     19, 19, 19, 19, 19, 19, 19, 19,
1019     19, 19, 19, 19, 19, 19, 19, 0,
1020     19, 0, 19, 19, 19, 19, 0, 0,
1021     19, 19, 19, 19, 19, 19, 19, 19,
1022     19, 19, 19, 19, 19, 19, 19, 19,
1023     19, 19, 19, 19, 19, 19, 19, 19,
1024     19, 19, 19, 19, 19, 19, 19, 0,
1025     19, 0, 19, 19, 19, 19, 0, 0,
1026     19, 19, 19, 19, 19, 19, 19, 0,
1027     19, 0, 19, 19, 19, 19, 0, 0,
1028     19, 19, 19, 19, 19, 19, 19, 0,
1029     19, 19, 19, 19, 19, 19, 19, 0,
1030     19, 19, 19, 19, 19, 19, 19, 19,
1031     19, 19, 19, 19, 19, 19, 19, 19,
1032     19, 19, 19, 19, 19, 19, 19, 0,
1033     19, 19, 19, 19, 19, 19, 19, 19,
1034     19, 19, 19, 19, 19, 19, 19, 19,
1035 };
1036
1037 static const Q_UINT8 ui_13[] = {
1038     19, 19, 19, 19, 19, 19, 19, 19,
1039     19, 19, 19, 19, 19, 19, 19, 0,
1040     19, 0, 19, 19, 19, 19, 0, 0,
1041     19, 19, 19, 19, 19, 19, 19, 0,
1042     19, 19, 19, 19, 19, 19, 19, 19,
1043     19, 19, 19, 19, 19, 19, 19, 19,
1044     19, 19, 19, 19, 19, 19, 19, 19,
1045     19, 19, 19, 19, 19, 19, 19, 19,
1046     19, 19, 19, 19, 19, 19, 19, 0,
1047     19, 19, 19, 19, 19, 19, 19, 19,
1048     19, 19, 19, 19, 19, 19, 19, 19,
1049     19, 19, 19, 0, 0, 0, 0, 0,
1050     0, 26, 26, 26, 26, 26, 26, 26,
1051     26, 4, 4, 4, 4, 4, 4, 4,
1052     4, 4, 6, 6, 6, 6, 6, 6,
1053     6, 6, 6, 6, 6, 0, 0, 0,
1054     0, 0, 0, 0, 0, 0, 0, 0,
1055     0, 0, 0, 0, 0, 0, 0, 0,
1056     0, 0, 0, 0, 0, 0, 0, 0,
1057     0, 0, 0, 0, 0, 0, 0, 0,
1058     19, 19, 19, 19, 19, 19, 19, 19,
1059     19, 19, 19, 19, 19, 19, 19, 19,
1060     19, 19, 19, 19, 19, 19, 19, 19,
1061     19, 19, 19, 19, 19, 19, 19, 19,
1062     19, 19, 19, 19, 19, 19, 19, 19,
1063     19, 19, 19, 19, 19, 19, 19, 19,
1064     19, 19, 19, 19, 19, 19, 19, 19,
1065     19, 19, 19, 19, 19, 19, 19, 19,
1066     19, 19, 19, 19, 19, 19, 19, 19,
1067     19, 19, 19, 19, 19, 19, 19, 19,
1068     19, 19, 19, 19, 19, 0, 0, 0,
1069     0, 0, 0, 0, 0, 0, 0, 0,
1070 };
1071
1072 static const Q_UINT8 ui_14[] = {
1073     0, 19, 19, 19, 19, 19, 19, 19,
1074     19, 19, 19, 19, 19, 19, 19, 19,
1075     19, 19, 19, 19, 19, 19, 19, 19,
1076     19, 19, 19, 19, 19, 19, 19, 19,
1077     19, 19, 19, 19, 19, 19, 19, 19,
1078     19, 19, 19, 19, 19, 19, 19, 19,
1079     19, 19, 19, 19, 19, 19, 19, 19,
1080     19, 19, 19, 19, 19, 19, 19, 19,
1081     19, 19, 19, 19, 19, 19, 19, 19,
1082     19, 19, 19, 19, 19, 19, 19, 19,
1083     19, 19, 19, 19, 19, 19, 19, 19,
1084     19, 19, 19, 19, 19, 19, 19, 19,
1085     19, 19, 19, 19, 19, 19, 19, 19,
1086     19, 19, 19, 19, 19, 19, 19, 19,
1087     19, 19, 19, 19, 19, 19, 19, 19,
1088     19, 19, 19, 19, 19, 19, 19, 19,
1089     19, 19, 19, 19, 19, 19, 19, 19,
1090     19, 19, 19, 19, 19, 19, 19, 19,
1091     19, 19, 19, 19, 19, 19, 19, 19,
1092     19, 19, 19, 19, 19, 19, 19, 19,
1093     19, 19, 19, 19, 19, 19, 19, 19,
1094     19, 19, 19, 19, 19, 19, 19, 19,
1095     19, 19, 19, 19, 19, 19, 19, 19,
1096     19, 19, 19, 19, 19, 19, 19, 19,
1097     19, 19, 19, 19, 19, 19, 19, 19,
1098     19, 19, 19, 19, 19, 19, 19, 19,
1099     19, 19, 19, 19, 19, 19, 19, 19,
1100     19, 19, 19, 19, 19, 19, 19, 19,
1101     19, 19, 19, 19, 19, 19, 19, 19,
1102     19, 19, 19, 19, 19, 19, 19, 19,
1103     19, 19, 19, 19, 19, 19, 19, 19,
1104     19, 19, 19, 19, 19, 19, 19, 19,
1105 };
1106
1107 static const Q_UINT8 ui_15[] = {
1108     19, 19, 19, 19, 19, 19, 19, 19,
1109     19, 19, 19, 19, 19, 19, 19, 19,
1110     19, 19, 19, 19, 19, 19, 19, 19,
1111     19, 19, 19, 19, 19, 19, 19, 19,
1112     19, 19, 19, 19, 19, 19, 19, 19,
1113     19, 19, 19, 19, 19, 19, 19, 19,
1114     19, 19, 19, 19, 19, 19, 19, 19,
1115     19, 19, 19, 19, 19, 19, 19, 19,
1116     19, 19, 19, 19, 19, 19, 19, 19,
1117     19, 19, 19, 19, 19, 19, 19, 19,
1118     19, 19, 19, 19, 19, 19, 19, 19,
1119     19, 19, 19, 19, 19, 19, 19, 19,
1120     19, 19, 19, 19, 19, 19, 19, 19,
1121     19, 19, 19, 19, 19, 19, 19, 19,
1122     19, 19, 19, 19, 19, 19, 19, 19,
1123     19, 19, 19, 19, 19, 19, 19, 19,
1124     19, 19, 19, 19, 19, 19, 19, 19,
1125     19, 19, 19, 19, 19, 19, 19, 19,
1126     19, 19, 19, 19, 19, 19, 19, 19,
1127     19, 19, 19, 19, 19, 19, 19, 19,
1128     19, 19, 19, 19, 19, 19, 19, 19,
1129     19, 19, 19, 19, 19, 19, 19, 19,
1130     19, 19, 19, 19, 19, 19, 19, 19,
1131     19, 19, 19, 19, 19, 19, 19, 19,
1132     19, 19, 19, 19, 19, 19, 19, 19,
1133     19, 19, 19, 19, 19, 19, 19, 19,
1134     19, 19, 19, 19, 19, 19, 19, 19,
1135     19, 19, 19, 19, 19, 19, 19, 19,
1136     19, 19, 19, 19, 19, 19, 19, 19,
1137     19, 19, 19, 19, 19, 19, 19, 19,
1138     19, 19, 19, 19, 19, 19, 19, 19,
1139     19, 19, 19, 19, 19, 19, 19, 19,
1140 };
1141
1142 static const Q_UINT8 ui_16[] = {
1143     19, 19, 19, 19, 19, 19, 19, 19,
1144     19, 19, 19, 19, 19, 19, 19, 19,
1145     19, 19, 19, 19, 19, 19, 19, 19,
1146     19, 19, 19, 19, 19, 19, 19, 19,
1147     19, 19, 19, 19, 19, 19, 19, 19,
1148     19, 19, 19, 19, 19, 19, 19, 19,
1149     19, 19, 19, 19, 19, 19, 19, 19,
1150     19, 19, 19, 19, 19, 19, 19, 19,
1151     19, 19, 19, 19, 19, 19, 19, 19,
1152     19, 19, 19, 19, 19, 19, 19, 19,
1153     19, 19, 19, 19, 19, 19, 19, 19,
1154     19, 19, 19, 19, 19, 19, 19, 19,
1155     19, 19, 19, 19, 19, 19, 19, 19,
1156     19, 19, 19, 19, 19, 26, 26, 19,
1157     19, 19, 19, 19, 19, 19, 19, 0,
1158     0, 0, 0, 0, 0, 0, 0, 0,
1159     7, 19, 19, 19, 19, 19, 19, 19,
1160     19, 19, 19, 19, 19, 19, 19, 19,
1161     19, 19, 19, 19, 19, 19, 19, 19,
1162     19, 19, 19, 22, 23, 0, 0, 0,
1163     19, 19, 19, 19, 19, 19, 19, 19,
1164     19, 19, 19, 19, 19, 19, 19, 19,
1165     19, 19, 19, 19, 19, 19, 19, 19,
1166     19, 19, 19, 19, 19, 19, 19, 19,
1167     19, 19, 19, 19, 19, 19, 19, 19,
1168     19, 19, 19, 19, 19, 19, 19, 19,
1169     19, 19, 19, 19, 19, 19, 19, 19,
1170     19, 19, 19, 19, 19, 19, 19, 19,
1171     19, 19, 19, 19, 19, 19, 19, 19,
1172     19, 19, 19, 26, 26, 26, 6, 6,
1173     6, 0, 0, 0, 0, 0, 0, 0,
1174     0, 0, 0, 0, 0, 0, 0, 0,
1175 };
1176
1177 static const Q_UINT8 ui_17[] = {
1178     0, 0, 0, 0, 0, 0, 0, 0,
1179     0, 0, 0, 0, 0, 0, 0, 0,
1180     0, 0, 0, 0, 0, 0, 0, 0,
1181     0, 0, 0, 0, 0, 0, 0, 0,
1182     0, 0, 0, 0, 0, 0, 0, 0,
1183     0, 0, 0, 0, 0, 0, 0, 0,
1184     0, 0, 0, 0, 0, 0, 0, 0,
1185     0, 0, 0, 0, 0, 0, 0, 0,
1186     0, 0, 0, 0, 0, 0, 0, 0,
1187     0, 0, 0, 0, 0, 0, 0, 0,
1188     0, 0, 0, 0, 0, 0, 0, 0,
1189     0, 0, 0, 0, 0, 0, 0, 0,
1190     0, 0, 0, 0, 0, 0, 0, 0,
1191     0, 0, 0, 0, 0, 0, 0, 0,
1192     0, 0, 0, 0, 0, 0, 0, 0,
1193     0, 0, 0, 0, 0, 0, 0, 0,
1194     19, 19, 19, 19, 19, 19, 19, 19,
1195     19, 19, 19, 19, 19, 19, 19, 19,
1196     19, 19, 19, 19, 19, 19, 19, 19,
1197     19, 19, 19, 19, 19, 19, 19, 19,
1198     19, 19, 19, 19, 19, 19, 19, 19,
1199     19, 19, 19, 19, 19, 19, 19, 19,
1200     19, 19, 19, 19, 2, 2, 2, 1,
1201     1, 1, 1, 1, 1, 1, 2, 2,
1202     2, 2, 2, 2, 2, 2, 1, 2,
1203     2, 1, 1, 1, 1, 1, 1, 1,
1204     1, 1, 1, 1, 26, 26, 26, 26,
1205     26, 26, 26, 28, 26, 0, 0, 0,
1206     4, 4, 4, 4, 4, 4, 4, 4,
1207     4, 4, 0, 0, 0, 0, 0, 0,
1208     0, 0, 0, 0, 0, 0, 0, 0,
1209     0, 0, 0, 0, 0, 0, 0, 0,
1210 };
1211
1212 static const Q_UINT8 ui_18[] = {
1213     26, 26, 26, 26, 26, 26, 21, 26,
1214     26, 26, 26, 11, 11, 11, 11, 0,
1215     4, 4, 4, 4, 4, 4, 4, 4,
1216     4, 4, 0, 0, 0, 0, 0, 0,
1217     19, 19, 19, 19, 19, 19, 19, 19,
1218     19, 19, 19, 19, 19, 19, 19, 19,
1219     19, 19, 19, 19, 19, 19, 19, 19,
1220     19, 19, 19, 19, 19, 19, 19, 19,
1221     19, 19, 19, 18, 19, 19, 19, 19,
1222     19, 19, 19, 19, 19, 19, 19, 19,
1223     19, 19, 19, 19, 19, 19, 19, 19,
1224     19, 19, 19, 19, 19, 19, 19, 19,
1225     19, 19, 19, 19, 19, 19, 19, 19,
1226     19, 19, 19, 19, 19, 19, 19, 19,
1227     19, 19, 19, 19, 19, 19, 19, 19,
1228     0, 0, 0, 0, 0, 0, 0, 0,
1229     19, 19, 19, 19, 19, 19, 19, 19,
1230     19, 19, 19, 19, 19, 19, 19, 19,
1231     19, 19, 19, 19, 19, 19, 19, 19,
1232     19, 19, 19, 19, 19, 19, 19, 19,
1233     19, 19, 19, 19, 19, 19, 19, 19,
1234     19, 1, 0, 0, 0, 0, 0, 0,
1235     0, 0, 0, 0, 0, 0, 0, 0,
1236     0, 0, 0, 0, 0, 0, 0, 0,
1237     0, 0, 0, 0, 0, 0, 0, 0,
1238     0, 0, 0, 0, 0, 0, 0, 0,
1239     0, 0, 0, 0, 0, 0, 0, 0,
1240     0, 0, 0, 0, 0, 0, 0, 0,
1241     0, 0, 0, 0, 0, 0, 0, 0,
1242     0, 0, 0, 0, 0, 0, 0, 0,
1243     0, 0, 0, 0, 0, 0, 0, 0,
1244     0, 0, 0, 0, 0, 0, 0, 0,
1245 };
1246
1247 static const Q_UINT8 ui_1E[] = {
1248     15, 16, 15, 16, 15, 16, 15, 16,
1249     15, 16, 15, 16, 15, 16, 15, 16,
1250     15, 16, 15, 16, 15, 16, 15, 16,
1251     15, 16, 15, 16, 15, 16, 15, 16,
1252     15, 16, 15, 16, 15, 16, 15, 16,
1253     15, 16, 15, 16, 15, 16, 15, 16,
1254     15, 16, 15, 16, 15, 16, 15, 16,
1255     15, 16, 15, 16, 15, 16, 15, 16,
1256     15, 16, 15, 16, 15, 16, 15, 16,
1257     15, 16, 15, 16, 15, 16, 15, 16,
1258     15, 16, 15, 16, 15, 16, 15, 16,
1259     15, 16, 15, 16, 15, 16, 15, 16,
1260     15, 16, 15, 16, 15, 16, 15, 16,
1261     15, 16, 15, 16, 15, 16, 15, 16,
1262     15, 16, 15, 16, 15, 16, 15, 16,
1263     15, 16, 15, 16, 15, 16, 15, 16,
1264     15, 16, 15, 16, 15, 16, 15, 16,
1265     15, 16, 15, 16, 15, 16, 15, 16,
1266     15, 16, 15, 16, 15, 16, 16, 16,
1267     16, 16, 16, 16, 0, 0, 0, 0,
1268     15, 16, 15, 16, 15, 16, 15, 16,
1269     15, 16, 15, 16, 15, 16, 15, 16,
1270     15, 16, 15, 16, 15, 16, 15, 16,
1271     15, 16, 15, 16, 15, 16, 15, 16,
1272     15, 16, 15, 16, 15, 16, 15, 16,
1273     15, 16, 15, 16, 15, 16, 15, 16,
1274     15, 16, 15, 16, 15, 16, 15, 16,
1275     15, 16, 15, 16, 15, 16, 15, 16,
1276     15, 16, 15, 16, 15, 16, 15, 16,
1277     15, 16, 15, 16, 15, 16, 15, 16,
1278     15, 16, 15, 16, 15, 16, 15, 16,
1279     15, 16, 0, 0, 0, 0, 0, 0,
1280 };
1281
1282 static const Q_UINT8 ui_1F[] = {
1283     16, 16, 16, 16, 16, 16, 16, 16,
1284     15, 15, 15, 15, 15, 15, 15, 15,
1285     16, 16, 16, 16, 16, 16, 0, 0,
1286     15, 15, 15, 15, 15, 15, 0, 0,
1287     16, 16, 16, 16, 16, 16, 16, 16,
1288     15, 15, 15, 15, 15, 15, 15, 15,
1289     16, 16, 16, 16, 16, 16, 16, 16,
1290     15, 15, 15, 15, 15, 15, 15, 15,
1291     16, 16, 16, 16, 16, 16, 0, 0,
1292     15, 15, 15, 15, 15, 15, 0, 0,
1293     16, 16, 16, 16, 16, 16, 16, 16,
1294     0, 15, 0, 15, 0, 15, 0, 15,
1295     16, 16, 16, 16, 16, 16, 16, 16,
1296     15, 15, 15, 15, 15, 15, 15, 15,
1297     16, 16, 16, 16, 16, 16, 16, 16,
1298     16, 16, 16, 16, 16, 16, 0, 0,
1299     16, 16, 16, 16, 16, 16, 16, 16,
1300     17, 17, 17, 17, 17, 17, 17, 17,
1301     16, 16, 16, 16, 16, 16, 16, 16,
1302     17, 17, 17, 17, 17, 17, 17, 17,
1303     16, 16, 16, 16, 16, 16, 16, 16,
1304     17, 17, 17, 17, 17, 17, 17, 17,
1305     16, 16, 16, 16, 16, 0, 16, 16,
1306     15, 15, 15, 15, 17, 29, 16, 29,
1307     29, 29, 16, 16, 16, 0, 16, 16,
1308     15, 15, 15, 15, 17, 29, 29, 29,
1309     16, 16, 16, 16, 0, 0, 16, 16,
1310     15, 15, 15, 15, 0, 29, 29, 29,
1311     16, 16, 16, 16, 16, 16, 16, 16,
1312     15, 15, 15, 15, 15, 29, 29, 29,
1313     0, 0, 16, 16, 16, 0, 16, 16,
1314     15, 15, 15, 15, 17, 29, 29, 0,
1315 };
1316
1317 static const Q_UINT8 ui_20[] = {
1318     7, 7, 7, 7, 7, 7, 7, 7,
1319     7, 7, 7, 7, 11, 11, 11, 11,
1320     21, 21, 21, 21, 21, 21, 26, 26,
1321     24, 25, 22, 24, 24, 25, 22, 24,
1322     26, 26, 26, 26, 26, 26, 26, 26,
1323     8, 9, 11, 11, 11, 11, 11, 7,
1324     26, 26, 26, 26, 26, 26, 26, 26,
1325     26, 24, 25, 26, 26, 26, 26, 20,
1326     20, 26, 26, 26, 27, 22, 23, 0,
1327     26, 26, 26, 26, 26, 26, 0, 0,
1328     0, 0, 0, 0, 0, 0, 0, 0,
1329     0, 0, 0, 0, 0, 0, 0, 0,
1330     0, 0, 0, 0, 0, 0, 0, 0,
1331     0, 0, 11, 11, 11, 11, 11, 11,
1332     6, 0, 0, 0, 6, 6, 6, 6,
1333     6, 6, 27, 27, 27, 22, 23, 16,
1334     6, 6, 6, 6, 6, 6, 6, 6,
1335     6, 6, 27, 27, 27, 22, 23, 0,
1336     0, 0, 0, 0, 0, 0, 0, 0,
1337     0, 0, 0, 0, 0, 0, 0, 0,
1338     28, 28, 28, 28, 28, 28, 28, 28,
1339     28, 28, 28, 28, 28, 28, 28, 28,
1340     0, 0, 0, 0, 0, 0, 0, 0,
1341     0, 0, 0, 0, 0, 0, 0, 0,
1342     0, 0, 0, 0, 0, 0, 0, 0,
1343     0, 0, 0, 0, 0, 0, 0, 0,
1344     1, 1, 1, 1, 1, 1, 1, 1,
1345     1, 1, 1, 1, 1, 3, 3, 3,
1346     3, 1, 3, 3, 0, 0, 0, 0,
1347     0, 0, 0, 0, 0, 0, 0, 0,
1348     0, 0, 0, 0, 0, 0, 0, 0,
1349     0, 0, 0, 0, 0, 0, 0, 0,
1350 };
1351
1352 static const Q_UINT8 ui_21[] = {
1353     30, 30, 15, 30, 30, 30, 30, 15,
1354     30, 30, 16, 15, 15, 15, 16, 16,
1355     15, 15, 15, 16, 30, 15, 30, 30,
1356     30, 15, 15, 15, 15, 15, 30, 30,
1357     30, 30, 30, 30, 15, 30, 15, 30,
1358     15, 30, 15, 15, 15, 15, 30, 16,
1359     15, 15, 30, 15, 16, 19, 19, 19,
1360     19, 16, 30, 0, 0, 0, 0, 0,
1361     0, 0, 0, 0, 0, 0, 0, 0,
1362     0, 0, 0, 0, 0, 0, 0, 0,
1363     0, 0, 0, 6, 6, 6, 6, 6,
1364     6, 6, 6, 6, 6, 6, 6, 6,
1365     5, 5, 5, 5, 5, 5, 5, 5,
1366     5, 5, 5, 5, 5, 5, 5, 5,
1367     5, 5, 5, 5, 5, 5, 5, 5,
1368     5, 5, 5, 5, 5, 5, 5, 5,
1369     5, 5, 5, 5, 0, 0, 0, 0,
1370     0, 0, 0, 0, 0, 0, 0, 0,
1371     27, 27, 27, 27, 27, 30, 30, 30,
1372     30, 30, 27, 27, 30, 30, 30, 30,
1373     27, 30, 30, 27, 30, 30, 27, 30,
1374     30, 30, 30, 30, 30, 30, 27, 30,
1375     30, 30, 30, 30, 30, 30, 30, 30,
1376     30, 30, 30, 30, 30, 30, 30, 30,
1377     30, 30, 30, 30, 30, 30, 30, 30,
1378     30, 30, 30, 30, 30, 30, 27, 27,
1379     30, 30, 27, 30, 27, 30, 30, 30,
1380     30, 30, 30, 30, 30, 30, 30, 30,
1381     30, 30, 30, 30, 30, 30, 30, 30,
1382     30, 30, 30, 30, 30, 30, 30, 30,
1383     30, 30, 30, 30, 0, 0, 0, 0,
1384     0, 0, 0, 0, 0, 0, 0, 0,
1385 };
1386
1387 static const Q_UINT8 ui_22[] = {
1388     27, 27, 27, 27, 27, 27, 27, 27,
1389     27, 27, 27, 27, 27, 27, 27, 27,
1390     27, 27, 27, 27, 27, 27, 27, 27,
1391     27, 27, 27, 27, 27, 27, 27, 27,
1392     27, 27, 27, 27, 27, 27, 27, 27,
1393     27, 27, 27, 27, 27, 27, 27, 27,
1394     27, 27, 27, 27, 27, 27, 27, 27,
1395     27, 27, 27, 27, 27, 27, 27, 27,
1396     27, 27, 27, 27, 27, 27, 27, 27,
1397     27, 27, 27, 27, 27, 27, 27, 27,
1398     27, 27, 27, 27, 27, 27, 27, 27,
1399     27, 27, 27, 27, 27, 27, 27, 27,
1400     27, 27, 27, 27, 27, 27, 27, 27,
1401     27, 27, 27, 27, 27, 27, 27, 27,
1402     27, 27, 27, 27, 27, 27, 27, 27,
1403     27, 27, 27, 27, 27, 27, 27, 27,
1404     27, 27, 27, 27, 27, 27, 27, 27,
1405     27, 27, 27, 27, 27, 27, 27, 27,
1406     27, 27, 27, 27, 27, 27, 27, 27,
1407     27, 27, 27, 27, 27, 27, 27, 27,
1408     27, 27, 27, 27, 27, 27, 27, 27,
1409     27, 27, 27, 27, 27, 27, 27, 27,
1410     27, 27, 27, 27, 27, 27, 27, 27,
1411     27, 27, 27, 27, 27, 27, 27, 27,
1412     27, 27, 27, 27, 27, 27, 27, 27,
1413     27, 27, 27, 27, 27, 27, 27, 27,
1414     27, 27, 27, 27, 27, 27, 27, 27,
1415     27, 27, 27, 27, 27, 27, 27, 27,
1416     27, 27, 27, 27, 27, 27, 27, 27,
1417     27, 27, 27, 27, 27, 27, 27, 27,
1418     27, 27, 0, 0, 0, 0, 0, 0,
1419     0, 0, 0, 0, 0, 0, 0, 0,
1420 };
1421
1422 static const Q_UINT8 ui_23[] = {
1423     30, 30, 30, 30, 30, 30, 30, 30,
1424     27, 27, 27, 27, 30, 30, 30, 30,
1425     30, 30, 30, 30, 30, 30, 30, 30,
1426     30, 30, 30, 30, 30, 30, 30, 30,
1427     27, 27, 30, 30, 30, 30, 30, 30,
1428     30, 22, 23, 30, 30, 30, 30, 30,
1429     30, 30, 30, 30, 30, 30, 30, 30,
1430     30, 30, 30, 30, 30, 30, 30, 30,
1431     30, 30, 30, 30, 30, 30, 30, 30,
1432     30, 30, 30, 30, 30, 30, 30, 30,
1433     30, 30, 30, 30, 30, 30, 30, 30,
1434     30, 30, 30, 30, 30, 30, 30, 30,
1435     30, 30, 30, 30, 30, 30, 30, 30,
1436     30, 30, 30, 30, 30, 30, 30, 30,
1437     30, 30, 30, 30, 30, 30, 30, 30,
1438     30, 30, 30, 30, 0, 30, 30, 30,
1439     30, 30, 30, 30, 30, 30, 30, 30,
1440     30, 30, 30, 30, 30, 30, 30, 30,
1441     30, 30, 30, 30, 30, 30, 30, 30,
1442     30, 30, 30, 0, 0, 0, 0, 0,
1443     0, 0, 0, 0, 0, 0, 0, 0,
1444     0, 0, 0, 0, 0, 0, 0, 0,
1445     0, 0, 0, 0, 0, 0, 0, 0,
1446     0, 0, 0, 0, 0, 0, 0, 0,
1447     0, 0, 0, 0, 0, 0, 0, 0,
1448     0, 0, 0, 0, 0, 0, 0, 0,
1449     0, 0, 0, 0, 0, 0, 0, 0,
1450     0, 0, 0, 0, 0, 0, 0, 0,
1451     0, 0, 0, 0, 0, 0, 0, 0,
1452     0, 0, 0, 0, 0, 0, 0, 0,
1453     0, 0, 0, 0, 0, 0, 0, 0,
1454     0, 0, 0, 0, 0, 0, 0, 0,
1455 };
1456
1457 static const Q_UINT8 ui_24[] = {
1458     30, 30, 30, 30, 30, 30, 30, 30,
1459     30, 30, 30, 30, 30, 30, 30, 30,
1460     30, 30, 30, 30, 30, 30, 30, 30,
1461     30, 30, 30, 30, 30, 30, 30, 30,
1462     30, 30, 30, 30, 30, 30, 30, 0,
1463     0, 0, 0, 0, 0, 0, 0, 0,
1464     0, 0, 0, 0, 0, 0, 0, 0,
1465     0, 0, 0, 0, 0, 0, 0, 0,
1466     30, 30, 30, 30, 30, 30, 30, 30,
1467     30, 30, 30, 0, 0, 0, 0, 0,
1468     0, 0, 0, 0, 0, 0, 0, 0,
1469     0, 0, 0, 0, 0, 0, 0, 0,
1470     6, 6, 6, 6, 6, 6, 6, 6,
1471     6, 6, 6, 6, 6, 6, 6, 6,
1472     6, 6, 6, 6, 6, 6, 6, 6,
1473     6, 6, 6, 6, 6, 6, 6, 6,
1474     6, 6, 6, 6, 6, 6, 6, 6,
1475     6, 6, 6, 6, 6, 6, 6, 6,
1476     6, 6, 6, 6, 6, 6, 6, 6,
1477     6, 6, 6, 6, 30, 30, 30, 30,
1478     30, 30, 30, 30, 30, 30, 30, 30,
1479     30, 30, 30, 30, 30, 30, 30, 30,
1480     30, 30, 30, 30, 30, 30, 30, 30,
1481     30, 30, 30, 30, 30, 30, 30, 30,
1482     30, 30, 30, 30, 30, 30, 30, 30,
1483     30, 30, 30, 30, 30, 30, 30, 30,
1484     30, 30, 30, 30, 30, 30, 30, 30,
1485     30, 30, 30, 30, 30, 30, 30, 30,
1486     30, 30, 30, 30, 30, 30, 30, 30,
1487     30, 30, 6, 0, 0, 0, 0, 0,
1488     0, 0, 0, 0, 0, 0, 0, 0,
1489     0, 0, 0, 0, 0, 0, 0, 0,
1490 };
1491
1492 static const Q_UINT8 ui_25[] = {
1493     30, 30, 30, 30, 30, 30, 30, 30,
1494     30, 30, 30, 30, 30, 30, 30, 30,
1495     30, 30, 30, 30, 30, 30, 30, 30,
1496     30, 30, 30, 30, 30, 30, 30, 30,
1497     30, 30, 30, 30, 30, 30, 30, 30,
1498     30, 30, 30, 30, 30, 30, 30, 30,
1499     30, 30, 30, 30, 30, 30, 30, 30,
1500     30, 30, 30, 30, 30, 30, 30, 30,
1501     30, 30, 30, 30, 30, 30, 30, 30,
1502     30, 30, 30, 30, 30, 30, 30, 30,
1503     30, 30, 30, 30, 30, 30, 30, 30,
1504     30, 30, 30, 30, 30, 30, 30, 30,
1505     30, 30, 30, 30, 30, 30, 30, 30,
1506     30, 30, 30, 30, 30, 30, 30, 30,
1507     30, 30, 30, 30, 30, 30, 30, 30,
1508     30, 30, 30, 30, 30, 30, 30, 30,
1509     30, 30, 30, 30, 30, 30, 30, 30,
1510     30, 30, 30, 30, 30, 30, 30, 30,
1511     30, 30, 30, 30, 30, 30, 0, 0,
1512     0, 0, 0, 0, 0, 0, 0, 0,
1513     30, 30, 30, 30, 30, 30, 30, 30,
1514     30, 30, 30, 30, 30, 30, 30, 30,
1515     30, 30, 30, 30, 30, 30, 30, 27,
1516     30, 30, 30, 30, 30, 30, 30, 30,
1517     30, 27, 30, 30, 30, 30, 30, 30,
1518     30, 30, 30, 30, 30, 30, 30, 30,
1519     30, 30, 30, 30, 30, 30, 30, 30,
1520     30, 30, 30, 30, 30, 30, 30, 30,
1521     30, 30, 30, 30, 30, 30, 30, 30,
1522     30, 30, 30, 30, 30, 30, 30, 30,
1523     30, 30, 30, 30, 30, 30, 30, 30,
1524     0, 0, 0, 0, 0, 0, 0, 0,
1525 };
1526
1527 static const Q_UINT8 ui_26[] = {
1528     30, 30, 30, 30, 30, 30, 30, 30,
1529     30, 30, 30, 30, 30, 30, 30, 30,
1530     30, 30, 30, 30, 0, 0, 0, 0,
1531     0, 30, 30, 30, 30, 30, 30, 30,
1532     30, 30, 30, 30, 30, 30, 30, 30,
1533     30, 30, 30, 30, 30, 30, 30, 30,
1534     30, 30, 30, 30, 30, 30, 30, 30,
1535     30, 30, 30, 30, 30, 30, 30, 30,
1536     30, 30, 30, 30, 30, 30, 30, 30,
1537     30, 30, 30, 30, 30, 30, 30, 30,
1538     30, 30, 30, 30, 30, 30, 30, 30,
1539     30, 30, 30, 30, 30, 30, 30, 30,
1540     30, 30, 30, 30, 30, 30, 30, 30,
1541     30, 30, 30, 30, 30, 30, 30, 27,
1542     30, 30, 0, 0, 0, 0, 0, 0,
1543     0, 0, 0, 0, 0, 0, 0, 0,
1544     0, 0, 0, 0, 0, 0, 0, 0,
1545     0, 0, 0, 0, 0, 0, 0, 0,
1546     0, 0, 0, 0, 0, 0, 0, 0,
1547     0, 0, 0, 0, 0, 0, 0, 0,
1548     0, 0, 0, 0, 0, 0, 0, 0,
1549     0, 0, 0, 0, 0, 0, 0, 0,
1550     0, 0, 0, 0, 0, 0, 0, 0,
1551     0, 0, 0, 0, 0, 0, 0, 0,
1552     0, 0, 0, 0, 0, 0, 0, 0,
1553     0, 0, 0, 0, 0, 0, 0, 0,
1554     0, 0, 0, 0, 0, 0, 0, 0,
1555     0, 0, 0, 0, 0, 0, 0, 0,
1556     0, 0, 0, 0, 0, 0, 0, 0,
1557     0, 0, 0, 0, 0, 0, 0, 0,
1558     0, 0, 0, 0, 0, 0, 0, 0,
1559     0, 0, 0, 0, 0, 0, 0, 0,
1560 };
1561
1562 static const Q_UINT8 ui_27[] = {
1563     0, 30, 30, 30, 30, 0, 30, 30,
1564     30, 30, 0, 0, 30, 30, 30, 30,
1565     30, 30, 30, 30, 30, 30, 30, 30,
1566     30, 30, 30, 30, 30, 30, 30, 30,
1567     30, 30, 30, 30, 30, 30, 30, 30,
1568     0, 30, 30, 30, 30, 30, 30, 30,
1569     30, 30, 30, 30, 30, 30, 30, 30,
1570     30, 30, 30, 30, 30, 30, 30, 30,
1571     30, 30, 30, 30, 30, 30, 30, 30,
1572     30, 30, 30, 30, 0, 30, 0, 30,
1573     30, 30, 30, 0, 0, 0, 30, 0,
1574     30, 30, 30, 30, 30, 30, 30, 0,
1575     0, 30, 30, 30, 30, 30, 30, 30,
1576     0, 0, 0, 0, 0, 0, 0, 0,
1577     0, 0, 0, 0, 0, 0, 6, 6,
1578     6, 6, 6, 6, 6, 6, 6, 6,
1579     6, 6, 6, 6, 6, 6, 6, 6,
1580     6, 6, 6, 6, 6, 6, 6, 6,
1581     6, 6, 6, 6, 30, 0, 0, 0,
1582     30, 30, 30, 30, 30, 30, 30, 30,
1583     30, 30, 30, 30, 30, 30, 30, 30,
1584     30, 30, 30, 30, 30, 30, 30, 30,
1585     0, 30, 30, 30, 30, 30, 30, 30,
1586     30, 30, 30, 30, 30, 30, 30, 0,
1587     0, 0, 0, 0, 0, 0, 0, 0,
1588     0, 0, 0, 0, 0, 0, 0, 0,
1589     0, 0, 0, 0, 0, 0, 0, 0,
1590     0, 0, 0, 0, 0, 0, 0, 0,
1591     0, 0, 0, 0, 0, 0, 0, 0,
1592     0, 0, 0, 0, 0, 0, 0, 0,
1593     0, 0, 0, 0, 0, 0, 0, 0,
1594     0, 0, 0, 0, 0, 0, 0, 0,
1595 };
1596
1597 static const Q_UINT8 ui_28[] = {
1598     30, 30, 30, 30, 30, 30, 30, 30,
1599     30, 30, 30, 30, 30, 30, 30, 30,
1600     30, 30, 30, 30, 30, 30, 30, 30,
1601     30, 30, 30, 30, 30, 30, 30, 30,
1602     30, 30, 30, 30, 30, 30, 30, 30,
1603     30, 30, 30, 30, 30, 30, 30, 30,
1604     30, 30, 30, 30, 30, 30, 30, 30,
1605     30, 30, 30, 30, 30, 30, 30, 30,
1606     30, 30, 30, 30, 30, 30, 30, 30,
1607     30, 30, 30, 30, 30, 30, 30, 30,
1608     30, 30, 30, 30, 30, 30, 30, 30,
1609     30, 30, 30, 30, 30, 30, 30, 30,
1610     30, 30, 30, 30, 30, 30, 30, 30,
1611     30, 30, 30, 30, 30, 30, 30, 30,
1612     30, 30, 30, 30, 30, 30, 30, 30,
1613     30, 30, 30, 30, 30, 30, 30, 30,
1614     30, 30, 30, 30, 30, 30, 30, 30,
1615     30, 30, 30, 30, 30, 30, 30, 30,
1616     30, 30, 30, 30, 30, 30, 30, 30,
1617     30, 30, 30, 30, 30, 30, 30, 30,
1618     30, 30, 30, 30, 30, 30, 30, 30,
1619     30, 30, 30, 30, 30, 30, 30, 30,
1620     30, 30, 30, 30, 30, 30, 30, 30,
1621     30, 30, 30, 30, 30, 30, 30, 30,
1622     30, 30, 30, 30, 30, 30, 30, 30,
1623     30, 30, 30, 30, 30, 30, 30, 30,
1624     30, 30, 30, 30, 30, 30, 30, 30,
1625     30, 30, 30, 30, 30, 30, 30, 30,
1626     30, 30, 30, 30, 30, 30, 30, 30,
1627     30, 30, 30, 30, 30, 30, 30, 30,
1628     30, 30, 30, 30, 30, 30, 30, 30,
1629     30, 30, 30, 30, 30, 30, 30, 30,
1630 };
1631
1632 static const Q_UINT8 ui_2E[] = {
1633     0, 0, 0, 0, 0, 0, 0, 0,
1634     0, 0, 0, 0, 0, 0, 0, 0,
1635     0, 0, 0, 0, 0, 0, 0, 0,
1636     0, 0, 0, 0, 0, 0, 0, 0,
1637     0, 0, 0, 0, 0, 0, 0, 0,
1638     0, 0, 0, 0, 0, 0, 0, 0,
1639     0, 0, 0, 0, 0, 0, 0, 0,
1640     0, 0, 0, 0, 0, 0, 0, 0,
1641     0, 0, 0, 0, 0, 0, 0, 0,
1642     0, 0, 0, 0, 0, 0, 0, 0,
1643     0, 0, 0, 0, 0, 0, 0, 0,
1644     0, 0, 0, 0, 0, 0, 0, 0,
1645     0, 0, 0, 0, 0, 0, 0, 0,
1646     0, 0, 0, 0, 0, 0, 0, 0,
1647     0, 0, 0, 0, 0, 0, 0, 0,
1648     0, 0, 0, 0, 0, 0, 0, 0,
1649     30, 30, 30, 30, 30, 30, 30, 30,
1650     30, 30, 30, 30, 30, 30, 30, 30,
1651     30, 30, 30, 30, 30, 30, 30, 30,
1652     30, 30, 0, 30, 30, 30, 30, 30,
1653     30, 30, 30, 30, 30, 30, 30, 30,
1654     30, 30, 30, 30, 30, 30, 30, 30,
1655     30, 30, 30, 30, 30, 30, 30, 30,
1656     30, 30, 30, 30, 30, 30, 30, 30,
1657     30, 30, 30, 30, 30, 30, 30, 30,
1658     30, 30, 30, 30, 30, 30, 30, 30,
1659     30, 30, 30, 30, 30, 30, 30, 30,
1660     30, 30, 30, 30, 30, 30, 30, 30,
1661     30, 30, 30, 30, 30, 30, 30, 30,
1662     30, 30, 30, 30, 30, 30, 30, 30,
1663     30, 30, 30, 30, 0, 0, 0, 0,
1664     0, 0, 0, 0, 0, 0, 0, 0,
1665 };
1666
1667 static const Q_UINT8 ui_2F[] = {
1668     30, 30, 30, 30, 30, 30, 30, 30,
1669     30, 30, 30, 30, 30, 30, 30, 30,
1670     30, 30, 30, 30, 30, 30, 30, 30,
1671     30, 30, 30, 30, 30, 30, 30, 30,
1672     30, 30, 30, 30, 30, 30, 30, 30,
1673     30, 30, 30, 30, 30, 30, 30, 30,
1674     30, 30, 30, 30, 30, 30, 30, 30,
1675     30, 30, 30, 30, 30, 30, 30, 30,
1676     30, 30, 30, 30, 30, 30, 30, 30,
1677     30, 30, 30, 30, 30, 30, 30, 30,
1678     30, 30, 30, 30, 30, 30, 30, 30,
1679     30, 30, 30, 30, 30, 30, 30, 30,
1680     30, 30, 30, 30, 30, 30, 30, 30,
1681     30, 30, 30, 30, 30, 30, 30, 30,
1682     30, 30, 30, 30, 30, 30, 30, 30,
1683     30, 30, 30, 30, 30, 30, 30, 30,
1684     30, 30, 30, 30, 30, 30, 30, 30,
1685     30, 30, 30, 30, 30, 30, 30, 30,
1686     30, 30, 30, 30, 30, 30, 30, 30,
1687     30, 30, 30, 30, 30, 30, 30, 30,
1688     30, 30, 30, 30, 30, 30, 30, 30,
1689     30, 30, 30, 30, 30, 30, 30, 30,
1690     30, 30, 30, 30, 30, 30, 30, 30,
1691     30, 30, 30, 30, 30, 30, 30, 30,
1692     30, 30, 30, 30, 30, 30, 30, 30,
1693     30, 30, 30, 30, 30, 30, 30, 30,
1694     30, 30, 30, 30, 30, 30, 0, 0,
1695     0, 0, 0, 0, 0, 0, 0, 0,
1696     0, 0, 0, 0, 0, 0, 0, 0,
1697     0, 0, 0, 0, 0, 0, 0, 0,
1698     30, 30, 30, 30, 30, 30, 30, 30,
1699     30, 30, 30, 30, 0, 0, 0, 0,
1700 };
1701
1702 static const Q_UINT8 ui_30[] = {
1703     7, 26, 26, 26, 30, 18, 19, 5,
1704     22, 23, 22, 23, 22, 23, 22, 23,
1705     22, 23, 30, 30, 22, 23, 22, 23,
1706     22, 23, 22, 23, 21, 22, 23, 23,
1707     30, 5, 5, 5, 5, 5, 5, 5,
1708     5, 5, 1, 1, 1, 1, 1, 1,
1709     21, 18, 18, 18, 18, 18, 30, 30,
1710     5, 5, 5, 0, 0, 0, 30, 30,
1711     0, 19, 19, 19, 19, 19, 19, 19,
1712     19, 19, 19, 19, 19, 19, 19, 19,
1713     19, 19, 19, 19, 19, 19, 19, 19,
1714     19, 19, 19, 19, 19, 19, 19, 19,
1715     19, 19, 19, 19, 19, 19, 19, 19,
1716     19, 19, 19, 19, 19, 19, 19, 19,
1717     19, 19, 19, 19, 19, 19, 19, 19,
1718     19, 19, 19, 19, 19, 19, 19, 19,
1719     19, 19, 19, 19, 19, 19, 19, 19,
1720     19, 19, 19, 19, 19, 19, 19, 19,
1721     19, 19, 19, 19, 19, 0, 0, 0,
1722     0, 1, 1, 29, 29, 18, 18, 0,
1723     0, 19, 19, 19, 19, 19, 19, 19,
1724     19, 19, 19, 19, 19, 19, 19, 19,
1725     19, 19, 19, 19, 19, 19, 19, 19,
1726     19, 19, 19, 19, 19, 19, 19, 19,
1727     19, 19, 19, 19, 19, 19, 19, 19,
1728     19, 19, 19, 19, 19, 19, 19, 19,
1729     19, 19, 19, 19, 19, 19, 19, 19,
1730     19, 19, 19, 19, 19, 19, 19, 19,
1731     19, 19, 19, 19, 19, 19, 19, 19,
1732     19, 19, 19, 19, 19, 19, 19, 19,
1733     19, 19, 19, 19, 19, 19, 19, 19,
1734     19, 19, 19, 20, 18, 18, 18, 0,
1735 };
1736
1737 static const Q_UINT8 ui_31[] = {
1738     0, 0, 0, 0, 0, 19, 19, 19,
1739     19, 19, 19, 19, 19, 19, 19, 19,
1740     19, 19, 19, 19, 19, 19, 19, 19,
1741     19, 19, 19, 19, 19, 19, 19, 19,
1742     19, 19, 19, 19, 19, 19, 19, 19,
1743     19, 19, 19, 19, 19, 0, 0, 0,
1744     0, 19, 19, 19, 19, 19, 19, 19,
1745     19, 19, 19, 19, 19, 19, 19, 19,
1746     19, 19, 19, 19, 19, 19, 19, 19,
1747     19, 19, 19, 19, 19, 19, 19, 19,
1748     19, 19, 19, 19, 19, 19, 19, 19,
1749     19, 19, 19, 19, 19, 19, 19, 19,
1750     19, 19, 19, 19, 19, 19, 19, 19,
1751     19, 19, 19, 19, 19, 19, 19, 19,
1752     19, 19, 19, 19, 19, 19, 19, 19,
1753     19, 19, 19, 19, 19, 19, 19, 19,
1754     19, 19, 19, 19, 19, 19, 19, 19,
1755     19, 19, 19, 19, 19, 19, 19, 0,
1756     30, 30, 6, 6, 6, 6, 30, 30,
1757     30, 30, 30, 30, 30, 30, 30, 30,
1758     19, 19, 19, 19, 19, 19, 19, 19,
1759     19, 19, 19, 19, 19, 19, 19, 19,
1760     19, 19, 19, 19, 19, 19, 19, 19,
1761     0, 0, 0, 0, 0, 0, 0, 0,
1762     0, 0, 0, 0, 0, 0, 0, 0,
1763     0, 0, 0, 0, 0, 0, 0, 0,
1764     0, 0, 0, 0, 0, 0, 0, 0,
1765     0, 0, 0, 0, 0, 0, 0, 0,
1766     0, 0, 0, 0, 0, 0, 0, 0,
1767     0, 0, 0, 0, 0, 0, 0, 0,
1768     0, 0, 0, 0, 0, 0, 0, 0,
1769     0, 0, 0, 0, 0, 0, 0, 0,
1770 };
1771
1772 static const Q_UINT8 ui_32[] = {
1773     30, 30, 30, 30, 30, 30, 30, 30,
1774     30, 30, 30, 30, 30, 30, 30, 30,
1775     30, 30, 30, 30, 30, 30, 30, 30,
1776     30, 30, 30, 30, 30, 0, 0, 0,
1777     6, 6, 6, 6, 6, 6, 6, 6,
1778     6, 6, 30, 30, 30, 30, 30, 30,
1779     30, 30, 30, 30, 30, 30, 30, 30,
1780     30, 30, 30, 30, 30, 30, 30, 30,
1781     30, 30, 30, 30, 0, 0, 0, 0,
1782     0, 0, 0, 0, 0, 0, 0, 0,
1783     0, 0, 0, 0, 0, 0, 0, 0,
1784     0, 0, 0, 0, 0, 0, 0, 0,
1785     30, 30, 30, 30, 30, 30, 30, 30,
1786     30, 30, 30, 30, 30, 30, 30, 30,
1787     30, 30, 30, 30, 30, 30, 30, 30,
1788     30, 30, 30, 30, 0, 0, 0, 30,
1789     6, 6, 6, 6, 6, 6, 6, 6,
1790     6, 6, 30, 30, 30, 30, 30, 30,
1791     30, 30, 30, 30, 30, 30, 30, 30,
1792     30, 30, 30, 30, 30, 30, 30, 30,
1793     30, 30, 30, 30, 30, 30, 30, 30,
1794     30, 30, 30, 30, 30, 30, 30, 30,
1795     30, 0, 0, 0, 0, 0, 0, 0,
1796     0, 0, 0, 0, 0, 0, 0, 0,
1797     30, 30, 30, 30, 30, 30, 30, 30,
1798     30, 30, 30, 30, 0, 0, 0, 0,
1799     30, 30, 30, 30, 30, 30, 30, 30,
1800     30, 30, 30, 30, 30, 30, 30, 30,
1801     30, 30, 30, 30, 30, 30, 30, 30,
1802     30, 30, 30, 30, 30, 30, 30, 30,
1803     30, 30, 30, 30, 30, 30, 30, 30,
1804     30, 30, 30, 30, 30, 30, 30, 0,
1805 };
1806
1807 static const Q_UINT8 ui_33[] = {
1808     30, 30, 30, 30, 30, 30, 30, 30,
1809     30, 30, 30, 30, 30, 30, 30, 30,
1810     30, 30, 30, 30, 30, 30, 30, 30,
1811     30, 30, 30, 30, 30, 30, 30, 30,
1812     30, 30, 30, 30, 30, 30, 30, 30,
1813     30, 30, 30, 30, 30, 30, 30, 30,
1814     30, 30, 30, 30, 30, 30, 30, 30,
1815     30, 30, 30, 30, 30, 30, 30, 30,
1816     30, 30, 30, 30, 30, 30, 30, 30,
1817     30, 30, 30, 30, 30, 30, 30, 30,
1818     30, 30, 30, 30, 30, 30, 30, 30,
1819     30, 30, 30, 30, 30, 30, 30, 30,
1820     30, 30, 30, 30, 30, 30, 30, 30,
1821     30, 30, 30, 30, 30, 30, 30, 30,
1822     30, 30, 30, 30, 30, 30, 30, 0,
1823     0, 0, 0, 30, 30, 30, 30, 30,
1824     30, 30, 30, 30, 30, 30, 30, 30,
1825     30, 30, 30, 30, 30, 30, 30, 30,
1826     30, 30, 30, 30, 30, 30, 30, 30,
1827     30, 30, 30, 30, 30, 30, 30, 30,
1828     30, 30, 30, 30, 30, 30, 30, 30,
1829     30, 30, 30, 30, 30, 30, 30, 30,
1830     30, 30, 30, 30, 30, 30, 30, 30,
1831     30, 30, 30, 30, 30, 30, 30, 30,
1832     30, 30, 30, 30, 30, 30, 30, 30,
1833     30, 30, 30, 30, 30, 30, 30, 30,
1834     30, 30, 30, 30, 30, 30, 30, 30,
1835     30, 30, 30, 30, 30, 30, 0, 0,
1836     30, 30, 30, 30, 30, 30, 30, 30,
1837     30, 30, 30, 30, 30, 30, 30, 30,
1838     30, 30, 30, 30, 30, 30, 30, 30,
1839     30, 30, 30, 30, 30, 30, 30, 0,
1840 };
1841
1842 static const Q_UINT8 ui_34[] = {
1843     19, 0, 0, 0, 0, 0, 0, 0,
1844     0, 0, 0, 0, 0, 0, 0, 0,
1845     0, 0, 0, 0, 0, 0, 0, 0,
1846     0, 0, 0, 0, 0, 0, 0, 0,
1847     0, 0, 0, 0, 0, 0, 0, 0,
1848     0, 0, 0, 0, 0, 0, 0, 0,
1849     0, 0, 0, 0, 0, 0, 0, 0,
1850     0, 0, 0, 0, 0, 0, 0, 0,
1851     0, 0, 0, 0, 0, 0, 0, 0,
1852     0, 0, 0, 0, 0, 0, 0, 0,
1853     0, 0, 0, 0, 0, 0, 0, 0,
1854     0, 0, 0, 0, 0, 0, 0, 0,
1855     0, 0, 0, 0, 0, 0, 0, 0,
1856     0, 0, 0, 0, 0, 0, 0, 0,
1857     0, 0, 0, 0, 0, 0, 0, 0,
1858     0, 0, 0, 0, 0, 0, 0, 0,
1859     0, 0, 0, 0, 0, 0, 0, 0,
1860     0, 0, 0, 0, 0, 0, 0, 0,
1861     0, 0, 0, 0, 0, 0, 0, 0,
1862     0, 0, 0, 0, 0, 0, 0, 0,
1863     0, 0, 0, 0, 0, 0, 0, 0,
1864     0, 0, 0, 0, 0, 0, 0, 0,
1865     0, 0, 0, 0, 0, 0, 0, 0,
1866     0, 0, 0, 0, 0, 0, 0, 0,
1867     0, 0, 0, 0, 0, 0, 0, 0,
1868     0, 0, 0, 0, 0, 0, 0, 0,
1869     0, 0, 0, 0, 0, 0, 0, 0,
1870     0, 0, 0, 0, 0, 0, 0, 0,
1871     0, 0, 0, 0, 0, 0, 0, 0,
1872     0, 0, 0, 0, 0, 0, 0, 0,
1873     0, 0, 0, 0, 0, 0, 0, 0,
1874     0, 0, 0, 0, 0, 0, 0, 0,
1875 };
1876
1877 static const Q_UINT8 ui_4D[] = {
1878     0, 0, 0, 0, 0, 0, 0, 0,
1879     0, 0, 0, 0, 0, 0, 0, 0,
1880     0, 0, 0, 0, 0, 0, 0, 0,
1881     0, 0, 0, 0, 0, 0, 0, 0,
1882     0, 0, 0, 0, 0, 0, 0, 0,
1883     0, 0, 0, 0, 0, 0, 0, 0,
1884     0, 0, 0, 0, 0, 0, 0, 0,
1885     0, 0, 0, 0, 0, 0, 0, 0,
1886     0, 0, 0, 0, 0, 0, 0, 0,
1887     0, 0, 0, 0, 0, 0, 0, 0,
1888     0, 0, 0, 0, 0, 0, 0, 0,
1889     0, 0, 0, 0, 0, 0, 0, 0,
1890     0, 0, 0, 0, 0, 0, 0, 0,
1891     0, 0, 0, 0, 0, 0, 0, 0,
1892     0, 0, 0, 0, 0, 0, 0, 0,
1893     0, 0, 0, 0, 0, 0, 0, 0,
1894     0, 0, 0, 0, 0, 0, 0, 0,
1895     0, 0, 0, 0, 0, 0, 0, 0,
1896     0, 0, 0, 0, 0, 0, 0, 0,
1897     0, 0, 0, 0, 0, 0, 0, 0,
1898     0, 0, 0, 0, 0, 0, 0, 0,
1899     0, 0, 0, 0, 0, 0, 0, 0,
1900     0, 0, 0, 0, 0, 19, 0, 0,
1901     0, 0, 0, 0, 0, 0, 0, 0,
1902     0, 0, 0, 0, 0, 0, 0, 0,
1903     0, 0, 0, 0, 0, 0, 0, 0,
1904     0, 0, 0, 0, 0, 0, 0, 0,
1905     0, 0, 0, 0, 0, 0, 0, 0,
1906     0, 0, 0, 0, 0, 0, 0, 0,
1907     0, 0, 0, 0, 0, 0, 0, 0,
1908     0, 0, 0, 0, 0, 0, 0, 0,
1909     0, 0, 0, 0, 0, 0, 0, 0,
1910 };
1911
1912 static const Q_UINT8 ui_9F[] = {
1913     0, 0, 0, 0, 0, 0, 0, 0,
1914     0, 0, 0, 0, 0, 0, 0, 0,
1915     0, 0, 0, 0, 0, 0, 0, 0,
1916     0, 0, 0, 0, 0, 0, 0, 0,
1917     0, 0, 0, 0, 0, 0, 0, 0,
1918     0, 0, 0, 0, 0, 0, 0, 0,
1919     0, 0, 0, 0, 0, 0, 0, 0,
1920     0, 0, 0, 0, 0, 0, 0, 0,
1921     0, 0, 0, 0, 0, 0, 0, 0,
1922     0, 0, 0, 0, 0, 0, 0, 0,
1923     0, 0, 0, 0, 0, 0, 0, 0,
1924     0, 0, 0, 0, 0, 0, 0, 0,
1925     0, 0, 0, 0, 0, 0, 0, 0,
1926     0, 0, 0, 0, 0, 0, 0, 0,
1927     0, 0, 0, 0, 0, 0, 0, 0,
1928     0, 0, 0, 0, 0, 0, 0, 0,
1929     0, 0, 0, 0, 0, 0, 0, 0,
1930     0, 0, 0, 0, 0, 0, 0, 0,
1931     0, 0, 0, 0, 0, 0, 0, 0,
1932     0, 0, 0, 0, 0, 0, 0, 0,
1933     0, 0, 0, 0, 0, 19, 0, 0,
1934     0, 0, 0, 0, 0, 0, 0, 0,
1935     0, 0, 0, 0, 0, 0, 0, 0,
1936     0, 0, 0, 0, 0, 0, 0, 0,
1937     0, 0, 0, 0, 0, 0, 0, 0,
1938     0, 0, 0, 0, 0, 0, 0, 0,
1939     0, 0, 0, 0, 0, 0, 0, 0,
1940     0, 0, 0, 0, 0, 0, 0, 0,
1941     0, 0, 0, 0, 0, 0, 0, 0,
1942     0, 0, 0, 0, 0, 0, 0, 0,
1943     0, 0, 0, 0, 0, 0, 0, 0,
1944     0, 0, 0, 0, 0, 0, 0, 0,
1945 };
1946
1947 static const Q_UINT8 ui_A4[] = {
1948     19, 19, 19, 19, 19, 19, 19, 19,
1949     19, 19, 19, 19, 19, 19, 19, 19,
1950     19, 19, 19, 19, 19, 19, 19, 19,
1951     19, 19, 19, 19, 19, 19, 19, 19,
1952     19, 19, 19, 19, 19, 19, 19, 19,
1953     19, 19, 19, 19, 19, 19, 19, 19,
1954     19, 19, 19, 19, 19, 19, 19, 19,
1955     19, 19, 19, 19, 19, 19, 19, 19,
1956     19, 19, 19, 19, 19, 19, 19, 19,
1957     19, 19, 19, 19, 19, 19, 19, 19,
1958     19, 19, 19, 19, 19, 19, 19, 19,
1959     19, 19, 19, 19, 19, 19, 19, 19,
1960     19, 19, 19, 19, 19, 19, 19, 19,
1961     19, 19, 19, 19, 19, 19, 19, 19,
1962     19, 19, 19, 19, 19, 19, 19, 19,
1963     19, 19, 19, 19, 19, 19, 19, 19,
1964     19, 19, 19, 19, 19, 19, 19, 19,
1965     19, 19, 19, 19, 19, 0, 0, 0,
1966     30, 30, 30, 30, 30, 30, 30, 30,
1967     30, 30, 30, 30, 30, 30, 30, 30,
1968     30, 30, 0, 0, 30, 30, 30, 30,
1969     30, 30, 30, 30, 30, 30, 30, 30,
1970     30, 30, 30, 30, 0, 30, 30, 30,
1971     30, 30, 30, 30, 30, 30, 30, 30,
1972     30, 0, 30, 30, 30, 0, 30, 0,
1973     0, 0, 0, 0, 0, 0, 0, 0,
1974     0, 0, 0, 0, 0, 0, 0, 0,
1975     0, 0, 0, 0, 0, 0, 0, 0,
1976     0, 0, 0, 0, 0, 0, 0, 0,
1977     0, 0, 0, 0, 0, 0, 0, 0,
1978     0, 0, 0, 0, 0, 0, 0, 0,
1979     0, 0, 0, 0, 0, 0, 0, 0,
1980 };
1981
1982 static const Q_UINT8 ui_D7[] = {
1983     0, 0, 0, 0, 0, 0, 0, 0,
1984     0, 0, 0, 0, 0, 0, 0, 0,
1985     0, 0, 0, 0, 0, 0, 0, 0,
1986     0, 0, 0, 0, 0, 0, 0, 0,
1987     0, 0, 0, 0, 0, 0, 0, 0,
1988     0, 0, 0, 0, 0, 0, 0, 0,
1989     0, 0, 0, 0, 0, 0, 0, 0,
1990     0, 0, 0, 0, 0, 0, 0, 0,
1991     0, 0, 0, 0, 0, 0, 0, 0,
1992     0, 0, 0, 0, 0, 0, 0, 0,
1993     0, 0, 0, 0, 0, 0, 0, 0,
1994     0, 0, 0, 0, 0, 0, 0, 0,
1995     0, 0, 0, 0, 0, 0, 0, 0,
1996     0, 0, 0, 0, 0, 0, 0, 0,
1997     0, 0, 0, 0, 0, 0, 0, 0,
1998     0, 0, 0, 0, 0, 0, 0, 0,
1999     0, 0, 0, 0, 0, 0, 0, 0,
2000     0, 0, 0, 0, 0, 0, 0, 0,
2001     0, 0, 0, 0, 0, 0, 0, 0,
2002     0, 0, 0, 0, 0, 0, 0, 0,
2003     0, 0, 0, 19, 0, 0, 0, 0,
2004     0, 0, 0, 0, 0, 0, 0, 0,
2005     0, 0, 0, 0, 0, 0, 0, 0,
2006     0, 0, 0, 0, 0, 0, 0, 0,
2007     0, 0, 0, 0, 0, 0, 0, 0,
2008     0, 0, 0, 0, 0, 0, 0, 0,
2009     0, 0, 0, 0, 0, 0, 0, 0,
2010     0, 0, 0, 0, 0, 0, 0, 0,
2011     0, 0, 0, 0, 0, 0, 0, 0,
2012     0, 0, 0, 0, 0, 0, 0, 0,
2013     0, 0, 0, 0, 0, 0, 0, 0,
2014     0, 0, 0, 0, 0, 0, 0, 0,
2015 };
2016
2017 static const Q_UINT8 ui_D8[] = {
2018     12, 0, 0, 0, 0, 0, 0, 0,
2019     0, 0, 0, 0, 0, 0, 0, 0,
2020     0, 0, 0, 0, 0, 0, 0, 0,
2021     0, 0, 0, 0, 0, 0, 0, 0,
2022     0, 0, 0, 0, 0, 0, 0, 0,
2023     0, 0, 0, 0, 0, 0, 0, 0,
2024     0, 0, 0, 0, 0, 0, 0, 0,
2025     0, 0, 0, 0, 0, 0, 0, 0,
2026     0, 0, 0, 0, 0, 0, 0, 0,
2027     0, 0, 0, 0, 0, 0, 0, 0,
2028     0, 0, 0, 0, 0, 0, 0, 0,
2029     0, 0, 0, 0, 0, 0, 0, 0,
2030     0, 0, 0, 0, 0, 0, 0, 0,
2031     0, 0, 0, 0, 0, 0, 0, 0,
2032     0, 0, 0, 0, 0, 0, 0, 0,
2033     0, 0, 0, 0, 0, 0, 0, 0,
2034     0, 0, 0, 0, 0, 0, 0, 0,
2035     0, 0, 0, 0, 0, 0, 0, 0,
2036     0, 0, 0, 0, 0, 0, 0, 0,
2037     0, 0, 0, 0, 0, 0, 0, 0,
2038     0, 0, 0, 0, 0, 0, 0, 0,
2039     0, 0, 0, 0, 0, 0, 0, 0,
2040     0, 0, 0, 0, 0, 0, 0, 0,
2041     0, 0, 0, 0, 0, 0, 0, 0,
2042     0, 0, 0, 0, 0, 0, 0, 0,
2043     0, 0, 0, 0, 0, 0, 0, 0,
2044     0, 0, 0, 0, 0, 0, 0, 0,
2045     0, 0, 0, 0, 0, 0, 0, 0,
2046     0, 0, 0, 0, 0, 0, 0, 0,
2047     0, 0, 0, 0, 0, 0, 0, 0,
2048     0, 0, 0, 0, 0, 0, 0, 0,
2049     0, 0, 0, 0, 0, 0, 0, 0,
2050 };
2051
2052 static const Q_UINT8 ui_DB[] = {
2053     0, 0, 0, 0, 0, 0, 0, 0,
2054     0, 0, 0, 0, 0, 0, 0, 0,
2055     0, 0, 0, 0, 0, 0, 0, 0,
2056     0, 0, 0, 0, 0, 0, 0, 0,
2057     0, 0, 0, 0, 0, 0, 0, 0,
2058     0, 0, 0, 0, 0, 0, 0, 0,
2059     0, 0, 0, 0, 0, 0, 0, 0,
2060     0, 0, 0, 0, 0, 0, 0, 0,
2061     0, 0, 0, 0, 0, 0, 0, 0,
2062     0, 0, 0, 0, 0, 0, 0, 0,
2063     0, 0, 0, 0, 0, 0, 0, 0,
2064     0, 0, 0, 0, 0, 0, 0, 0,
2065     0, 0, 0, 0, 0, 0, 0, 0,
2066     0, 0, 0, 0, 0, 0, 0, 0,
2067     0, 0, 0, 0, 0, 0, 0, 0,
2068     0, 0, 0, 0, 0, 0, 0, 12,
2069     12, 0, 0, 0, 0, 0, 0, 0,
2070     0, 0, 0, 0, 0, 0, 0, 0,
2071     0, 0, 0, 0, 0, 0, 0, 0,
2072     0, 0, 0, 0, 0, 0, 0, 0,
2073     0, 0, 0, 0, 0, 0, 0, 0,
2074     0, 0, 0, 0, 0, 0, 0, 0,
2075     0, 0, 0, 0, 0, 0, 0, 0,
2076     0, 0, 0, 0, 0, 0, 0, 0,
2077     0, 0, 0, 0, 0, 0, 0, 0,
2078     0, 0, 0, 0, 0, 0, 0, 0,
2079     0, 0, 0, 0, 0, 0, 0, 0,
2080     0, 0, 0, 0, 0, 0, 0, 0,
2081     0, 0, 0, 0, 0, 0, 0, 0,
2082     0, 0, 0, 0, 0, 0, 0, 0,
2083     0, 0, 0, 0, 0, 0, 0, 0,
2084     0, 0, 0, 0, 0, 0, 0, 12,
2085 };
2086
2087 static const Q_UINT8 ui_DF[] = {
2088     0, 0, 0, 0, 0, 0, 0, 0,
2089     0, 0, 0, 0, 0, 0, 0, 0,
2090     0, 0, 0, 0, 0, 0, 0, 0,
2091     0, 0, 0, 0, 0, 0, 0, 0,
2092     0, 0, 0, 0, 0, 0, 0, 0,
2093     0, 0, 0, 0, 0, 0, 0, 0,
2094     0, 0, 0, 0, 0, 0, 0, 0,
2095     0, 0, 0, 0, 0, 0, 0, 0,
2096     0, 0, 0, 0, 0, 0, 0, 0,
2097     0, 0, 0, 0, 0, 0, 0, 0,
2098     0, 0, 0, 0, 0, 0, 0, 0,
2099     0, 0, 0, 0, 0, 0, 0, 0,
2100     0, 0, 0, 0, 0, 0, 0, 0,
2101     0, 0, 0, 0, 0, 0, 0, 0,
2102     0, 0, 0, 0, 0, 0, 0, 0,
2103     0, 0, 0, 0, 0, 0, 0, 0,
2104     0, 0, 0, 0, 0, 0, 0, 0,
2105     0, 0, 0, 0, 0, 0, 0, 0,
2106     0, 0, 0, 0, 0, 0, 0, 0,
2107     0, 0, 0, 0, 0, 0, 0, 0,
2108     0, 0, 0, 0, 0, 0, 0, 0,
2109     0, 0, 0, 0, 0, 0, 0, 0,
2110     0, 0, 0, 0, 0, 0, 0, 0,
2111     0, 0, 0, 0, 0, 0, 0, 0,
2112     0, 0, 0, 0, 0, 0, 0, 0,
2113     0, 0, 0, 0, 0, 0, 0, 0,
2114     0, 0, 0, 0, 0, 0, 0, 0,
2115     0, 0, 0, 0, 0, 0, 0, 0,
2116     0, 0, 0, 0, 0, 0, 0, 0,
2117     0, 0, 0, 0, 0, 0, 0, 0,
2118     0, 0, 0, 0, 0, 0, 0, 0,
2119     0, 0, 0, 0, 0, 0, 0, 12,
2120 };
2121
2122 static const Q_UINT8 ui_E0[] = {
2123     13, 0, 0, 0, 0, 0, 0, 0,
2124     0, 0, 0, 0, 0, 0, 0, 0,
2125     0, 0, 0, 0, 0, 0, 0, 0,
2126     0, 0, 0, 0, 0, 0, 0, 0,
2127     0, 0, 0, 0, 0, 0, 0, 0,
2128     0, 0, 0, 0, 0, 0, 0, 0,
2129     0, 0, 0, 0, 0, 0, 0, 0,
2130     0, 0, 0, 0, 0, 0, 0, 0,
2131     0, 0, 0, 0, 0, 0, 0, 0,
2132     0, 0, 0, 0, 0, 0, 0, 0,
2133     0, 0, 0, 0, 0, 0, 0, 0,
2134     0, 0, 0, 0, 0, 0, 0, 0,
2135     0, 0, 0, 0, 0, 0, 0, 0,
2136     0, 0, 0, 0, 0, 0, 0, 0,
2137     0, 0, 0, 0, 0, 0, 0, 0,
2138     0, 0, 0, 0, 0, 0, 0, 0,
2139     0, 0, 0, 0, 0, 0, 0, 0,
2140     0, 0, 0, 0, 0, 0, 0, 0,
2141     0, 0, 0, 0, 0, 0, 0, 0,
2142     0, 0, 0, 0, 0, 0, 0, 0,
2143     0, 0, 0, 0, 0, 0, 0, 0,
2144     0, 0, 0, 0, 0, 0, 0, 0,
2145     0, 0, 0, 0, 0, 0, 0, 0,
2146     0, 0, 0, 0, 0, 0, 0, 0,
2147     0, 0, 0, 0, 0, 0, 0, 0,
2148     0, 0, 0, 0, 0, 0, 0, 0,
2149     0, 0, 0, 0, 0, 0, 0, 0,
2150     0, 0, 0, 0, 0, 0, 0, 0,
2151     0, 0, 0, 0, 0, 0, 0, 0,
2152     0, 0, 0, 0, 0, 0, 0, 0,
2153     0, 0, 0, 0, 0, 0, 0, 0,
2154     0, 0, 0, 0, 0, 0, 0, 0,
2155 };
2156
2157 static const Q_UINT8 ui_F8[] = {
2158     0, 0, 0, 0, 0, 0, 0, 0,
2159     0, 0, 0, 0, 0, 0, 0, 0,
2160     0, 0, 0, 0, 0, 0, 0, 0,
2161     0, 0, 0, 0, 0, 0, 0, 0,
2162     0, 0, 0, 0, 0, 0, 0, 0,
2163     0, 0, 0, 0, 0, 0, 0, 0,
2164     0, 0, 0, 0, 0, 0, 0, 0,
2165     0, 0, 0, 0, 0, 0, 0, 0,
2166     0, 0, 0, 0, 0, 0, 0, 0,
2167     0, 0, 0, 0, 0, 0, 0, 0,
2168     0, 0, 0, 0, 0, 0, 0, 0,
2169     0, 0, 0, 0, 0, 0, 0, 0,
2170     0, 0, 0, 0, 0, 0, 0, 0,
2171     0, 0, 0, 0, 0, 0, 0, 0,
2172     0, 0, 0, 0, 0, 0, 0, 0,
2173     0, 0, 0, 0, 0, 0, 0, 0,
2174     0, 0, 0, 0, 0, 0, 0, 0,
2175     0, 0, 0, 0, 0, 0, 0, 0,
2176     0, 0, 0, 0, 0, 0, 0, 0,
2177     0, 0, 0, 0, 0, 0, 0, 0,
2178     0, 0, 0, 0, 0, 0, 0, 0,
2179     0, 0, 0, 0, 0, 0, 0, 0,
2180     0, 0, 0, 0, 0, 0, 0, 0,
2181     0, 0, 0, 0, 0, 0, 0, 0,
2182     0, 0, 0, 0, 0, 0, 0, 0,
2183     0, 0, 0, 0, 0, 0, 0, 0,
2184     0, 0, 0, 0, 0, 0, 0, 0,
2185     0, 0, 0, 0, 0, 0, 0, 0,
2186     0, 0, 0, 0, 0, 0, 0, 0,
2187     0, 0, 0, 0, 0, 0, 0, 0,
2188     0, 0, 0, 0, 0, 0, 0, 0,
2189     0, 0, 0, 0, 0, 0, 0, 13,
2190 };
2191
2192 static const Q_UINT8 ui_FA[] = {
2193     19, 19, 19, 19, 19, 19, 19, 19,
2194     19, 19, 19, 19, 19, 19, 19, 19,
2195     19, 19, 19, 19, 19, 19, 19, 19,
2196     19, 19, 19, 19, 19, 19, 19, 19,
2197     19, 19, 19, 19, 19, 19, 19, 19,
2198     19, 19, 19, 19, 19, 19, 0, 0,
2199     0, 0, 0, 0, 0, 0, 0, 0,
2200     0, 0, 0, 0, 0, 0, 0, 0,
2201     0, 0, 0, 0, 0, 0, 0, 0,
2202     0, 0, 0, 0, 0, 0, 0, 0,
2203     0, 0, 0, 0, 0, 0, 0, 0,
2204     0, 0, 0, 0, 0, 0, 0, 0,
2205     0, 0, 0, 0, 0, 0, 0, 0,
2206     0, 0, 0, 0, 0, 0, 0, 0,
2207     0, 0, 0, 0, 0, 0, 0, 0,
2208     0, 0, 0, 0, 0, 0, 0, 0,
2209     0, 0, 0, 0, 0, 0, 0, 0,
2210     0, 0, 0, 0, 0, 0, 0, 0,
2211     0, 0, 0, 0, 0, 0, 0, 0,
2212     0, 0, 0, 0, 0, 0, 0, 0,
2213     0, 0, 0, 0, 0, 0, 0, 0,
2214     0, 0, 0, 0, 0, 0, 0, 0,
2215     0, 0, 0, 0, 0, 0, 0, 0,
2216     0, 0, 0, 0, 0, 0, 0, 0,
2217     0, 0, 0, 0, 0, 0, 0, 0,
2218     0, 0, 0, 0, 0, 0, 0, 0,
2219     0, 0, 0, 0, 0, 0, 0, 0,
2220     0, 0, 0, 0, 0, 0, 0, 0,
2221     0, 0, 0, 0, 0, 0, 0, 0,
2222     0, 0, 0, 0, 0, 0, 0, 0,
2223     0, 0, 0, 0, 0, 0, 0, 0,
2224     0, 0, 0, 0, 0, 0, 0, 0,
2225 };
2226
2227 static const Q_UINT8 ui_FB[] = {
2228     16, 16, 16, 16, 16, 16, 16, 0,
2229     0, 0, 0, 0, 0, 0, 0, 0,
2230     0, 0, 0, 16, 16, 16, 16, 16,
2231     0, 0, 0, 0, 0, 19, 1, 19,
2232     19, 19, 19, 19, 19, 19, 19, 19,
2233     19, 27, 19, 19, 19, 19, 19, 19,
2234     19, 19, 19, 19, 19, 19, 19, 0,
2235     19, 19, 19, 19, 19, 0, 19, 0,
2236     19, 19, 0, 19, 19, 0, 19, 19,
2237     19, 19, 19, 19, 19, 19, 19, 19,
2238     19, 19, 19, 19, 19, 19, 19, 19,
2239     19, 19, 19, 19, 19, 19, 19, 19,
2240     19, 19, 19, 19, 19, 19, 19, 19,
2241     19, 19, 19, 19, 19, 19, 19, 19,
2242     19, 19, 19, 19, 19, 19, 19, 19,
2243     19, 19, 19, 19, 19, 19, 19, 19,
2244     19, 19, 19, 19, 19, 19, 19, 19,
2245     19, 19, 19, 19, 19, 19, 19, 19,
2246     19, 19, 19, 19, 19, 19, 19, 19,
2247     19, 19, 19, 19, 19, 19, 19, 19,
2248     19, 19, 19, 19, 19, 19, 19, 19,
2249     19, 19, 19, 19, 19, 19, 19, 19,
2250     19, 19, 0, 0, 0, 0, 0, 0,
2251     0, 0, 0, 0, 0, 0, 0, 0,
2252     0, 0, 0, 0, 0, 0, 0, 0,
2253     0, 0, 0, 0, 0, 0, 0, 0,
2254     0, 0, 0, 19, 19, 19, 19, 19,
2255     19, 19, 19, 19, 19, 19, 19, 19,
2256     19, 19, 19, 19, 19, 19, 19, 19,
2257     19, 19, 19, 19, 19, 19, 19, 19,
2258     19, 19, 19, 19, 19, 19, 19, 19,
2259     19, 19, 19, 19, 19, 19, 19, 19,
2260 };
2261
2262 static const Q_UINT8 ui_FD[] = {
2263     19, 19, 19, 19, 19, 19, 19, 19,
2264     19, 19, 19, 19, 19, 19, 19, 19,
2265     19, 19, 19, 19, 19, 19, 19, 19,
2266     19, 19, 19, 19, 19, 19, 19, 19,
2267     19, 19, 19, 19, 19, 19, 19, 19,
2268     19, 19, 19, 19, 19, 19, 19, 19,
2269     19, 19, 19, 19, 19, 19, 19, 19,
2270     19, 19, 19, 19, 19, 19, 22, 23,
2271     0, 0, 0, 0, 0, 0, 0, 0,
2272     0, 0, 0, 0, 0, 0, 0, 0,
2273     19, 19, 19, 19, 19, 19, 19, 19,
2274     19, 19, 19, 19, 19, 19, 19, 19,
2275     19, 19, 19, 19, 19, 19, 19, 19,
2276     19, 19, 19, 19, 19, 19, 19, 19,
2277     19, 19, 19, 19, 19, 19, 19, 19,
2278     19, 19, 19, 19, 19, 19, 19, 19,
2279     19, 19, 19, 19, 19, 19, 19, 19,
2280     19, 19, 19, 19, 19, 19, 19, 19,
2281     0, 0, 19, 19, 19, 19, 19, 19,
2282     19, 19, 19, 19, 19, 19, 19, 19,
2283     19, 19, 19, 19, 19, 19, 19, 19,
2284     19, 19, 19, 19, 19, 19, 19, 19,
2285     19, 19, 19, 19, 19, 19, 19, 19,
2286     19, 19, 19, 19, 19, 19, 19, 19,
2287     19, 19, 19, 19, 19, 19, 19, 19,
2288     0, 0, 0, 0, 0, 0, 0, 0,
2289     0, 0, 0, 0, 0, 0, 0, 0,
2290     0, 0, 0, 0, 0, 0, 0, 0,
2291     0, 0, 0, 0, 0, 0, 0, 0,
2292     0, 0, 0, 0, 0, 0, 0, 0,
2293     19, 19, 19, 19, 19, 19, 19, 19,
2294     19, 19, 19, 19, 0, 0, 0, 0,
2295 };
2296
2297 static const Q_UINT8 ui_FE[] = {
2298     0, 0, 0, 0, 0, 0, 0, 0,
2299     0, 0, 0, 0, 0, 0, 0, 0,
2300     0, 0, 0, 0, 0, 0, 0, 0,
2301     0, 0, 0, 0, 0, 0, 0, 0,
2302     1, 1, 1, 1, 0, 0, 0, 0,
2303     0, 0, 0, 0, 0, 0, 0, 0,
2304     26, 21, 21, 20, 20, 22, 23, 22,
2305     23, 22, 23, 22, 23, 22, 23, 22,
2306     23, 22, 23, 22, 23, 0, 0, 0,
2307     0, 26, 26, 26, 26, 20, 20, 20,
2308     26, 26, 26, 0, 26, 26, 26, 26,
2309     21, 22, 23, 22, 23, 22, 23, 26,
2310     26, 26, 27, 21, 27, 27, 27, 0,
2311     26, 28, 26, 26, 0, 0, 0, 0,
2312     19, 19, 19, 0, 19, 0, 19, 19,
2313     19, 19, 19, 19, 19, 19, 19, 19,
2314     19, 19, 19, 19, 19, 19, 19, 19,
2315     19, 19, 19, 19, 19, 19, 19, 19,
2316     19, 19, 19, 19, 19, 19, 19, 19,
2317     19, 19, 19, 19, 19, 19, 19, 19,
2318     19, 19, 19, 19, 19, 19, 19, 19,
2319     19, 19, 19, 19, 19, 19, 19, 19,
2320     19, 19, 19, 19, 19, 19, 19, 19,
2321     19, 19, 19, 19, 19, 19, 19, 19,
2322     19, 19, 19, 19, 19, 19, 19, 19,
2323     19, 19, 19, 19, 19, 19, 19, 19,
2324     19, 19, 19, 19, 19, 19, 19, 19,
2325     19, 19, 19, 19, 19, 19, 19, 19,
2326     19, 19, 19, 19, 19, 19, 19, 19,
2327     19, 19, 19, 19, 19, 19, 19, 19,
2328     19, 19, 19, 19, 19, 19, 19, 19,
2329     19, 19, 19, 19, 19, 0, 0, 11,
2330 };
2331
2332 static const Q_UINT8 ui_FF[] = {
2333     0, 26, 26, 26, 28, 26, 26, 26,
2334     22, 23, 26, 27, 26, 21, 26, 26,
2335     4, 4, 4, 4, 4, 4, 4, 4,
2336     4, 4, 26, 26, 27, 27, 27, 26,
2337     26, 15, 15, 15, 15, 15, 15, 15,
2338     15, 15, 15, 15, 15, 15, 15, 15,
2339     15, 15, 15, 15, 15, 15, 15, 15,
2340     15, 15, 15, 22, 26, 23, 29, 20,
2341     29, 16, 16, 16, 16, 16, 16, 16,
2342     16, 16, 16, 16, 16, 16, 16, 16,
2343     16, 16, 16, 16, 16, 16, 16, 16,
2344     16, 16, 16, 22, 27, 23, 27, 0,
2345     0, 26, 22, 23, 26, 20, 19, 19,
2346     19, 19, 19, 19, 19, 19, 19, 19,
2347     18, 19, 19, 19, 19, 19, 19, 19,
2348     19, 19, 19, 19, 19, 19, 19, 19,
2349     19, 19, 19, 19, 19, 19, 19, 19,
2350     19, 19, 19, 19, 19, 19, 19, 19,
2351     19, 19, 19, 19, 19, 19, 19, 19,
2352     19, 19, 19, 19, 19, 19, 18, 18,
2353     19, 19, 19, 19, 19, 19, 19, 19,
2354     19, 19, 19, 19, 19, 19, 19, 19,
2355     19, 19, 19, 19, 19, 19, 19, 19,
2356     19, 19, 19, 19, 19, 19, 19, 0,
2357     0, 0, 19, 19, 19, 19, 19, 19,
2358     0, 0, 19, 19, 19, 19, 19, 19,
2359     0, 0, 19, 19, 19, 19, 19, 19,
2360     0, 0, 19, 19, 19, 0, 0, 0,
2361     28, 28, 27, 29, 30, 28, 28, 0,
2362     30, 27, 27, 27, 27, 30, 30, 0,
2363     0, 0, 0, 0, 0, 0, 0, 0,
2364     0, 11, 11, 11, 30, 30, 0, 0,
2365 };
2366
2367 static const Q_UINT8 * const unicode_info[256] = {
2368     ui_00, ui_01, ui_02, ui_03, ui_04, ui_05, ui_06, ui_07,
2369     ui_08, ui_09, ui_0A, ui_0B, ui_0C, ui_0D, ui_0E, ui_0F,
2370     ui_10, ui_11, ui_12, ui_13, ui_14, ui_15, ui_16, ui_17,
2371     ui_18, ui_08, ui_08, ui_08, ui_08, ui_08, ui_1E, ui_1F,
2372     ui_20, ui_21, ui_22, ui_23, ui_24, ui_25, ui_26, ui_27,
2373     ui_28, ui_08, ui_08, ui_08, ui_08, ui_08, ui_2E, ui_2F,
2374     ui_30, ui_31, ui_32, ui_33, ui_34, ui_08, ui_08, ui_08,
2375     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2376     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2377     ui_08, ui_08, ui_08, ui_08, ui_08, ui_4D, ui_34, ui_08,
2378     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2379     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2380     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2381     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2382     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2383     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2384     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2385     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2386     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2387     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_9F,
2388     ui_15, ui_15, ui_15, ui_15, ui_A4, ui_08, ui_08, ui_08,
2389     ui_08, ui_08, ui_08, ui_08, ui_34, ui_08, ui_08, ui_08,
2390     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2391     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2392     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2393     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2394     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_D7,
2395     ui_D8, ui_08, ui_08, ui_DB, ui_D8, ui_08, ui_08, ui_DF,
2396     ui_E0, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2397     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2398     ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08, ui_08,
2399     ui_F8, ui_15, ui_FA, ui_FB, ui_15, ui_FD, ui_FE, ui_FF,
2400 };
2401 // 15616 bytes
2402
2403 static const Q_UINT16 decomposition_map [] = {
2404     0,
2405     3, 0x00A0, 0x0020, 0,
2406     16, 0x00A8, 0x0020, 0x0308, 0,
2407     9, 0x00AA, 0x0061, 0,
2408     16, 0x00AF, 0x0020, 0x0304, 0,
2409     9, 0x00B2, 0x0032, 0,
2410     9, 0x00B3, 0x0033, 0,
2411     16, 0x00B4, 0x0020, 0x0301, 0,
2412     16, 0x00B5, 0x03BC, 0,
2413     16, 0x00B8, 0x0020, 0x0327, 0,
2414     9, 0x00B9, 0x0031, 0,
2415     9, 0x00BA, 0x006F, 0,
2416     17, 0x00BC, 0x0031, 0x2044, 0x0034, 0,
2417     17, 0x00BD, 0x0031, 0x2044, 0x0032, 0,
2418     17, 0x00BE, 0x0033, 0x2044, 0x0034, 0,
2419     1, 0x00C0, 0x0041, 0x0300, 0,
2420     1, 0x00C1, 0x0041, 0x0301, 0,
2421     1, 0x00C2, 0x0041, 0x0302, 0,
2422     1, 0x00C3, 0x0041, 0x0303, 0,
2423     1, 0x00C4, 0x0041, 0x0308, 0,
2424     1, 0x00C5, 0x0041, 0x030A, 0,
2425     1, 0x00C7, 0x0043, 0x0327, 0,
2426     1, 0x00C8, 0x0045, 0x0300, 0,
2427     1, 0x00C9, 0x0045, 0x0301, 0,
2428     1, 0x00CA, 0x0045, 0x0302, 0,
2429     1, 0x00CB, 0x0045, 0x0308, 0,
2430     1, 0x00CC, 0x0049, 0x0300, 0,
2431     1, 0x00CD, 0x0049, 0x0301, 0,
2432     1, 0x00CE, 0x0049, 0x0302, 0,
2433     1, 0x00CF, 0x0049, 0x0308, 0,
2434     1, 0x00D1, 0x004E, 0x0303, 0,
2435     1, 0x00D2, 0x004F, 0x0300, 0,
2436     1, 0x00D3, 0x004F, 0x0301, 0,
2437     1, 0x00D4, 0x004F, 0x0302, 0,
2438     1, 0x00D5, 0x004F, 0x0303, 0,
2439     1, 0x00D6, 0x004F, 0x0308, 0,
2440     1, 0x00D9, 0x0055, 0x0300, 0,
2441     1, 0x00DA, 0x0055, 0x0301, 0,
2442     1, 0x00DB, 0x0055, 0x0302, 0,
2443     1, 0x00DC, 0x0055, 0x0308, 0,
2444     1, 0x00DD, 0x0059, 0x0301, 0,
2445     1, 0x00E0, 0x0061, 0x0300, 0,
2446     1, 0x00E1, 0x0061, 0x0301, 0,
2447     1, 0x00E2, 0x0061, 0x0302, 0,
2448     1, 0x00E3, 0x0061, 0x0303, 0,
2449     1, 0x00E4, 0x0061, 0x0308, 0,
2450     1, 0x00E5, 0x0061, 0x030A, 0,
2451     1, 0x00E7, 0x0063, 0x0327, 0,
2452     1, 0x00E8, 0x0065, 0x0300, 0,
2453     1, 0x00E9, 0x0065, 0x0301, 0,
2454     1, 0x00EA, 0x0065, 0x0302, 0,
2455     1, 0x00EB, 0x0065, 0x0308, 0,
2456     1, 0x00EC, 0x0069, 0x0300, 0,
2457     1, 0x00ED, 0x0069, 0x0301, 0,
2458     1, 0x00EE, 0x0069, 0x0302, 0,
2459     1, 0x00EF, 0x0069, 0x0308, 0,
2460     1, 0x00F1, 0x006E, 0x0303, 0,
2461     1, 0x00F2, 0x006F, 0x0300, 0,
2462     1, 0x00F3, 0x006F, 0x0301, 0,
2463     1, 0x00F4, 0x006F, 0x0302, 0,
2464     1, 0x00F5, 0x006F, 0x0303, 0,
2465     1, 0x00F6, 0x006F, 0x0308, 0,
2466     1, 0x00F9, 0x0075, 0x0300, 0,
2467     1, 0x00FA, 0x0075, 0x0301, 0,
2468     1, 0x00FB, 0x0075, 0x0302, 0,
2469     1, 0x00FC, 0x0075, 0x0308, 0,
2470     1, 0x00FD, 0x0079, 0x0301, 0,
2471     1, 0x00FF, 0x0079, 0x0308, 0,
2472     1, 0x0100, 0x0041, 0x0304, 0,
2473     1, 0x0101, 0x0061, 0x0304, 0,
2474     1, 0x0102, 0x0041, 0x0306, 0,
2475     1, 0x0103, 0x0061, 0x0306, 0,
2476     1, 0x0104, 0x0041, 0x0328, 0,
2477     1, 0x0105, 0x0061, 0x0328, 0,
2478     1, 0x0106, 0x0043, 0x0301, 0,
2479     1, 0x0107, 0x0063, 0x0301, 0,
2480     1, 0x0108, 0x0043, 0x0302, 0,
2481     1, 0x0109, 0x0063, 0x0302, 0,
2482     1, 0x010A, 0x0043, 0x0307, 0,
2483     1, 0x010B, 0x0063, 0x0307, 0,
2484     1, 0x010C, 0x0043, 0x030C, 0,
2485     1, 0x010D, 0x0063, 0x030C, 0,
2486     1, 0x010E, 0x0044, 0x030C, 0,
2487     1, 0x010F, 0x0064, 0x030C, 0,
2488     1, 0x0112, 0x0045, 0x0304, 0,
2489     1, 0x0113, 0x0065, 0x0304, 0,
2490     1, 0x0114, 0x0045, 0x0306, 0,
2491     1, 0x0115, 0x0065, 0x0306, 0,
2492     1, 0x0116, 0x0045, 0x0307, 0,
2493     1, 0x0117, 0x0065, 0x0307, 0,
2494     1, 0x0118, 0x0045, 0x0328, 0,
2495     1, 0x0119, 0x0065, 0x0328, 0,
2496     1, 0x011A, 0x0045, 0x030C, 0,
2497     1, 0x011B, 0x0065, 0x030C, 0,
2498     1, 0x011C, 0x0047, 0x0302, 0,
2499     1, 0x011D, 0x0067, 0x0302, 0,
2500     1, 0x011E, 0x0047, 0x0306, 0,
2501     1, 0x011F, 0x0067, 0x0306, 0,
2502     1, 0x0120, 0x0047, 0x0307, 0,
2503     1, 0x0121, 0x0067, 0x0307, 0,
2504     1, 0x0122, 0x0047, 0x0327, 0,
2505     1, 0x0123, 0x0067, 0x0327, 0,
2506     1, 0x0124, 0x0048, 0x0302, 0,
2507     1, 0x0125, 0x0068, 0x0302, 0,
2508     1, 0x0128, 0x0049, 0x0303, 0,
2509     1, 0x0129, 0x0069, 0x0303, 0,
2510     1, 0x012A, 0x0049, 0x0304, 0,
2511     1, 0x012B, 0x0069, 0x0304, 0,
2512     1, 0x012C, 0x0049, 0x0306, 0,
2513     1, 0x012D, 0x0069, 0x0306, 0,
2514     1, 0x012E, 0x0049, 0x0328, 0,
2515     1, 0x012F, 0x0069, 0x0328, 0,
2516     1, 0x0130, 0x0049, 0x0307, 0,
2517     16, 0x0132, 0x0049, 0x004A, 0,
2518     16, 0x0133, 0x0069, 0x006A, 0,
2519     1, 0x0134, 0x004A, 0x0302, 0,
2520     1, 0x0135, 0x006A, 0x0302, 0,
2521     1, 0x0136, 0x004B, 0x0327, 0,
2522     1, 0x0137, 0x006B, 0x0327, 0,
2523     1, 0x0139, 0x004C, 0x0301, 0,
2524     1, 0x013A, 0x006C, 0x0301, 0,
2525     1, 0x013B, 0x004C, 0x0327, 0,
2526     1, 0x013C, 0x006C, 0x0327, 0,
2527     1, 0x013D, 0x004C, 0x030C, 0,
2528     1, 0x013E, 0x006C, 0x030C, 0,
2529     16, 0x013F, 0x004C, 0x00B7, 0,
2530     16, 0x0140, 0x006C, 0x00B7, 0,
2531     1, 0x0143, 0x004E, 0x0301, 0,
2532     1, 0x0144, 0x006E, 0x0301, 0,
2533     1, 0x0145, 0x004E, 0x0327, 0,
2534     1, 0x0146, 0x006E, 0x0327, 0,
2535     1, 0x0147, 0x004E, 0x030C, 0,
2536     1, 0x0148, 0x006E, 0x030C, 0,
2537     16, 0x0149, 0x02BC, 0x006E, 0,
2538     1, 0x014C, 0x004F, 0x0304, 0,
2539     1, 0x014D, 0x006F, 0x0304, 0,
2540     1, 0x014E, 0x004F, 0x0306, 0,
2541     1, 0x014F, 0x006F, 0x0306, 0,
2542     1, 0x0150, 0x004F, 0x030B, 0,
2543     1, 0x0151, 0x006F, 0x030B, 0,
2544     1, 0x0154, 0x0052, 0x0301, 0,
2545     1, 0x0155, 0x0072, 0x0301, 0,
2546     1, 0x0156, 0x0052, 0x0327, 0,
2547     1, 0x0157, 0x0072, 0x0327, 0,
2548     1, 0x0158, 0x0052, 0x030C, 0,
2549     1, 0x0159, 0x0072, 0x030C, 0,
2550     1, 0x015A, 0x0053, 0x0301, 0,
2551     1, 0x015B, 0x0073, 0x0301, 0,
2552     1, 0x015C, 0x0053, 0x0302, 0,
2553     1, 0x015D, 0x0073, 0x0302, 0,
2554     1, 0x015E, 0x0053, 0x0327, 0,
2555     1, 0x015F, 0x0073, 0x0327, 0,
2556     1, 0x0160, 0x0053, 0x030C, 0,
2557     1, 0x0161, 0x0073, 0x030C, 0,
2558     1, 0x0162, 0x0054, 0x0327, 0,
2559     1, 0x0163, 0x0074, 0x0327, 0,
2560     1, 0x0164, 0x0054, 0x030C, 0,
2561     1, 0x0165, 0x0074, 0x030C, 0,
2562     1, 0x0168, 0x0055, 0x0303, 0,
2563     1, 0x0169, 0x0075, 0x0303, 0,
2564     1, 0x016A, 0x0055, 0x0304, 0,
2565     1, 0x016B, 0x0075, 0x0304, 0,
2566     1, 0x016C, 0x0055, 0x0306, 0,
2567     1, 0x016D, 0x0075, 0x0306, 0,
2568     1, 0x016E, 0x0055, 0x030A, 0,
2569     1, 0x016F, 0x0075, 0x030A, 0,
2570     1, 0x0170, 0x0055, 0x030B, 0,
2571     1, 0x0171, 0x0075, 0x030B, 0,
2572     1, 0x0172, 0x0055, 0x0328, 0,
2573     1, 0x0173, 0x0075, 0x0328, 0,
2574     1, 0x0174, 0x0057, 0x0302, 0,
2575     1, 0x0175, 0x0077, 0x0302, 0,
2576     1, 0x0176, 0x0059, 0x0302, 0,
2577     1, 0x0177, 0x0079, 0x0302, 0,
2578     1, 0x0178, 0x0059, 0x0308, 0,
2579     1, 0x0179, 0x005A, 0x0301, 0,
2580     1, 0x017A, 0x007A, 0x0301, 0,
2581     1, 0x017B, 0x005A, 0x0307, 0,
2582     1, 0x017C, 0x007A, 0x0307, 0,
2583     1, 0x017D, 0x005A, 0x030C, 0,
2584     1, 0x017E, 0x007A, 0x030C, 0,
2585     16, 0x017F, 0x0073, 0,
2586     1, 0x01A0, 0x004F, 0x031B, 0,
2587     1, 0x01A1, 0x006F, 0x031B, 0,
2588     1, 0x01AF, 0x0055, 0x031B, 0,
2589     1, 0x01B0, 0x0075, 0x031B, 0,
2590     16, 0x01C4, 0x0044, 0x017D, 0,
2591     16, 0x01C5, 0x0044, 0x017E, 0,
2592     16, 0x01C6, 0x0064, 0x017E, 0,
2593     16, 0x01C7, 0x004C, 0x004A, 0,
2594     16, 0x01C8, 0x004C, 0x006A, 0,
2595     16, 0x01C9, 0x006C, 0x006A, 0,
2596     16, 0x01CA, 0x004E, 0x004A, 0,
2597     16, 0x01CB, 0x004E, 0x006A, 0,
2598     16, 0x01CC, 0x006E, 0x006A, 0,
2599     1, 0x01CD, 0x0041, 0x030C, 0,
2600     1, 0x01CE, 0x0061, 0x030C, 0,
2601     1, 0x01CF, 0x0049, 0x030C, 0,
2602     1, 0x01D0, 0x0069, 0x030C, 0,
2603     1, 0x01D1, 0x004F, 0x030C, 0,
2604     1, 0x01D2, 0x006F, 0x030C, 0,
2605     1, 0x01D3, 0x0055, 0x030C, 0,
2606     1, 0x01D4, 0x0075, 0x030C, 0,
2607     1, 0x01D5, 0x00DC, 0x0304, 0,
2608     1, 0x01D6, 0x00FC, 0x0304, 0,
2609     1, 0x01D7, 0x00DC, 0x0301, 0,
2610     1, 0x01D8, 0x00FC, 0x0301, 0,
2611     1, 0x01D9, 0x00DC, 0x030C, 0,
2612     1, 0x01DA, 0x00FC, 0x030C, 0,
2613     1, 0x01DB, 0x00DC, 0x0300, 0,
2614     1, 0x01DC, 0x00FC, 0x0300, 0,
2615     1, 0x01DE, 0x00C4, 0x0304, 0,
2616     1, 0x01DF, 0x00E4, 0x0304, 0,
2617     1, 0x01E0, 0x0226, 0x0304, 0,
2618     1, 0x01E1, 0x0227, 0x0304, 0,
2619     1, 0x01E2, 0x00C6, 0x0304, 0,
2620     1, 0x01E3, 0x00E6, 0x0304, 0,
2621     1, 0x01E6, 0x0047, 0x030C, 0,
2622     1, 0x01E7, 0x0067, 0x030C, 0,
2623     1, 0x01E8, 0x004B, 0x030C, 0,
2624     1, 0x01E9, 0x006B, 0x030C, 0,
2625     1, 0x01EA, 0x004F, 0x0328, 0,
2626     1, 0x01EB, 0x006F, 0x0328, 0,
2627     1, 0x01EC, 0x01EA, 0x0304, 0,
2628     1, 0x01ED, 0x01EB, 0x0304, 0,
2629     1, 0x01EE, 0x01B7, 0x030C, 0,
2630     1, 0x01EF, 0x0292, 0x030C, 0,
2631     1, 0x01F0, 0x006A, 0x030C, 0,
2632     16, 0x01F1, 0x0044, 0x005A, 0,
2633     16, 0x01F2, 0x0044, 0x007A, 0,
2634     16, 0x01F3, 0x0064, 0x007A, 0,
2635     1, 0x01F4, 0x0047, 0x0301, 0,
2636     1, 0x01F5, 0x0067, 0x0301, 0,
2637     1, 0x01F8, 0x004E, 0x0300, 0,
2638     1, 0x01F9, 0x006E, 0x0300, 0,
2639     1, 0x01FA, 0x00C5, 0x0301, 0,
2640     1, 0x01FB, 0x00E5, 0x0301, 0,
2641     1, 0x01FC, 0x00C6, 0x0301, 0,
2642     1, 0x01FD, 0x00E6, 0x0301, 0,
2643     1, 0x01FE, 0x00D8, 0x0301, 0,
2644     1, 0x01FF, 0x00F8, 0x0301, 0,
2645     1, 0x0200, 0x0041, 0x030F, 0,
2646     1, 0x0201, 0x0061, 0x030F, 0,
2647     1, 0x0202, 0x0041, 0x0311, 0,
2648     1, 0x0203, 0x0061, 0x0311, 0,
2649     1, 0x0204, 0x0045, 0x030F, 0,
2650     1, 0x0205, 0x0065, 0x030F, 0,
2651     1, 0x0206, 0x0045, 0x0311, 0,
2652     1, 0x0207, 0x0065, 0x0311, 0,
2653     1, 0x0208, 0x0049, 0x030F, 0,
2654     1, 0x0209, 0x0069, 0x030F, 0,
2655     1, 0x020A, 0x0049, 0x0311, 0,
2656     1, 0x020B, 0x0069, 0x0311, 0,
2657     1, 0x020C, 0x004F, 0x030F, 0,
2658     1, 0x020D, 0x006F, 0x030F, 0,
2659     1, 0x020E, 0x004F, 0x0311, 0,
2660     1, 0x020F, 0x006F, 0x0311, 0,
2661     1, 0x0210, 0x0052, 0x030F, 0,
2662     1, 0x0211, 0x0072, 0x030F, 0,
2663     1, 0x0212, 0x0052, 0x0311, 0,
2664     1, 0x0213, 0x0072, 0x0311, 0,
2665     1, 0x0214, 0x0055, 0x030F, 0,
2666     1, 0x0215, 0x0075, 0x030F, 0,
2667     1, 0x0216, 0x0055, 0x0311, 0,
2668     1, 0x0217, 0x0075, 0x0311, 0,
2669     1, 0x0218, 0x0053, 0x0326, 0,
2670     1, 0x0219, 0x0073, 0x0326, 0,
2671     1, 0x021A, 0x0054, 0x0326, 0,
2672     1, 0x021B, 0x0074, 0x0326, 0,
2673     1, 0x021E, 0x0048, 0x030C, 0,
2674     1, 0x021F, 0x0068, 0x030C, 0,
2675     1, 0x0226, 0x0041, 0x0307, 0,
2676     1, 0x0227, 0x0061, 0x0307, 0,
2677     1, 0x0228, 0x0045, 0x0327, 0,
2678     1, 0x0229, 0x0065, 0x0327, 0,
2679     1, 0x022A, 0x00D6, 0x0304, 0,
2680     1, 0x022B, 0x00F6, 0x0304, 0,
2681     1, 0x022C, 0x00D5, 0x0304, 0,
2682     1, 0x022D, 0x00F5, 0x0304, 0,
2683     1, 0x022E, 0x004F, 0x0307, 0,
2684     1, 0x022F, 0x006F, 0x0307, 0,
2685     1, 0x0230, 0x022E, 0x0304, 0,
2686     1, 0x0231, 0x022F, 0x0304, 0,
2687     1, 0x0232, 0x0059, 0x0304, 0,
2688     1, 0x0233, 0x0079, 0x0304, 0,
2689     9, 0x02B0, 0x0068, 0,
2690     9, 0x02B1, 0x0266, 0,
2691     9, 0x02B2, 0x006A, 0,
2692     9, 0x02B3, 0x0072, 0,
2693     9, 0x02B4, 0x0279, 0,
2694     9, 0x02B5, 0x027B, 0,
2695     9, 0x02B6, 0x0281, 0,
2696     9, 0x02B7, 0x0077, 0,
2697     9, 0x02B8, 0x0079, 0,
2698     16, 0x02D8, 0x0020, 0x0306, 0,
2699     16, 0x02D9, 0x0020, 0x0307, 0,
2700     16, 0x02DA, 0x0020, 0x030A, 0,
2701     16, 0x02DB, 0x0020, 0x0328, 0,
2702     16, 0x02DC, 0x0020, 0x0303, 0,
2703     16, 0x02DD, 0x0020, 0x030B, 0,
2704     9, 0x02E0, 0x0263, 0,
2705     9, 0x02E1, 0x006C, 0,
2706     9, 0x02E2, 0x0073, 0,
2707     9, 0x02E3, 0x0078, 0,
2708     9, 0x02E4, 0x0295, 0,
2709     1, 0x0340, 0x0300, 0,
2710     1, 0x0341, 0x0301, 0,
2711     1, 0x0343, 0x0313, 0,
2712     1, 0x0344, 0x0308, 0x0301, 0,
2713     1, 0x0374, 0x02B9, 0,
2714     16, 0x037A, 0x0020, 0x0345, 0,
2715     1, 0x037E, 0x003B, 0,
2716     16, 0x0384, 0x0020, 0x0301, 0,
2717     1, 0x0385, 0x00A8, 0x0301, 0,
2718     1, 0x0386, 0x0391, 0x0301, 0,
2719     1, 0x0387, 0x00B7, 0,
2720     1, 0x0388, 0x0395, 0x0301, 0,
2721     1, 0x0389, 0x0397, 0x0301, 0,
2722     1, 0x038A, 0x0399, 0x0301, 0,
2723     1, 0x038C, 0x039F, 0x0301, 0,
2724     1, 0x038E, 0x03A5, 0x0301, 0,
2725     1, 0x038F, 0x03A9, 0x0301, 0,
2726     1, 0x0390, 0x03CA, 0x0301, 0,
2727     1, 0x03AA, 0x0399, 0x0308, 0,
2728     1, 0x03AB, 0x03A5, 0x0308, 0,
2729     1, 0x03AC, 0x03B1, 0x0301, 0,
2730     1, 0x03AD, 0x03B5, 0x0301, 0,
2731     1, 0x03AE, 0x03B7, 0x0301, 0,
2732     1, 0x03AF, 0x03B9, 0x0301, 0,
2733     1, 0x03B0, 0x03CB, 0x0301, 0,
2734     1, 0x03CA, 0x03B9, 0x0308, 0,
2735     1, 0x03CB, 0x03C5, 0x0308, 0,
2736     1, 0x03CC, 0x03BF, 0x0301, 0,
2737     1, 0x03CD, 0x03C5, 0x0301, 0,
2738     1, 0x03CE, 0x03C9, 0x0301, 0,
2739     16, 0x03D0, 0x03B2, 0,
2740     16, 0x03D1, 0x03B8, 0,
2741     16, 0x03D2, 0x03A5, 0,
2742     1, 0x03D3, 0x03D2, 0x0301, 0,
2743     1, 0x03D4, 0x03D2, 0x0308, 0,
2744     16, 0x03D5, 0x03C6, 0,
2745     16, 0x03D6, 0x03C0, 0,
2746     16, 0x03F0, 0x03BA, 0,
2747     16, 0x03F1, 0x03C1, 0,
2748     16, 0x03F2, 0x03C2, 0,
2749     1, 0x0400, 0x0415, 0x0300, 0,
2750     1, 0x0401, 0x0415, 0x0308, 0,
2751     1, 0x0403, 0x0413, 0x0301, 0,
2752     1, 0x0407, 0x0406, 0x0308, 0,
2753     1, 0x040C, 0x041A, 0x0301, 0,
2754     1, 0x040D, 0x0418, 0x0300, 0,
2755     1, 0x040E, 0x0423, 0x0306, 0,
2756     1, 0x0419, 0x0418, 0x0306, 0,
2757     1, 0x0439, 0x0438, 0x0306, 0,
2758     1, 0x0450, 0x0435, 0x0300, 0,
2759     1, 0x0451, 0x0435, 0x0308, 0,
2760     1, 0x0453, 0x0433, 0x0301, 0,
2761     1, 0x0457, 0x0456, 0x0308, 0,
2762     1, 0x045C, 0x043A, 0x0301, 0,
2763     1, 0x045D, 0x0438, 0x0300, 0,
2764     1, 0x045E, 0x0443, 0x0306, 0,
2765     1, 0x0476, 0x0474, 0x030F, 0,
2766     1, 0x0477, 0x0475, 0x030F, 0,
2767     1, 0x04C1, 0x0416, 0x0306, 0,
2768     1, 0x04C2, 0x0436, 0x0306, 0,
2769     1, 0x04D0, 0x0410, 0x0306, 0,
2770     1, 0x04D1, 0x0430, 0x0306, 0,
2771     1, 0x04D2, 0x0410, 0x0308, 0,
2772     1, 0x04D3, 0x0430, 0x0308, 0,
2773     1, 0x04D6, 0x0415, 0x0306, 0,
2774     1, 0x04D7, 0x0435, 0x0306, 0,
2775     1, 0x04DA, 0x04D8, 0x0308, 0,
2776     1, 0x04DB, 0x04D9, 0x0308, 0,
2777     1, 0x04DC, 0x0416, 0x0308, 0,
2778     1, 0x04DD, 0x0436, 0x0308, 0,
2779     1, 0x04DE, 0x0417, 0x0308, 0,
2780     1, 0x04DF, 0x0437, 0x0308, 0,
2781     1, 0x04E2, 0x0418, 0x0304, 0,
2782     1, 0x04E3, 0x0438, 0x0304, 0,
2783     1, 0x04E4, 0x0418, 0x0308, 0,
2784     1, 0x04E5, 0x0438, 0x0308, 0,
2785     1, 0x04E6, 0x041E, 0x0308, 0,
2786     1, 0x04E7, 0x043E, 0x0308, 0,
2787     1, 0x04EA, 0x04E8, 0x0308, 0,
2788     1, 0x04EB, 0x04E9, 0x0308, 0,
2789     1, 0x04EC, 0x042D, 0x0308, 0,
2790     1, 0x04ED, 0x044D, 0x0308, 0,
2791     1, 0x04EE, 0x0423, 0x0304, 0,
2792     1, 0x04EF, 0x0443, 0x0304, 0,
2793     1, 0x04F0, 0x0423, 0x0308, 0,
2794     1, 0x04F1, 0x0443, 0x0308, 0,
2795     1, 0x04F2, 0x0423, 0x030B, 0,
2796     1, 0x04F3, 0x0443, 0x030B, 0,
2797     1, 0x04F4, 0x0427, 0x0308, 0,
2798     1, 0x04F5, 0x0447, 0x0308, 0,
2799     1, 0x04F8, 0x042B, 0x0308, 0,
2800     1, 0x04F9, 0x044B, 0x0308, 0,
2801     16, 0x0587, 0x0565, 0x0582, 0,
2802     1, 0x0622, 0x0627, 0x0653, 0,
2803     1, 0x0623, 0x0627, 0x0654, 0,
2804     1, 0x0624, 0x0648, 0x0654, 0,
2805     1, 0x0625, 0x0627, 0x0655, 0,
2806     1, 0x0626, 0x064A, 0x0654, 0,
2807     16, 0x0675, 0x0627, 0x0674, 0,
2808     16, 0x0676, 0x0648, 0x0674, 0,
2809     16, 0x0677, 0x06C7, 0x0674, 0,
2810     16, 0x0678, 0x064A, 0x0674, 0,
2811     1, 0x06C0, 0x06D5, 0x0654, 0,
2812     1, 0x06C2, 0x06C1, 0x0654, 0,
2813     1, 0x06D3, 0x06D2, 0x0654, 0,
2814     1, 0x0929, 0x0928, 0x093C, 0,
2815     1, 0x0931, 0x0930, 0x093C, 0,
2816     1, 0x0934, 0x0933, 0x093C, 0,
2817     1, 0x0958, 0x0915, 0x093C, 0,
2818     1, 0x0959, 0x0916, 0x093C, 0,
2819     1, 0x095A, 0x0917, 0x093C, 0,
2820     1, 0x095B, 0x091C, 0x093C, 0,
2821     1, 0x095C, 0x0921, 0x093C, 0,
2822     1, 0x095D, 0x0922, 0x093C, 0,
2823     1, 0x095E, 0x092B, 0x093C, 0,
2824     1, 0x095F, 0x092F, 0x093C, 0,
2825     1, 0x09CB, 0x09C7, 0x09BE, 0,
2826     1, 0x09CC, 0x09C7, 0x09D7, 0,
2827     1, 0x09DC, 0x09A1, 0x09BC, 0,
2828     1, 0x09DD, 0x09A2, 0x09BC, 0,
2829     1, 0x09DF, 0x09AF, 0x09BC, 0,
2830     1, 0x0A33, 0x0A32, 0x0A3C, 0,
2831     1, 0x0A36, 0x0A38, 0x0A3C, 0,
2832     1, 0x0A59, 0x0A16, 0x0A3C, 0,
2833     1, 0x0A5A, 0x0A17, 0x0A3C, 0,
2834     1, 0x0A5B, 0x0A1C, 0x0A3C, 0,
2835     1, 0x0A5E, 0x0A2B, 0x0A3C, 0,
2836     1, 0x0B48, 0x0B47, 0x0B56, 0,
2837     1, 0x0B4B, 0x0B47, 0x0B3E, 0,
2838     1, 0x0B4C, 0x0B47, 0x0B57, 0,
2839     1, 0x0B5C, 0x0B21, 0x0B3C, 0,
2840     1, 0x0B5D, 0x0B22, 0x0B3C, 0,
2841     1, 0x0B94, 0x0B92, 0x0BD7, 0,
2842     1, 0x0BCA, 0x0BC6, 0x0BBE, 0,
2843     1, 0x0BCB, 0x0BC7, 0x0BBE, 0,
2844     1, 0x0BCC, 0x0BC6, 0x0BD7, 0,
2845     1, 0x0C48, 0x0C46, 0x0C56, 0,
2846     1, 0x0CC0, 0x0CBF, 0x0CD5, 0,
2847     1, 0x0CC7, 0x0CC6, 0x0CD5, 0,
2848     1, 0x0CC8, 0x0CC6, 0x0CD6, 0,
2849     1, 0x0CCA, 0x0CC6, 0x0CC2, 0,
2850     1, 0x0CCB, 0x0CCA, 0x0CD5, 0,
2851     1, 0x0D4A, 0x0D46, 0x0D3E, 0,
2852     1, 0x0D4B, 0x0D47, 0x0D3E, 0,
2853     1, 0x0D4C, 0x0D46, 0x0D57, 0,
2854     1, 0x0DDA, 0x0DD9, 0x0DCA, 0,
2855     1, 0x0DDC, 0x0DD9, 0x0DCF, 0,
2856     1, 0x0DDD, 0x0DDC, 0x0DCA, 0,
2857     1, 0x0DDE, 0x0DD9, 0x0DDF, 0,
2858     16, 0x0E33, 0x0E4D, 0x0E32, 0,
2859     16, 0x0EB3, 0x0ECD, 0x0EB2, 0,
2860     16, 0x0EDC, 0x0EAB, 0x0E99, 0,
2861     16, 0x0EDD, 0x0EAB, 0x0EA1, 0,
2862     3, 0x0F0C, 0x0F0B, 0,
2863     1, 0x0F43, 0x0F42, 0x0FB7, 0,
2864     1, 0x0F4D, 0x0F4C, 0x0FB7, 0,
2865     1, 0x0F52, 0x0F51, 0x0FB7, 0,
2866     1, 0x0F57, 0x0F56, 0x0FB7, 0,
2867     1, 0x0F5C, 0x0F5B, 0x0FB7, 0,
2868     1, 0x0F69, 0x0F40, 0x0FB5, 0,
2869     1, 0x0F73, 0x0F71, 0x0F72, 0,
2870     1, 0x0F75, 0x0F71, 0x0F74, 0,
2871     1, 0x0F76, 0x0FB2, 0x0F80, 0,
2872     16, 0x0F77, 0x0FB2, 0x0F81, 0,
2873     1, 0x0F78, 0x0FB3, 0x0F80, 0,
2874     16, 0x0F79, 0x0FB3, 0x0F81, 0,
2875     1, 0x0F81, 0x0F71, 0x0F80, 0,
2876     1, 0x0F93, 0x0F92, 0x0FB7, 0,
2877     1, 0x0F9D, 0x0F9C, 0x0FB7, 0,
2878     1, 0x0FA2, 0x0FA1, 0x0FB7, 0,
2879     1, 0x0FA7, 0x0FA6, 0x0FB7, 0,
2880     1, 0x0FAC, 0x0FAB, 0x0FB7, 0,
2881     1, 0x0FB9, 0x0F90, 0x0FB5, 0,
2882     1, 0x1026, 0x1025, 0x102E, 0,
2883     1, 0x1E00, 0x0041, 0x0325, 0,
2884     1, 0x1E01, 0x0061, 0x0325, 0,
2885     1, 0x1E02, 0x0042, 0x0307, 0,
2886     1, 0x1E03, 0x0062, 0x0307, 0,
2887     1, 0x1E04, 0x0042, 0x0323, 0,
2888     1, 0x1E05, 0x0062, 0x0323, 0,
2889     1, 0x1E06, 0x0042, 0x0331, 0,
2890     1, 0x1E07, 0x0062, 0x0331, 0,
2891     1, 0x1E08, 0x00C7, 0x0301, 0,
2892     1, 0x1E09, 0x00E7, 0x0301, 0,
2893     1, 0x1E0A, 0x0044, 0x0307, 0,
2894     1, 0x1E0B, 0x0064, 0x0307, 0,
2895     1, 0x1E0C, 0x0044, 0x0323, 0,
2896     1, 0x1E0D, 0x0064, 0x0323, 0,
2897     1, 0x1E0E, 0x0044, 0x0331, 0,
2898     1, 0x1E0F, 0x0064, 0x0331, 0,
2899     1, 0x1E10, 0x0044, 0x0327, 0,
2900     1, 0x1E11, 0x0064, 0x0327, 0,
2901     1, 0x1E12, 0x0044, 0x032D, 0,
2902     1, 0x1E13, 0x0064, 0x032D, 0,
2903     1, 0x1E14, 0x0112, 0x0300, 0,
2904     1, 0x1E15, 0x0113, 0x0300, 0,
2905     1, 0x1E16, 0x0112, 0x0301, 0,
2906     1, 0x1E17, 0x0113, 0x0301, 0,
2907     1, 0x1E18, 0x0045, 0x032D, 0,
2908     1, 0x1E19, 0x0065, 0x032D, 0,
2909     1, 0x1E1A, 0x0045, 0x0330, 0,
2910     1, 0x1E1B, 0x0065, 0x0330, 0,
2911     1, 0x1E1C, 0x0228, 0x0306, 0,
2912     1, 0x1E1D, 0x0229, 0x0306, 0,
2913     1, 0x1E1E, 0x0046, 0x0307, 0,
2914     1, 0x1E1F, 0x0066, 0x0307, 0,
2915     1, 0x1E20, 0x0047, 0x0304, 0,
2916     1, 0x1E21, 0x0067, 0x0304, 0,
2917     1, 0x1E22, 0x0048, 0x0307, 0,
2918     1, 0x1E23, 0x0068, 0x0307, 0,
2919     1, 0x1E24, 0x0048, 0x0323, 0,
2920     1, 0x1E25, 0x0068, 0x0323, 0,
2921     1, 0x1E26, 0x0048, 0x0308, 0,
2922     1, 0x1E27, 0x0068, 0x0308, 0,
2923     1, 0x1E28, 0x0048, 0x0327, 0,
2924     1, 0x1E29, 0x0068, 0x0327, 0,
2925     1, 0x1E2A, 0x0048, 0x032E, 0,
2926     1, 0x1E2B, 0x0068, 0x032E, 0,
2927     1, 0x1E2C, 0x0049, 0x0330, 0,
2928     1, 0x1E2D, 0x0069, 0x0330, 0,
2929     1, 0x1E2E, 0x00CF, 0x0301, 0,
2930     1, 0x1E2F, 0x00EF, 0x0301, 0,
2931     1, 0x1E30, 0x004B, 0x0301, 0,
2932     1, 0x1E31, 0x006B, 0x0301, 0,
2933     1, 0x1E32, 0x004B, 0x0323, 0,
2934     1, 0x1E33, 0x006B, 0x0323, 0,
2935     1, 0x1E34, 0x004B, 0x0331, 0,
2936     1, 0x1E35, 0x006B, 0x0331, 0,
2937     1, 0x1E36, 0x004C, 0x0323, 0,
2938     1, 0x1E37, 0x006C, 0x0323, 0,
2939     1, 0x1E38, 0x1E36, 0x0304, 0,
2940     1, 0x1E39, 0x1E37, 0x0304, 0,
2941     1, 0x1E3A, 0x004C, 0x0331, 0,
2942     1, 0x1E3B, 0x006C, 0x0331, 0,
2943     1, 0x1E3C, 0x004C, 0x032D, 0,
2944     1, 0x1E3D, 0x006C, 0x032D, 0,
2945     1, 0x1E3E, 0x004D, 0x0301, 0,
2946     1, 0x1E3F, 0x006D, 0x0301, 0,
2947     1, 0x1E40, 0x004D, 0x0307, 0,
2948     1, 0x1E41, 0x006D, 0x0307, 0,
2949     1, 0x1E42, 0x004D, 0x0323, 0,
2950     1, 0x1E43, 0x006D, 0x0323, 0,
2951     1, 0x1E44, 0x004E, 0x0307, 0,
2952     1, 0x1E45, 0x006E, 0x0307, 0,
2953     1, 0x1E46, 0x004E, 0x0323, 0,
2954     1, 0x1E47, 0x006E, 0x0323, 0,
2955     1, 0x1E48, 0x004E, 0x0331, 0,
2956     1, 0x1E49, 0x006E, 0x0331, 0,
2957     1, 0x1E4A, 0x004E, 0x032D, 0,
2958     1, 0x1E4B, 0x006E, 0x032D, 0,
2959     1, 0x1E4C, 0x00D5, 0x0301, 0,
2960     1, 0x1E4D, 0x00F5, 0x0301, 0,
2961     1, 0x1E4E, 0x00D5, 0x0308, 0,
2962     1, 0x1E4F, 0x00F5, 0x0308, 0,
2963     1, 0x1E50, 0x014C, 0x0300, 0,
2964     1, 0x1E51, 0x014D, 0x0300, 0,
2965     1, 0x1E52, 0x014C, 0x0301, 0,
2966     1, 0x1E53, 0x014D, 0x0301, 0,
2967     1, 0x1E54, 0x0050, 0x0301, 0,
2968     1, 0x1E55, 0x0070, 0x0301, 0,
2969     1, 0x1E56, 0x0050, 0x0307, 0,
2970     1, 0x1E57, 0x0070, 0x0307, 0,
2971     1, 0x1E58, 0x0052, 0x0307, 0,
2972     1, 0x1E59, 0x0072, 0x0307, 0,
2973     1, 0x1E5A, 0x0052, 0x0323, 0,
2974     1, 0x1E5B, 0x0072, 0x0323, 0,
2975     1, 0x1E5C, 0x1E5A, 0x0304, 0,
2976     1, 0x1E5D, 0x1E5B, 0x0304, 0,
2977     1, 0x1E5E, 0x0052, 0x0331, 0,
2978     1, 0x1E5F, 0x0072, 0x0331, 0,
2979     1, 0x1E60, 0x0053, 0x0307, 0,
2980     1, 0x1E61, 0x0073, 0x0307, 0,
2981     1, 0x1E62, 0x0053, 0x0323, 0,
2982     1, 0x1E63, 0x0073, 0x0323, 0,
2983     1, 0x1E64, 0x015A, 0x0307, 0,
2984     1, 0x1E65, 0x015B, 0x0307, 0,
2985     1, 0x1E66, 0x0160, 0x0307, 0,
2986     1, 0x1E67, 0x0161, 0x0307, 0,
2987     1, 0x1E68, 0x1E62, 0x0307, 0,
2988     1, 0x1E69, 0x1E63, 0x0307, 0,
2989     1, 0x1E6A, 0x0054, 0x0307, 0,
2990     1, 0x1E6B, 0x0074, 0x0307, 0,
2991     1, 0x1E6C, 0x0054, 0x0323, 0,
2992     1, 0x1E6D, 0x0074, 0x0323, 0,
2993     1, 0x1E6E, 0x0054, 0x0331, 0,
2994     1, 0x1E6F, 0x0074, 0x0331, 0,
2995     1, 0x1E70, 0x0054, 0x032D, 0,
2996     1, 0x1E71, 0x0074, 0x032D, 0,
2997     1, 0x1E72, 0x0055, 0x0324, 0,
2998     1, 0x1E73, 0x0075, 0x0324, 0,
2999     1, 0x1E74, 0x0055, 0x0330, 0,
3000     1, 0x1E75, 0x0075, 0x0330, 0,
3001     1, 0x1E76, 0x0055, 0x032D, 0,
3002     1, 0x1E77, 0x0075, 0x032D, 0,
3003     1, 0x1E78, 0x0168, 0x0301, 0,
3004     1, 0x1E79, 0x0169, 0x0301, 0,
3005     1, 0x1E7A, 0x016A, 0x0308, 0,
3006     1, 0x1E7B, 0x016B, 0x0308, 0,
3007     1, 0x1E7C, 0x0056, 0x0303, 0,
3008     1, 0x1E7D, 0x0076, 0x0303, 0,
3009     1, 0x1E7E, 0x0056, 0x0323, 0,
3010     1, 0x1E7F, 0x0076, 0x0323, 0,
3011     1, 0x1E80, 0x0057, 0x0300, 0,
3012     1, 0x1E81, 0x0077, 0x0300, 0,
3013     1, 0x1E82, 0x0057, 0x0301, 0,
3014     1, 0x1E83, 0x0077, 0x0301, 0,
3015     1, 0x1E84, 0x0057, 0x0308, 0,
3016     1, 0x1E85, 0x0077, 0x0308, 0,
3017     1, 0x1E86, 0x0057, 0x0307, 0,
3018     1, 0x1E87, 0x0077, 0x0307, 0,
3019     1, 0x1E88, 0x0057, 0x0323, 0,
3020     1, 0x1E89, 0x0077, 0x0323, 0,
3021     1, 0x1E8A, 0x0058, 0x0307, 0,
3022     1, 0x1E8B, 0x0078, 0x0307, 0,
3023     1, 0x1E8C, 0x0058, 0x0308, 0,
3024     1, 0x1E8D, 0x0078, 0x0308, 0,
3025     1, 0x1E8E, 0x0059, 0x0307, 0,
3026     1, 0x1E8F, 0x0079, 0x0307, 0,
3027     1, 0x1E90, 0x005A, 0x0302, 0,
3028     1, 0x1E91, 0x007A, 0x0302, 0,
3029     1, 0x1E92, 0x005A, 0x0323, 0,
3030     1, 0x1E93, 0x007A, 0x0323, 0,
3031     1, 0x1E94, 0x005A, 0x0331, 0,
3032     1, 0x1E95, 0x007A, 0x0331, 0,
3033     1, 0x1E96, 0x0068, 0x0331, 0,
3034     1, 0x1E97, 0x0074, 0x0308, 0,
3035     1, 0x1E98, 0x0077, 0x030A, 0,
3036     1, 0x1E99, 0x0079, 0x030A, 0,
3037     16, 0x1E9A, 0x0061, 0x02BE, 0,
3038     1, 0x1E9B, 0x017F, 0x0307, 0,
3039     1, 0x1EA0, 0x0041, 0x0323, 0,
3040     1, 0x1EA1, 0x0061, 0x0323, 0,
3041     1, 0x1EA2, 0x0041, 0x0309, 0,
3042     1, 0x1EA3, 0x0061, 0x0309, 0,
3043     1, 0x1EA4, 0x00C2, 0x0301, 0,
3044     1, 0x1EA5, 0x00E2, 0x0301, 0,
3045     1, 0x1EA6, 0x00C2, 0x0300, 0,
3046     1, 0x1EA7, 0x00E2, 0x0300, 0,
3047     1, 0x1EA8, 0x00C2, 0x0309, 0,
3048     1, 0x1EA9, 0x00E2, 0x0309, 0,
3049     1, 0x1EAA, 0x00C2, 0x0303, 0,
3050     1, 0x1EAB, 0x00E2, 0x0303, 0,
3051     1, 0x1EAC, 0x1EA0, 0x0302, 0,
3052     1, 0x1EAD, 0x1EA1, 0x0302, 0,
3053     1, 0x1EAE, 0x0102, 0x0301, 0,
3054     1, 0x1EAF, 0x0103, 0x0301, 0,
3055     1, 0x1EB0, 0x0102, 0x0300, 0,
3056     1, 0x1EB1, 0x0103, 0x0300, 0,
3057     1, 0x1EB2, 0x0102, 0x0309, 0,
3058     1, 0x1EB3, 0x0103, 0x0309, 0,
3059     1, 0x1EB4, 0x0102, 0x0303, 0,
3060     1, 0x1EB5, 0x0103, 0x0303, 0,
3061     1, 0x1EB6, 0x1EA0, 0x0306, 0,
3062     1, 0x1EB7, 0x1EA1, 0x0306, 0,
3063     1, 0x1EB8, 0x0045, 0x0323, 0,
3064     1, 0x1EB9, 0x0065, 0x0323, 0,
3065     1, 0x1EBA, 0x0045, 0x0309, 0,
3066     1, 0x1EBB, 0x0065, 0x0309, 0,
3067     1, 0x1EBC, 0x0045, 0x0303, 0,
3068     1, 0x1EBD, 0x0065, 0x0303, 0,
3069     1, 0x1EBE, 0x00CA, 0x0301, 0,
3070     1, 0x1EBF, 0x00EA, 0x0301, 0,
3071     1, 0x1EC0, 0x00CA, 0x0300, 0,
3072     1, 0x1EC1, 0x00EA, 0x0300, 0,
3073     1, 0x1EC2, 0x00CA, 0x0309, 0,
3074     1, 0x1EC3, 0x00EA, 0x0309, 0,
3075     1, 0x1EC4, 0x00CA, 0x0303, 0,
3076     1, 0x1EC5, 0x00EA, 0x0303, 0,
3077     1, 0x1EC6, 0x1EB8, 0x0302, 0,
3078     1, 0x1EC7, 0x1EB9, 0x0302, 0,
3079     1, 0x1EC8, 0x0049, 0x0309, 0,
3080     1, 0x1EC9, 0x0069, 0x0309, 0,
3081     1, 0x1ECA, 0x0049, 0x0323, 0,
3082     1, 0x1ECB, 0x0069, 0x0323, 0,
3083     1, 0x1ECC, 0x004F, 0x0323, 0,
3084     1, 0x1ECD, 0x006F, 0x0323, 0,
3085     1, 0x1ECE, 0x004F, 0x0309, 0,
3086     1, 0x1ECF, 0x006F, 0x0309, 0,
3087     1, 0x1ED0, 0x00D4, 0x0301, 0,
3088     1, 0x1ED1, 0x00F4, 0x0301, 0,
3089     1, 0x1ED2, 0x00D4, 0x0300, 0,
3090     1, 0x1ED3, 0x00F4, 0x0300, 0,
3091     1, 0x1ED4, 0x00D4, 0x0309, 0,
3092     1, 0x1ED5, 0x00F4, 0x0309, 0,
3093     1, 0x1ED6, 0x00D4, 0x0303, 0,
3094     1, 0x1ED7, 0x00F4, 0x0303, 0,
3095     1, 0x1ED8, 0x1ECC, 0x0302, 0,
3096     1, 0x1ED9, 0x1ECD, 0x0302, 0,
3097     1, 0x1EDA, 0x01A0, 0x0301, 0,
3098     1, 0x1EDB, 0x01A1, 0x0301, 0,
3099     1, 0x1EDC, 0x01A0, 0x0300, 0,
3100     1, 0x1EDD, 0x01A1, 0x0300, 0,
3101     1, 0x1EDE, 0x01A0, 0x0309, 0,
3102     1, 0x1EDF, 0x01A1, 0x0309, 0,
3103     1, 0x1EE0, 0x01A0, 0x0303, 0,
3104     1, 0x1EE1, 0x01A1, 0x0303, 0,
3105     1, 0x1EE2, 0x01A0, 0x0323, 0,
3106     1, 0x1EE3, 0x01A1, 0x0323, 0,
3107     1, 0x1EE4, 0x0055, 0x0323, 0,
3108     1, 0x1EE5, 0x0075, 0x0323, 0,
3109     1, 0x1EE6, 0x0055, 0x0309, 0,
3110     1, 0x1EE7, 0x0075, 0x0309, 0,
3111     1, 0x1EE8, 0x01AF, 0x0301, 0,
3112     1, 0x1EE9, 0x01B0, 0x0301, 0,
3113     1, 0x1EEA, 0x01AF, 0x0300, 0,
3114     1, 0x1EEB, 0x01B0, 0x0300, 0,
3115     1, 0x1EEC, 0x01AF, 0x0309, 0,
3116     1, 0x1EED, 0x01B0, 0x0309, 0,
3117     1, 0x1EEE, 0x01AF, 0x0303, 0,
3118     1, 0x1EEF, 0x01B0, 0x0303, 0,
3119     1, 0x1EF0, 0x01AF, 0x0323, 0,
3120     1, 0x1EF1, 0x01B0, 0x0323, 0,
3121     1, 0x1EF2, 0x0059, 0x0300, 0,
3122     1, 0x1EF3, 0x0079, 0x0300, 0,
3123     1, 0x1EF4, 0x0059, 0x0323, 0,
3124     1, 0x1EF5, 0x0079, 0x0323, 0,
3125     1, 0x1EF6, 0x0059, 0x0309, 0,
3126     1, 0x1EF7, 0x0079, 0x0309, 0,
3127     1, 0x1EF8, 0x0059, 0x0303, 0,
3128     1, 0x1EF9, 0x0079, 0x0303, 0,
3129     1, 0x1F00, 0x03B1, 0x0313, 0,
3130     1, 0x1F01, 0x03B1, 0x0314, 0,
3131     1, 0x1F02, 0x1F00, 0x0300, 0,
3132     1, 0x1F03, 0x1F01, 0x0300, 0,
3133     1, 0x1F04, 0x1F00, 0x0301, 0,
3134     1, 0x1F05, 0x1F01, 0x0301, 0,
3135     1, 0x1F06, 0x1F00, 0x0342, 0,
3136     1, 0x1F07, 0x1F01, 0x0342, 0,
3137     1, 0x1F08, 0x0391, 0x0313, 0,
3138     1, 0x1F09, 0x0391, 0x0314, 0,
3139     1, 0x1F0A, 0x1F08, 0x0300, 0,
3140     1, 0x1F0B, 0x1F09, 0x0300, 0,
3141     1, 0x1F0C, 0x1F08, 0x0301, 0,
3142     1, 0x1F0D, 0x1F09, 0x0301, 0,
3143     1, 0x1F0E, 0x1F08, 0x0342, 0,
3144     1, 0x1F0F, 0x1F09, 0x0342, 0,
3145     1, 0x1F10, 0x03B5, 0x0313, 0,
3146     1, 0x1F11, 0x03B5, 0x0314, 0,
3147     1, 0x1F12, 0x1F10, 0x0300, 0,
3148     1, 0x1F13, 0x1F11, 0x0300, 0,
3149     1, 0x1F14, 0x1F10, 0x0301, 0,
3150     1, 0x1F15, 0x1F11, 0x0301, 0,
3151     1, 0x1F18, 0x0395, 0x0313, 0,
3152     1, 0x1F19, 0x0395, 0x0314, 0,
3153     1, 0x1F1A, 0x1F18, 0x0300, 0,
3154     1, 0x1F1B, 0x1F19, 0x0300, 0,
3155     1, 0x1F1C, 0x1F18, 0x0301, 0,
3156     1, 0x1F1D, 0x1F19, 0x0301, 0,
3157     1, 0x1F20, 0x03B7, 0x0313, 0,
3158     1, 0x1F21, 0x03B7, 0x0314, 0,
3159     1, 0x1F22, 0x1F20, 0x0300, 0,
3160     1, 0x1F23, 0x1F21, 0x0300, 0,
3161     1, 0x1F24, 0x1F20, 0x0301, 0,
3162     1, 0x1F25, 0x1F21, 0x0301, 0,
3163     1, 0x1F26, 0x1F20, 0x0342, 0,
3164     1, 0x1F27, 0x1F21, 0x0342, 0,
3165     1, 0x1F28, 0x0397, 0x0313, 0,
3166     1, 0x1F29, 0x0397, 0x0314, 0,
3167     1, 0x1F2A, 0x1F28, 0x0300, 0,
3168     1, 0x1F2B, 0x1F29, 0x0300, 0,
3169     1, 0x1F2C, 0x1F28, 0x0301, 0,
3170     1, 0x1F2D, 0x1F29, 0x0301, 0,
3171     1, 0x1F2E, 0x1F28, 0x0342, 0,
3172     1, 0x1F2F, 0x1F29, 0x0342, 0,
3173     1, 0x1F30, 0x03B9, 0x0313, 0,
3174     1, 0x1F31, 0x03B9, 0x0314, 0,
3175     1, 0x1F32, 0x1F30, 0x0300, 0,
3176     1, 0x1F33, 0x1F31, 0x0300, 0,
3177     1, 0x1F34, 0x1F30, 0x0301, 0,
3178     1, 0x1F35, 0x1F31, 0x0301, 0,
3179     1, 0x1F36, 0x1F30, 0x0342, 0,
3180     1, 0x1F37, 0x1F31, 0x0342, 0,
3181     1, 0x1F38, 0x0399, 0x0313, 0,
3182     1, 0x1F39, 0x0399, 0x0314, 0,
3183     1, 0x1F3A, 0x1F38, 0x0300, 0,
3184     1, 0x1F3B, 0x1F39, 0x0300, 0,
3185     1, 0x1F3C, 0x1F38, 0x0301, 0,
3186     1, 0x1F3D, 0x1F39, 0x0301, 0,
3187     1, 0x1F3E, 0x1F38, 0x0342, 0,
3188     1, 0x1F3F, 0x1F39, 0x0342, 0,
3189     1, 0x1F40, 0x03BF, 0x0313, 0,
3190     1, 0x1F41, 0x03BF, 0x0314, 0,
3191     1, 0x1F42, 0x1F40, 0x0300, 0,
3192     1, 0x1F43, 0x1F41, 0x0300, 0,
3193     1, 0x1F44, 0x1F40, 0x0301, 0,
3194     1, 0x1F45, 0x1F41, 0x0301, 0,
3195     1, 0x1F48, 0x039F, 0x0313, 0,
3196     1, 0x1F49, 0x039F, 0x0314, 0,
3197     1, 0x1F4A, 0x1F48, 0x0300, 0,
3198     1, 0x1F4B, 0x1F49, 0x0300, 0,
3199     1, 0x1F4C, 0x1F48, 0x0301, 0,
3200     1, 0x1F4D, 0x1F49, 0x0301, 0,
3201     1, 0x1F50, 0x03C5, 0x0313, 0,
3202     1, 0x1F51, 0x03C5, 0x0314, 0,
3203     1, 0x1F52, 0x1F50, 0x0300, 0,
3204     1, 0x1F53, 0x1F51, 0x0300, 0,
3205     1, 0x1F54, 0x1F50, 0x0301, 0,
3206     1, 0x1F55, 0x1F51, 0x0301, 0,
3207     1, 0x1F56, 0x1F50, 0x0342, 0,
3208     1, 0x1F57, 0x1F51, 0x0342, 0,
3209     1, 0x1F59, 0x03A5, 0x0314, 0,
3210     1, 0x1F5B, 0x1F59, 0x0300, 0,
3211     1, 0x1F5D, 0x1F59, 0x0301, 0,
3212     1, 0x1F5F, 0x1F59, 0x0342, 0,
3213     1, 0x1F60, 0x03C9, 0x0313, 0,
3214     1, 0x1F61, 0x03C9, 0x0314, 0,
3215     1, 0x1F62, 0x1F60, 0x0300, 0,
3216     1, 0x1F63, 0x1F61, 0x0300, 0,
3217     1, 0x1F64, 0x1F60, 0x0301, 0,
3218     1, 0x1F65, 0x1F61, 0x0301, 0,
3219     1, 0x1F66, 0x1F60, 0x0342, 0,
3220     1, 0x1F67, 0x1F61, 0x0342, 0,
3221     1, 0x1F68, 0x03A9, 0x0313, 0,
3222     1, 0x1F69, 0x03A9, 0x0314, 0,
3223     1, 0x1F6A, 0x1F68, 0x0300, 0,
3224     1, 0x1F6B, 0x1F69, 0x0300, 0,
3225     1, 0x1F6C, 0x1F68, 0x0301, 0,
3226     1, 0x1F6D, 0x1F69, 0x0301, 0,
3227     1, 0x1F6E, 0x1F68, 0x0342, 0,
3228     1, 0x1F6F, 0x1F69, 0x0342, 0,
3229     1, 0x1F70, 0x03B1, 0x0300, 0,
3230     1, 0x1F71, 0x03AC, 0,
3231     1, 0x1F72, 0x03B5, 0x0300, 0,
3232     1, 0x1F73, 0x03AD, 0,
3233     1, 0x1F74, 0x03B7, 0x0300, 0,
3234     1, 0x1F75, 0x03AE, 0,
3235     1, 0x1F76, 0x03B9, 0x0300, 0,
3236     1, 0x1F77, 0x03AF, 0,
3237     1, 0x1F78, 0x03BF, 0x0300, 0,
3238     1, 0x1F79, 0x03CC, 0,
3239     1, 0x1F7A, 0x03C5, 0x0300, 0,
3240     1, 0x1F7B, 0x03CD, 0,
3241     1, 0x1F7C, 0x03C9, 0x0300, 0,
3242     1, 0x1F7D, 0x03CE, 0,
3243     1, 0x1F80, 0x1F00, 0x0345, 0,
3244     1, 0x1F81, 0x1F01, 0x0345, 0,
3245     1, 0x1F82, 0x1F02, 0x0345, 0,
3246     1, 0x1F83, 0x1F03, 0x0345, 0,
3247     1, 0x1F84, 0x1F04, 0x0345, 0,
3248     1, 0x1F85, 0x1F05, 0x0345, 0,
3249     1, 0x1F86, 0x1F06, 0x0345, 0,
3250     1, 0x1F87, 0x1F07, 0x0345, 0,
3251     1, 0x1F88, 0x1F08, 0x0345, 0,
3252     1, 0x1F89, 0x1F09, 0x0345, 0,
3253     1, 0x1F8A, 0x1F0A, 0x0345, 0,
3254     1, 0x1F8B, 0x1F0B, 0x0345, 0,
3255     1, 0x1F8C, 0x1F0C, 0x0345, 0,
3256     1, 0x1F8D, 0x1F0D, 0x0345, 0,
3257     1, 0x1F8E, 0x1F0E, 0x0345, 0,
3258     1, 0x1F8F, 0x1F0F, 0x0345, 0,
3259     1, 0x1F90, 0x1F20, 0x0345, 0,
3260     1, 0x1F91, 0x1F21, 0x0345, 0,
3261     1, 0x1F92, 0x1F22, 0x0345, 0,
3262     1, 0x1F93, 0x1F23, 0x0345, 0,
3263     1, 0x1F94, 0x1F24, 0x0345, 0,
3264     1, 0x1F95, 0x1F25, 0x0345, 0,
3265     1, 0x1F96, 0x1F26, 0x0345, 0,
3266     1, 0x1F97, 0x1F27, 0x0345, 0,
3267     1, 0x1F98, 0x1F28, 0x0345, 0,
3268     1, 0x1F99, 0x1F29, 0x0345, 0,
3269     1, 0x1F9A, 0x1F2A, 0x0345, 0,
3270     1, 0x1F9B, 0x1F2B, 0x0345, 0,
3271     1, 0x1F9C, 0x1F2C, 0x0345, 0,
3272     1, 0x1F9D, 0x1F2D, 0x0345, 0,
3273     1, 0x1F9E, 0x1F2E, 0x0345, 0,
3274     1, 0x1F9F, 0x1F2F, 0x0345, 0,
3275     1, 0x1FA0, 0x1F60, 0x0345, 0,
3276     1, 0x1FA1, 0x1F61, 0x0345, 0,
3277     1, 0x1FA2, 0x1F62, 0x0345, 0,
3278     1, 0x1FA3, 0x1F63, 0x0345, 0,
3279     1, 0x1FA4, 0x1F64, 0x0345, 0,
3280     1, 0x1FA5, 0x1F65, 0x0345, 0,
3281     1, 0x1FA6, 0x1F66, 0x0345, 0,
3282     1, 0x1FA7, 0x1F67, 0x0345, 0,
3283     1, 0x1FA8, 0x1F68, 0x0345, 0,
3284     1, 0x1FA9, 0x1F69, 0x0345, 0,
3285     1, 0x1FAA, 0x1F6A, 0x0345, 0,
3286     1, 0x1FAB, 0x1F6B, 0x0345, 0,
3287     1, 0x1FAC, 0x1F6C, 0x0345, 0,
3288     1, 0x1FAD, 0x1F6D, 0x0345, 0,
3289     1, 0x1FAE, 0x1F6E, 0x0345, 0,
3290     1, 0x1FAF, 0x1F6F, 0x0345, 0,
3291     1, 0x1FB0, 0x03B1, 0x0306, 0,
3292     1, 0x1FB1, 0x03B1, 0x0304, 0,
3293     1, 0x1FB2, 0x1F70, 0x0345, 0,
3294     1, 0x1FB3, 0x03B1, 0x0345, 0,
3295     1, 0x1FB4, 0x03AC, 0x0345, 0,
3296     1, 0x1FB6, 0x03B1, 0x0342, 0,
3297     1, 0x1FB7, 0x1FB6, 0x0345, 0,
3298     1, 0x1FB8, 0x0391, 0x0306, 0,
3299     1, 0x1FB9, 0x0391, 0x0304, 0,
3300     1, 0x1FBA, 0x0391, 0x0300, 0,
3301     1, 0x1FBB, 0x0386, 0,
3302     1, 0x1FBC, 0x0391, 0x0345, 0,
3303     16, 0x1FBD, 0x0020, 0x0313, 0,
3304     1, 0x1FBE, 0x03B9, 0,
3305     16, 0x1FBF, 0x0020, 0x0313, 0,
3306     16, 0x1FC0, 0x0020, 0x0342, 0,
3307     1, 0x1FC1, 0x00A8, 0x0342, 0,
3308     1, 0x1FC2, 0x1F74, 0x0345, 0,
3309     1, 0x1FC3, 0x03B7, 0x0345, 0,
3310     1, 0x1FC4, 0x03AE, 0x0345, 0,
3311     1, 0x1FC6, 0x03B7, 0x0342, 0,
3312     1, 0x1FC7, 0x1FC6, 0x0345, 0,
3313     1, 0x1FC8, 0x0395, 0x0300, 0,
3314     1, 0x1FC9, 0x0388, 0,
3315     1, 0x1FCA, 0x0397, 0x0300, 0,
3316     1, 0x1FCB, 0x0389, 0,
3317     1, 0x1FCC, 0x0397, 0x0345, 0,
3318     1, 0x1FCD, 0x1FBF, 0x0300, 0,
3319     1, 0x1FCE, 0x1FBF, 0x0301, 0,
3320     1, 0x1FCF, 0x1FBF, 0x0342, 0,
3321     1, 0x1FD0, 0x03B9, 0x0306, 0,
3322     1, 0x1FD1, 0x03B9, 0x0304, 0,
3323     1, 0x1FD2, 0x03CA, 0x0300, 0,
3324     1, 0x1FD3, 0x0390, 0,
3325     1, 0x1FD6, 0x03B9, 0x0342, 0,
3326     1, 0x1FD7, 0x03CA, 0x0342, 0,
3327     1, 0x1FD8, 0x0399, 0x0306, 0,
3328     1, 0x1FD9, 0x0399, 0x0304, 0,
3329     1, 0x1FDA, 0x0399, 0x0300, 0,
3330     1, 0x1FDB, 0x038A, 0,
3331     1, 0x1FDD, 0x1FFE, 0x0300, 0,
3332     1, 0x1FDE, 0x1FFE, 0x0301, 0,
3333     1, 0x1FDF, 0x1FFE, 0x0342, 0,
3334     1, 0x1FE0, 0x03C5, 0x0306, 0,
3335     1, 0x1FE1, 0x03C5, 0x0304, 0,
3336     1, 0x1FE2, 0x03CB, 0x0300, 0,
3337     1, 0x1FE3, 0x03B0, 0,
3338     1, 0x1FE4, 0x03C1, 0x0313, 0,
3339     1, 0x1FE5, 0x03C1, 0x0314, 0,
3340     1, 0x1FE6, 0x03C5, 0x0342, 0,
3341     1, 0x1FE7, 0x03CB, 0x0342, 0,
3342     1, 0x1FE8, 0x03A5, 0x0306, 0,
3343     1, 0x1FE9, 0x03A5, 0x0304, 0,
3344     1, 0x1FEA, 0x03A5, 0x0300, 0,
3345     1, 0x1FEB, 0x038E, 0,
3346     1, 0x1FEC, 0x03A1, 0x0314, 0,
3347     1, 0x1FED, 0x00A8, 0x0300, 0,
3348     1, 0x1FEE, 0x0385, 0,
3349     1, 0x1FEF, 0x0060, 0,
3350     1, 0x1FF2, 0x1F7C, 0x0345, 0,
3351     1, 0x1FF3, 0x03C9, 0x0345, 0,
3352     1, 0x1FF4, 0x03CE, 0x0345, 0,
3353     1, 0x1FF6, 0x03C9, 0x0342, 0,
3354     1, 0x1FF7, 0x1FF6, 0x0345, 0,
3355     1, 0x1FF8, 0x039F, 0x0300, 0,
3356     1, 0x1FF9, 0x038C, 0,
3357     1, 0x1FFA, 0x03A9, 0x0300, 0,
3358     1, 0x1FFB, 0x038F, 0,
3359     1, 0x1FFC, 0x03A9, 0x0345, 0,
3360     1, 0x1FFD, 0x00B4, 0,
3361     16, 0x1FFE, 0x0020, 0x0314, 0,
3362     1, 0x2000, 0x2002, 0,
3363     1, 0x2001, 0x2003, 0,
3364     16, 0x2002, 0x0020, 0,
3365     16, 0x2003, 0x0020, 0,
3366     16, 0x2004, 0x0020, 0,
3367     16, 0x2005, 0x0020, 0,
3368     16, 0x2006, 0x0020, 0,
3369     3, 0x2007, 0x0020, 0,
3370     16, 0x2008, 0x0020, 0,
3371     16, 0x2009, 0x0020, 0,
3372     16, 0x200A, 0x0020, 0,
3373     3, 0x2011, 0x2010, 0,
3374     16, 0x2017, 0x0020, 0x0333, 0,
3375     16, 0x2024, 0x002E, 0,
3376     16, 0x2025, 0x002E, 0x002E, 0,
3377     16, 0x2026, 0x002E, 0x002E, 0x002E, 0,
3378     3, 0x202F, 0x0020, 0,
3379     16, 0x2033, 0x2032, 0x2032, 0,
3380     16, 0x2034, 0x2032, 0x2032, 0x2032, 0,
3381     16, 0x2036, 0x2035, 0x2035, 0,
3382     16, 0x2037, 0x2035, 0x2035, 0x2035, 0,
3383     16, 0x203C, 0x0021, 0x0021, 0,
3384     16, 0x203E, 0x0020, 0x0305, 0,
3385     16, 0x2048, 0x003F, 0x0021, 0,
3386     16, 0x2049, 0x0021, 0x003F, 0,
3387     9, 0x2070, 0x0030, 0,
3388     9, 0x2074, 0x0034, 0,
3389     9, 0x2075, 0x0035, 0,
3390     9, 0x2076, 0x0036, 0,
3391     9, 0x2077, 0x0037, 0,
3392     9, 0x2078, 0x0038, 0,
3393     9, 0x2079, 0x0039, 0,
3394     9, 0x207A, 0x002B, 0,
3395     9, 0x207B, 0x2212, 0,
3396     9, 0x207C, 0x003D, 0,
3397     9, 0x207D, 0x0028, 0,
3398     9, 0x207E, 0x0029, 0,
3399     9, 0x207F, 0x006E, 0,
3400     10, 0x2080, 0x0030, 0,
3401     10, 0x2081, 0x0031, 0,
3402     10, 0x2082, 0x0032, 0,
3403     10, 0x2083, 0x0033, 0,
3404     10, 0x2084, 0x0034, 0,
3405     10, 0x2085, 0x0035, 0,
3406     10, 0x2086, 0x0036, 0,
3407     10, 0x2087, 0x0037, 0,
3408     10, 0x2088, 0x0038, 0,
3409     10, 0x2089, 0x0039, 0,
3410     10, 0x208A, 0x002B, 0,
3411     10, 0x208B, 0x2212, 0,
3412     10, 0x208C, 0x003D, 0,
3413     10, 0x208D, 0x0028, 0,
3414     10, 0x208E, 0x0029, 0,
3415     16, 0x20A8, 0x0052, 0x0073, 0,
3416     16, 0x2100, 0x0061, 0x002F, 0x0063, 0,
3417     16, 0x2101, 0x0061, 0x002F, 0x0073, 0,
3418     2, 0x2102, 0x0043, 0,
3419     16, 0x2103, 0x00B0, 0x0043, 0,
3420     16, 0x2105, 0x0063, 0x002F, 0x006F, 0,
3421     16, 0x2106, 0x0063, 0x002F, 0x0075, 0,
3422     16, 0x2107, 0x0190, 0,
3423     16, 0x2109, 0x00B0, 0x0046, 0,
3424     2, 0x210A, 0x0067, 0,
3425     2, 0x210B, 0x0048, 0,
3426     2, 0x210C, 0x0048, 0,
3427     2, 0x210D, 0x0048, 0,
3428     2, 0x210E, 0x0068, 0,
3429     2, 0x210F, 0x0127, 0,
3430     2, 0x2110, 0x0049, 0,
3431     2, 0x2111, 0x0049, 0,
3432     2, 0x2112, 0x004C, 0,
3433     2, 0x2113, 0x006C, 0,
3434     2, 0x2115, 0x004E, 0,
3435     16, 0x2116, 0x004E, 0x006F, 0,
3436     2, 0x2119, 0x0050, 0,
3437     2, 0x211A, 0x0051, 0,
3438     2, 0x211B, 0x0052, 0,
3439     2, 0x211C, 0x0052, 0,
3440     2, 0x211D, 0x0052, 0,
3441     9, 0x2120, 0x0053, 0x004D, 0,
3442     16, 0x2121, 0x0054, 0x0045, 0x004C, 0,
3443     9, 0x2122, 0x0054, 0x004D, 0,
3444     2, 0x2124, 0x005A, 0,
3445     1, 0x2126, 0x03A9, 0,
3446     2, 0x2128, 0x005A, 0,
3447     1, 0x212A, 0x004B, 0,
3448     1, 0x212B, 0x00C5, 0,
3449     2, 0x212C, 0x0042, 0,
3450     2, 0x212D, 0x0043, 0,
3451     2, 0x212F, 0x0065, 0,
3452     2, 0x2130, 0x0045, 0,
3453     2, 0x2131, 0x0046, 0,
3454     2, 0x2133, 0x004D, 0,
3455     2, 0x2134, 0x006F, 0,
3456     16, 0x2135, 0x05D0, 0,
3457     16, 0x2136, 0x05D1, 0,
3458     16, 0x2137, 0x05D2, 0,
3459     16, 0x2138, 0x05D3, 0,
3460     2, 0x2139, 0x0069, 0,
3461     17, 0x2153, 0x0031, 0x2044, 0x0033, 0,
3462     17, 0x2154, 0x0032, 0x2044, 0x0033, 0,
3463     17, 0x2155, 0x0031, 0x2044, 0x0035, 0,
3464     17, 0x2156, 0x0032, 0x2044, 0x0035, 0,
3465     17, 0x2157, 0x0033, 0x2044, 0x0035, 0,
3466     17, 0x2158, 0x0034, 0x2044, 0x0035, 0,
3467     17, 0x2159, 0x0031, 0x2044, 0x0036, 0,
3468     17, 0x215A, 0x0035, 0x2044, 0x0036, 0,
3469     17, 0x215B, 0x0031, 0x2044, 0x0038, 0,
3470     17, 0x215C, 0x0033, 0x2044, 0x0038, 0,
3471     17, 0x215D, 0x0035, 0x2044, 0x0038, 0,
3472     17, 0x215E, 0x0037, 0x2044, 0x0038, 0,
3473     17, 0x215F, 0x0031, 0x2044, 0,
3474     16, 0x2160, 0x0049, 0,
3475     16, 0x2161, 0x0049, 0x0049, 0,
3476     16, 0x2162, 0x0049, 0x0049, 0x0049, 0,
3477     16, 0x2163, 0x0049, 0x0056, 0,
3478     16, 0x2164, 0x0056, 0,
3479     16, 0x2165, 0x0056, 0x0049, 0,
3480     16, 0x2166, 0x0056, 0x0049, 0x0049, 0,
3481     16, 0x2167, 0x0056, 0x0049, 0x0049, 0x0049, 0,
3482     16, 0x2168, 0x0049, 0x0058, 0,
3483     16, 0x2169, 0x0058, 0,
3484     16, 0x216A, 0x0058, 0x0049, 0,
3485     16, 0x216B, 0x0058, 0x0049, 0x0049, 0,
3486     16, 0x216C, 0x004C, 0,
3487     16, 0x216D, 0x0043, 0,
3488     16, 0x216E, 0x0044, 0,
3489     16, 0x216F, 0x004D, 0,
3490     16, 0x2170, 0x0069, 0,
3491     16, 0x2171, 0x0069, 0x0069, 0,
3492     16, 0x2172, 0x0069, 0x0069, 0x0069, 0,
3493     16, 0x2173, 0x0069, 0x0076, 0,
3494     16, 0x2174, 0x0076, 0,
3495     16, 0x2175, 0x0076, 0x0069, 0,
3496     16, 0x2176, 0x0076, 0x0069, 0x0069, 0,
3497     16, 0x2177, 0x0076, 0x0069, 0x0069, 0x0069, 0,
3498     16, 0x2178, 0x0069, 0x0078, 0,
3499     16, 0x2179, 0x0078, 0,
3500     16, 0x217A, 0x0078, 0x0069, 0,
3501     16, 0x217B, 0x0078, 0x0069, 0x0069, 0,
3502     16, 0x217C, 0x006C, 0,
3503     16, 0x217D, 0x0063, 0,
3504     16, 0x217E, 0x0064, 0,
3505     16, 0x217F, 0x006D, 0,
3506     1, 0x219A, 0x2190, 0x0338, 0,
3507     1, 0x219B, 0x2192, 0x0338, 0,
3508     1, 0x21AE, 0x2194, 0x0338, 0,
3509     1, 0x21CD, 0x21D0, 0x0338, 0,
3510     1, 0x21CE, 0x21D4, 0x0338, 0,
3511     1, 0x21CF, 0x21D2, 0x0338, 0,
3512     1, 0x2204, 0x2203, 0x0338, 0,
3513     1, 0x2209, 0x2208, 0x0338, 0,
3514     1, 0x220C, 0x220B, 0x0338, 0,
3515     1, 0x2224, 0x2223, 0x0338, 0,
3516     1, 0x2226, 0x2225, 0x0338, 0,
3517     16, 0x222C, 0x222B, 0x222B, 0,
3518     16, 0x222D, 0x222B, 0x222B, 0x222B, 0,
3519     16, 0x222F, 0x222E, 0x222E, 0,
3520     16, 0x2230, 0x222E, 0x222E, 0x222E, 0,
3521     1, 0x2241, 0x223C, 0x0338, 0,
3522     1, 0x2244, 0x2243, 0x0338, 0,
3523     1, 0x2247, 0x2245, 0x0338, 0,
3524     1, 0x2249, 0x2248, 0x0338, 0,
3525     1, 0x2260, 0x003D, 0x0338, 0,
3526     1, 0x2262, 0x2261, 0x0338, 0,
3527     1, 0x226D, 0x224D, 0x0338, 0,
3528     1, 0x226E, 0x003C, 0x0338, 0,
3529     1, 0x226F, 0x003E, 0x0338, 0,
3530     1, 0x2270, 0x2264, 0x0338, 0,
3531     1, 0x2271, 0x2265, 0x0338, 0,
3532     1, 0x2274, 0x2272, 0x0338, 0,
3533     1, 0x2275, 0x2273, 0x0338, 0,
3534     1, 0x2278, 0x2276, 0x0338, 0,
3535     1, 0x2279, 0x2277, 0x0338, 0,
3536     1, 0x2280, 0x227A, 0x0338, 0,
3537     1, 0x2281, 0x227B, 0x0338, 0,
3538     1, 0x2284, 0x2282, 0x0338, 0,
3539     1, 0x2285, 0x2283, 0x0338, 0,
3540     1, 0x2288, 0x2286, 0x0338, 0,
3541     1, 0x2289, 0x2287, 0x0338, 0,
3542     1, 0x22AC, 0x22A2, 0x0338, 0,
3543     1, 0x22AD, 0x22A8, 0x0338, 0,
3544     1, 0x22AE, 0x22A9, 0x0338, 0,
3545     1, 0x22AF, 0x22AB, 0x0338, 0,
3546     1, 0x22E0, 0x227C, 0x0338, 0,
3547     1, 0x22E1, 0x227D, 0x0338, 0,
3548     1, 0x22E2, 0x2291, 0x0338, 0,
3549     1, 0x22E3, 0x2292, 0x0338, 0,
3550     1, 0x22EA, 0x22B2, 0x0338, 0,
3551     1, 0x22EB, 0x22B3, 0x0338, 0,
3552     1, 0x22EC, 0x22B4, 0x0338, 0,
3553     1, 0x22ED, 0x22B5, 0x0338, 0,
3554     1, 0x2329, 0x3008, 0,
3555     1, 0x232A, 0x3009, 0,
3556     8, 0x2460, 0x0031, 0,
3557     8, 0x2461, 0x0032, 0,
3558     8, 0x2462, 0x0033, 0,
3559     8, 0x2463, 0x0034, 0,
3560     8, 0x2464, 0x0035, 0,
3561     8, 0x2465, 0x0036, 0,
3562     8, 0x2466, 0x0037, 0,
3563     8, 0x2467, 0x0038, 0,
3564     8, 0x2468, 0x0039, 0,
3565     8, 0x2469, 0x0031, 0x0030, 0,
3566     8, 0x246A, 0x0031, 0x0031, 0,
3567     8, 0x246B, 0x0031, 0x0032, 0,
3568     8, 0x246C, 0x0031, 0x0033, 0,
3569     8, 0x246D, 0x0031, 0x0034, 0,
3570     8, 0x246E, 0x0031, 0x0035, 0,
3571     8, 0x246F, 0x0031, 0x0036, 0,
3572     8, 0x2470, 0x0031, 0x0037, 0,
3573     8, 0x2471, 0x0031, 0x0038, 0,
3574     8, 0x2472, 0x0031, 0x0039, 0,
3575     8, 0x2473, 0x0032, 0x0030, 0,
3576     16, 0x2474, 0x0028, 0x0031, 0x0029, 0,
3577     16, 0x2475, 0x0028, 0x0032, 0x0029, 0,
3578     16, 0x2476, 0x0028, 0x0033, 0x0029, 0,
3579     16, 0x2477, 0x0028, 0x0034, 0x0029, 0,
3580     16, 0x2478, 0x0028, 0x0035, 0x0029, 0,
3581     16, 0x2479, 0x0028, 0x0036, 0x0029, 0,
3582     16, 0x247A, 0x0028, 0x0037, 0x0029, 0,
3583     16, 0x247B, 0x0028, 0x0038, 0x0029, 0,
3584     16, 0x247C, 0x0028, 0x0039, 0x0029, 0,
3585     16, 0x247D, 0x0028, 0x0031, 0x0030, 0x0029, 0,
3586     16, 0x247E, 0x0028, 0x0031, 0x0031, 0x0029, 0,
3587     16, 0x247F, 0x0028, 0x0031, 0x0032, 0x0029, 0,
3588     16, 0x2480, 0x0028, 0x0031, 0x0033, 0x0029, 0,
3589     16, 0x2481, 0x0028, 0x0031, 0x0034, 0x0029, 0,
3590     16, 0x2482, 0x0028, 0x0031, 0x0035, 0x0029, 0,
3591     16, 0x2483, 0x0028, 0x0031, 0x0036, 0x0029, 0,
3592     16, 0x2484, 0x0028, 0x0031, 0x0037, 0x0029, 0,
3593     16, 0x2485, 0x0028, 0x0031, 0x0038, 0x0029, 0,
3594     16, 0x2486, 0x0028, 0x0031, 0x0039, 0x0029, 0,
3595     16, 0x2487, 0x0028, 0x0032, 0x0030, 0x0029, 0,
3596     16, 0x2488, 0x0031, 0x002E, 0,
3597     16, 0x2489, 0x0032, 0x002E, 0,
3598     16, 0x248A, 0x0033, 0x002E, 0,
3599     16, 0x248B, 0x0034, 0x002E, 0,
3600     16, 0x248C, 0x0035, 0x002E, 0,
3601     16, 0x248D, 0x0036, 0x002E, 0,
3602     16, 0x248E, 0x0037, 0x002E, 0,
3603     16, 0x248F, 0x0038, 0x002E, 0,
3604     16, 0x2490, 0x0039, 0x002E, 0,
3605     16, 0x2491, 0x0031, 0x0030, 0x002E, 0,
3606     16, 0x2492, 0x0031, 0x0031, 0x002E, 0,
3607     16, 0x2493, 0x0031, 0x0032, 0x002E, 0,
3608     16, 0x2494, 0x0031, 0x0033, 0x002E, 0,
3609     16, 0x2495, 0x0031, 0x0034, 0x002E, 0,
3610     16, 0x2496, 0x0031, 0x0035, 0x002E, 0,
3611     16, 0x2497, 0x0031, 0x0036, 0x002E, 0,
3612     16, 0x2498, 0x0031, 0x0037, 0x002E, 0,
3613     16, 0x2499, 0x0031, 0x0038, 0x002E, 0,
3614     16, 0x249A, 0x0031, 0x0039, 0x002E, 0,
3615     16, 0x249B, 0x0032, 0x0030, 0x002E, 0,
3616     16, 0x249C, 0x0028, 0x0061, 0x0029, 0,
3617     16, 0x249D, 0x0028, 0x0062, 0x0029, 0,
3618     16, 0x249E, 0x0028, 0x0063, 0x0029, 0,
3619     16, 0x249F, 0x0028, 0x0064, 0x0029, 0,
3620     16, 0x24A0, 0x0028, 0x0065, 0x0029, 0,
3621     16, 0x24A1, 0x0028, 0x0066, 0x0029, 0,
3622     16, 0x24A2, 0x0028, 0x0067, 0x0029, 0,
3623     16, 0x24A3, 0x0028, 0x0068, 0x0029, 0,
3624     16, 0x24A4, 0x0028, 0x0069, 0x0029, 0,
3625     16, 0x24A5, 0x0028, 0x006A, 0x0029, 0,
3626     16, 0x24A6, 0x0028, 0x006B, 0x0029, 0,
3627     16, 0x24A7, 0x0028, 0x006C, 0x0029, 0,
3628     16, 0x24A8, 0x0028, 0x006D, 0x0029, 0,
3629     16, 0x24A9, 0x0028, 0x006E, 0x0029, 0,
3630     16, 0x24AA, 0x0028, 0x006F, 0x0029, 0,
3631     16, 0x24AB, 0x0028, 0x0070, 0x0029, 0,
3632     16, 0x24AC, 0x0028, 0x0071, 0x0029, 0,
3633     16, 0x24AD, 0x0028, 0x0072, 0x0029, 0,
3634     16, 0x24AE, 0x0028, 0x0073, 0x0029, 0,
3635     16, 0x24AF, 0x0028, 0x0074, 0x0029, 0,
3636     16, 0x24B0, 0x0028, 0x0075, 0x0029, 0,
3637     16, 0x24B1, 0x0028, 0x0076, 0x0029, 0,
3638     16, 0x24B2, 0x0028, 0x0077, 0x0029, 0,
3639     16, 0x24B3, 0x0028, 0x0078, 0x0029, 0,
3640     16, 0x24B4, 0x0028, 0x0079, 0x0029, 0,
3641     16, 0x24B5, 0x0028, 0x007A, 0x0029, 0,
3642     8, 0x24B6, 0x0041, 0,
3643     8, 0x24B7, 0x0042, 0,
3644     8, 0x24B8, 0x0043, 0,
3645     8, 0x24B9, 0x0044, 0,
3646     8, 0x24BA, 0x0045, 0,
3647     8, 0x24BB, 0x0046, 0,
3648     8, 0x24BC, 0x0047, 0,
3649     8, 0x24BD, 0x0048, 0,
3650     8, 0x24BE, 0x0049, 0,
3651     8, 0x24BF, 0x004A, 0,
3652     8, 0x24C0, 0x004B, 0,
3653     8, 0x24C1, 0x004C, 0,
3654     8, 0x24C2, 0x004D, 0,
3655     8, 0x24C3, 0x004E, 0,
3656     8, 0x24C4, 0x004F, 0,
3657     8, 0x24C5, 0x0050, 0,
3658     8, 0x24C6, 0x0051, 0,
3659     8, 0x24C7, 0x0052, 0,
3660     8, 0x24C8, 0x0053, 0,
3661     8, 0x24C9, 0x0054, 0,
3662     8, 0x24CA, 0x0055, 0,
3663     8, 0x24CB, 0x0056, 0,
3664     8, 0x24CC, 0x0057, 0,
3665     8, 0x24CD, 0x0058, 0,
3666     8, 0x24CE, 0x0059, 0,
3667     8, 0x24CF, 0x005A, 0,
3668     8, 0x24D0, 0x0061, 0,
3669     8, 0x24D1, 0x0062, 0,
3670     8, 0x24D2, 0x0063, 0,
3671     8, 0x24D3, 0x0064, 0,
3672     8, 0x24D4, 0x0065, 0,
3673     8, 0x24D5, 0x0066, 0,
3674     8, 0x24D6, 0x0067, 0,
3675     8, 0x24D7, 0x0068, 0,
3676     8, 0x24D8, 0x0069, 0,
3677     8, 0x24D9, 0x006A, 0,
3678     8, 0x24DA, 0x006B, 0,
3679     8, 0x24DB, 0x006C, 0,
3680     8, 0x24DC, 0x006D, 0,
3681     8, 0x24DD, 0x006E, 0,
3682     8, 0x24DE, 0x006F, 0,
3683     8, 0x24DF, 0x0070, 0,
3684     8, 0x24E0, 0x0071, 0,
3685     8, 0x24E1, 0x0072, 0,
3686     8, 0x24E2, 0x0073, 0,
3687     8, 0x24E3, 0x0074, 0,
3688     8, 0x24E4, 0x0075, 0,
3689     8, 0x24E5, 0x0076, 0,
3690     8, 0x24E6, 0x0077, 0,
3691     8, 0x24E7, 0x0078, 0,
3692     8, 0x24E8, 0x0079, 0,
3693     8, 0x24E9, 0x007A, 0,
3694     8, 0x24EA, 0x0030, 0,
3695     16, 0x2E9F, 0x6BCD, 0,
3696     16, 0x2EF3, 0x9F9F, 0,
3697     16, 0x2F00, 0x4E00, 0,
3698     16, 0x2F01, 0x4E28, 0,
3699     16, 0x2F02, 0x4E36, 0,
3700     16, 0x2F03, 0x4E3F, 0,
3701     16, 0x2F04, 0x4E59, 0,
3702     16, 0x2F05, 0x4E85, 0,
3703     16, 0x2F06, 0x4E8C, 0,
3704     16, 0x2F07, 0x4EA0, 0,
3705     16, 0x2F08, 0x4EBA, 0,
3706     16, 0x2F09, 0x513F, 0,
3707     16, 0x2F0A, 0x5165, 0,
3708     16, 0x2F0B, 0x516B, 0,
3709     16, 0x2F0C, 0x5182, 0,
3710     16, 0x2F0D, 0x5196, 0,
3711     16, 0x2F0E, 0x51AB, 0,
3712     16, 0x2F0F, 0x51E0, 0,
3713     16, 0x2F10, 0x51F5, 0,
3714     16, 0x2F11, 0x5200, 0,
3715     16, 0x2F12, 0x529B, 0,
3716     16, 0x2F13, 0x52F9, 0,
3717     16, 0x2F14, 0x5315, 0,
3718     16, 0x2F15, 0x531A, 0,
3719     16, 0x2F16, 0x5338, 0,
3720     16, 0x2F17, 0x5341, 0,
3721     16, 0x2F18, 0x535C, 0,
3722     16, 0x2F19, 0x5369, 0,
3723     16, 0x2F1A, 0x5382, 0,
3724     16, 0x2F1B, 0x53B6, 0,
3725     16, 0x2F1C, 0x53C8, 0,
3726     16, 0x2F1D, 0x53E3, 0,
3727     16, 0x2F1E, 0x56D7, 0,
3728     16, 0x2F1F, 0x571F, 0,
3729     16, 0x2F20, 0x58EB, 0,
3730     16, 0x2F21, 0x5902, 0,
3731     16, 0x2F22, 0x590A, 0,
3732     16, 0x2F23, 0x5915, 0,
3733     16, 0x2F24, 0x5927, 0,
3734     16, 0x2F25, 0x5973, 0,
3735     16, 0x2F26, 0x5B50, 0,
3736     16, 0x2F27, 0x5B80, 0,
3737     16, 0x2F28, 0x5BF8, 0,
3738     16, 0x2F29, 0x5C0F, 0,
3739     16, 0x2F2A, 0x5C22, 0,
3740     16, 0x2F2B, 0x5C38, 0,
3741     16, 0x2F2C, 0x5C6E, 0,
3742     16, 0x2F2D, 0x5C71, 0,
3743     16, 0x2F2E, 0x5DDB, 0,
3744     16, 0x2F2F, 0x5DE5, 0,
3745     16, 0x2F30, 0x5DF1, 0,
3746     16, 0x2F31, 0x5DFE, 0,
3747     16, 0x2F32, 0x5E72, 0,
3748     16, 0x2F33, 0x5E7A, 0,
3749     16, 0x2F34, 0x5E7F, 0,
3750     16, 0x2F35, 0x5EF4, 0,
3751     16, 0x2F36, 0x5EFE, 0,
3752     16, 0x2F37, 0x5F0B, 0,
3753     16, 0x2F38, 0x5F13, 0,
3754     16, 0x2F39, 0x5F50, 0,
3755     16, 0x2F3A, 0x5F61, 0,
3756     16, 0x2F3B, 0x5F73, 0,
3757     16, 0x2F3C, 0x5FC3, 0,
3758     16, 0x2F3D, 0x6208, 0,
3759     16, 0x2F3E, 0x6236, 0,
3760     16, 0x2F3F, 0x624B, 0,
3761     16, 0x2F40, 0x652F, 0,
3762     16, 0x2F41, 0x6534, 0,
3763     16, 0x2F42, 0x6587, 0,
3764     16, 0x2F43, 0x6597, 0,
3765     16, 0x2F44, 0x65A4, 0,
3766     16, 0x2F45, 0x65B9, 0,
3767     16, 0x2F46, 0x65E0, 0,
3768     16, 0x2F47, 0x65E5, 0,
3769     16, 0x2F48, 0x66F0, 0,
3770     16, 0x2F49, 0x6708, 0,
3771     16, 0x2F4A, 0x6728, 0,
3772     16, 0x2F4B, 0x6B20, 0,
3773     16, 0x2F4C, 0x6B62, 0,
3774     16, 0x2F4D, 0x6B79, 0,
3775     16, 0x2F4E, 0x6BB3, 0,
3776     16, 0x2F4F, 0x6BCB, 0,
3777     16, 0x2F50, 0x6BD4, 0,
3778     16, 0x2F51, 0x6BDB, 0,
3779     16, 0x2F52, 0x6C0F, 0,
3780     16, 0x2F53, 0x6C14, 0,
3781     16, 0x2F54, 0x6C34, 0,
3782     16, 0x2F55, 0x706B, 0,
3783     16, 0x2F56, 0x722A, 0,
3784     16, 0x2F57, 0x7236, 0,
3785     16, 0x2F58, 0x723B, 0,
3786     16, 0x2F59, 0x723F, 0,
3787     16, 0x2F5A, 0x7247, 0,
3788     16, 0x2F5B, 0x7259, 0,
3789     16, 0x2F5C, 0x725B, 0,
3790     16, 0x2F5D, 0x72AC, 0,
3791     16, 0x2F5E, 0x7384, 0,
3792     16, 0x2F5F, 0x7389, 0,
3793     16, 0x2F60, 0x74DC, 0,
3794     16, 0x2F61, 0x74E6, 0,
3795     16, 0x2F62, 0x7518, 0,
3796     16, 0x2F63, 0x751F, 0,
3797     16, 0x2F64, 0x7528, 0,
3798     16, 0x2F65, 0x7530, 0,
3799     16, 0x2F66, 0x758B, 0,
3800     16, 0x2F67, 0x7592, 0,
3801     16, 0x2F68, 0x7676, 0,
3802     16, 0x2F69, 0x767D, 0,
3803     16, 0x2F6A, 0x76AE, 0,
3804     16, 0x2F6B, 0x76BF, 0,
3805     16, 0x2F6C, 0x76EE, 0,
3806     16, 0x2F6D, 0x77DB, 0,
3807     16, 0x2F6E, 0x77E2, 0,
3808     16, 0x2F6F, 0x77F3, 0,
3809     16, 0x2F70, 0x793A, 0,
3810     16, 0x2F71, 0x79B8, 0,
3811     16, 0x2F72, 0x79BE, 0,
3812     16, 0x2F73, 0x7A74, 0,
3813     16, 0x2F74, 0x7ACB, 0,
3814     16, 0x2F75, 0x7AF9, 0,
3815     16, 0x2F76, 0x7C73, 0,
3816     16, 0x2F77, 0x7CF8, 0,
3817     16, 0x2F78, 0x7F36, 0,
3818     16, 0x2F79, 0x7F51, 0,
3819     16, 0x2F7A, 0x7F8A, 0,
3820     16, 0x2F7B, 0x7FBD, 0,
3821     16, 0x2F7C, 0x8001, 0,
3822     16, 0x2F7D, 0x800C, 0,
3823     16, 0x2F7E, 0x8012, 0,
3824     16, 0x2F7F, 0x8033, 0,
3825     16, 0x2F80, 0x807F, 0,
3826     16, 0x2F81, 0x8089, 0,
3827     16, 0x2F82, 0x81E3, 0,
3828     16, 0x2F83, 0x81EA, 0,
3829     16, 0x2F84, 0x81F3, 0,
3830     16, 0x2F85, 0x81FC, 0,
3831     16, 0x2F86, 0x820C, 0,
3832     16, 0x2F87, 0x821B, 0,
3833     16, 0x2F88, 0x821F, 0,
3834     16, 0x2F89, 0x826E, 0,
3835     16, 0x2F8A, 0x8272, 0,
3836     16, 0x2F8B, 0x8278, 0,
3837     16, 0x2F8C, 0x864D, 0,
3838     16, 0x2F8D, 0x866B, 0,
3839     16, 0x2F8E, 0x8840, 0,
3840     16, 0x2F8F, 0x884C, 0,
3841     16, 0x2F90, 0x8863, 0,
3842     16, 0x2F91, 0x897E, 0,
3843     16, 0x2F92, 0x898B, 0,
3844     16, 0x2F93, 0x89D2, 0,
3845     16, 0x2F94, 0x8A00, 0,
3846     16, 0x2F95, 0x8C37, 0,
3847     16, 0x2F96, 0x8C46, 0,
3848     16, 0x2F97, 0x8C55, 0,
3849     16, 0x2F98, 0x8C78, 0,
3850     16, 0x2F99, 0x8C9D, 0,
3851     16, 0x2F9A, 0x8D64, 0,
3852     16, 0x2F9B, 0x8D70, 0,
3853     16, 0x2F9C, 0x8DB3, 0,
3854     16, 0x2F9D, 0x8EAB, 0,
3855     16, 0x2F9E, 0x8ECA, 0,
3856     16, 0x2F9F, 0x8F9B, 0,
3857     16, 0x2FA0, 0x8FB0, 0,
3858     16, 0x2FA1, 0x8FB5, 0,
3859     16, 0x2FA2, 0x9091, 0,
3860     16, 0x2FA3, 0x9149, 0,
3861     16, 0x2FA4, 0x91C6, 0,
3862     16, 0x2FA5, 0x91CC, 0,
3863     16, 0x2FA6, 0x91D1, 0,
3864     16, 0x2FA7, 0x9577, 0,
3865     16, 0x2FA8, 0x9580, 0,
3866     16, 0x2FA9, 0x961C, 0,
3867     16, 0x2FAA, 0x96B6, 0,
3868     16, 0x2FAB, 0x96B9, 0,
3869     16, 0x2FAC, 0x96E8, 0,
3870     16, 0x2FAD, 0x9751, 0,
3871     16, 0x2FAE, 0x975E, 0,
3872     16, 0x2FAF, 0x9762, 0,
3873     16, 0x2FB0, 0x9769, 0,
3874     16, 0x2FB1, 0x97CB, 0,
3875     16, 0x2FB2, 0x97ED, 0,
3876     16, 0x2FB3, 0x97F3, 0,
3877     16, 0x2FB4, 0x9801, 0,
3878     16, 0x2FB5, 0x98A8, 0,
3879     16, 0x2FB6, 0x98DB, 0,
3880     16, 0x2FB7, 0x98DF, 0,
3881     16, 0x2FB8, 0x9996, 0,
3882     16, 0x2FB9, 0x9999, 0,
3883     16, 0x2FBA, 0x99AC, 0,
3884     16, 0x2FBB, 0x9AA8, 0,
3885     16, 0x2FBC, 0x9AD8, 0,
3886     16, 0x2FBD, 0x9ADF, 0,
3887     16, 0x2FBE, 0x9B25, 0,
3888     16, 0x2FBF, 0x9B2F, 0,
3889     16, 0x2FC0, 0x9B32, 0,
3890     16, 0x2FC1, 0x9B3C, 0,
3891     16, 0x2FC2, 0x9B5A, 0,
3892     16, 0x2FC3, 0x9CE5, 0,
3893     16, 0x2FC4, 0x9E75, 0,
3894     16, 0x2FC5, 0x9E7F, 0,
3895     16, 0x2FC6, 0x9EA5, 0,
3896     16, 0x2FC7, 0x9EBB, 0,
3897     16, 0x2FC8, 0x9EC3, 0,
3898     16, 0x2FC9, 0x9ECD, 0,
3899     16, 0x2FCA, 0x9ED1, 0,
3900     16, 0x2FCB, 0x9EF9, 0,
3901     16, 0x2FCC, 0x9EFD, 0,
3902     16, 0x2FCD, 0x9F0E, 0,
3903     16, 0x2FCE, 0x9F13, 0,
3904     16, 0x2FCF, 0x9F20, 0,
3905     16, 0x2FD0, 0x9F3B, 0,
3906     16, 0x2FD1, 0x9F4A, 0,
3907     16, 0x2FD2, 0x9F52, 0,
3908     16, 0x2FD3, 0x9F8D, 0,
3909     16, 0x2FD4, 0x9F9C, 0,
3910     16, 0x2FD5, 0x9FA0, 0,
3911     12, 0x3000, 0x0020, 0,
3912     16, 0x3036, 0x3012, 0,
3913     16, 0x3038, 0x5341, 0,
3914     16, 0x3039, 0x5344, 0,
3915     16, 0x303A, 0x5345, 0,
3916     1, 0x304C, 0x304B, 0x3099, 0,
3917     1, 0x304E, 0x304D, 0x3099, 0,
3918     1, 0x3050, 0x304F, 0x3099, 0,
3919     1, 0x3052, 0x3051, 0x3099, 0,
3920     1, 0x3054, 0x3053, 0x3099, 0,
3921     1, 0x3056, 0x3055, 0x3099, 0,
3922     1, 0x3058, 0x3057, 0x3099, 0,
3923     1, 0x305A, 0x3059, 0x3099, 0,
3924     1, 0x305C, 0x305B, 0x3099, 0,
3925     1, 0x305E, 0x305D, 0x3099, 0,
3926     1, 0x3060, 0x305F, 0x3099, 0,
3927     1, 0x3062, 0x3061, 0x3099, 0,
3928     1, 0x3065, 0x3064, 0x3099, 0,
3929     1, 0x3067, 0x3066, 0x3099, 0,
3930     1, 0x3069, 0x3068, 0x3099, 0,
3931     1, 0x3070, 0x306F, 0x3099, 0,
3932     1, 0x3071, 0x306F, 0x309A, 0,
3933     1, 0x3073, 0x3072, 0x3099, 0,
3934     1, 0x3074, 0x3072, 0x309A, 0,
3935     1, 0x3076, 0x3075, 0x3099, 0,
3936     1, 0x3077, 0x3075, 0x309A, 0,
3937     1, 0x3079, 0x3078, 0x3099, 0,
3938     1, 0x307A, 0x3078, 0x309A, 0,
3939     1, 0x307C, 0x307B, 0x3099, 0,
3940     1, 0x307D, 0x307B, 0x309A, 0,
3941     1, 0x3094, 0x3046, 0x3099, 0,
3942     16, 0x309B, 0x0020, 0x3099, 0,
3943     16, 0x309C, 0x0020, 0x309A, 0,
3944     1, 0x309E, 0x309D, 0x3099, 0,
3945     1, 0x30AC, 0x30AB, 0x3099, 0,
3946     1, 0x30AE, 0x30AD, 0x3099, 0,
3947     1, 0x30B0, 0x30AF, 0x3099, 0,
3948     1, 0x30B2, 0x30B1, 0x3099, 0,
3949     1, 0x30B4, 0x30B3, 0x3099, 0,
3950     1, 0x30B6, 0x30B5, 0x3099, 0,
3951     1, 0x30B8, 0x30B7, 0x3099, 0,
3952     1, 0x30BA, 0x30B9, 0x3099, 0,
3953     1, 0x30BC, 0x30BB, 0x3099, 0,
3954     1, 0x30BE, 0x30BD, 0x3099, 0,
3955     1, 0x30C0, 0x30BF, 0x3099, 0,
3956     1, 0x30C2, 0x30C1, 0x3099, 0,
3957     1, 0x30C5, 0x30C4, 0x3099, 0,
3958     1, 0x30C7, 0x30C6, 0x3099, 0,
3959     1, 0x30C9, 0x30C8, 0x3099, 0,
3960     1, 0x30D0, 0x30CF, 0x3099, 0,
3961     1, 0x30D1, 0x30CF, 0x309A, 0,
3962     1, 0x30D3, 0x30D2, 0x3099, 0,
3963     1, 0x30D4, 0x30D2, 0x309A, 0,
3964     1, 0x30D6, 0x30D5, 0x3099, 0,
3965     1, 0x30D7, 0x30D5, 0x309A, 0,
3966     1, 0x30D9, 0x30D8, 0x3099, 0,
3967     1, 0x30DA, 0x30D8, 0x309A, 0,
3968     1, 0x30DC, 0x30DB, 0x3099, 0,
3969     1, 0x30DD, 0x30DB, 0x309A, 0,
3970     1, 0x30F4, 0x30A6, 0x3099, 0,
3971     1, 0x30F7, 0x30EF, 0x3099, 0,
3972     1, 0x30F8, 0x30F0, 0x3099, 0,
3973     1, 0x30F9, 0x30F1, 0x3099, 0,
3974     1, 0x30FA, 0x30F2, 0x3099, 0,
3975     1, 0x30FE, 0x30FD, 0x3099, 0,
3976     16, 0x3131, 0x1100, 0,
3977     16, 0x3132, 0x1101, 0,
3978     16, 0x3133, 0x11AA, 0,
3979     16, 0x3134, 0x1102, 0,
3980     16, 0x3135, 0x11AC, 0,
3981     16, 0x3136, 0x11AD, 0,
3982     16, 0x3137, 0x1103, 0,
3983     16, 0x3138, 0x1104, 0,
3984     16, 0x3139, 0x1105, 0,
3985     16, 0x313A, 0x11B0, 0,
3986     16, 0x313B, 0x11B1, 0,
3987     16, 0x313C, 0x11B2, 0,
3988     16, 0x313D, 0x11B3, 0,
3989     16, 0x313E, 0x11B4, 0,
3990     16, 0x313F, 0x11B5, 0,
3991     16, 0x3140, 0x111A, 0,
3992     16, 0x3141, 0x1106, 0,
3993     16, 0x3142, 0x1107, 0,
3994     16, 0x3143, 0x1108, 0,
3995     16, 0x3144, 0x1121, 0,
3996     16, 0x3145, 0x1109, 0,
3997     16, 0x3146, 0x110A, 0,
3998     16, 0x3147, 0x110B, 0,
3999     16, 0x3148, 0x110C, 0,
4000     16, 0x3149, 0x110D, 0,
4001     16, 0x314A, 0x110E, 0,
4002     16, 0x314B, 0x110F, 0,
4003     16, 0x314C, 0x1110, 0,
4004     16, 0x314D, 0x1111, 0,
4005     16, 0x314E, 0x1112, 0,
4006     16, 0x314F, 0x1161, 0,
4007     16, 0x3150, 0x1162, 0,
4008     16, 0x3151, 0x1163, 0,
4009     16, 0x3152, 0x1164, 0,
4010     16, 0x3153, 0x1165, 0,
4011     16, 0x3154, 0x1166, 0,
4012     16, 0x3155, 0x1167, 0,
4013     16, 0x3156, 0x1168, 0,
4014     16, 0x3157, 0x1169, 0,
4015     16, 0x3158, 0x116A, 0,
4016     16, 0x3159, 0x116B, 0,
4017     16, 0x315A, 0x116C, 0,
4018     16, 0x315B, 0x116D, 0,
4019     16, 0x315C, 0x116E, 0,
4020     16, 0x315D, 0x116F, 0,
4021     16, 0x315E, 0x1170, 0,
4022     16, 0x315F, 0x1171, 0,
4023     16, 0x3160, 0x1172, 0,
4024     16, 0x3161, 0x1173, 0,
4025     16, 0x3162, 0x1174, 0,
4026     16, 0x3163, 0x1175, 0,
4027     16, 0x3164, 0x1160, 0,
4028     16, 0x3165, 0x1114, 0,
4029     16, 0x3166, 0x1115, 0,
4030     16, 0x3167, 0x11C7, 0,
4031     16, 0x3168, 0x11C8, 0,
4032     16, 0x3169, 0x11CC, 0,
4033     16, 0x316A, 0x11CE, 0,
4034     16, 0x316B, 0x11D3, 0,
4035     16, 0x316C, 0x11D7, 0,
4036     16, 0x316D, 0x11D9, 0,
4037     16, 0x316E, 0x111C, 0,
4038     16, 0x316F, 0x11DD, 0,
4039     16, 0x3170, 0x11DF, 0,
4040     16, 0x3171, 0x111D, 0,
4041     16, 0x3172, 0x111E, 0,
4042     16, 0x3173, 0x1120, 0,
4043     16, 0x3174, 0x1122, 0,
4044     16, 0x3175, 0x1123, 0,
4045     16, 0x3176, 0x1127, 0,
4046     16, 0x3177, 0x1129, 0,
4047     16, 0x3178, 0x112B, 0,
4048     16, 0x3179, 0x112C, 0,
4049     16, 0x317A, 0x112D, 0,
4050     16, 0x317B, 0x112E, 0,
4051     16, 0x317C, 0x112F, 0,
4052     16, 0x317D, 0x1132, 0,
4053     16, 0x317E, 0x1136, 0,
4054     16, 0x317F, 0x1140, 0,
4055     16, 0x3180, 0x1147, 0,
4056     16, 0x3181, 0x114C, 0,
4057     16, 0x3182, 0x11F1, 0,
4058     16, 0x3183, 0x11F2, 0,
4059     16, 0x3184, 0x1157, 0,
4060     16, 0x3185, 0x1158, 0,
4061     16, 0x3186, 0x1159, 0,
4062     16, 0x3187, 0x1184, 0,
4063     16, 0x3188, 0x1185, 0,
4064     16, 0x3189, 0x1188, 0,
4065     16, 0x318A, 0x1191, 0,
4066     16, 0x318B, 0x1192, 0,
4067     16, 0x318C, 0x1194, 0,
4068     16, 0x318D, 0x119E, 0,
4069     16, 0x318E, 0x11A1, 0,
4070     9, 0x3192, 0x4E00, 0,
4071     9, 0x3193, 0x4E8C, 0,
4072     9, 0x3194, 0x4E09, 0,
4073     9, 0x3195, 0x56DB, 0,
4074     9, 0x3196, 0x4E0A, 0,
4075     9, 0x3197, 0x4E2D, 0,
4076     9, 0x3198, 0x4E0B, 0,
4077     9, 0x3199, 0x7532, 0,
4078     9, 0x319A, 0x4E59, 0,
4079     9, 0x319B, 0x4E19, 0,
4080     9, 0x319C, 0x4E01, 0,
4081     9, 0x319D, 0x5929, 0,
4082     9, 0x319E, 0x5730, 0,
4083     9, 0x319F, 0x4EBA, 0,
4084     16, 0x3200, 0x0028, 0x1100, 0x0029, 0,
4085     16, 0x3201, 0x0028, 0x1102, 0x0029, 0,
4086     16, 0x3202, 0x0028, 0x1103, 0x0029, 0,
4087     16, 0x3203, 0x0028, 0x1105, 0x0029, 0,
4088     16, 0x3204, 0x0028, 0x1106, 0x0029, 0,
4089     16, 0x3205, 0x0028, 0x1107, 0x0029, 0,
4090     16, 0x3206, 0x0028, 0x1109, 0x0029, 0,
4091     16, 0x3207, 0x0028, 0x110B, 0x0029, 0,
4092     16, 0x3208, 0x0028, 0x110C, 0x0029, 0,
4093     16, 0x3209, 0x0028, 0x110E, 0x0029, 0,
4094     16, 0x320A, 0x0028, 0x110F, 0x0029, 0,
4095     16, 0x320B, 0x0028, 0x1110, 0x0029, 0,
4096     16, 0x320C, 0x0028, 0x1111, 0x0029, 0,
4097     16, 0x320D, 0x0028, 0x1112, 0x0029, 0,
4098     16, 0x320E, 0x0028, 0x1100, 0x1161, 0x0029, 0,
4099     16, 0x320F, 0x0028, 0x1102, 0x1161, 0x0029, 0,
4100     16, 0x3210, 0x0028, 0x1103, 0x1161, 0x0029, 0,
4101     16, 0x3211, 0x0028, 0x1105, 0x1161, 0x0029, 0,
4102     16, 0x3212, 0x0028, 0x1106, 0x1161, 0x0029, 0,
4103     16, 0x3213, 0x0028, 0x1107, 0x1161, 0x0029, 0,
4104     16, 0x3214, 0x0028, 0x1109, 0x1161, 0x0029, 0,
4105     16, 0x3215, 0x0028, 0x110B, 0x1161, 0x0029, 0,
4106     16, 0x3216, 0x0028, 0x110C, 0x1161, 0x0029, 0,
4107     16, 0x3217, 0x0028, 0x110E, 0x1161, 0x0029, 0,
4108     16, 0x3218, 0x0028, 0x110F, 0x1161, 0x0029, 0,
4109     16, 0x3219, 0x0028, 0x1110, 0x1161, 0x0029, 0,
4110     16, 0x321A, 0x0028, 0x1111, 0x1161, 0x0029, 0,
4111     16, 0x321B, 0x0028, 0x1112, 0x1161, 0x0029, 0,
4112     16, 0x321C, 0x0028, 0x110C, 0x116E, 0x0029, 0,
4113     16, 0x3220, 0x0028, 0x4E00, 0x0029, 0,
4114     16, 0x3221, 0x0028, 0x4E8C, 0x0029, 0,
4115     16, 0x3222, 0x0028, 0x4E09, 0x0029, 0,
4116     16, 0x3223, 0x0028, 0x56DB, 0x0029, 0,
4117     16, 0x3224, 0x0028, 0x4E94, 0x0029, 0,
4118     16, 0x3225, 0x0028, 0x516D, 0x0029, 0,
4119     16, 0x3226, 0x0028, 0x4E03, 0x0029, 0,
4120     16, 0x3227, 0x0028, 0x516B, 0x0029, 0,
4121     16, 0x3228, 0x0028, 0x4E5D, 0x0029, 0,
4122     16, 0x3229, 0x0028, 0x5341, 0x0029, 0,
4123     16, 0x322A, 0x0028, 0x6708, 0x0029, 0,
4124     16, 0x322B, 0x0028, 0x706B, 0x0029, 0,
4125     16, 0x322C, 0x0028, 0x6C34, 0x0029, 0,
4126     16, 0x322D, 0x0028, 0x6728, 0x0029, 0,
4127     16, 0x322E, 0x0028, 0x91D1, 0x0029, 0,
4128     16, 0x322F, 0x0028, 0x571F, 0x0029, 0,
4129     16, 0x3230, 0x0028, 0x65E5, 0x0029, 0,
4130     16, 0x3231, 0x0028, 0x682A, 0x0029, 0,
4131     16, 0x3232, 0x0028, 0x6709, 0x0029, 0,
4132     16, 0x3233, 0x0028, 0x793E, 0x0029, 0,
4133     16, 0x3234, 0x0028, 0x540D, 0x0029, 0,
4134     16, 0x3235, 0x0028, 0x7279, 0x0029, 0,
4135     16, 0x3236, 0x0028, 0x8CA1, 0x0029, 0,
4136     16, 0x3237, 0x0028, 0x795D, 0x0029, 0,
4137     16, 0x3238, 0x0028, 0x52B4, 0x0029, 0,
4138     16, 0x3239, 0x0028, 0x4EE3, 0x0029, 0,
4139     16, 0x323A, 0x0028, 0x547C, 0x0029, 0,
4140     16, 0x323B, 0x0028, 0x5B66, 0x0029, 0,
4141     16, 0x323C, 0x0028, 0x76E3, 0x0029, 0,
4142     16, 0x323D, 0x0028, 0x4F01, 0x0029, 0,
4143     16, 0x323E, 0x0028, 0x8CC7, 0x0029, 0,
4144     16, 0x323F, 0x0028, 0x5354, 0x0029, 0,
4145     16, 0x3240, 0x0028, 0x796D, 0x0029, 0,
4146     16, 0x3241, 0x0028, 0x4F11, 0x0029, 0,
4147     16, 0x3242, 0x0028, 0x81EA, 0x0029, 0,
4148     16, 0x3243, 0x0028, 0x81F3, 0x0029, 0,
4149     8, 0x3260, 0x1100, 0,
4150     8, 0x3261, 0x1102, 0,
4151     8, 0x3262, 0x1103, 0,
4152     8, 0x3263, 0x1105, 0,
4153     8, 0x3264, 0x1106, 0,
4154     8, 0x3265, 0x1107, 0,
4155     8, 0x3266, 0x1109, 0,
4156     8, 0x3267, 0x110B, 0,
4157     8, 0x3268, 0x110C, 0,
4158     8, 0x3269, 0x110E, 0,
4159     8, 0x326A, 0x110F, 0,
4160     8, 0x326B, 0x1110, 0,
4161     8, 0x326C, 0x1111, 0,
4162     8, 0x326D, 0x1112, 0,
4163     8, 0x326E, 0x1100, 0x1161, 0,
4164     8, 0x326F, 0x1102, 0x1161, 0,
4165     8, 0x3270, 0x1103, 0x1161, 0,
4166     8, 0x3271, 0x1105, 0x1161, 0,
4167     8, 0x3272, 0x1106, 0x1161, 0,
4168     8, 0x3273, 0x1107, 0x1161, 0,
4169     8, 0x3274, 0x1109, 0x1161, 0,
4170     8, 0x3275, 0x110B, 0x1161, 0,
4171     8, 0x3276, 0x110C, 0x1161, 0,
4172     8, 0x3277, 0x110E, 0x1161, 0,
4173     8, 0x3278, 0x110F, 0x1161, 0,
4174     8, 0x3279, 0x1110, 0x1161, 0,
4175     8, 0x327A, 0x1111, 0x1161, 0,
4176     8, 0x327B, 0x1112, 0x1161, 0,
4177     8, 0x3280, 0x4E00, 0,
4178     8, 0x3281, 0x4E8C, 0,
4179     8, 0x3282, 0x4E09, 0,
4180     8, 0x3283, 0x56DB, 0,
4181     8, 0x3284, 0x4E94, 0,
4182     8, 0x3285, 0x516D, 0,
4183     8, 0x3286, 0x4E03, 0,
4184     8, 0x3287, 0x516B, 0,
4185     8, 0x3288, 0x4E5D, 0,
4186     8, 0x3289, 0x5341, 0,
4187     8, 0x328A, 0x6708, 0,
4188     8, 0x328B, 0x706B, 0,
4189     8, 0x328C, 0x6C34, 0,
4190     8, 0x328D, 0x6728, 0,
4191     8, 0x328E, 0x91D1, 0,
4192     8, 0x328F, 0x571F, 0,
4193     8, 0x3290, 0x65E5, 0,
4194     8, 0x3291, 0x682A, 0,
4195     8, 0x3292, 0x6709, 0,
4196     8, 0x3293, 0x793E, 0,
4197     8, 0x3294, 0x540D, 0,
4198     8, 0x3295, 0x7279, 0,
4199     8, 0x3296, 0x8CA1, 0,
4200     8, 0x3297, 0x795D, 0,
4201     8, 0x3298, 0x52B4, 0,
4202     8, 0x3299, 0x79D8, 0,
4203     8, 0x329A, 0x7537, 0,
4204     8, 0x329B, 0x5973, 0,
4205     8, 0x329C, 0x9069, 0,
4206     8, 0x329D, 0x512A, 0,
4207     8, 0x329E, 0x5370, 0,
4208     8, 0x329F, 0x6CE8, 0,
4209     8, 0x32A0, 0x9805, 0,
4210     8, 0x32A1, 0x4F11, 0,
4211     8, 0x32A2, 0x5199, 0,
4212     8, 0x32A3, 0x6B63, 0,
4213     8, 0x32A4, 0x4E0A, 0,
4214     8, 0x32A5, 0x4E2D, 0,
4215     8, 0x32A6, 0x4E0B, 0,
4216     8, 0x32A7, 0x5DE6, 0,
4217     8, 0x32A8, 0x53F3, 0,
4218     8, 0x32A9, 0x533B, 0,
4219     8, 0x32AA, 0x5B97, 0,
4220     8, 0x32AB, 0x5B66, 0,
4221     8, 0x32AC, 0x76E3, 0,
4222     8, 0x32AD, 0x4F01, 0,
4223     8, 0x32AE, 0x8CC7, 0,
4224     8, 0x32AF, 0x5354, 0,
4225     8, 0x32B0, 0x591C, 0,
4226     16, 0x32C0, 0x0031, 0x6708, 0,
4227     16, 0x32C1, 0x0032, 0x6708, 0,
4228     16, 0x32C2, 0x0033, 0x6708, 0,
4229     16, 0x32C3, 0x0034, 0x6708, 0,
4230     16, 0x32C4, 0x0035, 0x6708, 0,
4231     16, 0x32C5, 0x0036, 0x6708, 0,
4232     16, 0x32C6, 0x0037, 0x6708, 0,
4233     16, 0x32C7, 0x0038, 0x6708, 0,
4234     16, 0x32C8, 0x0039, 0x6708, 0,
4235     16, 0x32C9, 0x0031, 0x0030, 0x6708, 0,
4236     16, 0x32CA, 0x0031, 0x0031, 0x6708, 0,
4237     16, 0x32CB, 0x0031, 0x0032, 0x6708, 0,
4238     8, 0x32D0, 0x30A2, 0,
4239     8, 0x32D1, 0x30A4, 0,
4240     8, 0x32D2, 0x30A6, 0,
4241     8, 0x32D3, 0x30A8, 0,
4242     8, 0x32D4, 0x30AA, 0,
4243     8, 0x32D5, 0x30AB, 0,
4244     8, 0x32D6, 0x30AD, 0,
4245     8, 0x32D7, 0x30AF, 0,
4246     8, 0x32D8, 0x30B1, 0,
4247     8, 0x32D9, 0x30B3, 0,
4248     8, 0x32DA, 0x30B5, 0,
4249     8, 0x32DB, 0x30B7, 0,
4250     8, 0x32DC, 0x30B9, 0,
4251     8, 0x32DD, 0x30BB, 0,
4252     8, 0x32DE, 0x30BD, 0,
4253     8, 0x32DF, 0x30BF, 0,
4254     8, 0x32E0, 0x30C1, 0,
4255     8, 0x32E1, 0x30C4, 0,
4256     8, 0x32E2, 0x30C6, 0,
4257     8, 0x32E3, 0x30C8, 0,
4258     8, 0x32E4, 0x30CA, 0,
4259     8, 0x32E5, 0x30CB, 0,
4260     8, 0x32E6, 0x30CC, 0,
4261     8, 0x32E7, 0x30CD, 0,
4262     8, 0x32E8, 0x30CE, 0,
4263     8, 0x32E9, 0x30CF, 0,
4264     8, 0x32EA, 0x30D2, 0,
4265     8, 0x32EB, 0x30D5, 0,
4266     8, 0x32EC, 0x30D8, 0,
4267     8, 0x32ED, 0x30DB, 0,
4268     8, 0x32EE, 0x30DE, 0,
4269     8, 0x32EF, 0x30DF, 0,
4270     8, 0x32F0, 0x30E0, 0,
4271     8, 0x32F1, 0x30E1, 0,
4272     8, 0x32F2, 0x30E2, 0,
4273     8, 0x32F3, 0x30E4, 0,
4274     8, 0x32F4, 0x30E6, 0,
4275     8, 0x32F5, 0x30E8, 0,
4276     8, 0x32F6, 0x30E9, 0,
4277     8, 0x32F7, 0x30EA, 0,
4278     8, 0x32F8, 0x30EB, 0,
4279     8, 0x32F9, 0x30EC, 0,
4280     8, 0x32FA, 0x30ED, 0,
4281     8, 0x32FB, 0x30EF, 0,
4282     8, 0x32FC, 0x30F0, 0,
4283     8, 0x32FD, 0x30F1, 0,
4284     8, 0x32FE, 0x30F2, 0,
4285     15, 0x3300, 0x30A2, 0x30D1, 0x30FC, 0x30C8, 0,
4286     15, 0x3301, 0x30A2, 0x30EB, 0x30D5, 0x30A1, 0,
4287     15, 0x3302, 0x30A2, 0x30F3, 0x30DA, 0x30A2, 0,
4288     15, 0x3303, 0x30A2, 0x30FC, 0x30EB, 0,
4289     15, 0x3304, 0x30A4, 0x30CB, 0x30F3, 0x30B0, 0,
4290     15, 0x3305, 0x30A4, 0x30F3, 0x30C1, 0,
4291     15, 0x3306, 0x30A6, 0x30A9, 0x30F3, 0,
4292     15, 0x3307, 0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9, 0,
4293     15, 0x3308, 0x30A8, 0x30FC, 0x30AB, 0x30FC, 0,
4294     15, 0x3309, 0x30AA, 0x30F3, 0x30B9, 0,
4295     15, 0x330A, 0x30AA, 0x30FC, 0x30E0, 0,
4296     15, 0x330B, 0x30AB, 0x30A4, 0x30EA, 0,
4297     15, 0x330C, 0x30AB, 0x30E9, 0x30C3, 0x30C8, 0,
4298     15, 0x330D, 0x30AB, 0x30ED, 0x30EA, 0x30FC, 0,
4299     15, 0x330E, 0x30AC, 0x30ED, 0x30F3, 0,
4300     15, 0x330F, 0x30AC, 0x30F3, 0x30DE, 0,
4301     15, 0x3310, 0x30AE, 0x30AC, 0,
4302     15, 0x3311, 0x30AE, 0x30CB, 0x30FC, 0,
4303     15, 0x3312, 0x30AD, 0x30E5, 0x30EA, 0x30FC, 0,
4304     15, 0x3313, 0x30AE, 0x30EB, 0x30C0, 0x30FC, 0,
4305     15, 0x3314, 0x30AD, 0x30ED, 0,
4306     15, 0x3315, 0x30AD, 0x30ED, 0x30B0, 0x30E9, 0x30E0, 0,
4307     15, 0x3316, 0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4308     15, 0x3317, 0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8, 0,
4309     15, 0x3318, 0x30B0, 0x30E9, 0x30E0, 0,
4310     15, 0x3319, 0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3, 0,
4311     15, 0x331A, 0x30AF, 0x30EB, 0x30BC, 0x30A4, 0x30ED, 0,
4312     15, 0x331B, 0x30AF, 0x30ED, 0x30FC, 0x30CD, 0,
4313     15, 0x331C, 0x30B1, 0x30FC, 0x30B9, 0,
4314     15, 0x331D, 0x30B3, 0x30EB, 0x30CA, 0,
4315     15, 0x331E, 0x30B3, 0x30FC, 0x30DD, 0,
4316     15, 0x331F, 0x30B5, 0x30A4, 0x30AF, 0x30EB, 0,
4317     15, 0x3320, 0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0, 0,
4318     15, 0x3321, 0x30B7, 0x30EA, 0x30F3, 0x30B0, 0,
4319     15, 0x3322, 0x30BB, 0x30F3, 0x30C1, 0,
4320     15, 0x3323, 0x30BB, 0x30F3, 0x30C8, 0,
4321     15, 0x3324, 0x30C0, 0x30FC, 0x30B9, 0,
4322     15, 0x3325, 0x30C7, 0x30B7, 0,
4323     15, 0x3326, 0x30C9, 0x30EB, 0,
4324     15, 0x3327, 0x30C8, 0x30F3, 0,
4325     15, 0x3328, 0x30CA, 0x30CE, 0,
4326     15, 0x3329, 0x30CE, 0x30C3, 0x30C8, 0,
4327     15, 0x332A, 0x30CF, 0x30A4, 0x30C4, 0,
4328     15, 0x332B, 0x30D1, 0x30FC, 0x30BB, 0x30F3, 0x30C8, 0,
4329     15, 0x332C, 0x30D1, 0x30FC, 0x30C4, 0,
4330     15, 0x332D, 0x30D0, 0x30FC, 0x30EC, 0x30EB, 0,
4331     15, 0x332E, 0x30D4, 0x30A2, 0x30B9, 0x30C8, 0x30EB, 0,
4332     15, 0x332F, 0x30D4, 0x30AF, 0x30EB, 0,
4333     15, 0x3330, 0x30D4, 0x30B3, 0,
4334     15, 0x3331, 0x30D3, 0x30EB, 0,
4335     15, 0x3332, 0x30D5, 0x30A1, 0x30E9, 0x30C3, 0x30C9, 0,
4336     15, 0x3333, 0x30D5, 0x30A3, 0x30FC, 0x30C8, 0,
4337     15, 0x3334, 0x30D6, 0x30C3, 0x30B7, 0x30A7, 0x30EB, 0,
4338     15, 0x3335, 0x30D5, 0x30E9, 0x30F3, 0,
4339     15, 0x3336, 0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB, 0,
4340     15, 0x3337, 0x30DA, 0x30BD, 0,
4341     15, 0x3338, 0x30DA, 0x30CB, 0x30D2, 0,
4342     15, 0x3339, 0x30D8, 0x30EB, 0x30C4, 0,
4343     15, 0x333A, 0x30DA, 0x30F3, 0x30B9, 0,
4344     15, 0x333B, 0x30DA, 0x30FC, 0x30B8, 0,
4345     15, 0x333C, 0x30D9, 0x30FC, 0x30BF, 0,
4346     15, 0x333D, 0x30DD, 0x30A4, 0x30F3, 0x30C8, 0,
4347     15, 0x333E, 0x30DC, 0x30EB, 0x30C8, 0,
4348     15, 0x333F, 0x30DB, 0x30F3, 0,
4349     15, 0x3340, 0x30DD, 0x30F3, 0x30C9, 0,
4350     15, 0x3341, 0x30DB, 0x30FC, 0x30EB, 0,
4351     15, 0x3342, 0x30DB, 0x30FC, 0x30F3, 0,
4352     15, 0x3343, 0x30DE, 0x30A4, 0x30AF, 0x30ED, 0,
4353     15, 0x3344, 0x30DE, 0x30A4, 0x30EB, 0,
4354     15, 0x3345, 0x30DE, 0x30C3, 0x30CF, 0,
4355     15, 0x3346, 0x30DE, 0x30EB, 0x30AF, 0,
4356     15, 0x3347, 0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3, 0,
4357     15, 0x3348, 0x30DF, 0x30AF, 0x30ED, 0x30F3, 0,
4358     15, 0x3349, 0x30DF, 0x30EA, 0,
4359     15, 0x334A, 0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB, 0,
4360     15, 0x334B, 0x30E1, 0x30AC, 0,
4361     15, 0x334C, 0x30E1, 0x30AC, 0x30C8, 0x30F3, 0,
4362     15, 0x334D, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4363     15, 0x334E, 0x30E4, 0x30FC, 0x30C9, 0,
4364     15, 0x334F, 0x30E4, 0x30FC, 0x30EB, 0,
4365     15, 0x3350, 0x30E6, 0x30A2, 0x30F3, 0,
4366     15, 0x3351, 0x30EA, 0x30C3, 0x30C8, 0x30EB, 0,
4367     15, 0x3352, 0x30EA, 0x30E9, 0,
4368     15, 0x3353, 0x30EB, 0x30D4, 0x30FC, 0,
4369     15, 0x3354, 0x30EB, 0x30FC, 0x30D6, 0x30EB, 0,
4370     15, 0x3355, 0x30EC, 0x30E0, 0,
4371     15, 0x3356, 0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3, 0,
4372     15, 0x3357, 0x30EF, 0x30C3, 0x30C8, 0,
4373     16, 0x3358, 0x0030, 0x70B9, 0,
4374     16, 0x3359, 0x0031, 0x70B9, 0,
4375     16, 0x335A, 0x0032, 0x70B9, 0,
4376     16, 0x335B, 0x0033, 0x70B9, 0,
4377     16, 0x335C, 0x0034, 0x70B9, 0,
4378     16, 0x335D, 0x0035, 0x70B9, 0,
4379     16, 0x335E, 0x0036, 0x70B9, 0,
4380     16, 0x335F, 0x0037, 0x70B9, 0,
4381     16, 0x3360, 0x0038, 0x70B9, 0,
4382     16, 0x3361, 0x0039, 0x70B9, 0,
4383     16, 0x3362, 0x0031, 0x0030, 0x70B9, 0,
4384     16, 0x3363, 0x0031, 0x0031, 0x70B9, 0,
4385     16, 0x3364, 0x0031, 0x0032, 0x70B9, 0,
4386     16, 0x3365, 0x0031, 0x0033, 0x70B9, 0,
4387     16, 0x3366, 0x0031, 0x0034, 0x70B9, 0,
4388     16, 0x3367, 0x0031, 0x0035, 0x70B9, 0,
4389     16, 0x3368, 0x0031, 0x0036, 0x70B9, 0,
4390     16, 0x3369, 0x0031, 0x0037, 0x70B9, 0,
4391     16, 0x336A, 0x0031, 0x0038, 0x70B9, 0,
4392     16, 0x336B, 0x0031, 0x0039, 0x70B9, 0,
4393     16, 0x336C, 0x0032, 0x0030, 0x70B9, 0,
4394     16, 0x336D, 0x0032, 0x0031, 0x70B9, 0,
4395     16, 0x336E, 0x0032, 0x0032, 0x70B9, 0,
4396     16, 0x336F, 0x0032, 0x0033, 0x70B9, 0,
4397     16, 0x3370, 0x0032, 0x0034, 0x70B9, 0,
4398     15, 0x3371, 0x0068, 0x0050, 0x0061, 0,
4399     15, 0x3372, 0x0064, 0x0061, 0,
4400     15, 0x3373, 0x0041, 0x0055, 0,
4401     15, 0x3374, 0x0062, 0x0061, 0x0072, 0,
4402     15, 0x3375, 0x006F, 0x0056, 0,
4403     15, 0x3376, 0x0070, 0x0063, 0,
4404     15, 0x337B, 0x5E73, 0x6210, 0,
4405     15, 0x337C, 0x662D, 0x548C, 0,
4406     15, 0x337D, 0x5927, 0x6B63, 0,
4407     15, 0x337E, 0x660E, 0x6CBB, 0,
4408     15, 0x337F, 0x682A, 0x5F0F, 0x4F1A, 0x793E, 0,
4409     15, 0x3380, 0x0070, 0x0041, 0,
4410     15, 0x3381, 0x006E, 0x0041, 0,
4411     15, 0x3382, 0x03BC, 0x0041, 0,
4412     15, 0x3383, 0x006D, 0x0041, 0,
4413     15, 0x3384, 0x006B, 0x0041, 0,
4414     15, 0x3385, 0x004B, 0x0042, 0,
4415     15, 0x3386, 0x004D, 0x0042, 0,
4416     15, 0x3387, 0x0047, 0x0042, 0,
4417     15, 0x3388, 0x0063, 0x0061, 0x006C, 0,
4418     15, 0x3389, 0x006B, 0x0063, 0x0061, 0x006C, 0,
4419     15, 0x338A, 0x0070, 0x0046, 0,
4420     15, 0x338B, 0x006E, 0x0046, 0,
4421     15, 0x338C, 0x03BC, 0x0046, 0,
4422     15, 0x338D, 0x03BC, 0x0067, 0,
4423     15, 0x338E, 0x006D, 0x0067, 0,
4424     15, 0x338F, 0x006B, 0x0067, 0,
4425     15, 0x3390, 0x0048, 0x007A, 0,
4426     15, 0x3391, 0x006B, 0x0048, 0x007A, 0,
4427     15, 0x3392, 0x004D, 0x0048, 0x007A, 0,
4428     15, 0x3393, 0x0047, 0x0048, 0x007A, 0,
4429     15, 0x3394, 0x0054, 0x0048, 0x007A, 0,
4430     15, 0x3395, 0x03BC, 0x2113, 0,
4431     15, 0x3396, 0x006D, 0x2113, 0,
4432     15, 0x3397, 0x0064, 0x2113, 0,
4433     15, 0x3398, 0x006B, 0x2113, 0,
4434     15, 0x3399, 0x0066, 0x006D, 0,
4435     15, 0x339A, 0x006E, 0x006D, 0,
4436     15, 0x339B, 0x03BC, 0x006D, 0,
4437     15, 0x339C, 0x006D, 0x006D, 0,
4438     15, 0x339D, 0x0063, 0x006D, 0,
4439     15, 0x339E, 0x006B, 0x006D, 0,
4440     15, 0x339F, 0x006D, 0x006D, 0x00B2, 0,
4441     15, 0x33A0, 0x0063, 0x006D, 0x00B2, 0,
4442     15, 0x33A1, 0x006D, 0x00B2, 0,
4443     15, 0x33A2, 0x006B, 0x006D, 0x00B2, 0,
4444     15, 0x33A3, 0x006D, 0x006D, 0x00B3, 0,
4445     15, 0x33A4, 0x0063, 0x006D, 0x00B3, 0,
4446     15, 0x33A5, 0x006D, 0x00B3, 0,
4447     15, 0x33A6, 0x006B, 0x006D, 0x00B3, 0,
4448     15, 0x33A7, 0x006D, 0x2215, 0x0073, 0,
4449     15, 0x33A8, 0x006D, 0x2215, 0x0073, 0x00B2, 0,
4450     15, 0x33A9, 0x0050, 0x0061, 0,
4451     15, 0x33AA, 0x006B, 0x0050, 0x0061, 0,
4452     15, 0x33AB, 0x004D, 0x0050, 0x0061, 0,
4453     15, 0x33AC, 0x0047, 0x0050, 0x0061, 0,
4454     15, 0x33AD, 0x0072, 0x0061, 0x0064, 0,
4455     15, 0x33AE, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0,
4456     15, 0x33AF, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00B2, 0,
4457     15, 0x33B0, 0x0070, 0x0073, 0,
4458     15, 0x33B1, 0x006E, 0x0073, 0,
4459     15, 0x33B2, 0x03BC, 0x0073, 0,
4460     15, 0x33B3, 0x006D, 0x0073, 0,
4461     15, 0x33B4, 0x0070, 0x0056, 0,
4462     15, 0x33B5, 0x006E, 0x0056, 0,
4463     15, 0x33B6, 0x03BC, 0x0056, 0,
4464     15, 0x33B7, 0x006D, 0x0056, 0,
4465     15, 0x33B8, 0x006B, 0x0056, 0,
4466     15, 0x33B9, 0x004D, 0x0056, 0,
4467     15, 0x33BA, 0x0070, 0x0057, 0,
4468     15, 0x33BB, 0x006E, 0x0057, 0,
4469     15, 0x33BC, 0x03BC, 0x0057, 0,
4470     15, 0x33BD, 0x006D, 0x0057, 0,
4471     15, 0x33BE, 0x006B, 0x0057, 0,
4472     15, 0x33BF, 0x004D, 0x0057, 0,
4473     15, 0x33C0, 0x006B, 0x03A9, 0,
4474     15, 0x33C1, 0x004D, 0x03A9, 0,
4475     15, 0x33C2, 0x0061, 0x002E, 0x006D, 0x002E, 0,
4476     15, 0x33C3, 0x0042, 0x0071, 0,
4477     15, 0x33C4, 0x0063, 0x0063, 0,
4478     15, 0x33C5, 0x0063, 0x0064, 0,
4479     15, 0x33C6, 0x0043, 0x2215, 0x006B, 0x0067, 0,
4480     15, 0x33C7, 0x0043, 0x006F, 0x002E, 0,
4481     15, 0x33C8, 0x0064, 0x0042, 0,
4482     15, 0x33C9, 0x0047, 0x0079, 0,
4483     15, 0x33CA, 0x0068, 0x0061, 0,
4484     15, 0x33CB, 0x0048, 0x0050, 0,
4485     15, 0x33CC, 0x0069, 0x006E, 0,
4486     15, 0x33CD, 0x004B, 0x004B, 0,
4487     15, 0x33CE, 0x004B, 0x004D, 0,
4488     15, 0x33CF, 0x006B, 0x0074, 0,
4489     15, 0x33D0, 0x006C, 0x006D, 0,
4490     15, 0x33D1, 0x006C, 0x006E, 0,
4491     15, 0x33D2, 0x006C, 0x006F, 0x0067, 0,
4492     15, 0x33D3, 0x006C, 0x0078, 0,
4493     15, 0x33D4, 0x006D, 0x0062, 0,
4494     15, 0x33D5, 0x006D, 0x0069, 0x006C, 0,
4495     15, 0x33D6, 0x006D, 0x006F, 0x006C, 0,
4496     15, 0x33D7, 0x0050, 0x0048, 0,
4497     15, 0x33D8, 0x0070, 0x002E, 0x006D, 0x002E, 0,
4498     15, 0x33D9, 0x0050, 0x0050, 0x004D, 0,
4499     15, 0x33DA, 0x0050, 0x0052, 0,
4500     15, 0x33DB, 0x0073, 0x0072, 0,
4501     15, 0x33DC, 0x0053, 0x0076, 0,
4502     15, 0x33DD, 0x0057, 0x0062, 0,
4503     16, 0x33E0, 0x0031, 0x65E5, 0,
4504     16, 0x33E1, 0x0032, 0x65E5, 0,
4505     16, 0x33E2, 0x0033, 0x65E5, 0,
4506     16, 0x33E3, 0x0034, 0x65E5, 0,
4507     16, 0x33E4, 0x0035, 0x65E5, 0,
4508     16, 0x33E5, 0x0036, 0x65E5, 0,
4509     16, 0x33E6, 0x0037, 0x65E5, 0,
4510     16, 0x33E7, 0x0038, 0x65E5, 0,
4511     16, 0x33E8, 0x0039, 0x65E5, 0,
4512     16, 0x33E9, 0x0031, 0x0030, 0x65E5, 0,
4513     16, 0x33EA, 0x0031, 0x0031, 0x65E5, 0,
4514     16, 0x33EB, 0x0031, 0x0032, 0x65E5, 0,
4515     16, 0x33EC, 0x0031, 0x0033, 0x65E5, 0,
4516     16, 0x33ED, 0x0031, 0x0034, 0x65E5, 0,
4517     16, 0x33EE, 0x0031, 0x0035, 0x65E5, 0,
4518     16, 0x33EF, 0x0031, 0x0036, 0x65E5, 0,
4519     16, 0x33F0, 0x0031, 0x0037, 0x65E5, 0,
4520     16, 0x33F1, 0x0031, 0x0038, 0x65E5, 0,
4521     16, 0x33F2, 0x0031, 0x0039, 0x65E5, 0,
4522     16, 0x33F3, 0x0032, 0x0030, 0x65E5, 0,
4523     16, 0x33F4, 0x0032, 0x0031, 0x65E5, 0,
4524     16, 0x33F5, 0x0032, 0x0032, 0x65E5, 0,
4525     16, 0x33F6, 0x0032, 0x0033, 0x65E5, 0,
4526     16, 0x33F7, 0x0032, 0x0034, 0x65E5, 0,
4527     16, 0x33F8, 0x0032, 0x0035, 0x65E5, 0,
4528     16, 0x33F9, 0x0032, 0x0036, 0x65E5, 0,
4529     16, 0x33FA, 0x0032, 0x0037, 0x65E5, 0,
4530     16, 0x33FB, 0x0032, 0x0038, 0x65E5, 0,
4531     16, 0x33FC, 0x0032, 0x0039, 0x65E5, 0,
4532     16, 0x33FD, 0x0033, 0x0030, 0x65E5, 0,
4533     16, 0x33FE, 0x0033, 0x0031, 0x65E5, 0,
4534     1, 0xF900, 0x8C48, 0,
4535     1, 0xF901, 0x66F4, 0,
4536     1, 0xF902, 0x8ECA, 0,
4537     1, 0xF903, 0x8CC8, 0,
4538     1, 0xF904, 0x6ED1, 0,
4539     1, 0xF905, 0x4E32, 0,
4540     1, 0xF906, 0x53E5, 0,
4541     1, 0xF907, 0x9F9C, 0,
4542     1, 0xF908, 0x9F9C, 0,
4543     1, 0xF909, 0x5951, 0,
4544     1, 0xF90A, 0x91D1, 0,
4545     1, 0xF90B, 0x5587, 0,
4546     1, 0xF90C, 0x5948, 0,
4547     1, 0xF90D, 0x61F6, 0,
4548     1, 0xF90E, 0x7669, 0,
4549     1, 0xF90F, 0x7F85, 0,
4550     1, 0xF910, 0x863F, 0,
4551     1, 0xF911, 0x87BA, 0,
4552     1, 0xF912, 0x88F8, 0,
4553     1, 0xF913, 0x908F, 0,
4554     1, 0xF914, 0x6A02, 0,
4555     1, 0xF915, 0x6D1B, 0,
4556     1, 0xF916, 0x70D9, 0,
4557     1, 0xF917, 0x73DE, 0,
4558     1, 0xF918, 0x843D, 0,
4559     1, 0xF919, 0x916A, 0,
4560     1, 0xF91A, 0x99F1, 0,
4561     1, 0xF91B, 0x4E82, 0,
4562     1, 0xF91C, 0x5375, 0,
4563     1, 0xF91D, 0x6B04, 0,
4564     1, 0xF91E, 0x721B, 0,
4565     1, 0xF91F, 0x862D, 0,
4566     1, 0xF920, 0x9E1E, 0,
4567     1, 0xF921, 0x5D50, 0,
4568     1, 0xF922, 0x6FEB, 0,
4569     1, 0xF923, 0x85CD, 0,
4570     1, 0xF924, 0x8964, 0,
4571     1, 0xF925, 0x62C9, 0,
4572     1, 0xF926, 0x81D8, 0,
4573     1, 0xF927, 0x881F, 0,
4574     1, 0xF928, 0x5ECA, 0,
4575     1, 0xF929, 0x6717, 0,
4576     1, 0xF92A, 0x6D6A, 0,
4577     1, 0xF92B, 0x72FC, 0,
4578     1, 0xF92C, 0x90CE, 0,
4579     1, 0xF92D, 0x4F86, 0,
4580     1, 0xF92E, 0x51B7, 0,
4581     1, 0xF92F, 0x52DE, 0,
4582     1, 0xF930, 0x64C4, 0,
4583     1, 0xF931, 0x6AD3, 0,
4584     1, 0xF932, 0x7210, 0,
4585     1, 0xF933, 0x76E7, 0,
4586     1, 0xF934, 0x8001, 0,
4587     1, 0xF935, 0x8606, 0,
4588     1, 0xF936, 0x865C, 0,
4589     1, 0xF937, 0x8DEF, 0,
4590     1, 0xF938, 0x9732, 0,
4591     1, 0xF939, 0x9B6F, 0,
4592     1, 0xF93A, 0x9DFA, 0,
4593     1, 0xF93B, 0x788C, 0,
4594     1, 0xF93C, 0x797F, 0,
4595     1, 0xF93D, 0x7DA0, 0,
4596     1, 0xF93E, 0x83C9, 0,
4597     1, 0xF93F, 0x9304, 0,
4598     1, 0xF940, 0x9E7F, 0,
4599     1, 0xF941, 0x8AD6, 0,
4600     1, 0xF942, 0x58DF, 0,
4601     1, 0xF943, 0x5F04, 0,
4602     1, 0xF944, 0x7C60, 0,
4603     1, 0xF945, 0x807E, 0,
4604     1, 0xF946, 0x7262, 0,
4605     1, 0xF947, 0x78CA, 0,
4606     1, 0xF948, 0x8CC2, 0,
4607     1, 0xF949, 0x96F7, 0,
4608     1, 0xF94A, 0x58D8, 0,
4609     1, 0xF94B, 0x5C62, 0,
4610     1, 0xF94C, 0x6A13, 0,
4611     1, 0xF94D, 0x6DDA, 0,
4612     1, 0xF94E, 0x6F0F, 0,
4613     1, 0xF94F, 0x7D2F, 0,
4614     1, 0xF950, 0x7E37, 0,
4615     1, 0xF951, 0x96FB, 0,
4616     1, 0xF952, 0x52D2, 0,
4617     1, 0xF953, 0x808B, 0,
4618     1, 0xF954, 0x51DC, 0,
4619     1, 0xF955, 0x51CC, 0,
4620     1, 0xF956, 0x7A1C, 0,
4621     1, 0xF957, 0x7DBE, 0,
4622     1, 0xF958, 0x83F1, 0,
4623     1, 0xF959, 0x9675, 0,
4624     1, 0xF95A, 0x8B80, 0,
4625     1, 0xF95B, 0x62CF, 0,
4626     1, 0xF95C, 0x6A02, 0,
4627     1, 0xF95D, 0x8AFE, 0,
4628     1, 0xF95E, 0x4E39, 0,
4629     1, 0xF95F, 0x5BE7, 0,
4630     1, 0xF960, 0x6012, 0,
4631     1, 0xF961, 0x7387, 0,
4632     1, 0xF962, 0x7570, 0,
4633     1, 0xF963, 0x5317, 0,
4634     1, 0xF964, 0x78FB, 0,
4635     1, 0xF965, 0x4FBF, 0,
4636     1, 0xF966, 0x5FA9, 0,
4637     1, 0xF967, 0x4E0D, 0,
4638     1, 0xF968, 0x6CCC, 0,
4639     1, 0xF969, 0x6578, 0,
4640     1, 0xF96A, 0x7D22, 0,
4641     1, 0xF96B, 0x53C3, 0,
4642     1, 0xF96C, 0x585E, 0,
4643     1, 0xF96D, 0x7701, 0,
4644     1, 0xF96E, 0x8449, 0,
4645     1, 0xF96F, 0x8AAA, 0,
4646     1, 0xF970, 0x6BBA, 0,
4647     1, 0xF971, 0x8FB0, 0,
4648     1, 0xF972, 0x6C88, 0,
4649     1, 0xF973, 0x62FE, 0,
4650     1, 0xF974, 0x82E5, 0,
4651     1, 0xF975, 0x63A0, 0,
4652     1, 0xF976, 0x7565, 0,
4653     1, 0xF977, 0x4EAE, 0,
4654     1, 0xF978, 0x5169, 0,
4655     1, 0xF979, 0x51C9, 0,
4656     1, 0xF97A, 0x6881, 0,
4657     1, 0xF97B, 0x7CE7, 0,
4658     1, 0xF97C, 0x826F, 0,
4659     1, 0xF97D, 0x8AD2, 0,
4660     1, 0xF97E, 0x91CF, 0,
4661     1, 0xF97F, 0x52F5, 0,
4662     1, 0xF980, 0x5442, 0,
4663     1, 0xF981, 0x5973, 0,
4664     1, 0xF982, 0x5EEC, 0,
4665     1, 0xF983, 0x65C5, 0,
4666     1, 0xF984, 0x6FFE, 0,
4667     1, 0xF985, 0x792A, 0,
4668     1, 0xF986, 0x95AD, 0,
4669     1, 0xF987, 0x9A6A, 0,
4670     1, 0xF988, 0x9E97, 0,
4671     1, 0xF989, 0x9ECE, 0,
4672     1, 0xF98A, 0x529B, 0,
4673     1, 0xF98B, 0x66C6, 0,
4674     1, 0xF98C, 0x6B77, 0,
4675     1, 0xF98D, 0x8F62, 0,
4676     1, 0xF98E, 0x5E74, 0,
4677     1, 0xF98F, 0x6190, 0,
4678     1, 0xF990, 0x6200, 0,
4679     1, 0xF991, 0x649A, 0,
4680     1, 0xF992, 0x6F23, 0,
4681     1, 0xF993, 0x7149, 0,
4682     1, 0xF994, 0x7489, 0,
4683     1, 0xF995, 0x79CA, 0,
4684     1, 0xF996, 0x7DF4, 0,
4685     1, 0xF997, 0x806F, 0,
4686     1, 0xF998, 0x8F26, 0,
4687     1, 0xF999, 0x84EE, 0,
4688     1, 0xF99A, 0x9023, 0,
4689     1, 0xF99B, 0x934A, 0,
4690     1, 0xF99C, 0x5217, 0,
4691     1, 0xF99D, 0x52A3, 0,
4692     1, 0xF99E, 0x54BD, 0,
4693     1, 0xF99F, 0x70C8, 0,
4694     1, 0xF9A0, 0x88C2, 0,
4695     1, 0xF9A1, 0x8AAA, 0,
4696     1, 0xF9A2, 0x5EC9, 0,
4697     1, 0xF9A3, 0x5FF5, 0,
4698     1, 0xF9A4, 0x637B, 0,
4699     1, 0xF9A5, 0x6BAE, 0,
4700     1, 0xF9A6, 0x7C3E, 0,
4701     1, 0xF9A7, 0x7375, 0,
4702     1, 0xF9A8, 0x4EE4, 0,
4703     1, 0xF9A9, 0x56F9, 0,
4704     1, 0xF9AA, 0x5BE7, 0,
4705     1, 0xF9AB, 0x5DBA, 0,
4706     1, 0xF9AC, 0x601C, 0,
4707     1, 0xF9AD, 0x73B2, 0,
4708     1, 0xF9AE, 0x7469, 0,
4709     1, 0xF9AF, 0x7F9A, 0,
4710     1, 0xF9B0, 0x8046, 0,
4711     1, 0xF9B1, 0x9234, 0,
4712     1, 0xF9B2, 0x96F6, 0,
4713     1, 0xF9B3, 0x9748, 0,
4714     1, 0xF9B4, 0x9818, 0,
4715     1, 0xF9B5, 0x4F8B, 0,
4716     1, 0xF9B6, 0x79AE, 0,
4717     1, 0xF9B7, 0x91B4, 0,
4718     1, 0xF9B8, 0x96B8, 0,
4719     1, 0xF9B9, 0x60E1, 0,
4720     1, 0xF9BA, 0x4E86, 0,
4721     1, 0xF9BB, 0x50DA, 0,
4722     1, 0xF9BC, 0x5BEE, 0,
4723     1, 0xF9BD, 0x5C3F, 0,
4724     1, 0xF9BE, 0x6599, 0,
4725     1, 0xF9BF, 0x6A02, 0,
4726     1, 0xF9C0, 0x71CE, 0,
4727     1, 0xF9C1, 0x7642, 0,
4728     1, 0xF9C2, 0x84FC, 0,
4729     1, 0xF9C3, 0x907C, 0,
4730     1, 0xF9C4, 0x9F8D, 0,
4731     1, 0xF9C5, 0x6688, 0,
4732     1, 0xF9C6, 0x962E, 0,
4733     1, 0xF9C7, 0x5289, 0,
4734     1, 0xF9C8, 0x677B, 0,
4735     1, 0xF9C9, 0x67F3, 0,
4736     1, 0xF9CA, 0x6D41, 0,
4737     1, 0xF9CB, 0x6E9C, 0,
4738     1, 0xF9CC, 0x7409, 0,
4739     1, 0xF9CD, 0x7559, 0,
4740     1, 0xF9CE, 0x786B, 0,
4741     1, 0xF9CF, 0x7D10, 0,
4742     1, 0xF9D0, 0x985E, 0,
4743     1, 0xF9D1, 0x516D, 0,
4744     1, 0xF9D2, 0x622E, 0,
4745     1, 0xF9D3, 0x9678, 0,
4746     1, 0xF9D4, 0x502B, 0,
4747     1, 0xF9D5, 0x5D19, 0,
4748     1, 0xF9D6, 0x6DEA, 0,
4749     1, 0xF9D7, 0x8F2A, 0,
4750     1, 0xF9D8, 0x5F8B, 0,
4751     1, 0xF9D9, 0x6144, 0,
4752     1, 0xF9DA, 0x6817, 0,
4753     1, 0xF9DB, 0x7387, 0,
4754     1, 0xF9DC, 0x9686, 0,
4755     1, 0xF9DD, 0x5229, 0,
4756     1, 0xF9DE, 0x540F, 0,
4757     1, 0xF9DF, 0x5C65, 0,
4758     1, 0xF9E0, 0x6613, 0,
4759     1, 0xF9E1, 0x674E, 0,
4760     1, 0xF9E2, 0x68A8, 0,
4761     1, 0xF9E3, 0x6CE5, 0,
4762     1, 0xF9E4, 0x7406, 0,
4763     1, 0xF9E5, 0x75E2, 0,
4764     1, 0xF9E6, 0x7F79, 0,
4765     1, 0xF9E7, 0x88CF, 0,
4766     1, 0xF9E8, 0x88E1, 0,
4767     1, 0xF9E9, 0x91CC, 0,
4768     1, 0xF9EA, 0x96E2, 0,
4769     1, 0xF9EB, 0x533F, 0,
4770     1, 0xF9EC, 0x6EBA, 0,
4771     1, 0xF9ED, 0x541D, 0,
4772     1, 0xF9EE, 0x71D0, 0,
4773     1, 0xF9EF, 0x7498, 0,
4774     1, 0xF9F0, 0x85FA, 0,
4775     1, 0xF9F1, 0x96A3, 0,
4776     1, 0xF9F2, 0x9C57, 0,
4777     1, 0xF9F3, 0x9E9F, 0,
4778     1, 0xF9F4, 0x6797, 0,
4779     1, 0xF9F5, 0x6DCB, 0,
4780     1, 0xF9F6, 0x81E8, 0,
4781     1, 0xF9F7, 0x7ACB, 0,
4782     1, 0xF9F8, 0x7B20, 0,
4783     1, 0xF9F9, 0x7C92, 0,
4784     1, 0xF9FA, 0x72C0, 0,
4785     1, 0xF9FB, 0x7099, 0,
4786     1, 0xF9FC, 0x8B58, 0,
4787     1, 0xF9FD, 0x4EC0, 0,
4788     1, 0xF9FE, 0x8336, 0,
4789     1, 0xF9FF, 0x523A, 0,
4790     1, 0xFA00, 0x5207, 0,
4791     1, 0xFA01, 0x5EA6, 0,
4792     1, 0xFA02, 0x62D3, 0,
4793     1, 0xFA03, 0x7CD6, 0,
4794     1, 0xFA04, 0x5B85, 0,
4795     1, 0xFA05, 0x6D1E, 0,
4796     1, 0xFA06, 0x66B4, 0,
4797     1, 0xFA07, 0x8F3B, 0,
4798     1, 0xFA08, 0x884C, 0,
4799     1, 0xFA09, 0x964D, 0,
4800     1, 0xFA0A, 0x898B, 0,
4801     1, 0xFA0B, 0x5ED3, 0,
4802     1, 0xFA0C, 0x5140, 0,
4803     1, 0xFA0D, 0x55C0, 0,
4804     1, 0xFA10, 0x585A, 0,
4805     1, 0xFA12, 0x6674, 0,
4806     1, 0xFA15, 0x51DE, 0,
4807     1, 0xFA16, 0x732A, 0,
4808     1, 0xFA17, 0x76CA, 0,
4809     1, 0xFA18, 0x793C, 0,
4810     1, 0xFA19, 0x795E, 0,
4811     1, 0xFA1A, 0x7965, 0,
4812     1, 0xFA1B, 0x798F, 0,
4813     1, 0xFA1C, 0x9756, 0,
4814     1, 0xFA1D, 0x7CBE, 0,
4815     1, 0xFA1E, 0x7FBD, 0,
4816     1, 0xFA20, 0x8612, 0,
4817     1, 0xFA22, 0x8AF8, 0,
4818     1, 0xFA25, 0x9038, 0,
4819     1, 0xFA26, 0x90FD, 0,
4820     1, 0xFA2A, 0x98EF, 0,
4821     1, 0xFA2B, 0x98FC, 0,
4822     1, 0xFA2C, 0x9928, 0,
4823     1, 0xFA2D, 0x9DB4, 0,
4824     16, 0xFB00, 0x0066, 0x0066, 0,
4825     16, 0xFB01, 0x0066, 0x0069, 0,
4826     16, 0xFB02, 0x0066, 0x006C, 0,
4827     16, 0xFB03, 0x0066, 0x0066, 0x0069, 0,
4828     16, 0xFB04, 0x0066, 0x0066, 0x006C, 0,
4829     16, 0xFB05, 0x017F, 0x0074, 0,
4830     16, 0xFB06, 0x0073, 0x0074, 0,
4831     16, 0xFB13, 0x0574, 0x0576, 0,
4832     16, 0xFB14, 0x0574, 0x0565, 0,
4833     16, 0xFB15, 0x0574, 0x056B, 0,
4834     16, 0xFB16, 0x057E, 0x0576, 0,
4835     16, 0xFB17, 0x0574, 0x056D, 0,
4836     1, 0xFB1D, 0x05D9, 0x05B4, 0,
4837     1, 0xFB1F, 0x05F2, 0x05B7, 0,
4838     2, 0xFB20, 0x05E2, 0,
4839     2, 0xFB21, 0x05D0, 0,
4840     2, 0xFB22, 0x05D3, 0,
4841     2, 0xFB23, 0x05D4, 0,
4842     2, 0xFB24, 0x05DB, 0,
4843     2, 0xFB25, 0x05DC, 0,
4844     2, 0xFB26, 0x05DD, 0,
4845     2, 0xFB27, 0x05E8, 0,
4846     2, 0xFB28, 0x05EA, 0,
4847     2, 0xFB29, 0x002B, 0,
4848     1, 0xFB2A, 0x05E9, 0x05C1, 0,
4849     1, 0xFB2B, 0x05E9, 0x05C2, 0,
4850     1, 0xFB2C, 0xFB49, 0x05C1, 0,
4851     1, 0xFB2D, 0xFB49, 0x05C2, 0,
4852     1, 0xFB2E, 0x05D0, 0x05B7, 0,
4853     1, 0xFB2F, 0x05D0, 0x05B8, 0,
4854     1, 0xFB30, 0x05D0, 0x05BC, 0,
4855     1, 0xFB31, 0x05D1, 0x05BC, 0,
4856     1, 0xFB32, 0x05D2, 0x05BC, 0,
4857     1, 0xFB33, 0x05D3, 0x05BC, 0,
4858     1, 0xFB34, 0x05D4, 0x05BC, 0,
4859     1, 0xFB35, 0x05D5, 0x05BC, 0,
4860     1, 0xFB36, 0x05D6, 0x05BC, 0,
4861     1, 0xFB38, 0x05D8, 0x05BC, 0,
4862     1, 0xFB39, 0x05D9, 0x05BC, 0,
4863     1, 0xFB3A, 0x05DA, 0x05BC, 0,
4864     1, 0xFB3B, 0x05DB, 0x05BC, 0,
4865     1, 0xFB3C, 0x05DC, 0x05BC, 0,
4866     1, 0xFB3E, 0x05DE, 0x05BC, 0,
4867     1, 0xFB40, 0x05E0, 0x05BC, 0,
4868     1, 0xFB41, 0x05E1, 0x05BC, 0,
4869     1, 0xFB43, 0x05E3, 0x05BC, 0,
4870     1, 0xFB44, 0x05E4, 0x05BC, 0,
4871     1, 0xFB46, 0x05E6, 0x05BC, 0,
4872     1, 0xFB47, 0x05E7, 0x05BC, 0,
4873     1, 0xFB48, 0x05E8, 0x05BC, 0,
4874     1, 0xFB49, 0x05E9, 0x05BC, 0,
4875     1, 0xFB4A, 0x05EA, 0x05BC, 0,
4876     1, 0xFB4B, 0x05D5, 0x05B9, 0,
4877     1, 0xFB4C, 0x05D1, 0x05BF, 0,
4878     1, 0xFB4D, 0x05DB, 0x05BF, 0,
4879     1, 0xFB4E, 0x05E4, 0x05BF, 0,
4880     16, 0xFB4F, 0x05D0, 0x05DC, 0,
4881     7, 0xFB50, 0x0671, 0,
4882     6, 0xFB51, 0x0671, 0,
4883     7, 0xFB52, 0x067B, 0,
4884     6, 0xFB53, 0x067B, 0,
4885     4, 0xFB54, 0x067B, 0,
4886     5, 0xFB55, 0x067B, 0,
4887     7, 0xFB56, 0x067E, 0,
4888     6, 0xFB57, 0x067E, 0,
4889     4, 0xFB58, 0x067E, 0,
4890     5, 0xFB59, 0x067E, 0,
4891     7, 0xFB5A, 0x0680, 0,
4892     6, 0xFB5B, 0x0680, 0,
4893     4, 0xFB5C, 0x0680, 0,
4894     5, 0xFB5D, 0x0680, 0,
4895     7, 0xFB5E, 0x067A, 0,
4896     6, 0xFB5F, 0x067A, 0,
4897     4, 0xFB60, 0x067A, 0,
4898     5, 0xFB61, 0x067A, 0,
4899     7, 0xFB62, 0x067F, 0,
4900     6, 0xFB63, 0x067F, 0,
4901     4, 0xFB64, 0x067F, 0,
4902     5, 0xFB65, 0x067F, 0,
4903     7, 0xFB66, 0x0679, 0,
4904     6, 0xFB67, 0x0679, 0,
4905     4, 0xFB68, 0x0679, 0,
4906     5, 0xFB69, 0x0679, 0,
4907     7, 0xFB6A, 0x06A4, 0,
4908     6, 0xFB6B, 0x06A4, 0,
4909     4, 0xFB6C, 0x06A4, 0,
4910     5, 0xFB6D, 0x06A4, 0,
4911     7, 0xFB6E, 0x06A6, 0,
4912     6, 0xFB6F, 0x06A6, 0,
4913     4, 0xFB70, 0x06A6, 0,
4914     5, 0xFB71, 0x06A6, 0,
4915     7, 0xFB72, 0x0684, 0,
4916     6, 0xFB73, 0x0684, 0,
4917     4, 0xFB74, 0x0684, 0,
4918     5, 0xFB75, 0x0684, 0,
4919     7, 0xFB76, 0x0683, 0,
4920     6, 0xFB77, 0x0683, 0,
4921     4, 0xFB78, 0x0683, 0,
4922     5, 0xFB79, 0x0683, 0,
4923     7, 0xFB7A, 0x0686, 0,
4924     6, 0xFB7B, 0x0686, 0,
4925     4, 0xFB7C, 0x0686, 0,
4926     5, 0xFB7D, 0x0686, 0,
4927     7, 0xFB7E, 0x0687, 0,
4928     6, 0xFB7F, 0x0687, 0,
4929     4, 0xFB80, 0x0687, 0,
4930     5, 0xFB81, 0x0687, 0,
4931     7, 0xFB82, 0x068D, 0,
4932     6, 0xFB83, 0x068D, 0,
4933     7, 0xFB84, 0x068C, 0,
4934     6, 0xFB85, 0x068C, 0,
4935     7, 0xFB86, 0x068E, 0,
4936     6, 0xFB87, 0x068E, 0,
4937     7, 0xFB88, 0x0688, 0,
4938     6, 0xFB89, 0x0688, 0,
4939     7, 0xFB8A, 0x0698, 0,
4940     6, 0xFB8B, 0x0698, 0,
4941     7, 0xFB8C, 0x0691, 0,
4942     6, 0xFB8D, 0x0691, 0,
4943     7, 0xFB8E, 0x06A9, 0,
4944     6, 0xFB8F, 0x06A9, 0,
4945     4, 0xFB90, 0x06A9, 0,
4946     5, 0xFB91, 0x06A9, 0,
4947     7, 0xFB92, 0x06AF, 0,
4948     6, 0xFB93, 0x06AF, 0,
4949     4, 0xFB94, 0x06AF, 0,
4950     5, 0xFB95, 0x06AF, 0,
4951     7, 0xFB96, 0x06B3, 0,
4952     6, 0xFB97, 0x06B3, 0,
4953     4, 0xFB98, 0x06B3, 0,
4954     5, 0xFB99, 0x06B3, 0,
4955     7, 0xFB9A, 0x06B1, 0,
4956     6, 0xFB9B, 0x06B1, 0,
4957     4, 0xFB9C, 0x06B1, 0,
4958     5, 0xFB9D, 0x06B1, 0,
4959     7, 0xFB9E, 0x06BA, 0,
4960     6, 0xFB9F, 0x06BA, 0,
4961     7, 0xFBA0, 0x06BB, 0,
4962     6, 0xFBA1, 0x06BB, 0,
4963     4, 0xFBA2, 0x06BB, 0,
4964     5, 0xFBA3, 0x06BB, 0,
4965     7, 0xFBA4, 0x06C0, 0,
4966     6, 0xFBA5, 0x06C0, 0,
4967     7, 0xFBA6, 0x06C1, 0,
4968     6, 0xFBA7, 0x06C1, 0,
4969     4, 0xFBA8, 0x06C1, 0,
4970     5, 0xFBA9, 0x06C1, 0,
4971     7, 0xFBAA, 0x06BE, 0,
4972     6, 0xFBAB, 0x06BE, 0,
4973     4, 0xFBAC, 0x06BE, 0,
4974     5, 0xFBAD, 0x06BE, 0,
4975     7, 0xFBAE, 0x06D2, 0,
4976     6, 0xFBAF, 0x06D2, 0,
4977     7, 0xFBB0, 0x06D3, 0,
4978     6, 0xFBB1, 0x06D3, 0,
4979     7, 0xFBD3, 0x06AD, 0,
4980     6, 0xFBD4, 0x06AD, 0,
4981     4, 0xFBD5, 0x06AD, 0,
4982     5, 0xFBD6, 0x06AD, 0,
4983     7, 0xFBD7, 0x06C7, 0,
4984     6, 0xFBD8, 0x06C7, 0,
4985     7, 0xFBD9, 0x06C6, 0,
4986     6, 0xFBDA, 0x06C6, 0,
4987     7, 0xFBDB, 0x06C8, 0,
4988     6, 0xFBDC, 0x06C8, 0,
4989     7, 0xFBDD, 0x0677, 0,
4990     7, 0xFBDE, 0x06CB, 0,
4991     6, 0xFBDF, 0x06CB, 0,
4992     7, 0xFBE0, 0x06C5, 0,
4993     6, 0xFBE1, 0x06C5, 0,
4994     7, 0xFBE2, 0x06C9, 0,
4995     6, 0xFBE3, 0x06C9, 0,
4996     7, 0xFBE4, 0x06D0, 0,
4997     6, 0xFBE5, 0x06D0, 0,
4998     4, 0xFBE6, 0x06D0, 0,
4999     5, 0xFBE7, 0x06D0, 0,
5000     4, 0xFBE8, 0x0649, 0,
5001     5, 0xFBE9, 0x0649, 0,
5002     7, 0xFBEA, 0x0626, 0x0627, 0,
5003     6, 0xFBEB, 0x0626, 0x0627, 0,
5004     7, 0xFBEC, 0x0626, 0x06D5, 0,
5005     6, 0xFBED, 0x0626, 0x06D5, 0,
5006     7, 0xFBEE, 0x0626, 0x0648, 0,
5007     6, 0xFBEF, 0x0626, 0x0648, 0,
5008     7, 0xFBF0, 0x0626, 0x06C7, 0,
5009     6, 0xFBF1, 0x0626, 0x06C7, 0,
5010     7, 0xFBF2, 0x0626, 0x06C6, 0,
5011     6, 0xFBF3, 0x0626, 0x06C6, 0,
5012     7, 0xFBF4, 0x0626, 0x06C8, 0,
5013     6, 0xFBF5, 0x0626, 0x06C8, 0,
5014     7, 0xFBF6, 0x0626, 0x06D0, 0,
5015     6, 0xFBF7, 0x0626, 0x06D0, 0,
5016     4, 0xFBF8, 0x0626, 0x06D0, 0,
5017     7, 0xFBF9, 0x0626, 0x0649, 0,
5018     6, 0xFBFA, 0x0626, 0x0649, 0,
5019     4, 0xFBFB, 0x0626, 0x0649, 0,
5020     7, 0xFBFC, 0x06CC, 0,
5021     6, 0xFBFD, 0x06CC, 0,
5022     4, 0xFBFE, 0x06CC, 0,
5023     5, 0xFBFF, 0x06CC, 0,
5024     7, 0xFC00, 0x0626, 0x062C, 0,
5025     7, 0xFC01, 0x0626, 0x062D, 0,
5026     7, 0xFC02, 0x0626, 0x0645, 0,
5027     7, 0xFC03, 0x0626, 0x0649, 0,
5028     7, 0xFC04, 0x0626, 0x064A, 0,
5029     7, 0xFC05, 0x0628, 0x062C, 0,
5030     7, 0xFC06, 0x0628, 0x062D, 0,
5031     7, 0xFC07, 0x0628, 0x062E, 0,
5032     7, 0xFC08, 0x0628, 0x0645, 0,
5033     7, 0xFC09, 0x0628, 0x0649, 0,
5034     7, 0xFC0A, 0x0628, 0x064A, 0,
5035     7, 0xFC0B, 0x062A, 0x062C, 0,
5036     7, 0xFC0C, 0x062A, 0x062D, 0,
5037     7, 0xFC0D, 0x062A, 0x062E, 0,
5038     7, 0xFC0E, 0x062A, 0x0645, 0,
5039     7, 0xFC0F, 0x062A, 0x0649, 0,
5040     7, 0xFC10, 0x062A, 0x064A, 0,
5041     7, 0xFC11, 0x062B, 0x062C, 0,
5042     7, 0xFC12, 0x062B, 0x0645, 0,
5043     7, 0xFC13, 0x062B, 0x0649, 0,
5044     7, 0xFC14, 0x062B, 0x064A, 0,
5045     7, 0xFC15, 0x062C, 0x062D, 0,
5046     7, 0xFC16, 0x062C, 0x0645, 0,
5047     7, 0xFC17, 0x062D, 0x062C, 0,
5048     7, 0xFC18, 0x062D, 0x0645, 0,
5049     7, 0xFC19, 0x062E, 0x062C, 0,
5050     7, 0xFC1A, 0x062E, 0x062D, 0,
5051     7, 0xFC1B, 0x062E, 0x0645, 0,
5052     7, 0xFC1C, 0x0633, 0x062C, 0,
5053     7, 0xFC1D, 0x0633, 0x062D, 0,
5054     7, 0xFC1E, 0x0633, 0x062E, 0,
5055     7, 0xFC1F, 0x0633, 0x0645, 0,
5056     7, 0xFC20, 0x0635, 0x062D, 0,
5057     7, 0xFC21, 0x0635, 0x0645, 0,
5058     7, 0xFC22, 0x0636, 0x062C, 0,
5059     7, 0xFC23, 0x0636, 0x062D, 0,
5060     7, 0xFC24, 0x0636, 0x062E, 0,
5061     7, 0xFC25, 0x0636, 0x0645, 0,
5062     7, 0xFC26, 0x0637, 0x062D, 0,
5063     7, 0xFC27, 0x0637, 0x0645, 0,
5064     7, 0xFC28, 0x0638, 0x0645, 0,
5065     7, 0xFC29, 0x0639, 0x062C, 0,
5066     7, 0xFC2A, 0x0639, 0x0645, 0,
5067     7, 0xFC2B, 0x063A, 0x062C, 0,
5068     7, 0xFC2C, 0x063A, 0x0645, 0,
5069     7, 0xFC2D, 0x0641, 0x062C, 0,
5070     7, 0xFC2E, 0x0641, 0x062D, 0,
5071     7, 0xFC2F, 0x0641, 0x062E, 0,
5072     7, 0xFC30, 0x0641, 0x0645, 0,
5073     7, 0xFC31, 0x0641, 0x0649, 0,
5074     7, 0xFC32, 0x0641, 0x064A, 0,
5075     7, 0xFC33, 0x0642, 0x062D, 0,
5076     7, 0xFC34, 0x0642, 0x0645, 0,
5077     7, 0xFC35, 0x0642, 0x0649, 0,
5078     7, 0xFC36, 0x0642, 0x064A, 0,
5079     7, 0xFC37, 0x0643, 0x0627, 0,
5080     7, 0xFC38, 0x0643, 0x062C, 0,
5081     7, 0xFC39, 0x0643, 0x062D, 0,
5082     7, 0xFC3A, 0x0643, 0x062E, 0,
5083     7, 0xFC3B, 0x0643, 0x0644, 0,
5084     7, 0xFC3C, 0x0643, 0x0645, 0,
5085     7, 0xFC3D, 0x0643, 0x0649, 0,
5086     7, 0xFC3E, 0x0643, 0x064A, 0,
5087     7, 0xFC3F, 0x0644, 0x062C, 0,
5088     7, 0xFC40, 0x0644, 0x062D, 0,
5089     7, 0xFC41, 0x0644, 0x062E, 0,
5090     7, 0xFC42, 0x0644, 0x0645, 0,
5091     7, 0xFC43, 0x0644, 0x0649, 0,
5092     7, 0xFC44, 0x0644, 0x064A, 0,
5093     7, 0xFC45, 0x0645, 0x062C, 0,
5094     7, 0xFC46, 0x0645, 0x062D, 0,
5095     7, 0xFC47, 0x0645, 0x062E, 0,
5096     7, 0xFC48, 0x0645, 0x0645, 0,
5097     7, 0xFC49, 0x0645, 0x0649, 0,
5098     7, 0xFC4A, 0x0645, 0x064A, 0,
5099     7, 0xFC4B, 0x0646, 0x062C, 0,
5100     7, 0xFC4C, 0x0646, 0x062D, 0,
5101     7, 0xFC4D, 0x0646, 0x062E, 0,
5102     7, 0xFC4E, 0x0646, 0x0645, 0,
5103     7, 0xFC4F, 0x0646, 0x0649, 0,
5104     7, 0xFC50, 0x0646, 0x064A, 0,
5105     7, 0xFC51, 0x0647, 0x062C, 0,
5106     7, 0xFC52, 0x0647, 0x0645, 0,
5107     7, 0xFC53, 0x0647, 0x0649, 0,
5108     7, 0xFC54, 0x0647, 0x064A, 0,
5109     7, 0xFC55, 0x064A, 0x062C, 0,
5110     7, 0xFC56, 0x064A, 0x062D, 0,
5111     7, 0xFC57, 0x064A, 0x062E, 0,
5112     7, 0xFC58, 0x064A, 0x0645, 0,
5113     7, 0xFC59, 0x064A, 0x0649, 0,
5114     7, 0xFC5A, 0x064A, 0x064A, 0,
5115     7, 0xFC5B, 0x0630, 0x0670, 0,
5116     7, 0xFC5C, 0x0631, 0x0670, 0,
5117     7, 0xFC5D, 0x0649, 0x0670, 0,
5118     7, 0xFC5E, 0x0020, 0x064C, 0x0651, 0,
5119     7, 0xFC5F, 0x0020, 0x064D, 0x0651, 0,
5120     7, 0xFC60, 0x0020, 0x064E, 0x0651, 0,
5121     7, 0xFC61, 0x0020, 0x064F, 0x0651, 0,
5122     7, 0xFC62, 0x0020, 0x0650, 0x0651, 0,
5123     7, 0xFC63, 0x0020, 0x0651, 0x0670, 0,
5124     6, 0xFC64, 0x0626, 0x0631, 0,
5125     6, 0xFC65, 0x0626, 0x0632, 0,
5126     6, 0xFC66, 0x0626, 0x0645, 0,
5127     6, 0xFC67, 0x0626, 0x0646, 0,
5128     6, 0xFC68, 0x0626, 0x0649, 0,
5129     6, 0xFC69, 0x0626, 0x064A, 0,
5130     6, 0xFC6A, 0x0628, 0x0631, 0,
5131     6, 0xFC6B, 0x0628, 0x0632, 0,
5132     6, 0xFC6C, 0x0628, 0x0645, 0,
5133     6, 0xFC6D, 0x0628, 0x0646, 0,
5134     6, 0xFC6E, 0x0628, 0x0649, 0,
5135     6, 0xFC6F, 0x0628, 0x064A, 0,
5136     6, 0xFC70, 0x062A, 0x0631, 0,
5137     6, 0xFC71, 0x062A, 0x0632, 0,
5138     6, 0xFC72, 0x062A, 0x0645, 0,
5139     6, 0xFC73, 0x062A, 0x0646, 0,
5140     6, 0xFC74, 0x062A, 0x0649, 0,
5141     6, 0xFC75, 0x062A, 0x064A, 0,
5142     6, 0xFC76, 0x062B, 0x0631, 0,
5143     6, 0xFC77, 0x062B, 0x0632, 0,
5144     6, 0xFC78, 0x062B, 0x0645, 0,
5145     6, 0xFC79, 0x062B, 0x0646, 0,
5146     6, 0xFC7A, 0x062B, 0x0649, 0,
5147     6, 0xFC7B, 0x062B, 0x064A, 0,
5148     6, 0xFC7C, 0x0641, 0x0649, 0,
5149     6, 0xFC7D, 0x0641, 0x064A, 0,
5150     6, 0xFC7E, 0x0642, 0x0649, 0,
5151     6, 0xFC7F, 0x0642, 0x064A, 0,
5152     6, 0xFC80, 0x0643, 0x0627, 0,
5153     6, 0xFC81, 0x0643, 0x0644, 0,
5154     6, 0xFC82, 0x0643, 0x0645, 0,
5155     6, 0xFC83, 0x0643, 0x0649, 0,
5156     6, 0xFC84, 0x0643, 0x064A, 0,
5157     6, 0xFC85, 0x0644, 0x0645, 0,
5158     6, 0xFC86, 0x0644, 0x0649, 0,
5159     6, 0xFC87, 0x0644, 0x064A, 0,
5160     6, 0xFC88, 0x0645, 0x0627, 0,
5161     6, 0xFC89, 0x0645, 0x0645, 0,
5162     6, 0xFC8A, 0x0646, 0x0631, 0,
5163     6, 0xFC8B, 0x0646, 0x0632, 0,
5164     6, 0xFC8C, 0x0646, 0x0645, 0,
5165     6, 0xFC8D, 0x0646, 0x0646, 0,
5166     6, 0xFC8E, 0x0646, 0x0649, 0,
5167     6, 0xFC8F, 0x0646, 0x064A, 0,
5168     6, 0xFC90, 0x0649, 0x0670, 0,
5169     6, 0xFC91, 0x064A, 0x0631, 0,
5170     6, 0xFC92, 0x064A, 0x0632, 0,
5171     6, 0xFC93, 0x064A, 0x0645, 0,
5172     6, 0xFC94, 0x064A, 0x0646, 0,
5173     6, 0xFC95, 0x064A, 0x0649, 0,
5174     6, 0xFC96, 0x064A, 0x064A, 0,
5175     4, 0xFC97, 0x0626, 0x062C, 0,
5176     4, 0xFC98, 0x0626, 0x062D, 0,
5177     4, 0xFC99, 0x0626, 0x062E, 0,
5178     4, 0xFC9A, 0x0626, 0x0645, 0,
5179     4, 0xFC9B, 0x0626, 0x0647, 0,
5180     4, 0xFC9C, 0x0628, 0x062C, 0,
5181     4, 0xFC9D, 0x0628, 0x062D, 0,
5182     4, 0xFC9E, 0x0628, 0x062E, 0,
5183     4, 0xFC9F, 0x0628, 0x0645, 0,
5184     4, 0xFCA0, 0x0628, 0x0647, 0,
5185     4, 0xFCA1, 0x062A, 0x062C, 0,
5186     4, 0xFCA2, 0x062A, 0x062D, 0,
5187     4, 0xFCA3, 0x062A, 0x062E, 0,
5188     4, 0xFCA4, 0x062A, 0x0645, 0,
5189     4, 0xFCA5, 0x062A, 0x0647, 0,
5190     4, 0xFCA6, 0x062B, 0x0645, 0,
5191     4, 0xFCA7, 0x062C, 0x062D, 0,
5192     4, 0xFCA8, 0x062C, 0x0645, 0,
5193     4, 0xFCA9, 0x062D, 0x062C, 0,
5194     4, 0xFCAA, 0x062D, 0x0645, 0,
5195     4, 0xFCAB, 0x062E, 0x062C, 0,
5196     4, 0xFCAC, 0x062E, 0x0645, 0,
5197     4, 0xFCAD, 0x0633, 0x062C, 0,
5198     4, 0xFCAE, 0x0633, 0x062D, 0,
5199     4, 0xFCAF, 0x0633, 0x062E, 0,
5200     4, 0xFCB0, 0x0633, 0x0645, 0,
5201     4, 0xFCB1, 0x0635, 0x062D, 0,
5202     4, 0xFCB2, 0x0635, 0x062E, 0,
5203     4, 0xFCB3, 0x0635, 0x0645, 0,
5204     4, 0xFCB4, 0x0636, 0x062C, 0,
5205     4, 0xFCB5, 0x0636, 0x062D, 0,
5206     4, 0xFCB6, 0x0636, 0x062E, 0,
5207     4, 0xFCB7, 0x0636, 0x0645, 0,
5208     4, 0xFCB8, 0x0637, 0x062D, 0,
5209     4, 0xFCB9, 0x0638, 0x0645, 0,
5210     4, 0xFCBA, 0x0639, 0x062C, 0,
5211     4, 0xFCBB, 0x0639, 0x0645, 0,
5212     4, 0xFCBC, 0x063A, 0x062C, 0,
5213     4, 0xFCBD, 0x063A, 0x0645, 0,
5214     4, 0xFCBE, 0x0641, 0x062C, 0,
5215     4, 0xFCBF, 0x0641, 0x062D, 0,
5216     4, 0xFCC0, 0x0641, 0x062E, 0,
5217     4, 0xFCC1, 0x0641, 0x0645, 0,
5218     4, 0xFCC2, 0x0642, 0x062D, 0,
5219     4, 0xFCC3, 0x0642, 0x0645, 0,
5220     4, 0xFCC4, 0x0643, 0x062C, 0,
5221     4, 0xFCC5, 0x0643, 0x062D, 0,
5222     4, 0xFCC6, 0x0643, 0x062E, 0,
5223     4, 0xFCC7, 0x0643, 0x0644, 0,
5224     4, 0xFCC8, 0x0643, 0x0645, 0,
5225     4, 0xFCC9, 0x0644, 0x062C, 0,
5226     4, 0xFCCA, 0x0644, 0x062D, 0,
5227     4, 0xFCCB, 0x0644, 0x062E, 0,
5228     4, 0xFCCC, 0x0644, 0x0645, 0,
5229     4, 0xFCCD, 0x0644, 0x0647, 0,
5230     4, 0xFCCE, 0x0645, 0x062C, 0,
5231     4, 0xFCCF, 0x0645, 0x062D, 0,
5232     4, 0xFCD0, 0x0645, 0x062E, 0,
5233     4, 0xFCD1, 0x0645, 0x0645, 0,
5234     4, 0xFCD2, 0x0646, 0x062C, 0,
5235     4, 0xFCD3, 0x0646, 0x062D, 0,
5236     4, 0xFCD4, 0x0646, 0x062E, 0,
5237     4, 0xFCD5, 0x0646, 0x0645, 0,
5238     4, 0xFCD6, 0x0646, 0x0647, 0,
5239     4, 0xFCD7, 0x0647, 0x062C, 0,
5240     4, 0xFCD8, 0x0647, 0x0645, 0,
5241     4, 0xFCD9, 0x0647, 0x0670, 0,
5242     4, 0xFCDA, 0x064A, 0x062C, 0,
5243     4, 0xFCDB, 0x064A, 0x062D, 0,
5244     4, 0xFCDC, 0x064A, 0x062E, 0,
5245     4, 0xFCDD, 0x064A, 0x0645, 0,
5246     4, 0xFCDE, 0x064A, 0x0647, 0,
5247     5, 0xFCDF, 0x0626, 0x0645, 0,
5248     5, 0xFCE0, 0x0626, 0x0647, 0,
5249     5, 0xFCE1, 0x0628, 0x0645, 0,
5250     5, 0xFCE2, 0x0628, 0x0647, 0,
5251     5, 0xFCE3, 0x062A, 0x0645, 0,
5252     5, 0xFCE4, 0x062A, 0x0647, 0,
5253     5, 0xFCE5, 0x062B, 0x0645, 0,
5254     5, 0xFCE6, 0x062B, 0x0647, 0,
5255     5, 0xFCE7, 0x0633, 0x0645, 0,
5256     5, 0xFCE8, 0x0633, 0x0647, 0,
5257     5, 0xFCE9, 0x0634, 0x0645, 0,
5258     5, 0xFCEA, 0x0634, 0x0647, 0,
5259     5, 0xFCEB, 0x0643, 0x0644, 0,
5260     5, 0xFCEC, 0x0643, 0x0645, 0,
5261     5, 0xFCED, 0x0644, 0x0645, 0,
5262     5, 0xFCEE, 0x0646, 0x0645, 0,
5263     5, 0xFCEF, 0x0646, 0x0647, 0,
5264     5, 0xFCF0, 0x064A, 0x0645, 0,
5265     5, 0xFCF1, 0x064A, 0x0647, 0,
5266     5, 0xFCF2, 0x0640, 0x064E, 0x0651, 0,
5267     5, 0xFCF3, 0x0640, 0x064F, 0x0651, 0,
5268     5, 0xFCF4, 0x0640, 0x0650, 0x0651, 0,
5269     7, 0xFCF5, 0x0637, 0x0649, 0,
5270     7, 0xFCF6, 0x0637, 0x064A, 0,
5271     7, 0xFCF7, 0x0639, 0x0649, 0,
5272     7, 0xFCF8, 0x0639, 0x064A, 0,
5273     7, 0xFCF9, 0x063A, 0x0649, 0,
5274     7, 0xFCFA, 0x063A, 0x064A, 0,
5275     7, 0xFCFB, 0x0633, 0x0649, 0,
5276     7, 0xFCFC, 0x0633, 0x064A, 0,
5277     7, 0xFCFD, 0x0634, 0x0649, 0,
5278     7, 0xFCFE, 0x0634, 0x064A, 0,
5279     7, 0xFCFF, 0x062D, 0x0649, 0,
5280     7, 0xFD00, 0x062D, 0x064A, 0,
5281     7, 0xFD01, 0x062C, 0x0649, 0,
5282     7, 0xFD02, 0x062C, 0x064A, 0,
5283     7, 0xFD03, 0x062E, 0x0649, 0,
5284     7, 0xFD04, 0x062E, 0x064A, 0,
5285     7, 0xFD05, 0x0635, 0x0649, 0,
5286     7, 0xFD06, 0x0635, 0x064A, 0,
5287     7, 0xFD07, 0x0636, 0x0649, 0,
5288     7, 0xFD08, 0x0636, 0x064A, 0,
5289     7, 0xFD09, 0x0634, 0x062C, 0,
5290     7, 0xFD0A, 0x0634, 0x062D, 0,
5291     7, 0xFD0B, 0x0634, 0x062E, 0,
5292     7, 0xFD0C, 0x0634, 0x0645, 0,
5293     7, 0xFD0D, 0x0634, 0x0631, 0,
5294     7, 0xFD0E, 0x0633, 0x0631, 0,
5295     7, 0xFD0F, 0x0635, 0x0631, 0,
5296     7, 0xFD10, 0x0636, 0x0631, 0,
5297     6, 0xFD11, 0x0637, 0x0649, 0,
5298     6, 0xFD12, 0x0637, 0x064A, 0,
5299     6, 0xFD13, 0x0639, 0x0649, 0,
5300     6, 0xFD14, 0x0639, 0x064A, 0,
5301     6, 0xFD15, 0x063A, 0x0649, 0,
5302     6, 0xFD16, 0x063A, 0x064A, 0,
5303     6, 0xFD17, 0x0633, 0x0649, 0,
5304     6, 0xFD18, 0x0633, 0x064A, 0,
5305     6, 0xFD19, 0x0634, 0x0649, 0,
5306     6, 0xFD1A, 0x0634, 0x064A, 0,
5307     6, 0xFD1B, 0x062D, 0x0649, 0,
5308     6, 0xFD1C, 0x062D, 0x064A, 0,
5309     6, 0xFD1D, 0x062C, 0x0649, 0,
5310     6, 0xFD1E, 0x062C, 0x064A, 0,
5311     6, 0xFD1F, 0x062E, 0x0649, 0,
5312     6, 0xFD20, 0x062E, 0x064A, 0,
5313     6, 0xFD21, 0x0635, 0x0649, 0,
5314     6, 0xFD22, 0x0635, 0x064A, 0,
5315     6, 0xFD23, 0x0636, 0x0649, 0,
5316     6, 0xFD24, 0x0636, 0x064A, 0,
5317     6, 0xFD25, 0x0634, 0x062C, 0,
5318     6, 0xFD26, 0x0634, 0x062D, 0,
5319     6, 0xFD27, 0x0634, 0x062E, 0,
5320     6, 0xFD28, 0x0634, 0x0645, 0,
5321     6, 0xFD29, 0x0634, 0x0631, 0,
5322     6, 0xFD2A, 0x0633, 0x0631, 0,
5323     6, 0xFD2B, 0x0635, 0x0631, 0,
5324     6, 0xFD2C, 0x0636, 0x0631, 0,
5325     4, 0xFD2D, 0x0634, 0x062C, 0,
5326     4, 0xFD2E, 0x0634, 0x062D, 0,
5327     4, 0xFD2F, 0x0634, 0x062E, 0,
5328     4, 0xFD30, 0x0634, 0x0645, 0,
5329     4, 0xFD31, 0x0633, 0x0647, 0,
5330     4, 0xFD32, 0x0634, 0x0647, 0,
5331     4, 0xFD33, 0x0637, 0x0645, 0,
5332     5, 0xFD34, 0x0633, 0x062C, 0,
5333     5, 0xFD35, 0x0633, 0x062D, 0,
5334     5, 0xFD36, 0x0633, 0x062E, 0,
5335     5, 0xFD37, 0x0634, 0x062C, 0,
5336     5, 0xFD38, 0x0634, 0x062D, 0,
5337     5, 0xFD39, 0x0634, 0x062E, 0,
5338     5, 0xFD3A, 0x0637, 0x0645, 0,
5339     5, 0xFD3B, 0x0638, 0x0645, 0,
5340     6, 0xFD3C, 0x0627, 0x064B, 0,
5341     7, 0xFD3D, 0x0627, 0x064B, 0,
5342     4, 0xFD50, 0x062A, 0x062C, 0x0645, 0,
5343     6, 0xFD51, 0x062A, 0x062D, 0x062C, 0,
5344     4, 0xFD52, 0x062A, 0x062D, 0x062C, 0,
5345     4, 0xFD53, 0x062A, 0x062D, 0x0645, 0,
5346     4, 0xFD54, 0x062A, 0x062E, 0x0645, 0,
5347     4, 0xFD55, 0x062A, 0x0645, 0x062C, 0,
5348     4, 0xFD56, 0x062A, 0x0645, 0x062D, 0,
5349     4, 0xFD57, 0x062A, 0x0645, 0x062E, 0,
5350     6, 0xFD58, 0x062C, 0x0645, 0x062D, 0,
5351     4, 0xFD59, 0x062C, 0x0645, 0x062D, 0,
5352     6, 0xFD5A, 0x062D, 0x0645, 0x064A, 0,
5353     6, 0xFD5B, 0x062D, 0x0645, 0x0649, 0,
5354     4, 0xFD5C, 0x0633, 0x062D, 0x062C, 0,
5355     4, 0xFD5D, 0x0633, 0x062C, 0x062D, 0,
5356     6, 0xFD5E, 0x0633, 0x062C, 0x0649, 0,
5357     6, 0xFD5F, 0x0633, 0x0645, 0x062D, 0,
5358     4, 0xFD60, 0x0633, 0x0645, 0x062D, 0,
5359     4, 0xFD61, 0x0633, 0x0645, 0x062C, 0,
5360     6, 0xFD62, 0x0633, 0x0645, 0x0645, 0,
5361     4, 0xFD63, 0x0633, 0x0645, 0x0645, 0,
5362     6, 0xFD64, 0x0635, 0x062D, 0x062D, 0,
5363     4, 0xFD65, 0x0635, 0x062D, 0x062D, 0,
5364     6, 0xFD66, 0x0635, 0x0645, 0x0645, 0,
5365     6, 0xFD67, 0x0634, 0x062D, 0x0645, 0,
5366     4, 0xFD68, 0x0634, 0x062D, 0x0645, 0,
5367     6, 0xFD69, 0x0634, 0x062C, 0x064A, 0,
5368     6, 0xFD6A, 0x0634, 0x0645, 0x062E, 0,
5369     4, 0xFD6B, 0x0634, 0x0645, 0x062E, 0,
5370     6, 0xFD6C, 0x0634, 0x0645, 0x0645, 0,
5371     4, 0xFD6D, 0x0634, 0x0645, 0x0645, 0,
5372     6, 0xFD6E, 0x0636, 0x062D, 0x0649, 0,
5373     6, 0xFD6F, 0x0636, 0x062E, 0x0645, 0,
5374     4, 0xFD70, 0x0636, 0x062E, 0x0645, 0,
5375     6, 0xFD71, 0x0637, 0x0645, 0x062D, 0,
5376     4, 0xFD72, 0x0637, 0x0645, 0x062D, 0,
5377     4, 0xFD73, 0x0637, 0x0645, 0x0645, 0,
5378     6, 0xFD74, 0x0637, 0x0645, 0x064A, 0,
5379     6, 0xFD75, 0x0639, 0x062C, 0x0645, 0,
5380     6, 0xFD76, 0x0639, 0x0645, 0x0645, 0,
5381     4, 0xFD77, 0x0639, 0x0645, 0x0645, 0,
5382     6, 0xFD78, 0x0639, 0x0645, 0x0649, 0,
5383     6, 0xFD79, 0x063A, 0x0645, 0x0645, 0,
5384     6, 0xFD7A, 0x063A, 0x0645, 0x064A, 0,
5385     6, 0xFD7B, 0x063A, 0x0645, 0x0649, 0,
5386     6, 0xFD7C, 0x0641, 0x062E, 0x0645, 0,
5387     4, 0xFD7D, 0x0641, 0x062E, 0x0645, 0,
5388     6, 0xFD7E, 0x0642, 0x0645, 0x062D, 0,
5389     6, 0xFD7F, 0x0642, 0x0645, 0x0645, 0,
5390     6, 0xFD80, 0x0644, 0x062D, 0x0645, 0,
5391     6, 0xFD81, 0x0644, 0x062D, 0x064A, 0,
5392     6, 0xFD82, 0x0644, 0x062D, 0x0649, 0,
5393     4, 0xFD83, 0x0644, 0x062C, 0x062C, 0,
5394     6, 0xFD84, 0x0644, 0x062C, 0x062C, 0,
5395     6, 0xFD85, 0x0644, 0x062E, 0x0645, 0,
5396     4, 0xFD86, 0x0644, 0x062E, 0x0645, 0,
5397     6, 0xFD87, 0x0644, 0x0645, 0x062D, 0,
5398     4, 0xFD88, 0x0644, 0x0645, 0x062D, 0,
5399     4, 0xFD89, 0x0645, 0x062D, 0x062C, 0,
5400     4, 0xFD8A, 0x0645, 0x062D, 0x0645, 0,
5401     6, 0xFD8B, 0x0645, 0x062D, 0x064A, 0,
5402     4, 0xFD8C, 0x0645, 0x062C, 0x062D, 0,
5403     4, 0xFD8D, 0x0645, 0x062C, 0x0645, 0,
5404     4, 0xFD8E, 0x0645, 0x062E, 0x062C, 0,
5405     4, 0xFD8F, 0x0645, 0x062E, 0x0645, 0,
5406     4, 0xFD92, 0x0645, 0x062C, 0x062E, 0,
5407     4, 0xFD93, 0x0647, 0x0645, 0x062C, 0,
5408     4, 0xFD94, 0x0647, 0x0645, 0x0645, 0,
5409     4, 0xFD95, 0x0646, 0x062D, 0x0645, 0,
5410     6, 0xFD96, 0x0646, 0x062D, 0x0649, 0,
5411     6, 0xFD97, 0x0646, 0x062C, 0x0645, 0,
5412     4, 0xFD98, 0x0646, 0x062C, 0x0645, 0,
5413     6, 0xFD99, 0x0646, 0x062C, 0x0649, 0,
5414     6, 0xFD9A, 0x0646, 0x0645, 0x064A, 0,
5415     6, 0xFD9B, 0x0646, 0x0645, 0x0649, 0,
5416     6, 0xFD9C, 0x064A, 0x0645, 0x0645, 0,
5417     4, 0xFD9D, 0x064A, 0x0645, 0x0645, 0,
5418     6, 0xFD9E, 0x0628, 0x062E, 0x064A, 0,
5419     6, 0xFD9F, 0x062A, 0x062C, 0x064A, 0,
5420     6, 0xFDA0, 0x062A, 0x062C, 0x0649, 0,
5421     6, 0xFDA1, 0x062A, 0x062E, 0x064A, 0,
5422     6, 0xFDA2, 0x062A, 0x062E, 0x0649, 0,
5423     6, 0xFDA3, 0x062A, 0x0645, 0x064A, 0,
5424     6, 0xFDA4, 0x062A, 0x0645, 0x0649, 0,
5425     6, 0xFDA5, 0x062C, 0x0645, 0x064A, 0,
5426     6, 0xFDA6, 0x062C, 0x062D, 0x0649, 0,
5427     6, 0xFDA7, 0x062C, 0x0645, 0x0649, 0,
5428     6, 0xFDA8, 0x0633, 0x062E, 0x0649, 0,
5429     6, 0xFDA9, 0x0635, 0x062D, 0x064A, 0,
5430     6, 0xFDAA, 0x0634, 0x062D, 0x064A, 0,
5431     6, 0xFDAB, 0x0636, 0x062D, 0x064A, 0,
5432     6, 0xFDAC, 0x0644, 0x062C, 0x064A, 0,
5433     6, 0xFDAD, 0x0644, 0x0645, 0x064A, 0,
5434     6, 0xFDAE, 0x064A, 0x062D, 0x064A, 0,
5435     6, 0xFDAF, 0x064A, 0x062C, 0x064A, 0,
5436     6, 0xFDB0, 0x064A, 0x0645, 0x064A, 0,
5437     6, 0xFDB1, 0x0645, 0x0645, 0x064A, 0,
5438     6, 0xFDB2, 0x0642, 0x0645, 0x064A, 0,
5439     6, 0xFDB3, 0x0646, 0x062D, 0x064A, 0,
5440     4, 0xFDB4, 0x0642, 0x0645, 0x062D, 0,
5441     4, 0xFDB5, 0x0644, 0x062D, 0x0645, 0,
5442     6, 0xFDB6, 0x0639, 0x0645, 0x064A, 0,
5443     6, 0xFDB7, 0x0643, 0x0645, 0x064A, 0,
5444     4, 0xFDB8, 0x0646, 0x062C, 0x062D, 0,
5445     6, 0xFDB9, 0x0645, 0x062E, 0x064A, 0,
5446     4, 0xFDBA, 0x0644, 0x062C, 0x0645, 0,
5447     6, 0xFDBB, 0x0643, 0x0645, 0x0645, 0,
5448     6, 0xFDBC, 0x0644, 0x062C, 0x0645, 0,
5449     6, 0xFDBD, 0x0646, 0x062C, 0x062D, 0,
5450     6, 0xFDBE, 0x062C, 0x062D, 0x064A, 0,
5451     6, 0xFDBF, 0x062D, 0x062C, 0x064A, 0,
5452     6, 0xFDC0, 0x0645, 0x062C, 0x064A, 0,
5453     6, 0xFDC1, 0x0641, 0x0645, 0x064A, 0,
5454     6, 0xFDC2, 0x0628, 0x062D, 0x064A, 0,
5455     4, 0xFDC3, 0x0643, 0x0645, 0x0645, 0,
5456     4, 0xFDC4, 0x0639, 0x062C, 0x0645, 0,
5457     4, 0xFDC5, 0x0635, 0x0645, 0x0645, 0,
5458     6, 0xFDC6, 0x0633, 0x062E, 0x064A, 0,
5459     6, 0xFDC7, 0x0646, 0x062C, 0x064A, 0,
5460     7, 0xFDF0, 0x0635, 0x0644, 0x06D2, 0,
5461     7, 0xFDF1, 0x0642, 0x0644, 0x06D2, 0,
5462     7, 0xFDF2, 0x0627, 0x0644, 0x0644, 0x0647, 0,
5463     7, 0xFDF3, 0x0627, 0x0643, 0x0628, 0x0631, 0,
5464     7, 0xFDF4, 0x0645, 0x062D, 0x0645, 0x062F, 0,
5465     7, 0xFDF5, 0x0635, 0x0644, 0x0639, 0x0645, 0,
5466     7, 0xFDF6, 0x0631, 0x0633, 0x0648, 0x0644, 0,
5467     7, 0xFDF7, 0x0639, 0x0644, 0x064A, 0x0647, 0,
5468     7, 0xFDF8, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5469     7, 0xFDF9, 0x0635, 0x0644, 0x0649, 0,
5470     7, 0xFDFA, 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5471     7, 0xFDFB, 0x062C, 0x0644, 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647, 0,
5472     11, 0xFE30, 0x2025, 0,
5473     11, 0xFE31, 0x2014, 0,
5474     11, 0xFE32, 0x2013, 0,
5475     11, 0xFE33, 0x005F, 0,
5476     11, 0xFE34, 0x005F, 0,
5477     11, 0xFE35, 0x0028, 0,
5478     11, 0xFE36, 0x0029, 0,
5479     11, 0xFE37, 0x007B, 0,
5480     11, 0xFE38, 0x007D, 0,
5481     11, 0xFE39, 0x3014, 0,
5482     11, 0xFE3A, 0x3015, 0,
5483     11, 0xFE3B, 0x3010, 0,
5484     11, 0xFE3C, 0x3011, 0,
5485     11, 0xFE3D, 0x300A, 0,
5486     11, 0xFE3E, 0x300B, 0,
5487     11, 0xFE3F, 0x3008, 0,
5488     11, 0xFE40, 0x3009, 0,
5489     11, 0xFE41, 0x300C, 0,
5490     11, 0xFE42, 0x300D, 0,
5491     11, 0xFE43, 0x300E, 0,
5492     11, 0xFE44, 0x300F, 0,
5493     16, 0xFE49, 0x203E, 0,
5494     16, 0xFE4A, 0x203E, 0,
5495     16, 0xFE4B, 0x203E, 0,
5496     16, 0xFE4C, 0x203E, 0,
5497     16, 0xFE4D, 0x005F, 0,
5498     16, 0xFE4E, 0x005F, 0,
5499     16, 0xFE4F, 0x005F, 0,
5500     14, 0xFE50, 0x002C, 0,
5501     14, 0xFE51, 0x3001, 0,
5502     14, 0xFE52, 0x002E, 0,
5503     14, 0xFE54, 0x003B, 0,
5504     14, 0xFE55, 0x003A, 0,
5505     14, 0xFE56, 0x003F, 0,
5506     14, 0xFE57, 0x0021, 0,
5507     14, 0xFE58, 0x2014, 0,
5508     14, 0xFE59, 0x0028, 0,
5509     14, 0xFE5A, 0x0029, 0,
5510     14, 0xFE5B, 0x007B, 0,
5511     14, 0xFE5C, 0x007D, 0,
5512     14, 0xFE5D, 0x3014, 0,
5513     14, 0xFE5E, 0x3015, 0,
5514     14, 0xFE5F, 0x0023, 0,
5515     14, 0xFE60, 0x0026, 0,
5516     14, 0xFE61, 0x002A, 0,
5517     14, 0xFE62, 0x002B, 0,
5518     14, 0xFE63, 0x002D, 0,
5519     14, 0xFE64, 0x003C, 0,
5520     14, 0xFE65, 0x003E, 0,
5521     14, 0xFE66, 0x003D, 0,
5522     14, 0xFE68, 0x005C, 0,
5523     14, 0xFE69, 0x0024, 0,
5524     14, 0xFE6A, 0x0025, 0,
5525     14, 0xFE6B, 0x0040, 0,
5526     7, 0xFE70, 0x0020, 0x064B, 0,
5527     5, 0xFE71, 0x0640, 0x064B, 0,
5528     7, 0xFE72, 0x0020, 0x064C, 0,
5529     7, 0xFE74, 0x0020, 0x064D, 0,
5530     7, 0xFE76, 0x0020, 0x064E, 0,
5531     5, 0xFE77, 0x0640, 0x064E, 0,
5532     7, 0xFE78, 0x0020, 0x064F, 0,
5533     5, 0xFE79, 0x0640, 0x064F, 0,
5534     7, 0xFE7A, 0x0020, 0x0650, 0,
5535     5, 0xFE7B, 0x0640, 0x0650, 0,
5536     7, 0xFE7C, 0x0020, 0x0651, 0,
5537     5, 0xFE7D, 0x0640, 0x0651, 0,
5538     7, 0xFE7E, 0x0020, 0x0652, 0,
5539     5, 0xFE7F, 0x0640, 0x0652, 0,
5540     7, 0xFE80, 0x0621, 0,
5541     7, 0xFE81, 0x0622, 0,
5542     6, 0xFE82, 0x0622, 0,
5543     7, 0xFE83, 0x0623, 0,
5544     6, 0xFE84, 0x0623, 0,
5545     7, 0xFE85, 0x0624, 0,
5546     6, 0xFE86, 0x0624, 0,
5547     7, 0xFE87, 0x0625, 0,
5548     6, 0xFE88, 0x0625, 0,
5549     7, 0xFE89, 0x0626, 0,
5550     6, 0xFE8A, 0x0626, 0,
5551     4, 0xFE8B, 0x0626, 0,
5552     5, 0xFE8C, 0x0626, 0,
5553     7, 0xFE8D, 0x0627, 0,
5554     6, 0xFE8E, 0x0627, 0,
5555     7, 0xFE8F, 0x0628, 0,
5556     6, 0xFE90, 0x0628, 0,
5557     4, 0xFE91, 0x0628, 0,
5558     5, 0xFE92, 0x0628, 0,
5559     7, 0xFE93, 0x0629, 0,
5560     6, 0xFE94, 0x0629, 0,
5561     7, 0xFE95, 0x062A, 0,
5562     6, 0xFE96, 0x062A, 0,
5563     4, 0xFE97, 0x062A, 0,
5564     5, 0xFE98, 0x062A, 0,
5565     7, 0xFE99, 0x062B, 0,
5566     6, 0xFE9A, 0x062B, 0,
5567     4, 0xFE9B, 0x062B, 0,
5568     5, 0xFE9C, 0x062B, 0,
5569     7, 0xFE9D, 0x062C, 0,
5570     6, 0xFE9E, 0x062C, 0,
5571     4, 0xFE9F, 0x062C, 0,
5572     5, 0xFEA0, 0x062C, 0,
5573     7, 0xFEA1, 0x062D, 0,
5574     6, 0xFEA2, 0x062D, 0,
5575     4, 0xFEA3, 0x062D, 0,
5576     5, 0xFEA4, 0x062D, 0,
5577     7, 0xFEA5, 0x062E, 0,
5578     6, 0xFEA6, 0x062E, 0,
5579     4, 0xFEA7, 0x062E, 0,
5580     5, 0xFEA8, 0x062E, 0,
5581     7, 0xFEA9, 0x062F, 0,
5582     6, 0xFEAA, 0x062F, 0,
5583     7, 0xFEAB, 0x0630, 0,
5584     6, 0xFEAC, 0x0630, 0,
5585     7, 0xFEAD, 0x0631, 0,
5586     6, 0xFEAE, 0x0631, 0,
5587     7, 0xFEAF, 0x0632, 0,
5588     6, 0xFEB0, 0x0632, 0,
5589     7, 0xFEB1, 0x0633, 0,
5590     6, 0xFEB2, 0x0633, 0,
5591     4, 0xFEB3, 0x0633, 0,
5592     5, 0xFEB4, 0x0633, 0,
5593     7, 0xFEB5, 0x0634, 0,
5594     6, 0xFEB6, 0x0634, 0,
5595     4, 0xFEB7, 0x0634, 0,
5596     5, 0xFEB8, 0x0634, 0,
5597     7, 0xFEB9, 0x0635, 0,
5598     6, 0xFEBA, 0x0635, 0,
5599     4, 0xFEBB, 0x0635, 0,
5600     5, 0xFEBC, 0x0635, 0,
5601     7, 0xFEBD, 0x0636, 0,
5602     6, 0xFEBE, 0x0636, 0,
5603     4, 0xFEBF, 0x0636, 0,
5604     5, 0xFEC0, 0x0636, 0,
5605     7, 0xFEC1, 0x0637, 0,
5606     6, 0xFEC2, 0x0637, 0,
5607     4, 0xFEC3, 0x0637, 0,
5608     5, 0xFEC4, 0x0637, 0,
5609     7, 0xFEC5, 0x0638, 0,
5610     6, 0xFEC6, 0x0638, 0,
5611     4, 0xFEC7, 0x0638, 0,
5612     5, 0xFEC8, 0x0638, 0,
5613     7, 0xFEC9, 0x0639, 0,
5614     6, 0xFECA, 0x0639, 0,
5615     4, 0xFECB, 0x0639, 0,
5616     5, 0xFECC, 0x0639, 0,
5617     7, 0xFECD, 0x063A, 0,
5618     6, 0xFECE, 0x063A, 0,
5619     4, 0xFECF, 0x063A, 0,
5620     5, 0xFED0, 0x063A, 0,
5621     7, 0xFED1, 0x0641, 0,
5622     6, 0xFED2, 0x0641, 0,
5623     4, 0xFED3, 0x0641, 0,
5624     5, 0xFED4, 0x0641, 0,
5625     7, 0xFED5, 0x0642, 0,
5626     6, 0xFED6, 0x0642, 0,
5627     4, 0xFED7, 0x0642, 0,
5628     5, 0xFED8, 0x0642, 0,
5629     7, 0xFED9, 0x0643, 0,
5630     6, 0xFEDA, 0x0643, 0,
5631     4, 0xFEDB, 0x0643, 0,
5632     5, 0xFEDC, 0x0643, 0,
5633     7, 0xFEDD, 0x0644, 0,
5634     6, 0xFEDE, 0x0644, 0,
5635     4, 0xFEDF, 0x0644, 0,
5636     5, 0xFEE0, 0x0644, 0,
5637     7, 0xFEE1, 0x0645, 0,
5638     6, 0xFEE2, 0x0645, 0,
5639     4, 0xFEE3, 0x0645, 0,
5640     5, 0xFEE4, 0x0645, 0,
5641     7, 0xFEE5, 0x0646, 0,
5642     6, 0xFEE6, 0x0646, 0,
5643     4, 0xFEE7, 0x0646, 0,
5644     5, 0xFEE8, 0x0646, 0,
5645     7, 0xFEE9, 0x0647, 0,
5646     6, 0xFEEA, 0x0647, 0,
5647     4, 0xFEEB, 0x0647, 0,
5648     5, 0xFEEC, 0x0647, 0,
5649     7, 0xFEED, 0x0648, 0,
5650     6, 0xFEEE, 0x0648, 0,
5651     7, 0xFEEF, 0x0649, 0,
5652     6, 0xFEF0, 0x0649, 0,
5653     7, 0xFEF1, 0x064A, 0,
5654     6, 0xFEF2, 0x064A, 0,
5655     4, 0xFEF3, 0x064A, 0,
5656     5, 0xFEF4, 0x064A, 0,
5657     7, 0xFEF5, 0x0644, 0x0622, 0,
5658     6, 0xFEF6, 0x0644, 0x0622, 0,
5659     7, 0xFEF7, 0x0644, 0x0623, 0,
5660     6, 0xFEF8, 0x0644, 0x0623, 0,
5661     7, 0xFEF9, 0x0644, 0x0625, 0,
5662     6, 0xFEFA, 0x0644, 0x0625, 0,
5663     7, 0xFEFB, 0x0644, 0x0627, 0,
5664     6, 0xFEFC, 0x0644, 0x0627, 0,
5665     12, 0xFF01, 0x0021, 0,
5666     12, 0xFF02, 0x0022, 0,
5667     12, 0xFF03, 0x0023, 0,
5668     12, 0xFF04, 0x0024, 0,
5669     12, 0xFF05, 0x0025, 0,
5670     12, 0xFF06, 0x0026, 0,
5671     12, 0xFF07, 0x0027, 0,
5672     12, 0xFF08, 0x0028, 0,
5673     12, 0xFF09, 0x0029, 0,
5674     12, 0xFF0A, 0x002A, 0,
5675     12, 0xFF0B, 0x002B, 0,
5676     12, 0xFF0C, 0x002C, 0,
5677     12, 0xFF0D, 0x002D, 0,
5678     12, 0xFF0E, 0x002E, 0,
5679     12, 0xFF0F, 0x002F, 0,
5680     12, 0xFF10, 0x0030, 0,
5681     12, 0xFF11, 0x0031, 0,
5682     12, 0xFF12, 0x0032, 0,
5683     12, 0xFF13, 0x0033, 0,
5684     12, 0xFF14, 0x0034, 0,
5685     12, 0xFF15, 0x0035, 0,
5686     12, 0xFF16, 0x0036, 0,
5687     12, 0xFF17, 0x0037, 0,
5688     12, 0xFF18, 0x0038, 0,
5689     12, 0xFF19, 0x0039, 0,
5690     12, 0xFF1A, 0x003A, 0,
5691     12, 0xFF1B, 0x003B, 0,
5692     12, 0xFF1C, 0x003C, 0,
5693     12, 0xFF1D, 0x003D, 0,
5694     12, 0xFF1E, 0x003E, 0,
5695     12, 0xFF1F, 0x003F, 0,
5696     12, 0xFF20, 0x0040, 0,
5697     12, 0xFF21, 0x0041, 0,
5698     12, 0xFF22, 0x0042, 0,
5699     12, 0xFF23, 0x0043, 0,
5700     12, 0xFF24, 0x0044, 0,
5701     12, 0xFF25, 0x0045, 0,
5702     12, 0xFF26, 0x0046, 0,
5703     12, 0xFF27, 0x0047, 0,
5704     12, 0xFF28, 0x0048, 0,
5705     12, 0xFF29, 0x0049, 0,
5706     12, 0xFF2A, 0x004A, 0,
5707     12, 0xFF2B, 0x004B, 0,
5708     12, 0xFF2C, 0x004C, 0,
5709     12, 0xFF2D, 0x004D, 0,
5710     12, 0xFF2E, 0x004E, 0,
5711     12, 0xFF2F, 0x004F, 0,
5712     12, 0xFF30, 0x0050, 0,
5713     12, 0xFF31, 0x0051, 0,
5714     12, 0xFF32, 0x0052, 0,
5715     12, 0xFF33, 0x0053, 0,
5716     12, 0xFF34, 0x0054, 0,
5717     12, 0xFF35, 0x0055, 0,
5718     12, 0xFF36, 0x0056, 0,
5719     12, 0xFF37, 0x0057, 0,
5720     12, 0xFF38, 0x0058, 0,
5721     12, 0xFF39, 0x0059, 0,
5722     12, 0xFF3A, 0x005A, 0,
5723     12, 0xFF3B, 0x005B, 0,
5724     12, 0xFF3C, 0x005C, 0,
5725     12, 0xFF3D, 0x005D, 0,
5726     12, 0xFF3E, 0x005E, 0,
5727     12, 0xFF3F, 0x005F, 0,
5728     12, 0xFF40, 0x0060, 0,
5729     12, 0xFF41, 0x0061, 0,
5730     12, 0xFF42, 0x0062, 0,
5731     12, 0xFF43, 0x0063, 0,
5732     12, 0xFF44, 0x0064, 0,
5733     12, 0xFF45, 0x0065, 0,
5734     12, 0xFF46, 0x0066, 0,
5735     12, 0xFF47, 0x0067, 0,
5736     12, 0xFF48, 0x0068, 0,
5737     12, 0xFF49, 0x0069, 0,
5738     12, 0xFF4A, 0x006A, 0,
5739     12, 0xFF4B, 0x006B, 0,
5740     12, 0xFF4C, 0x006C, 0,
5741     12, 0xFF4D, 0x006D, 0,
5742     12, 0xFF4E, 0x006E, 0,
5743     12, 0xFF4F, 0x006F, 0,
5744     12, 0xFF50, 0x0070, 0,
5745     12, 0xFF51, 0x0071, 0,
5746     12, 0xFF52, 0x0072, 0,
5747     12, 0xFF53, 0x0073, 0,
5748     12, 0xFF54, 0x0074, 0,
5749     12, 0xFF55, 0x0075, 0,
5750     12, 0xFF56, 0x0076, 0,
5751     12, 0xFF57, 0x0077, 0,
5752     12, 0xFF58, 0x0078, 0,
5753     12, 0xFF59, 0x0079, 0,
5754     12, 0xFF5A, 0x007A, 0,
5755     12, 0xFF5B, 0x007B, 0,
5756     12, 0xFF5C, 0x007C, 0,
5757     12, 0xFF5D, 0x007D, 0,
5758     12, 0xFF5E, 0x007E, 0,
5759     13, 0xFF61, 0x3002, 0,
5760     13, 0xFF62, 0x300C, 0,
5761     13, 0xFF63, 0x300D, 0,
5762     13, 0xFF64, 0x3001, 0,
5763     13, 0xFF65, 0x30FB, 0,
5764     13, 0xFF66, 0x30F2, 0,
5765     13, 0xFF67, 0x30A1, 0,
5766     13, 0xFF68, 0x30A3, 0,
5767     13, 0xFF69, 0x30A5, 0,
5768     13, 0xFF6A, 0x30A7, 0,
5769     13, 0xFF6B, 0x30A9, 0,
5770     13, 0xFF6C, 0x30E3, 0,
5771     13, 0xFF6D, 0x30E5, 0,
5772     13, 0xFF6E, 0x30E7, 0,
5773     13, 0xFF6F, 0x30C3, 0,
5774     13, 0xFF70, 0x30FC, 0,
5775     13, 0xFF71, 0x30A2, 0,
5776     13, 0xFF72, 0x30A4, 0,
5777     13, 0xFF73, 0x30A6, 0,
5778     13, 0xFF74, 0x30A8, 0,
5779     13, 0xFF75, 0x30AA, 0,
5780     13, 0xFF76, 0x30AB, 0,
5781     13, 0xFF77, 0x30AD, 0,
5782     13, 0xFF78, 0x30AF, 0,
5783     13, 0xFF79, 0x30B1, 0,
5784     13, 0xFF7A, 0x30B3, 0,
5785     13, 0xFF7B, 0x30B5, 0,
5786     13, 0xFF7C, 0x30B7, 0,
5787     13, 0xFF7D, 0x30B9, 0,
5788     13, 0xFF7E, 0x30BB, 0,
5789     13, 0xFF7F, 0x30BD, 0,
5790     13, 0xFF80, 0x30BF, 0,
5791     13, 0xFF81, 0x30C1, 0,
5792     13, 0xFF82, 0x30C4, 0,
5793     13, 0xFF83, 0x30C6, 0,
5794     13, 0xFF84, 0x30C8, 0,
5795     13, 0xFF85, 0x30CA, 0,
5796     13, 0xFF86, 0x30CB, 0,
5797     13, 0xFF87, 0x30CC, 0,
5798     13, 0xFF88, 0x30CD, 0,
5799     13, 0xFF89, 0x30CE, 0,
5800     13, 0xFF8A, 0x30CF, 0,
5801     13, 0xFF8B, 0x30D2, 0,
5802     13, 0xFF8C, 0x30D5, 0,
5803     13, 0xFF8D, 0x30D8, 0,
5804     13, 0xFF8E, 0x30DB, 0,
5805     13, 0xFF8F, 0x30DE, 0,
5806     13, 0xFF90, 0x30DF, 0,
5807     13, 0xFF91, 0x30E0, 0,
5808     13, 0xFF92, 0x30E1, 0,
5809     13, 0xFF93, 0x30E2, 0,
5810     13, 0xFF94, 0x30E4, 0,
5811     13, 0xFF95, 0x30E6, 0,
5812     13, 0xFF96, 0x30E8, 0,
5813     13, 0xFF97, 0x30E9, 0,
5814     13, 0xFF98, 0x30EA, 0,
5815     13, 0xFF99, 0x30EB, 0,
5816     13, 0xFF9A, 0x30EC, 0,
5817     13, 0xFF9B, 0x30ED, 0,
5818     13, 0xFF9C, 0x30EF, 0,
5819     13, 0xFF9D, 0x30F3, 0,
5820     13, 0xFF9E, 0x3099, 0,
5821     13, 0xFF9F, 0x309A, 0,
5822     13, 0xFFA0, 0x3164, 0,
5823     13, 0xFFA1, 0x3131, 0,
5824     13, 0xFFA2, 0x3132, 0,
5825     13, 0xFFA3, 0x3133, 0,
5826     13, 0xFFA4, 0x3134, 0,
5827     13, 0xFFA5, 0x3135, 0,
5828     13, 0xFFA6, 0x3136, 0,
5829     13, 0xFFA7, 0x3137, 0,
5830     13, 0xFFA8, 0x3138, 0,
5831     13, 0xFFA9, 0x3139, 0,
5832     13, 0xFFAA, 0x313A, 0,
5833     13, 0xFFAB, 0x313B, 0,
5834     13, 0xFFAC, 0x313C, 0,
5835     13, 0xFFAD, 0x313D, 0,
5836     13, 0xFFAE, 0x313E, 0,
5837     13, 0xFFAF, 0x313F, 0,
5838     13, 0xFFB0, 0x3140, 0,
5839     13, 0xFFB1, 0x3141, 0,
5840     13, 0xFFB2, 0x3142, 0,
5841     13, 0xFFB3, 0x3143, 0,
5842     13, 0xFFB4, 0x3144, 0,
5843     13, 0xFFB5, 0x3145, 0,
5844     13, 0xFFB6, 0x3146, 0,
5845     13, 0xFFB7, 0x3147, 0,
5846     13, 0xFFB8, 0x3148, 0,
5847     13, 0xFFB9, 0x3149, 0,
5848     13, 0xFFBA, 0x314A, 0,
5849     13, 0xFFBB, 0x314B, 0,
5850     13, 0xFFBC, 0x314C, 0,
5851     13, 0xFFBD, 0x314D, 0,
5852     13, 0xFFBE, 0x314E, 0,
5853     13, 0xFFC2, 0x314F, 0,
5854     13, 0xFFC3, 0x3150, 0,
5855     13, 0xFFC4, 0x3151, 0,
5856     13, 0xFFC5, 0x3152, 0,
5857     13, 0xFFC6, 0x3153, 0,
5858     13, 0xFFC7, 0x3154, 0,
5859     13, 0xFFCA, 0x3155, 0,
5860     13, 0xFFCB, 0x3156, 0,
5861     13, 0xFFCC, 0x3157, 0,
5862     13, 0xFFCD, 0x3158, 0,
5863     13, 0xFFCE, 0x3159, 0,
5864     13, 0xFFCF, 0x315A, 0,
5865     13, 0xFFD2, 0x315B, 0,
5866     13, 0xFFD3, 0x315C, 0,
5867     13, 0xFFD4, 0x315D, 0,
5868     13, 0xFFD5, 0x315E, 0,
5869     13, 0xFFD6, 0x315F, 0,
5870     13, 0xFFD7, 0x3160, 0,
5871     13, 0xFFDA, 0x3161, 0,
5872     13, 0xFFDB, 0x3162, 0,
5873     13, 0xFFDC, 0x3163, 0,
5874     12, 0xFFE0, 0x00A2, 0,
5875     12, 0xFFE1, 0x00A3, 0,
5876     12, 0xFFE2, 0x00AC, 0,
5877     12, 0xFFE3, 0x00AF, 0,
5878     12, 0xFFE4, 0x00A6, 0,
5879     12, 0xFFE5, 0x00A5, 0,
5880     12, 0xFFE6, 0x20A9, 0,
5881     13, 0xFFE8, 0x2502, 0,
5882     13, 0xFFE9, 0x2190, 0,
5883     13, 0xFFEA, 0x2191, 0,
5884     13, 0xFFEB, 0x2192, 0,
5885     13, 0xFFEC, 0x2193, 0,
5886     13, 0xFFED, 0x25A0, 0,
5887     13, 0xFFEE, 0x25CB, 0,
5888
5889 };
5890
5891 static const Q_UINT16 di_00[] = {
5892     0, 0, 0, 0, 0, 0, 0, 0,
5893     0, 0, 0, 0, 0, 0, 0, 0,
5894     0, 0, 0, 0, 0, 0, 0, 0,
5895     0, 0, 0, 0, 0, 0, 0, 0,
5896     0, 0, 0, 0, 0, 0, 0, 0,
5897     0, 0, 0, 0, 0, 0, 0, 0,
5898     0, 0, 0, 0, 0, 0, 0, 0,
5899     0, 0, 0, 0, 0, 0, 0, 0,
5900     0, 0, 0, 0, 0, 0, 0, 0,
5901     0, 0, 0, 0, 0, 0, 0, 0,
5902     0, 0, 0, 0, 0, 0, 0, 0,
5903     0, 0, 0, 0, 0, 0, 0, 0,
5904     0, 0, 0, 0, 0, 0, 0, 0,
5905     0, 0, 0, 0, 0, 0, 0, 0,
5906     0, 0, 0, 0, 0, 0, 0, 0,
5907     0, 0, 0, 0, 0, 0, 0, 0,
5908     0, 0, 0, 0, 0, 0, 0, 0,
5909     0, 0, 0, 0, 0, 0, 0, 0,
5910     0, 0, 0, 0, 0, 0, 0, 0,
5911     0, 0, 0, 0, 0, 0, 0, 0,
5912     1, 0, 0, 0, 0, 0, 0, 0,
5913     5, 0, 10, 0, 0, 0, 0, 14,
5914     0, 0, 19, 23, 27, 32, 0, 0,
5915     36, 41, 45, 0, 49, 55, 61, 0,
5916     67, 72, 77, 82, 87, 92, 0, 97,
5917     102, 107, 112, 117, 122, 127, 132, 137,
5918     0, 142, 147, 152, 157, 162, 167, 0,
5919     0, 172, 177, 182, 187, 192, 0, 0,
5920     197, 202, 207, 212, 217, 222, 0, 227,
5921     232, 237, 242, 247, 252, 257, 262, 267,
5922     0, 272, 277, 282, 287, 292, 297, 0,
5923     0, 302, 307, 312, 317, 322, 0, 327,
5924 };
5925
5926 static const Q_UINT16 di_01[] = {
5927     332, 337, 342, 347, 352, 357, 362, 367,
5928     372, 377, 382, 387, 392, 397, 402, 407,
5929     0, 0, 412, 417, 422, 427, 432, 437,
5930     442, 447, 452, 457, 462, 467, 472, 477,
5931     482, 487, 492, 497, 502, 507, 0, 0,
5932     512, 517, 522, 527, 532, 537, 542, 547,
5933     552, 0, 557, 562, 567, 572, 577, 582,
5934     0, 587, 592, 597, 602, 607, 612, 617,
5935     622, 0, 0, 627, 632, 637, 642, 647,
5936     652, 657, 0, 0, 662, 667, 672, 677,
5937     682, 687, 0, 0, 692, 697, 702, 707,
5938     712, 717, 722, 727, 732, 737, 742, 747,
5939     752, 757, 762, 767, 772, 777, 0, 0,
5940     782, 787, 792, 797, 802, 807, 812, 817,
5941     822, 827, 832, 837, 842, 847, 852, 857,
5942     862, 867, 872, 877, 882, 887, 892, 897,
5943     0, 0, 0, 0, 0, 0, 0, 0,
5944     0, 0, 0, 0, 0, 0, 0, 0,
5945     0, 0, 0, 0, 0, 0, 0, 0,
5946     0, 0, 0, 0, 0, 0, 0, 0,
5947     901, 906, 0, 0, 0, 0, 0, 0,
5948     0, 0, 0, 0, 0, 0, 0, 911,
5949     916, 0, 0, 0, 0, 0, 0, 0,
5950     0, 0, 0, 0, 0, 0, 0, 0,
5951     0, 0, 0, 0, 921, 926, 931, 936,
5952     941, 946, 951, 956, 961, 966, 971, 976,
5953     981, 986, 991, 996, 1001, 1006, 1011, 1016,
5954     1021, 1026, 1031, 1036, 1041, 0, 1046, 1051,
5955     1056, 1061, 1066, 1071, 0, 0, 1076, 1081,
5956     1086, 1091, 1096, 1101, 1106, 1111, 1116, 1121,
5957     1126, 1131, 1136, 1141, 1146, 1151, 0, 0,
5958     1156, 1161, 1166, 1171, 1176, 1181, 1186, 1191,
5959 };
5960
5961 static const Q_UINT16 di_02[] = {
5962     1196, 1201, 1206, 1211, 1216, 1221, 1226, 1231,
5963     1236, 1241, 1246, 1251, 1256, 1261, 1266, 1271,
5964     1276, 1281, 1286, 1291, 1296, 1301, 1306, 1311,
5965     1316, 1321, 1326, 1331, 0, 0, 1336, 1341,
5966     0, 0, 0, 0, 0, 0, 1346, 1351,
5967     1356, 1361, 1366, 1371, 1376, 1381, 1386, 1391,
5968     1396, 1401, 1406, 1411, 0, 0, 0, 0,
5969     0, 0, 0, 0, 0, 0, 0, 0,
5970     0, 0, 0, 0, 0, 0, 0, 0,
5971     0, 0, 0, 0, 0, 0, 0, 0,
5972     0, 0, 0, 0, 0, 0, 0, 0,
5973     0, 0, 0, 0, 0, 0, 0, 0,
5974     0, 0, 0, 0, 0, 0, 0, 0,
5975     0, 0, 0, 0, 0, 0, 0, 0,
5976     0, 0, 0, 0, 0, 0, 0, 0,
5977     0, 0, 0, 0, 0, 0, 0, 0,
5978     0, 0, 0, 0, 0, 0, 0, 0,
5979     0, 0, 0, 0, 0, 0, 0, 0,
5980     0, 0, 0, 0, 0, 0, 0, 0,
5981     0, 0, 0, 0, 0, 0, 0, 0,
5982     0, 0, 0, 0, 0, 0, 0, 0,
5983     0, 0, 0, 0, 0, 0, 0, 0,
5984     1416, 1420, 1424, 1428, 1432, 1436, 1440, 1444,
5985     1448, 0, 0, 0, 0, 0, 0, 0,
5986     0, 0, 0, 0, 0, 0, 0, 0,
5987     0, 0, 0, 0, 0, 0, 0, 0,
5988     0, 0, 0, 0, 0, 0, 0, 0,
5989     1452, 1457, 1462, 1467, 1472, 1477, 0, 0,
5990     1482, 1486, 1490, 1494, 1498, 0, 0, 0,
5991     0, 0, 0, 0, 0, 0, 0, 0,
5992     0, 0, 0, 0, 0, 0, 0, 0,
5993     0, 0, 0, 0, 0, 0, 0, 0,
5994 };
5995
5996 static const Q_UINT16 di_03[] = {
5997     0, 0, 0, 0, 0, 0, 0, 0,
5998     0, 0, 0, 0, 0, 0, 0, 0,
5999     0, 0, 0, 0, 0, 0, 0, 0,
6000     0, 0, 0, 0, 0, 0, 0, 0,
6001     0, 0, 0, 0, 0, 0, 0, 0,
6002     0, 0, 0, 0, 0, 0, 0, 0,
6003     0, 0, 0, 0, 0, 0, 0, 0,
6004     0, 0, 0, 0, 0, 0, 0, 0,
6005     1502, 1506, 0, 1510, 1514, 0, 0, 0,
6006     0, 0, 0, 0, 0, 0, 0, 0,
6007     0, 0, 0, 0, 0, 0, 0, 0,
6008     0, 0, 0, 0, 0, 0, 0, 0,
6009     0, 0, 0, 0, 0, 0, 0, 0,
6010     0, 0, 0, 0, 0, 0, 0, 0,
6011     0, 0, 0, 0, 1519, 0, 0, 0,
6012     0, 0, 1523, 0, 0, 0, 1528, 0,
6013     0, 0, 0, 0, 1532, 1537, 1542, 1547,
6014     1551, 1556, 1561, 0, 1566, 0, 1571, 1576,
6015     1581, 0, 0, 0, 0, 0, 0, 0,
6016     0, 0, 0, 0, 0, 0, 0, 0,
6017     0, 0, 0, 0, 0, 0, 0, 0,
6018     0, 0, 1586, 1591, 1596, 1601, 1606, 1611,
6019     1616, 0, 0, 0, 0, 0, 0, 0,
6020     0, 0, 0, 0, 0, 0, 0, 0,
6021     0, 0, 0, 0, 0, 0, 0, 0,
6022     0, 0, 1621, 1626, 1631, 1636, 1641, 0,
6023     1646, 1650, 1654, 1658, 1663, 1668, 1672, 0,
6024     0, 0, 0, 0, 0, 0, 0, 0,
6025     0, 0, 0, 0, 0, 0, 0, 0,
6026     0, 0, 0, 0, 0, 0, 0, 0,
6027     1676, 1680, 1684, 0, 0, 0, 0, 0,
6028     0, 0, 0, 0, 0, 0, 0, 0,
6029 };
6030
6031 static const Q_UINT16 di_04[] = {
6032     1688, 1693, 0, 1698, 0, 0, 0, 1703,
6033     0, 0, 0, 0, 1708, 1713, 1718, 0,
6034     0, 0, 0, 0, 0, 0, 0, 0,
6035     0, 1723, 0, 0, 0, 0, 0, 0,
6036     0, 0, 0, 0, 0, 0, 0, 0,
6037     0, 0, 0, 0, 0, 0, 0, 0,
6038     0, 0, 0, 0, 0, 0, 0, 0,
6039     0, 1728, 0, 0, 0, 0, 0, 0,
6040     0, 0, 0, 0, 0, 0, 0, 0,
6041     0, 0, 0, 0, 0, 0, 0, 0,
6042     1733, 1738, 0, 1743, 0, 0, 0, 1748,
6043     0, 0, 0, 0, 1753, 1758, 1763, 0,
6044     0, 0, 0, 0, 0, 0, 0, 0,
6045     0, 0, 0, 0, 0, 0, 0, 0,
6046     0, 0, 0, 0, 0, 0, 1768, 1773,
6047     0, 0, 0, 0, 0, 0, 0, 0,
6048     0, 0, 0, 0, 0, 0, 0, 0,
6049     0, 0, 0, 0, 0, 0, 0, 0,
6050     0, 0, 0, 0, 0, 0, 0, 0,
6051     0, 0, 0, 0, 0, 0, 0, 0,
6052     0, 0, 0, 0, 0, 0, 0, 0,
6053     0, 0, 0, 0, 0, 0, 0, 0,
6054     0, 0, 0, 0, 0, 0, 0, 0,
6055     0, 0, 0, 0, 0, 0, 0, 0,
6056     0, 1778, 1783, 0, 0, 0, 0, 0,
6057     0, 0, 0, 0, 0, 0, 0, 0,
6058     1788, 1793, 1798, 1803, 0, 0, 1808, 1813,
6059     0, 0, 1818, 1823, 1828, 1833, 1838, 1843,
6060     0, 0, 1848, 1853, 1858, 1863, 1868, 1873,
6061     0, 0, 1878, 1883, 1888, 1893, 1898, 1903,
6062     1908, 1913, 1918, 1923, 1928, 1933, 0, 0,
6063     1938, 1943, 0, 0, 0, 0, 0, 0,
6064 };
6065
6066 static const Q_UINT16 di_05[] = {
6067     0, 0, 0, 0, 0, 0, 0, 0,
6068     0, 0, 0, 0, 0, 0, 0, 0,
6069     0, 0, 0, 0, 0, 0, 0, 0,
6070     0, 0, 0, 0, 0, 0, 0, 0,
6071     0, 0, 0, 0, 0, 0, 0, 0,
6072     0, 0, 0, 0, 0, 0, 0, 0,
6073     0, 0, 0, 0, 0, 0, 0, 0,
6074     0, 0, 0, 0, 0, 0, 0, 0,
6075     0, 0, 0, 0, 0, 0, 0, 0,
6076     0, 0, 0, 0, 0, 0, 0, 0,
6077     0, 0, 0, 0, 0, 0, 0, 0,
6078     0, 0, 0, 0, 0, 0, 0, 0,
6079     0, 0, 0, 0, 0, 0, 0, 0,
6080     0, 0, 0, 0, 0, 0, 0, 0,
6081     0, 0, 0, 0, 0, 0, 0, 0,
6082     0, 0, 0, 0, 0, 0, 0, 0,
6083     0, 0, 0, 0, 0, 0, 0, 1948,
6084     0, 0, 0, 0, 0, 0, 0, 0,
6085     0, 0, 0, 0, 0, 0, 0, 0,
6086     0, 0, 0, 0, 0, 0, 0, 0,
6087     0, 0, 0, 0, 0, 0, 0, 0,
6088     0, 0, 0, 0, 0, 0, 0, 0,
6089     0, 0, 0, 0, 0, 0, 0, 0,
6090     0, 0, 0, 0, 0, 0, 0, 0,
6091     0, 0, 0, 0, 0, 0, 0, 0,
6092     0, 0, 0, 0, 0, 0, 0, 0,
6093     0, 0, 0, 0, 0, 0, 0, 0,
6094     0, 0, 0, 0, 0, 0, 0, 0,
6095     0, 0, 0, 0, 0, 0, 0, 0,
6096     0, 0, 0, 0, 0, 0, 0, 0,
6097     0, 0, 0, 0, 0, 0, 0, 0,
6098     0, 0, 0, 0, 0, 0, 0, 0,
6099 };
6100
6101 static const Q_UINT16 di_06[] = {
6102     0, 0, 0, 0, 0, 0, 0, 0,
6103     0, 0, 0, 0, 0, 0, 0, 0,
6104     0, 0, 0, 0, 0, 0, 0, 0,
6105     0, 0, 0, 0, 0, 0, 0, 0,
6106     0, 0, 1953, 1958, 1963, 1968, 1973, 0,
6107     0, 0, 0, 0, 0, 0, 0, 0,
6108     0, 0, 0, 0, 0, 0, 0, 0,
6109     0, 0, 0, 0, 0, 0, 0, 0,
6110     0, 0, 0, 0, 0, 0, 0, 0,
6111     0, 0, 0, 0, 0, 0, 0, 0,
6112     0, 0, 0, 0, 0, 0, 0, 0,
6113     0, 0, 0, 0, 0, 0, 0, 0,
6114     0, 0, 0, 0, 0, 0, 0, 0,
6115     0, 0, 0, 0, 0, 0, 0, 0,
6116     0, 0, 0, 0, 0, 1978, 1983, 1988,
6117     1993, 0, 0, 0, 0, 0, 0, 0,
6118     0, 0, 0, 0, 0, 0, 0, 0,
6119     0, 0, 0, 0, 0, 0, 0, 0,
6120     0, 0, 0, 0, 0, 0, 0, 0,
6121     0, 0, 0, 0, 0, 0, 0, 0,
6122     0, 0, 0, 0, 0, 0, 0, 0,
6123     0, 0, 0, 0, 0, 0, 0, 0,
6124     0, 0, 0, 0, 0, 0, 0, 0,
6125     0, 0, 0, 0, 0, 0, 0, 0,
6126     1998, 0, 2003, 0, 0, 0, 0, 0,
6127     0, 0, 0, 0, 0, 0, 0, 0,
6128     0, 0, 0, 2008, 0, 0, 0, 0,
6129     0, 0, 0, 0, 0, 0, 0, 0,
6130     0, 0, 0, 0, 0, 0, 0, 0,
6131     0, 0, 0, 0, 0, 0, 0, 0,
6132     0, 0, 0, 0, 0, 0, 0, 0,
6133     0, 0, 0, 0, 0, 0, 0, 0,
6134 };
6135
6136 static const Q_UINT16 di_07[] = {
6137     0, 0, 0, 0, 0, 0, 0, 0,
6138     0, 0, 0, 0, 0, 0, 0, 0,
6139     0, 0, 0, 0, 0, 0, 0, 0,
6140     0, 0, 0, 0, 0, 0, 0, 0,
6141     0, 0, 0, 0, 0, 0, 0, 0,
6142     0, 0, 0, 0, 0, 0, 0, 0,
6143     0, 0, 0, 0, 0, 0, 0, 0,
6144     0, 0, 0, 0, 0, 0, 0, 0,
6145     0, 0, 0, 0, 0, 0, 0, 0,
6146     0, 0, 0, 0, 0, 0, 0, 0,
6147     0, 0, 0, 0, 0, 0, 0, 0,
6148     0, 0, 0, 0, 0, 0, 0, 0,
6149     0, 0, 0, 0, 0, 0, 0, 0,
6150     0, 0, 0, 0, 0, 0, 0, 0,
6151     0, 0, 0, 0, 0, 0, 0, 0,
6152     0, 0, 0, 0, 0, 0, 0, 0,
6153     0, 0, 0, 0, 0, 0, 0, 0,
6154     0, 0, 0, 0, 0, 0, 0, 0,
6155     0, 0, 0, 0, 0, 0, 0, 0,
6156     0, 0, 0, 0, 0, 0, 0, 0,
6157     0, 0, 0, 0, 0, 0, 0, 0,
6158     0, 0, 0, 0, 0, 0, 0, 0,
6159     0, 0, 0, 0, 0, 0, 0, 0,
6160     0, 0, 0, 0, 0, 0, 0, 0,
6161     0, 0, 0, 0, 0, 0, 0, 0,
6162     0, 0, 0, 0, 0, 0, 0, 0,
6163     0, 0, 0, 0, 0, 0, 0, 0,
6164     0, 0, 0, 0, 0, 0, 0, 0,
6165     0, 0, 0, 0, 0, 0, 0, 0,
6166     0, 0, 0, 0, 0, 0, 0, 0,
6167     0, 0, 0, 0, 0, 0, 0, 0,
6168     0, 0, 0, 0, 0, 0, 0, 0,
6169 };
6170
6171 static const Q_UINT16 di_09[] = {
6172     0, 0, 0, 0, 0, 0, 0, 0,
6173     0, 0, 0, 0, 0, 0, 0, 0,
6174     0, 0, 0, 0, 0, 0, 0, 0,
6175     0, 0, 0, 0, 0, 0, 0, 0,
6176     0, 0, 0, 0, 0, 0, 0, 0,
6177     0, 2013, 0, 0, 0, 0, 0, 0,
6178     0, 2018, 0, 0, 2023, 0, 0, 0,
6179     0, 0, 0, 0, 0, 0, 0, 0,
6180     0, 0, 0, 0, 0, 0, 0, 0,
6181     0, 0, 0, 0, 0, 0, 0, 0,
6182     0, 0, 0, 0, 0, 0, 0, 0,
6183     2028, 2033, 2038, 2043, 2048, 2053, 2058, 2063,
6184     0, 0, 0, 0, 0, 0, 0, 0,
6185     0, 0, 0, 0, 0, 0, 0, 0,
6186     0, 0, 0, 0, 0, 0, 0, 0,
6187     0, 0, 0, 0, 0, 0, 0, 0,
6188     0, 0, 0, 0, 0, 0, 0, 0,
6189     0, 0, 0, 0, 0, 0, 0, 0,
6190     0, 0, 0, 0, 0, 0, 0, 0,
6191     0, 0, 0, 0, 0, 0, 0, 0,
6192     0, 0, 0, 0, 0, 0, 0, 0,
6193     0, 0, 0, 0, 0, 0, 0, 0,
6194     0, 0, 0, 0, 0, 0, 0, 0,
6195     0, 0, 0, 0, 0, 0, 0, 0,
6196     0, 0, 0, 0, 0, 0, 0, 0,
6197     0, 0, 0, 2068, 2073, 0, 0, 0,
6198     0, 0, 0, 0, 0, 0, 0, 0,
6199     0, 0, 0, 0, 2078, 2083, 0, 2088,
6200     0, 0, 0, 0, 0, 0, 0, 0,
6201     0, 0, 0, 0, 0, 0, 0, 0,
6202     0, 0, 0, 0, 0, 0, 0, 0,
6203     0, 0, 0, 0, 0, 0, 0, 0,
6204 };
6205
6206 static const Q_UINT16 di_0A[] = {
6207     0, 0, 0, 0, 0, 0, 0, 0,
6208     0, 0, 0, 0, 0, 0, 0, 0,
6209     0, 0, 0, 0, 0, 0, 0, 0,
6210     0, 0, 0, 0, 0, 0, 0, 0,
6211     0, 0, 0, 0, 0, 0, 0, 0,
6212     0, 0, 0, 0, 0, 0, 0, 0,
6213     0, 0, 0, 2093, 0, 0, 2098, 0,
6214     0, 0, 0, 0, 0, 0, 0, 0,
6215     0, 0, 0, 0, 0, 0, 0, 0,
6216     0, 0, 0, 0, 0, 0, 0, 0,
6217     0, 0, 0, 0, 0, 0, 0, 0,
6218     0, 2103, 2108, 2113, 0, 0, 2118, 0,
6219     0, 0, 0, 0, 0, 0, 0, 0,
6220     0, 0, 0, 0, 0, 0, 0, 0,
6221     0, 0, 0, 0, 0, 0, 0, 0,
6222     0, 0, 0, 0, 0, 0, 0, 0,
6223     0, 0, 0, 0, 0, 0, 0, 0,
6224     0, 0, 0, 0, 0, 0, 0, 0,
6225     0, 0, 0, 0, 0, 0, 0, 0,
6226     0, 0, 0, 0, 0, 0, 0, 0,
6227     0, 0, 0, 0, 0, 0, 0, 0,
6228     0, 0, 0, 0, 0, 0, 0, 0,
6229     0, 0, 0, 0, 0, 0, 0, 0,
6230     0, 0, 0, 0, 0, 0, 0, 0,
6231     0, 0, 0, 0, 0, 0, 0, 0,
6232     0, 0, 0, 0, 0, 0, 0, 0,
6233     0, 0, 0, 0, 0, 0, 0, 0,
6234     0, 0, 0, 0, 0, 0, 0, 0,
6235     0, 0, 0, 0, 0, 0, 0, 0,
6236     0, 0, 0, 0, 0, 0, 0, 0,
6237     0, 0, 0, 0, 0, 0, 0, 0,
6238     0, 0, 0, 0, 0, 0, 0, 0,
6239 };
6240
6241 static const Q_UINT16 di_0B[] = {
6242     0, 0, 0, 0, 0, 0, 0, 0,
6243     0, 0, 0, 0, 0, 0, 0, 0,
6244     0, 0, 0, 0, 0, 0, 0, 0,
6245     0, 0, 0, 0, 0, 0, 0, 0,
6246     0, 0, 0, 0, 0, 0, 0, 0,
6247     0, 0, 0, 0, 0, 0, 0, 0,
6248     0, 0, 0, 0, 0, 0, 0, 0,
6249     0, 0, 0, 0, 0, 0, 0, 0,
6250     0, 0, 0, 0, 0, 0, 0, 0,
6251     2123, 0, 0, 2128, 2133, 0, 0, 0,
6252     0, 0, 0, 0, 0, 0, 0, 0,
6253     0, 0, 0, 0, 2138, 2143, 0, 0,
6254     0, 0, 0, 0, 0, 0, 0, 0,
6255     0, 0, 0, 0, 0, 0, 0, 0,
6256     0, 0, 0, 0, 0, 0, 0, 0,
6257     0, 0, 0, 0, 0, 0, 0, 0,
6258     0, 0, 0, 0, 0, 0, 0, 0,
6259     0, 0, 0, 0, 0, 0, 0, 0,
6260     0, 0, 0, 0, 2148, 0, 0, 0,
6261     0, 0, 0, 0, 0, 0, 0, 0,
6262     0, 0, 0, 0, 0, 0, 0, 0,
6263     0, 0, 0, 0, 0, 0, 0, 0,
6264     0, 0, 0, 0, 0, 0, 0, 0,
6265     0, 0, 0, 0, 0, 0, 0, 0,
6266     0, 0, 0, 0, 0, 0, 0, 0,
6267     0, 0, 2153, 2158, 2163, 0, 0, 0,
6268     0, 0, 0, 0, 0, 0, 0, 0,
6269     0, 0, 0, 0, 0, 0, 0, 0,
6270     0, 0, 0, 0, 0, 0, 0, 0,
6271     0, 0, 0, 0, 0, 0, 0, 0,
6272     0, 0, 0, 0, 0, 0, 0, 0,
6273     0, 0, 0, 0, 0, 0, 0, 0,
6274 };
6275
6276 static const Q_UINT16 di_0C[] = {
6277     0, 0, 0, 0, 0, 0, 0, 0,
6278     0, 0, 0, 0, 0, 0, 0, 0,
6279     0, 0, 0, 0, 0, 0, 0, 0,
6280     0, 0, 0, 0, 0, 0, 0, 0,
6281     0, 0, 0, 0, 0, 0, 0, 0,
6282     0, 0, 0, 0, 0, 0, 0, 0,
6283     0, 0, 0, 0, 0, 0, 0, 0,
6284     0, 0, 0, 0, 0, 0, 0, 0,
6285     0, 0, 0, 0, 0, 0, 0, 0,
6286     2168, 0, 0, 0, 0, 0, 0, 0,
6287     0, 0, 0, 0, 0, 0, 0, 0,
6288     0, 0, 0, 0, 0, 0, 0, 0,
6289     0, 0, 0, 0, 0, 0, 0, 0,
6290     0, 0, 0, 0, 0, 0, 0, 0,
6291     0, 0, 0, 0, 0, 0, 0, 0,
6292     0, 0, 0, 0, 0, 0, 0, 0,
6293     0, 0, 0, 0, 0, 0, 0, 0,
6294     0, 0, 0, 0, 0, 0, 0, 0,
6295     0, 0, 0, 0, 0, 0, 0, 0,
6296     0, 0, 0, 0, 0, 0, 0, 0,
6297     0, 0, 0, 0, 0, 0, 0, 0,
6298     0, 0, 0, 0, 0, 0, 0, 0,
6299     0, 0, 0, 0, 0, 0, 0, 0,
6300     0, 0, 0, 0, 0, 0, 0, 0,
6301     2173, 0, 0, 0, 0, 0, 0, 2178,
6302     2183, 0, 2188, 2193, 0, 0, 0, 0,
6303     0, 0, 0, 0, 0, 0, 0, 0,
6304     0, 0, 0, 0, 0, 0, 0, 0,
6305     0, 0, 0, 0, 0, 0, 0, 0,
6306     0, 0, 0, 0, 0, 0, 0, 0,
6307     0, 0, 0, 0, 0, 0, 0, 0,
6308     0, 0, 0, 0, 0, 0, 0, 0,
6309 };
6310
6311 static const Q_UINT16 di_0D[] = {
6312     0, 0, 0, 0, 0, 0, 0, 0,
6313     0, 0, 0, 0, 0, 0, 0, 0,
6314     0, 0, 0, 0, 0, 0, 0, 0,
6315     0, 0, 0, 0, 0, 0, 0, 0,
6316     0, 0, 0, 0, 0, 0, 0, 0,
6317     0, 0, 0, 0, 0, 0, 0, 0,
6318     0, 0, 0, 0, 0, 0, 0, 0,
6319     0, 0, 0, 0, 0, 0, 0, 0,
6320     0, 0, 0, 0, 0, 0, 0, 0,
6321     0, 0, 2198, 2203, 2208, 0, 0, 0,
6322     0, 0, 0, 0, 0, 0, 0, 0,
6323     0, 0, 0, 0, 0, 0, 0, 0,
6324     0, 0, 0, 0, 0, 0, 0, 0,
6325     0, 0, 0, 0, 0, 0, 0, 0,
6326     0, 0, 0, 0, 0, 0, 0, 0,
6327     0, 0, 0, 0, 0, 0, 0, 0,
6328     0, 0, 0, 0, 0, 0, 0, 0,
6329     0, 0, 0, 0, 0, 0, 0, 0,
6330     0, 0, 0, 0, 0, 0, 0, 0,
6331     0, 0, 0, 0, 0, 0, 0, 0,
6332     0, 0, 0, 0, 0, 0, 0, 0,
6333     0, 0, 0, 0, 0, 0, 0, 0,
6334     0, 0, 0, 0, 0, 0, 0, 0,
6335     0, 0, 0, 0, 0, 0, 0, 0,
6336     0, 0, 0, 0, 0, 0, 0, 0,
6337     0, 0, 0, 0, 0, 0, 0, 0,
6338     0, 0, 0, 0, 0, 0, 0, 0,
6339     0, 0, 2213, 0, 2218, 2223, 2228, 0,
6340     0, 0, 0, 0, 0, 0, 0, 0,
6341     0, 0, 0, 0, 0, 0, 0, 0,
6342     0, 0, 0, 0, 0, 0, 0, 0,
6343     0, 0, 0, 0, 0, 0, 0, 0,
6344 };
6345
6346 static const Q_UINT16 di_0E[] = {
6347     0, 0, 0, 0, 0, 0, 0, 0,
6348     0, 0, 0, 0, 0, 0, 0, 0,
6349     0, 0, 0, 0, 0, 0, 0, 0,
6350     0, 0, 0, 0, 0, 0, 0, 0,
6351     0, 0, 0, 0, 0, 0, 0, 0,
6352     0, 0, 0, 0, 0, 0, 0, 0,
6353     0, 0, 0, 2233, 0, 0, 0, 0,
6354     0, 0, 0, 0, 0, 0, 0, 0,
6355     0, 0, 0, 0, 0, 0, 0, 0,
6356     0, 0, 0, 0, 0, 0, 0, 0,
6357     0, 0, 0, 0, 0, 0, 0, 0,
6358     0, 0, 0, 0, 0, 0, 0, 0,
6359     0, 0, 0, 0, 0, 0, 0, 0,
6360     0, 0, 0, 0, 0, 0, 0, 0,
6361     0, 0, 0, 0, 0, 0, 0, 0,
6362     0, 0, 0, 0, 0, 0, 0, 0,
6363     0, 0, 0, 0, 0, 0, 0, 0,
6364     0, 0, 0, 0, 0, 0, 0, 0,
6365     0, 0, 0, 0, 0, 0, 0, 0,
6366     0, 0, 0, 0, 0, 0, 0, 0,
6367     0, 0, 0, 0, 0, 0, 0, 0,
6368     0, 0, 0, 0, 0, 0, 0, 0,
6369     0, 0, 0, 2238, 0, 0, 0, 0,
6370     0, 0, 0, 0, 0, 0, 0, 0,
6371     0, 0, 0, 0, 0, 0, 0, 0,
6372     0, 0, 0, 0, 0, 0, 0, 0,
6373     0, 0, 0, 0, 0, 0, 0, 0,
6374     0, 0, 0, 0, 2243, 2248, 0, 0,
6375     0, 0, 0, 0, 0, 0, 0, 0,
6376     0, 0, 0, 0, 0, 0, 0, 0,
6377     0, 0, 0, 0, 0, 0, 0, 0,
6378     0, 0, 0, 0, 0, 0, 0, 0,
6379 };
6380
6381 static const Q_UINT16 di_0F[] = {
6382     0, 0, 0, 0, 0, 0, 0, 0,
6383     0, 0, 0, 0, 2253, 0, 0, 0,
6384     0, 0, 0, 0, 0, 0, 0, 0,
6385     0, 0, 0, 0, 0, 0, 0, 0,
6386     0, 0, 0, 0, 0, 0, 0, 0,
6387     0, 0, 0, 0, 0, 0, 0, 0,
6388     0, 0, 0, 0, 0, 0, 0, 0,
6389     0, 0, 0, 0, 0, 0, 0, 0,
6390     0, 0, 0, 2257, 0, 0, 0, 0,
6391     0, 0, 0, 0, 0, 2262, 0, 0,
6392     0, 0, 2267, 0, 0, 0, 0, 2272,
6393     0, 0, 0, 0, 2277, 0, 0, 0,
6394     0, 0, 0, 0, 0, 0, 0, 0,
6395     0, 2282, 0, 0, 0, 0, 0, 0,
6396     0, 0, 0, 2287, 0, 2292, 2297, 2302,
6397     2307, 2312, 0, 0, 0, 0, 0, 0,
6398     0, 2317, 0, 0, 0, 0, 0, 0,
6399     0, 0, 0, 0, 0, 0, 0, 0,
6400     0, 0, 0, 2322, 0, 0, 0, 0,
6401     0, 0, 0, 0, 0, 2327, 0, 0,
6402     0, 0, 2332, 0, 0, 0, 0, 2337,
6403     0, 0, 0, 0, 2342, 0, 0, 0,
6404     0, 0, 0, 0, 0, 0, 0, 0,
6405     0, 2347, 0, 0, 0, 0, 0, 0,
6406     0, 0, 0, 0, 0, 0, 0, 0,
6407     0, 0, 0, 0, 0, 0, 0, 0,
6408     0, 0, 0, 0, 0, 0, 0, 0,
6409     0, 0, 0, 0, 0, 0, 0, 0,
6410     0, 0, 0, 0, 0, 0, 0, 0,
6411     0, 0, 0, 0, 0, 0, 0, 0,
6412     0, 0, 0, 0, 0, 0, 0, 0,
6413     0, 0, 0, 0, 0, 0, 0, 0,
6414 };
6415
6416 static const Q_UINT16 di_10[] = {
6417     0, 0, 0, 0, 0, 0, 0, 0,
6418     0, 0, 0, 0, 0, 0, 0, 0,
6419     0, 0, 0, 0, 0, 0, 0, 0,
6420     0, 0, 0, 0, 0, 0, 0, 0,
6421     0, 0, 0, 0, 0, 0, 2352, 0,
6422     0, 0, 0, 0, 0, 0, 0, 0,
6423     0, 0, 0, 0, 0, 0, 0, 0,
6424     0, 0, 0, 0, 0, 0, 0, 0,
6425     0, 0, 0, 0, 0, 0, 0, 0,
6426     0, 0, 0, 0, 0, 0, 0, 0,
6427     0, 0, 0, 0, 0, 0, 0, 0,
6428     0, 0, 0, 0, 0, 0, 0, 0,
6429     0, 0, 0, 0, 0, 0, 0, 0,
6430     0, 0, 0, 0, 0, 0, 0, 0,
6431     0, 0, 0, 0, 0, 0, 0, 0,
6432     0, 0, 0, 0, 0, 0, 0, 0,
6433     0, 0, 0, 0, 0, 0, 0, 0,
6434     0, 0, 0, 0, 0, 0, 0, 0,
6435     0, 0, 0, 0, 0, 0, 0, 0,
6436     0, 0, 0, 0, 0, 0, 0, 0,
6437     0, 0, 0, 0, 0, 0, 0, 0,
6438     0, 0, 0, 0, 0, 0, 0, 0,
6439     0, 0, 0, 0, 0, 0, 0, 0,
6440     0, 0, 0, 0, 0, 0, 0, 0,
6441     0, 0, 0, 0, 0, 0, 0, 0,
6442     0, 0, 0, 0, 0, 0, 0, 0,
6443     0, 0, 0, 0, 0, 0, 0, 0,
6444     0, 0, 0, 0, 0, 0, 0, 0,
6445     0, 0, 0, 0, 0, 0, 0, 0,
6446     0, 0, 0, 0, 0, 0, 0, 0,
6447     0, 0, 0, 0, 0, 0, 0, 0,
6448     0, 0, 0, 0, 0, 0, 0, 0,
6449 };
6450
6451 static const Q_UINT16 di_1E[] = {
6452     2357, 2362, 2367, 2372, 2377, 2382, 2387, 2392,
6453     2397, 2402, 2407, 2412, 2417, 2422, 2427, 2432,
6454     2437, 2442, 2447, 2452, 2457, 2462, 2467, 2472,
6455     2477, 2482, 2487, 2492, 2497, 2502, 2507, 2512,
6456     2517, 2522, 2527, 2532, 2537, 2542, 2547, 2552,
6457     2557, 2562, 2567, 2572, 2577, 2582, 2587, 2592,
6458     2597, 2602, 2607, 2612, 2617, 2622, 2627, 2632,
6459     2637, 2642, 2647, 2652, 2657, 2662, 2667, 2672,
6460     2677, 2682, 2687, 2692, 2697, 2702, 2707, 2712,
6461     2717, 2722, 2727, 2732, 2737, 2742, 2747, 2752,
6462     2757, 2762, 2767, 2772, 2777, 2782, 2787, 2792,
6463     2797, 2802, 2807, 2812, 2817, 2822, 2827, 2832,
6464     2837, 2842, 2847, 2852, 2857, 2862, 2867, 2872,
6465     2877, 2882, 2887, 2892, 2897, 2902, 2907, 2912,
6466     2917, 2922, 2927, 2932, 2937, 2942, 2947, 2952,
6467     2957, 2962, 2967, 2972, 2977, 2982, 2987, 2992,
6468     2997, 3002, 3007, 3012, 3017, 3022, 3027, 3032,
6469     3037, 3042, 3047, 3052, 3057, 3062, 3067, 3072,
6470     3077, 3082, 3087, 3092, 3097, 3102, 3107, 3112,
6471     3117, 3122, 3127, 3132, 0, 0, 0, 0,
6472     3137, 3142, 3147, 3152, 3157, 3162, 3167, 3172,
6473     3177, 3182, 3187, 3192, 3197, 3202, 3207, 3212,
6474     3217, 3222, 3227, 3232, 3237, 3242, 3247, 3252,
6475     3257, 3262, 3267, 3272, 3277, 3282, 3287, 3292,
6476     3297, 3302, 3307, 3312, 3317, 3322, 3327, 3332,
6477     3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372,
6478     3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412,
6479     3417, 3422, 3427, 3432, 3437, 3442, 3447, 3452,
6480     3457, 3462, 3467, 3472, 3477, 3482, 3487, 3492,
6481     3497, 3502, 3507, 3512, 3517, 3522, 3527, 3532,
6482     3537, 3542, 3547, 3552, 3557, 3562, 3567, 3572,
6483     3577, 3582, 0, 0, 0, 0, 0, 0,
6484 };
6485
6486 static const Q_UINT16 di_1F[] = {
6487     3587, 3592, 3597, 3602, 3607, 3612, 3617, 3622,
6488     3627, 3632, 3637, 3642, 3647, 3652, 3657, 3662,
6489     3667, 3672, 3677, 3682, 3687, 3692, 0, 0,
6490     3697, 3702, 3707, 3712, 3717, 3722, 0, 0,
6491     3727, 3732, 3737, 3742, 3747, 3752, 3757, 3762,
6492     3767, 3772, 3777, 3782, 3787, 3792, 3797, 3802,
6493     3807, 3812, 3817, 3822, 3827, 3832, 3837, 3842,
6494     3847, 3852, 3857, 3862, 3867, 3872, 3877, 3882,
6495     3887, 3892, 3897, 3902, 3907, 3912, 0, 0,
6496     3917, 3922, 3927, 3932, 3937, 3942, 0, 0,
6497     3947, 3952, 3957, 3962, 3967, 3972, 3977, 3982,
6498     0, 3987, 0, 3992, 0, 3997, 0, 4002,
6499     4007, 4012, 4017, 4022, 4027, 4032, 4037, 4042,
6500     4047, 4052, 4057, 4062, 4067, 4072, 4077, 4082,
6501     4087, 4092, 4096, 4101, 4105, 4110, 4114, 4119,
6502     4123, 4128, 4132, 4137, 4141, 4146, 0, 0,
6503     4150, 4155, 4160, 4165, 4170, 4175, 4180, 4185,
6504     4190, 4195, 4200, 4205, 4210, 4215, 4220, 4225,
6505     4230, 4235, 4240, 4245, 4250, 4255, 4260, 4265,
6506     4270, 4275, 4280, 4285, 4290, 4295, 4300, 4305,
6507     4310, 4315, 4320, 4325, 4330, 4335, 4340, 4345,
6508     4350, 4355, 4360, 4365, 4370, 4375, 4380, 4385,
6509     4390, 4395, 4400, 4405, 4410, 0, 4415, 4420,
6510     4425, 4430, 4435, 4440, 4444, 4449, 4454, 4458,
6511     4463, 4468, 4473, 4478, 4483, 0, 4488, 4493,
6512     4498, 4503, 4507, 4512, 4516, 4521, 4526, 4531,
6513     4536, 4541, 4546, 4551, 0, 0, 4555, 4560,
6514     4565, 4570, 4575, 4580, 0, 4584, 4589, 4594,
6515     4599, 4604, 4609, 4614, 4618, 4623, 4628, 4633,
6516     4638, 4643, 4648, 4653, 4657, 4662, 4667, 4671,
6517     0, 0, 4675, 4680, 4685, 0, 4690, 4695,
6518     4700, 4705, 4709, 4714, 4718, 4723, 4727, 0,
6519 };
6520
6521 static const Q_UINT16 di_20[] = {
6522     4732, 4736, 4740, 4744, 4748, 4752, 4756, 4760,
6523     4764, 4768, 4772, 0, 0, 0, 0, 0,
6524     0, 4776, 0, 0, 0, 0, 0, 4780,
6525     0, 0, 0, 0, 0, 0, 0, 0,
6526     0, 0, 0, 0, 4785, 4789, 4794, 0,
6527     0, 0, 0, 0, 0, 0, 0, 4800,
6528     0, 0, 0, 4804, 4809, 0, 4815, 4820,
6529     0, 0, 0, 0, 4826, 0, 4831, 0,
6530     0, 0, 0, 0, 0, 0, 0, 0,
6531     4836, 4841, 0, 0, 0, 0, 0, 0,
6532     0, 0, 0, 0, 0, 0, 0, 0,
6533     0, 0, 0, 0, 0, 0, 0, 0,
6534     0, 0, 0, 0, 0, 0, 0, 0,
6535     0, 0, 0, 0, 0, 0, 0, 0,
6536     4846, 0, 0, 0, 4850, 4854, 4858, 4862,
6537     4866, 4870, 4874, 4878, 4882, 4886, 4890, 4894,
6538     4898, 4902, 4906, 4910, 4914, 4918, 4922, 4926,
6539     4930, 4934, 4938, 4942, 4946, 4950, 4954, 0,
6540     0, 0, 0, 0, 0, 0, 0, 0,
6541     0, 0, 0, 0, 0, 0, 0, 0,
6542     0, 0, 0, 0, 0, 0, 0, 0,
6543     4958, 0, 0, 0, 0, 0, 0, 0,
6544     0, 0, 0, 0, 0, 0, 0, 0,
6545     0, 0, 0, 0, 0, 0, 0, 0,
6546     0, 0, 0, 0, 0, 0, 0, 0,
6547     0, 0, 0, 0, 0, 0, 0, 0,
6548     0, 0, 0, 0, 0, 0, 0, 0,
6549     0, 0, 0, 0, 0, 0, 0, 0,
6550     0, 0, 0, 0, 0, 0, 0, 0,
6551     0, 0, 0, 0, 0, 0, 0, 0,
6552     0, 0, 0, 0, 0, 0, 0, 0,
6553     0, 0, 0, 0, 0, 0, 0, 0,
6554 };
6555
6556 static const Q_UINT16 di_21[] = {
6557     4963, 4969, 4975, 4979, 0, 4984, 4990, 4996,
6558     0, 5000, 5005, 5009, 5013, 5017, 5021, 5025,
6559     5029, 5033, 5037, 5041, 0, 5045, 5049, 0,
6560     0, 5054, 5058, 5062, 5066, 5070, 0, 0,
6561     5074, 5079, 5085, 0, 5090, 0, 5094, 0,
6562     5098, 0, 5102, 5106, 5110, 5114, 0, 5118,
6563     5122, 5126, 0, 5130, 5134, 5138, 5142, 5146,
6564     5150, 5154, 0, 0, 0, 0, 0, 0,
6565     0, 0, 0, 0, 0, 0, 0, 0,
6566     0, 0, 0, 0, 0, 0, 0, 0,
6567     0, 0, 0, 5158, 5164, 5170, 5176, 5182,
6568     5188, 5194, 5200, 5206, 5212, 5218, 5224, 5230,
6569     5235, 5239, 5244, 5250, 5255, 5259, 5264, 5270,
6570     5277, 5282, 5286, 5291, 5297, 5301, 5305, 5309,
6571     5313, 5317, 5322, 5328, 5333, 5337, 5342, 5348,
6572     5355, 5360, 5364, 5369, 5375, 5379, 5383, 5387,
6573     0, 0, 0, 0, 0, 0, 0, 0,
6574     0, 0, 0, 0, 0, 0, 0, 0,
6575     0, 0, 0, 0, 0, 0, 0, 0,
6576     0, 0, 5391, 5396, 0, 0, 0, 0,
6577     0, 0, 0, 0, 0, 0, 0, 0,
6578     0, 0, 0, 0, 0, 0, 5401, 0,
6579     0, 0, 0, 0, 0, 0, 0, 0,
6580     0, 0, 0, 0, 0, 0, 0, 0,
6581     0, 0, 0, 0, 0, 0, 0, 0,
6582     0, 0, 0, 0, 0, 5406, 5411, 5416,
6583     0, 0, 0, 0, 0, 0, 0, 0,
6584     0, 0, 0, 0, 0, 0, 0, 0,
6585     0, 0, 0, 0, 0, 0, 0, 0,
6586     0, 0, 0, 0, 0, 0, 0, 0,
6587     0, 0, 0, 0, 0, 0, 0, 0,
6588     0, 0, 0, 0, 0, 0, 0, 0,
6589 };
6590
6591 static const Q_UINT16 di_22[] = {
6592     0, 0, 0, 0, 5421, 0, 0, 0,
6593     0, 5426, 0, 0, 5431, 0, 0, 0,
6594     0, 0, 0, 0, 0, 0, 0, 0,
6595     0, 0, 0, 0, 0, 0, 0, 0,
6596     0, 0, 0, 0, 5436, 0, 5441, 0,
6597     0, 0, 0, 0, 5446, 5451, 0, 5457,
6598     5462, 0, 0, 0, 0, 0, 0, 0,
6599     0, 0, 0, 0, 0, 0, 0, 0,
6600     0, 5468, 0, 0, 5473, 0, 0, 5478,
6601     0, 5483, 0, 0, 0, 0, 0, 0,
6602     0, 0, 0, 0, 0, 0, 0, 0,
6603     0, 0, 0, 0, 0, 0, 0, 0,
6604     5488, 0, 5493, 0, 0, 0, 0, 0,
6605     0, 0, 0, 0, 0, 5498, 5503, 5508,
6606     5513, 5518, 0, 0, 5523, 5528, 0, 0,
6607     5533, 5538, 0, 0, 0, 0, 0, 0,
6608     5543, 5548, 0, 0, 5553, 5558, 0, 0,
6609     5563, 5568, 0, 0, 0, 0, 0, 0,
6610     0, 0, 0, 0, 0, 0, 0, 0,
6611     0, 0, 0, 0, 0, 0, 0, 0,
6612     0, 0, 0, 0, 0, 0, 0, 0,
6613     0, 0, 0, 0, 5573, 5578, 5583, 5588,
6614     0, 0, 0, 0, 0, 0, 0, 0,
6615     0, 0, 0, 0, 0, 0, 0, 0,
6616     0, 0, 0, 0, 0, 0, 0, 0,
6617     0, 0, 0, 0, 0, 0, 0, 0,
6618     0, 0, 0, 0, 0, 0, 0, 0,
6619     0, 0, 0, 0, 0, 0, 0, 0,
6620     5593, 5598, 5603, 5608, 0, 0, 0, 0,
6621     0, 0, 5613, 5618, 5623, 5628, 0, 0,
6622     0, 0, 0, 0, 0, 0, 0, 0,
6623     0, 0, 0, 0, 0, 0, 0, 0,
6624 };
6625
6626 static const Q_UINT16 di_23[] = {
6627     0, 0, 0, 0, 0, 0, 0, 0,
6628     0, 0, 0, 0, 0, 0, 0, 0,
6629     0, 0, 0, 0, 0, 0, 0, 0,
6630     0, 0, 0, 0, 0, 0, 0, 0,
6631     0, 0, 0, 0, 0, 0, 0, 0,
6632     0, 5633, 5637, 0, 0, 0, 0, 0,
6633     0, 0, 0, 0, 0, 0, 0, 0,
6634     0, 0, 0, 0, 0, 0, 0, 0,
6635     0, 0, 0, 0, 0, 0, 0, 0,
6636     0, 0, 0, 0, 0, 0, 0, 0,
6637     0, 0, 0, 0, 0, 0, 0, 0,
6638     0, 0, 0, 0, 0, 0, 0, 0,
6639     0, 0, 0, 0, 0, 0, 0, 0,
6640     0, 0, 0, 0, 0, 0, 0, 0,
6641     0, 0, 0, 0, 0, 0, 0, 0,
6642     0, 0, 0, 0, 0, 0, 0, 0,
6643     0, 0, 0, 0, 0, 0, 0, 0,
6644     0, 0, 0, 0, 0, 0, 0, 0,
6645     0, 0, 0, 0, 0, 0, 0, 0,
6646     0, 0, 0, 0, 0, 0, 0, 0,
6647     0, 0, 0, 0, 0, 0, 0, 0,
6648     0, 0, 0, 0, 0, 0, 0, 0,
6649     0, 0, 0, 0, 0, 0, 0, 0,
6650     0, 0, 0, 0, 0, 0, 0, 0,
6651     0, 0, 0, 0, 0, 0, 0, 0,
6652     0, 0, 0, 0, 0, 0, 0, 0,
6653     0, 0, 0, 0, 0, 0, 0, 0,
6654     0, 0, 0, 0, 0, 0, 0, 0,
6655     0, 0, 0, 0, 0, 0, 0, 0,
6656     0, 0, 0, 0, 0, 0, 0, 0,
6657     0, 0, 0, 0, 0, 0, 0, 0,
6658     0, 0, 0, 0, 0, 0, 0, 0,
6659 };
6660
6661 static const Q_UINT16 di_24[] = {
6662     0, 0, 0, 0, 0, 0, 0, 0,
6663     0, 0, 0, 0, 0, 0, 0, 0,
6664     0, 0, 0, 0, 0, 0, 0, 0,
6665     0, 0, 0, 0, 0, 0, 0, 0,
6666     0, 0, 0, 0, 0, 0, 0, 0,
6667     0, 0, 0, 0, 0, 0, 0, 0,
6668     0, 0, 0, 0, 0, 0, 0, 0,
6669     0, 0, 0, 0, 0, 0, 0, 0,
6670     0, 0, 0, 0, 0, 0, 0, 0,
6671     0, 0, 0, 0, 0, 0, 0, 0,
6672     0, 0, 0, 0, 0, 0, 0, 0,
6673     0, 0, 0, 0, 0, 0, 0, 0,
6674     5641, 5645, 5649, 5653, 5657, 5661, 5665, 5669,
6675     5673, 5677, 5682, 5687, 5692, 5697, 5702, 5707,
6676     5712, 5717, 5722, 5727, 5732, 5738, 5744, 5750,
6677     5756, 5762, 5768, 5774, 5780, 5786, 5793, 5800,
6678     5807, 5814, 5821, 5828, 5835, 5842, 5849, 5856,
6679     5863, 5868, 5873, 5878, 5883, 5888, 5893, 5898,
6680     5903, 5908, 5914, 5920, 5926, 5932, 5938, 5944,
6681     5950, 5956, 5962, 5968, 5974, 5980, 5986, 5992,
6682     5998, 6004, 6010, 6016, 6022, 6028, 6034, 6040,
6683     6046, 6052, 6058, 6064, 6070, 6076, 6082, 6088,
6684     6094, 6100, 6106, 6112, 6118, 6124, 6130, 6134,
6685     6138, 6142, 6146, 6150, 6154, 6158, 6162, 6166,
6686     6170, 6174, 6178, 6182, 6186, 6190, 6194, 6198,
6687     6202, 6206, 6210, 6214, 6218, 6222, 6226, 6230,
6688     6234, 6238, 6242, 6246, 6250, 6254, 6258, 6262,
6689     6266, 6270, 6274, 6278, 6282, 6286, 6290, 6294,
6690     6298, 6302, 6306, 6310, 6314, 6318, 6322, 6326,
6691     6330, 6334, 6338, 0, 0, 0, 0, 0,
6692     0, 0, 0, 0, 0, 0, 0, 0,
6693     0, 0, 0, 0, 0, 0, 0, 0,
6694 };
6695
6696 static const Q_UINT16 di_2E[] = {
6697     0, 0, 0, 0, 0, 0, 0, 0,
6698     0, 0, 0, 0, 0, 0, 0, 0,
6699     0, 0, 0, 0, 0, 0, 0, 0,
6700     0, 0, 0, 0, 0, 0, 0, 0,
6701     0, 0, 0, 0, 0, 0, 0, 0,
6702     0, 0, 0, 0, 0, 0, 0, 0,
6703     0, 0, 0, 0, 0, 0, 0, 0,
6704     0, 0, 0, 0, 0, 0, 0, 0,
6705     0, 0, 0, 0, 0, 0, 0, 0,
6706     0, 0, 0, 0, 0, 0, 0, 0,
6707     0, 0, 0, 0, 0, 0, 0, 0,
6708     0, 0, 0, 0, 0, 0, 0, 0,
6709     0, 0, 0, 0, 0, 0, 0, 0,
6710     0, 0, 0, 0, 0, 0, 0, 0,
6711     0, 0, 0, 0, 0, 0, 0, 0,
6712     0, 0, 0, 0, 0, 0, 0, 0,
6713     0, 0, 0, 0, 0, 0, 0, 0,
6714     0, 0, 0, 0, 0, 0, 0, 0,
6715     0, 0, 0, 0, 0, 0, 0, 0,
6716     0, 0, 0, 0, 0, 0, 0, 6342,
6717     0, 0, 0, 0, 0, 0, 0, 0,
6718     0, 0, 0, 0, 0, 0, 0, 0,
6719     0, 0, 0, 0, 0, 0, 0, 0,
6720     0, 0, 0, 0, 0, 0, 0, 0,
6721     0, 0, 0, 0, 0, 0, 0, 0,
6722     0, 0, 0, 0, 0, 0, 0, 0,
6723     0, 0, 0, 0, 0, 0, 0, 0,
6724     0, 0, 0, 0, 0, 0, 0, 0,
6725     0, 0, 0, 0, 0, 0, 0, 0,
6726     0, 0, 0, 0, 0, 0, 0, 0,
6727     0, 0, 0, 6346, 0, 0, 0, 0,
6728     0, 0, 0, 0, 0, 0, 0, 0,
6729 };
6730
6731 static const Q_UINT16 di_2F[] = {
6732     6350, 6354, 6358, 6362, 6366, 6370, 6374, 6378,
6733     6382, 6386, 6390, 6394, 6398, 6402, 6406, 6410,
6734     6414, 6418, 6422, 6426, 6430, 6434, 6438, 6442,
6735     6446, 6450, 6454, 6458, 6462, 6466, 6470, 6474,
6736     6478, 6482, 6486, 6490, 6494, 6498, 6502, 6506,
6737     6510, 6514, 6518, 6522, 6526, 6530, 6534, 6538,
6738     6542, 6546, 6550, 6554, 6558, 6562, 6566, 6570,
6739     6574, 6578, 6582, 6586, 6590, 6594, 6598, 6602,
6740     6606, 6610, 6614, 6618, 6622, 6626, 6630, 6634,
6741     6638, 6642, 6646, 6650, 6654, 6658, 6662, 6666,
6742     6670, 6674, 6678, 6682, 6686, 6690, 6694, 6698,
6743     6702, 6706, 6710, 6714, 6718, 6722, 6726, 6730,
6744     6734, 6738, 6742, 6746, 6750, 6754, 6758, 6762,
6745     6766, 6770, 6774, 6778, 6782, 6786, 6790, 6794,
6746     6798, 6802, 6806, 6810, 6814, 6818, 6822, 6826,
6747     6830, 6834, 6838, 6842, 6846, 6850, 6854, 6858,
6748     6862, 6866, 6870, 6874, 6878, 6882, 6886, 6890,
6749     6894, 6898, 6902, 6906, 6910, 6914, 6918, 6922,
6750     6926, 6930, 6934, 6938, 6942, 6946, 6950, 6954,
6751     6958, 6962, 6966, 6970, 6974, 6978, 6982, 6986,
6752     6990, 6994, 6998, 7002, 7006, 7010, 7014, 7018,
6753     7022, 7026, 7030, 7034, 7038, 7042, 7046, 7050,
6754     7054, 7058, 7062, 7066, 7070, 7074, 7078, 7082,
6755     7086, 7090, 7094, 7098, 7102, 7106, 7110, 7114,
6756     7118, 7122, 7126, 7130, 7134, 7138, 7142, 7146,
6757     7150, 7154, 7158, 7162, 7166, 7170, 7174, 7178,
6758     7182, 7186, 7190, 7194, 7198, 7202, 0, 0,
6759     0, 0, 0, 0, 0, 0, 0, 0,
6760     0, 0, 0, 0, 0, 0, 0, 0,
6761     0, 0, 0, 0, 0, 0, 0, 0,
6762     0, 0, 0, 0, 0, 0, 0, 0,
6763     0, 0, 0, 0, 0, 0, 0, 0,
6764 };
6765
6766 static const Q_UINT16 di_30[] = {
6767     7206, 0, 0, 0, 0, 0, 0, 0,
6768     0, 0, 0, 0, 0, 0, 0, 0,
6769     0, 0, 0, 0, 0, 0, 0, 0,
6770     0, 0, 0, 0, 0, 0, 0, 0,
6771     0, 0, 0, 0, 0, 0, 0, 0,
6772     0, 0, 0, 0, 0, 0, 0, 0,
6773     0, 0, 0, 0, 0, 0, 7210, 0,
6774     7214, 7218, 7222, 0, 0, 0, 0, 0,
6775     0, 0, 0, 0, 0, 0, 0, 0,
6776     0, 0, 0, 0, 7226, 0, 7231, 0,
6777     7236, 0, 7241, 0, 7246, 0, 7251, 0,
6778     7256, 0, 7261, 0, 7266, 0, 7271, 0,
6779     7276, 0, 7281, 0, 0, 7286, 0, 7291,
6780     0, 7296, 0, 0, 0, 0, 0, 0,
6781     7301, 7306, 0, 7311, 7316, 0, 7321, 7326,
6782     0, 7331, 7336, 0, 7341, 7346, 0, 0,
6783     0, 0, 0, 0, 0, 0, 0, 0,
6784     0, 0, 0, 0, 0, 0, 0, 0,
6785     0, 0, 0, 0, 7351, 0, 0, 0,
6786     0, 0, 0, 7356, 7361, 0, 7366, 0,
6787     0, 0, 0, 0, 0, 0, 0, 0,
6788     0, 0, 0, 0, 7371, 0, 7376, 0,
6789     7381, 0, 7386, 0, 7391, 0, 7396, 0,
6790     7401, 0, 7406, 0, 7411, 0, 7416, 0,
6791     7421, 0, 7426, 0, 0, 7431, 0, 7436,
6792     0, 7441, 0, 0, 0, 0, 0, 0,
6793     7446, 7451, 0, 7456, 7461, 0, 7466, 7471,
6794     0, 7476, 7481, 0, 7486, 7491, 0, 0,
6795     0, 0, 0, 0, 0, 0, 0, 0,
6796     0, 0, 0, 0, 0, 0, 0, 0,
6797     0, 0, 0, 0, 7496, 0, 0, 7501,
6798     7506, 7511, 7516, 0, 0, 0, 7521, 0,
6799 };
6800
6801 static const Q_UINT16 di_31[] = {
6802     0, 0, 0, 0, 0, 0, 0, 0,
6803     0, 0, 0, 0, 0, 0, 0, 0,
6804     0, 0, 0, 0, 0, 0, 0, 0,
6805     0, 0, 0, 0, 0, 0, 0, 0,
6806     0, 0, 0, 0, 0, 0, 0, 0,
6807     0, 0, 0, 0, 0, 0, 0, 0,
6808     0, 7526, 7530, 7534, 7538, 7542, 7546, 7550,
6809     7554, 7558, 7562, 7566, 7570, 7574, 7578, 7582,
6810     7586, 7590, 7594, 7598, 7602, 7606, 7610, 7614,
6811     7618, 7622, 7626, 7630, 7634, 7638, 7642, 7646,
6812     7650, 7654, 7658, 7662, 7666, 7670, 7674, 7678,
6813     7682, 7686, 7690, 7694, 7698, 7702, 7706, 7710,
6814     7714, 7718, 7722, 7726, 7730, 7734, 7738, 7742,
6815     7746, 7750, 7754, 7758, 7762, 7766, 7770, 7774,
6816     7778, 7782, 7786, 7790, 7794, 7798, 7802, 7806,
6817     7810, 7814, 7818, 7822, 7826, 7830, 7834, 7838,
6818     7842, 7846, 7850, 7854, 7858, 7862, 7866, 7870,
6819     7874, 7878, 7882, 7886, 7890, 7894, 7898, 0,
6820     0, 0, 7902, 7906, 7910, 7914, 7918, 7922,
6821     7926, 7930, 7934, 7938, 7942, 7946, 7950, 7954,
6822     0, 0, 0, 0, 0, 0, 0, 0,
6823     0, 0, 0, 0, 0, 0, 0, 0,
6824     0, 0, 0, 0, 0, 0, 0, 0,
6825     0, 0, 0, 0, 0, 0, 0, 0,
6826     0, 0, 0, 0, 0, 0, 0, 0,
6827     0, 0, 0, 0, 0, 0, 0, 0,
6828     0, 0, 0, 0, 0, 0, 0, 0,
6829     0, 0, 0, 0, 0, 0, 0, 0,
6830     0, 0, 0, 0, 0, 0, 0, 0,
6831     0, 0, 0, 0, 0, 0, 0, 0,
6832     0, 0, 0, 0, 0, 0, 0, 0,
6833     0, 0, 0, 0, 0, 0, 0, 0,
6834 };
6835
6836 static const Q_UINT16 di_32[] = {
6837     7958, 7964, 7970, 7976, 7982, 7988, 7994, 8000,
6838     8006, 8012, 8018, 8024, 8030, 8036, 8042, 8049,
6839     8056, 8063, 8070, 8077, 8084, 8091, 8098, 8105,
6840     8112, 8119, 8126, 8133, 8140, 0, 0, 0,
6841     8147, 8153, 8159, 8165, 8171, 8177, 8183, 8189,
6842     8195, 8201, 8207, 8213, 8219, 8225, 8231, 8237,
6843     8243, 8249, 8255, 8261, 8267, 8273, 8279, 8285,
6844     8291, 8297, 8303, 8309, 8315, 8321, 8327, 8333,
6845     8339, 8345, 8351, 8357, 0, 0, 0, 0,
6846     0, 0, 0, 0, 0, 0, 0, 0,
6847     0, 0, 0, 0, 0, 0, 0, 0,
6848     0, 0, 0, 0, 0, 0, 0, 0,
6849     8363, 8367, 8371, 8375, 8379, 8383, 8387, 8391,
6850     8395, 8399, 8403, 8407, 8411, 8415, 8419, 8424,
6851     8429, 8434, 8439, 8444, 8449, 8454, 8459, 8464,
6852     8469, 8474, 8479, 8484, 0, 0, 0, 0,
6853     8489, 8493, 8497, 8501, 8505, 8509, 8513, 8517,
6854     8521, 8525, 8529, 8533, 8537, 8541, 8545, 8549,
6855     8553, 8557, 8561, 8565, 8569, 8573, 8577, 8581,
6856     8585, 8589, 8593, 8597, 8601, 8605, 8609, 8613,
6857     8617, 8621, 8625, 8629, 8633, 8637, 8641, 8645,
6858     8649, 8653, 8657, 8661, 8665, 8669, 8673, 8677,
6859     8681, 0, 0, 0, 0, 0, 0, 0,
6860     0, 0, 0, 0, 0, 0, 0, 0,
6861     8685, 8690, 8695, 8700, 8705, 8710, 8715, 8720,
6862     8725, 8730, 8736, 8742, 0, 0, 0, 0,
6863     8748, 8752, 8756, 8760, 8764, 8768, 8772, 8776,
6864     8780, 8784, 8788, 8792, 8796, 8800, 8804, 8808,
6865     8812, 8816, 8820, 8824, 8828, 8832, 8836, 8840,
6866     8844, 8848, 8852, 8856, 8860, 8864, 8868, 8872,
6867     8876, 8880, 8884, 8888, 8892, 8896, 8900, 8904,
6868     8908, 8912, 8916, 8920, 8924, 8928, 8932, 0,
6869 };
6870
6871 static const Q_UINT16 di_33[] = {
6872     8936, 8943, 8950, 8957, 8963, 8970, 8976, 8982,
6873     8990, 8997, 9003, 9009, 9015, 9022, 9029, 9035,
6874     9041, 9046, 9052, 9059, 9066, 9071, 9079, 9088,
6875     9096, 9102, 9110, 9118, 9125, 9131, 9137, 9143,
6876     9150, 9158, 9165, 9171, 9177, 9183, 9188, 9193,
6877     9198, 9203, 9209, 9215, 9223, 9229, 9236, 9244,
6878     9250, 9255, 9260, 9268, 9275, 9283, 9289, 9297,
6879     9302, 9308, 9314, 9320, 9326, 9332, 9339, 9345,
6880     9350, 9356, 9362, 9368, 9375, 9381, 9387, 9393,
6881     9401, 9408, 9413, 9421, 9426, 9433, 9440, 9446,
6882     9452, 9458, 9465, 9470, 9476, 9483, 9488, 9496,
6883     9502, 9507, 9512, 9517, 9522, 9527, 9532, 9537,
6884     9542, 9547, 9552, 9558, 9564, 9570, 9576, 9582,
6885     9588, 9594, 9600, 9606, 9612, 9618, 9624, 9630,
6886     9636, 9642, 9648, 9653, 9658, 9664, 9669, 0,
6887     0, 0, 0, 9674, 9679, 9684, 9689, 9694,
6888     9701, 9706, 9711, 9716, 9721, 9726, 9731, 9736,
6889     9741, 9747, 9754, 9759, 9764, 9769, 9774, 9779,
6890     9784, 9789, 9795, 9801, 9807, 9813, 9818, 9823,
6891     9828, 9833, 9838, 9843, 9848, 9853, 9858, 9863,
6892     9869, 9875, 9880, 9886, 9892, 9898, 9903, 9909,
6893     9915, 9922, 9927, 9933, 9939, 9945, 9951, 9959,
6894     9968, 9973, 9978, 9983, 9988, 9993, 9998, 10003,
6895     10008, 10013, 10018, 10023, 10028, 10033, 10038, 10043,
6896     10048, 10053, 10058, 10065, 10070, 10075, 10080, 10087,
6897     10093, 10098, 10103, 10108, 10113, 10118, 10123, 10128,
6898     10133, 10138, 10143, 10149, 10154, 10159, 10165, 10171,
6899     10176, 10183, 10189, 10194, 10199, 10204, 0, 0,
6900     10209, 10214, 10219, 10224, 10229, 10234, 10239, 10244,
6901     10249, 10254, 10260, 10266, 10272, 10278, 10284, 10290,
6902     10296, 10302, 10308, 10314, 10320, 10326, 10332, 10338,
6903     10344, 10350, 10356, 10362, 10368, 10374, 10380, 0,
6904 };
6905
6906 static const Q_UINT16 di_F9[] = {
6907     10386, 10390, 10394, 10398, 10402, 10406, 10410, 10414,
6908     10418, 10422, 10426, 10430, 10434, 10438, 10442, 10446,
6909     10450, 10454, 10458, 10462, 10466, 10470, 10474, 10478,
6910     10482, 10486, 10490, 10494, 10498, 10502, 10506, 10510,
6911     10514, 10518, 10522, 10526, 10530, 10534, 10538, 10542,
6912     10546, 10550, 10554, 10558, 10562, 10566, 10570, 10574,
6913     10578, 10582, 10586, 10590, 10594, 10598, 10602, 10606,
6914     10610, 10614, 10618, 10622, 10626, 10630, 10634, 10638,
6915     10642, 10646, 10650, 10654, 10658, 10662, 10666, 10670,
6916     10674, 10678, 10682, 10686, 10690, 10694, 10698, 10702,
6917     10706, 10710, 10714, 10718, 10722, 10726, 10730, 10734,
6918     10738, 10742, 10746, 10750, 10754, 10758, 10762, 10766,
6919     10770, 10774, 10778, 10782, 10786, 10790, 10794, 10798,
6920     10802, 10806, 10810, 10814, 10818, 10822, 10826, 10830,
6921     10834, 10838, 10842, 10846, 10850, 10854, 10858, 10862,
6922     10866, 10870, 10874, 10878, 10882, 10886, 10890, 10894,
6923     10898, 10902, 10906, 10910, 10914, 10918, 10922, 10926,
6924     10930, 10934, 10938, 10942, 10946, 10950, 10954, 10958,
6925     10962, 10966, 10970, 10974, 10978, 10982, 10986, 10990,
6926     10994, 10998, 11002, 11006, 11010, 11014, 11018, 11022,
6927     11026, 11030, 11034, 11038, 11042, 11046, 11050, 11054,
6928     11058, 11062, 11066, 11070, 11074, 11078, 11082, 11086,
6929     11090, 11094, 11098, 11102, 11106, 11110, 11114, 11118,
6930     11122, 11126, 11130, 11134, 11138, 11142, 11146, 11150,
6931     11154, 11158, 11162, 11166, 11170, 11174, 11178, 11182,
6932     11186, 11190, 11194, 11198, 11202, 11206, 11210, 11214,
6933     11218, 11222, 11226, 11230, 11234, 11238, 11242, 11246,
6934     11250, 11254, 11258, 11262, 11266, 11270, 11274, 11278,
6935     11282, 11286, 11290, 11294, 11298, 11302, 11306, 11310,
6936     11314, 11318, 11322, 11326, 11330, 11334, 11338, 11342,
6937     11346, 11350, 11354, 11358, 11362, 11366, 11370, 11374,
6938     11378, 11382, 11386, 11390, 11394, 11398, 11402, 11406,
6939 };
6940
6941 static const Q_UINT16 di_FA[] = {
6942     11410, 11414, 11418, 11422, 11426, 11430, 11434, 11438,
6943     11442, 11446, 11450, 11454, 11458, 11462, 0, 0,
6944     11466, 0, 11470, 0, 0, 11474, 11478, 11482,
6945     11486, 11490, 11494, 11498, 11502, 11506, 11510, 0,
6946     11514, 0, 11518, 0, 0, 11522, 11526, 0,
6947     0, 0, 11530, 11534, 11538, 11542, 0, 0,
6948     0, 0, 0, 0, 0, 0, 0, 0,
6949     0, 0, 0, 0, 0, 0, 0, 0,
6950     0, 0, 0, 0, 0, 0, 0, 0,
6951     0, 0, 0, 0, 0, 0, 0, 0,
6952     0, 0, 0, 0, 0, 0, 0, 0,
6953     0, 0, 0, 0, 0, 0, 0, 0,
6954     0, 0, 0, 0, 0, 0, 0, 0,
6955     0, 0, 0, 0, 0, 0, 0, 0,
6956     0, 0, 0, 0, 0, 0, 0, 0,
6957     0, 0, 0, 0, 0, 0, 0, 0,
6958     0, 0, 0, 0, 0, 0, 0, 0,
6959     0, 0, 0, 0, 0, 0, 0, 0,
6960     0, 0, 0, 0, 0, 0, 0, 0,
6961     0, 0, 0, 0, 0, 0, 0, 0,
6962     0, 0, 0, 0, 0, 0, 0, 0,
6963     0, 0, 0, 0, 0, 0, 0, 0,
6964     0, 0, 0, 0, 0, 0, 0, 0,
6965     0, 0, 0, 0, 0, 0, 0, 0,
6966     0, 0, 0, 0, 0, 0, 0, 0,
6967     0, 0, 0, 0, 0, 0, 0, 0,
6968     0, 0, 0, 0, 0, 0, 0, 0,
6969     0, 0, 0, 0, 0, 0, 0, 0,
6970     0, 0, 0, 0, 0, 0, 0, 0,
6971     0, 0, 0, 0, 0, 0, 0, 0,
6972     0, 0, 0, 0, 0, 0, 0, 0,
6973     0, 0, 0, 0, 0, 0, 0, 0,
6974 };
6975
6976 static const Q_UINT16 di_FB[] = {
6977     11546, 11551, 11556, 11561, 11567, 11573, 11578, 0,
6978     0, 0, 0, 0, 0, 0, 0, 0,
6979     0, 0, 0, 11583, 11588, 11593, 11598, 11603,
6980     0, 0, 0, 0, 0, 11608, 0, 11613,
6981     11618, 11622, 11626, 11630, 11634, 11638, 11642, 11646,
6982     11650, 11654, 11658, 11663, 11668, 11673, 11678, 11683,
6983     11688, 11693, 11698, 11703, 11708, 11713, 11718, 0,
6984     11723, 11728, 11733, 11738, 11743, 0, 11748, 0,
6985     11753, 11758, 0, 11763, 11768, 0, 11773, 11778,
6986     11783, 11788, 11793, 11798, 11803, 11808, 11813, 11818,
6987     11823, 11827, 11831, 11835, 11839, 11843, 11847, 11851,
6988     11855, 11859, 11863, 11867, 11871, 11875, 11879, 11883,
6989     11887, 11891, 11895, 11899, 11903, 11907, 11911, 11915,
6990     11919, 11923, 11927, 11931, 11935, 11939, 11943, 11947,
6991     11951, 11955, 11959, 11963, 11967, 11971, 11975, 11979,
6992     11983, 11987, 11991, 11995, 11999, 12003, 12007, 12011,
6993     12015, 12019, 12023, 12027, 12031, 12035, 12039, 12043,
6994     12047, 12051, 12055, 12059, 12063, 12067, 12071, 12075,
6995     12079, 12083, 12087, 12091, 12095, 12099, 12103, 12107,
6996     12111, 12115, 12119, 12123, 12127, 12131, 12135, 12139,
6997     12143, 12147, 12151, 12155, 12159, 12163, 12167, 12171,
6998     12175, 12179, 12183, 12187, 12191, 12195, 12199, 12203,
6999     12207, 12211, 0, 0, 0, 0, 0, 0,
7000     0, 0, 0, 0, 0, 0, 0, 0,
7001     0, 0, 0, 0, 0, 0, 0, 0,
7002     0, 0, 0, 0, 0, 0, 0, 0,
7003     0, 0, 0, 12215, 12219, 12223, 12227, 12231,
7004     12235, 12239, 12243, 12247, 12251, 12255, 12259, 12263,
7005     12267, 12271, 12275, 12279, 12283, 12287, 12291, 12295,
7006     12299, 12303, 12307, 12312, 12317, 12322, 12327, 12332,
7007     12337, 12342, 12347, 12352, 12357, 12362, 12367, 12372,
7008     12377, 12382, 12387, 12392, 12397, 12401, 12405, 12409,
7009 };
7010
7011 static const Q_UINT16 di_FC[] = {
7012     12413, 12418, 12423, 12428, 12433, 12438, 12443, 12448,
7013     12453, 12458, 12463, 12468, 12473, 12478, 12483, 12488,
7014     12493, 12498, 12503, 12508, 12513, 12518, 12523, 12528,
7015     12533, 12538, 12543, 12548, 12553, 12558, 12563, 12568,
7016     12573, 12578, 12583, 12588, 12593, 12598, 12603, 12608,
7017     12613, 12618, 12623, 12628, 12633, 12638, 12643, 12648,
7018     12653, 12658, 12663, 12668, 12673, 12678, 12683, 12688,
7019     12693, 12698, 12703, 12708, 12713, 12718, 12723, 12728,
7020     12733, 12738, 12743, 12748, 12753, 12758, 12763, 12768,
7021     12773, 12778, 12783, 12788, 12793, 12798, 12803, 12808,
7022     12813, 12818, 12823, 12828, 12833, 12838, 12843, 12848,
7023     12853, 12858, 12863, 12868, 12873, 12878, 12883, 12889,
7024     12895, 12901, 12907, 12913, 12919, 12924, 12929, 12934,
7025     12939, 12944, 12949, 12954, 12959, 12964, 12969, 12974,
7026     12979, 12984, 12989, 12994, 12999, 13004, 13009, 13014,
7027     13019, 13024, 13029, 13034, 13039, 13044, 13049, 13054,
7028     13059, 13064, 13069, 13074, 13079, 13084, 13089, 13094,
7029     13099, 13104, 13109, 13114, 13119, 13124, 13129, 13134,
7030     13139, 13144, 13149, 13154, 13159, 13164, 13169, 13174,
7031     13179, 13184, 13189, 13194, 13199, 13204, 13209, 13214,
7032     13219, 13224, 13229, 13234, 13239, 13244, 13249, 13254,
7033     13259, 13264, 13269, 13274, 13279, 13284, 13289, 13294,
7034     13299, 13304, 13309, 13314, 13319, 13324, 13329, 13334,
7035     13339, 13344, 13349, 13354, 13359, 13364, 13369, 13374,
7036     13379, 13384, 13389, 13394, 13399, 13404, 13409, 13414,
7037     13419, 13424, 13429, 13434, 13439, 13444, 13449, 13454,
7038     13459, 13464, 13469, 13474, 13479, 13484, 13489, 13494,
7039     13499, 13504, 13509, 13514, 13519, 13524, 13529, 13534,
7040     13539, 13544, 13549, 13554, 13559, 13564, 13569, 13574,
7041     13579, 13584, 13589, 13594, 13599, 13604, 13609, 13614,
7042     13619, 13624, 13629, 13635, 13641, 13647, 13652, 13657,
7043     13662, 13667, 13672, 13677, 13682, 13687, 13692, 13697,
7044 };
7045
7046 static const Q_UINT16 di_FD[] = {
7047     13702, 13707, 13712, 13717, 13722, 13727, 13732, 13737,
7048     13742, 13747, 13752, 13757, 13762, 13767, 13772, 13777,
7049     13782, 13787, 13792, 13797, 13802, 13807, 13812, 13817,
7050     13822, 13827, 13832, 13837, 13842, 13847, 13852, 13857,
7051     13862, 13867, 13872, 13877, 13882, 13887, 13892, 13897,
7052     13902, 13907, 13912, 13917, 13922, 13927, 13932, 13937,
7053     13942, 13947, 13952, 13957, 13962, 13967, 13972, 13977,
7054     13982, 13987, 13992, 13997, 14002, 14007, 0, 0,
7055     0, 0, 0, 0, 0, 0, 0, 0,
7056     0, 0, 0, 0, 0, 0, 0, 0,
7057     14012, 14018, 14024, 14030, 14036, 14042, 14048, 14054,
7058     14060, 14066, 14072, 14078, 14084, 14090, 14096, 14102,
7059     14108, 14114, 14120, 14126, 14132, 14138, 14144, 14150,
7060     14156, 14162, 14168, 14174, 14180, 14186, 14192, 14198,
7061     14204, 14210, 14216, 14222, 14228, 14234, 14240, 14246,
7062     14252, 14258, 14264, 14270, 14276, 14282, 14288, 14294,
7063     14300, 14306, 14312, 14318, 14324, 14330, 14336, 14342,
7064     14348, 14354, 14360, 14366, 14372, 14378, 14384, 14390,
7065     0, 0, 14396, 14402, 14408, 14414, 14420, 14426,
7066     14432, 14438, 14444, 14450, 14456, 14462, 14468, 14474,
7067     14480, 14486, 14492, 14498, 14504, 14510, 14516, 14522,
7068     14528, 14534, 14540, 14546, 14552, 14558, 14564, 14570,
7069     14576, 14582, 14588, 14594, 14600, 14606, 14612, 14618,
7070     14624, 14630, 14636, 14642, 14648, 14654, 14660, 14666,
7071     14672, 14678, 14684, 14690, 14696, 14702, 14708, 14714,
7072     0, 0, 0, 0, 0, 0, 0, 0,
7073     0, 0, 0, 0, 0, 0, 0, 0,
7074     0, 0, 0, 0, 0, 0, 0, 0,
7075     0, 0, 0, 0, 0, 0, 0, 0,
7076     0, 0, 0, 0, 0, 0, 0, 0,
7077     14720, 14726, 14732, 14739, 14746, 14753, 14760, 14767,
7078     14774, 14781, 14787, 14808, 0, 0, 0, 0,
7079 };
7080
7081 static const Q_UINT16 di_FE[] = {
7082     0, 0, 0, 0, 0, 0, 0, 0,
7083     0, 0, 0, 0, 0, 0, 0, 0,
7084     0, 0, 0, 0, 0, 0, 0, 0,
7085     0, 0, 0, 0, 0, 0, 0, 0,
7086     0, 0, 0, 0, 0, 0, 0, 0,
7087     0, 0, 0, 0, 0, 0, 0, 0,
7088     14819, 14823, 14827, 14831, 14835, 14839, 14843, 14847,
7089     14851, 14855, 14859, 14863, 14867, 14871, 14875, 14879,
7090     14883, 14887, 14891, 14895, 14899, 0, 0, 0,
7091     0, 14903, 14907, 14911, 14915, 14919, 14923, 14927,
7092     14931, 14935, 14939, 0, 14943, 14947, 14951, 14955,
7093     14959, 14963, 14967, 14971, 14975, 14979, 14983, 14987,
7094     14991, 14995, 14999, 15003, 15007, 15011, 15015, 0,
7095     15019, 15023, 15027, 15031, 0, 0, 0, 0,
7096     15035, 15040, 15045, 0, 15050, 0, 15055, 15060,
7097     15065, 15070, 15075, 15080, 15085, 15090, 15095, 15100,
7098     15105, 15109, 15113, 15117, 15121, 15125, 15129, 15133,
7099     15137, 15141, 15145, 15149, 15153, 15157, 15161, 15165,
7100     15169, 15173, 15177, 15181, 15185, 15189, 15193, 15197,
7101     15201, 15205, 15209, 15213, 15217, 15221, 15225, 15229,
7102     15233, 15237, 15241, 15245, 15249, 15253, 15257, 15261,
7103     15265, 15269, 15273, 15277, 15281, 15285, 15289, 15293,
7104     15297, 15301, 15305, 15309, 15313, 15317, 15321, 15325,
7105     15329, 15333, 15337, 15341, 15345, 15349, 15353, 15357,
7106     15361, 15365, 15369, 15373, 15377, 15381, 15385, 15389,
7107     15393, 15397, 15401, 15405, 15409, 15413, 15417, 15421,
7108     15425, 15429, 15433, 15437, 15441, 15445, 15449, 15453,
7109     15457, 15461, 15465, 15469, 15473, 15477, 15481, 15485,
7110     15489, 15493, 15497, 15501, 15505, 15509, 15513, 15517,
7111     15521, 15525, 15529, 15533, 15537, 15541, 15545, 15549,
7112     15553, 15557, 15561, 15565, 15569, 15573, 15578, 15583,
7113     15588, 15593, 15598, 15603, 15608, 0, 0, 0,
7114 };
7115
7116 static const Q_UINT16 di_FF[] = {
7117     0, 15613, 15617, 15621, 15625, 15629, 15633, 15637,
7118     15641, 15645, 15649, 15653, 15657, 15661, 15665, 15669,
7119     15673, 15677, 15681, 15685, 15689, 15693, 15697, 15701,
7120     15705, 15709, 15713, 15717, 15721, 15725, 15729, 15733,
7121     15737, 15741, 15745, 15749, 15753, 15757, 15761, 15765,
7122     15769, 15773, 15777, 15781, 15785, 15789, 15793, 15797,
7123     15801, 15805, 15809, 15813, 15817, 15821, 15825, 15829,
7124     15833, 15837, 15841, 15845, 15849, 15853, 15857, 15861,
7125     15865, 15869, 15873, 15877, 15881, 15885, 15889, 15893,
7126     15897, 15901, 15905, 15909, 15913, 15917, 15921, 15925,
7127     15929, 15933, 15937, 15941, 15945, 15949, 15953, 15957,
7128     15961, 15965, 15969, 15973, 15977, 15981, 15985, 0,
7129     0, 15989, 15993, 15997, 16001, 16005, 16009, 16013,
7130     16017, 16021, 16025, 16029, 16033, 16037, 16041, 16045,
7131     16049, 16053, 16057, 16061, 16065, 16069, 16073, 16077,
7132     16081, 16085, 16089, 16093, 16097, 16101, 16105, 16109,
7133     16113, 16117, 16121, 16125, 16129, 16133, 16137, 16141,
7134     16145, 16149, 16153, 16157, 16161, 16165, 16169, 16173,
7135     16177, 16181, 16185, 16189, 16193, 16197, 16201, 16205,
7136     16209, 16213, 16217, 16221, 16225, 16229, 16233, 16237,
7137     16241, 16245, 16249, 16253, 16257, 16261, 16265, 16269,
7138     16273, 16277, 16281, 16285, 16289, 16293, 16297, 16301,
7139     16305, 16309, 16313, 16317, 16321, 16325, 16329, 16333,
7140     16337, 16341, 16345, 16349, 16353, 16357, 16361, 0,
7141     0, 0, 16365, 16369, 16373, 16377, 16381, 16385,
7142     0, 0, 16389, 16393, 16397, 16401, 16405, 16409,
7143     0, 0, 16413, 16417, 16421, 16425, 16429, 16433,
7144     0, 0, 16437, 16441, 16445, 0, 0, 0,
7145     16449, 16453, 16457, 16461, 16465, 16469, 16473, 0,
7146     16477, 16481, 16485, 16489, 16493, 16497, 16501, 0,
7147     0, 0, 0, 0, 0, 0, 0, 0,
7148     0, 0, 0, 0, 0, 0, 0, 0,
7149 };
7150
7151 static const Q_UINT16 * const decomposition_info[256] = {
7152     di_00, di_01, di_02, di_03, di_04, di_05, di_06, di_07,
7153     di_07, di_09, di_0A, di_0B, di_0C, di_0D, di_0E, di_0F,
7154     di_10, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7155     di_07, di_07, di_07, di_07, di_07, di_07, di_1E, di_1F,
7156     di_20, di_21, di_22, di_23, di_24, di_07, di_07, di_07,
7157     di_07, di_07, di_07, di_07, di_07, di_07, di_2E, di_2F,
7158     di_30, di_31, di_32, di_33, di_07, di_07, di_07, di_07,
7159     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7160     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7161     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7162     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7163     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7164     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7165     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7166     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7167     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7168     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7169     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7170     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7171     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7172     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7173     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7174     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7175     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7176     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7177     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7178     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7179     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7180     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7181     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7182     di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7183     di_07, di_F9, di_FA, di_FB, di_FC, di_FD, di_FE, di_FF,
7184 };
7185 // 68080 bytes
7186
7187 static const Q_UINT16 ligature_map [] = {
7188     0,
7189     12883, 12889, 12895, 12901, 12907, 12913, 15035, 15045, 15050, 15055, 15065, 15075, 15085, 15095, 0,
7190     5503, 0,
7191     5488, 0,
7192     5508, 0,
7193     67, 72, 77, 82, 87, 92, 332, 342, 352, 966, 1196, 1206, 1346, 2357, 3137, 3147, 0,
7194     2367, 2377, 2387, 0,
7195     97, 362, 372, 382, 392, 0,
7196     402, 2407, 2417, 2427, 2437, 2447, 0,
7197     102, 107, 112, 117, 412, 422, 432, 442, 452, 1216, 1226, 1356, 2477, 2487, 3257, 3267, 3277, 0,
7198     2507, 0,
7199     462, 472, 482, 492, 1076, 1146, 2517, 0,
7200     502, 1336, 2527, 2537, 2547, 2557, 2567, 0,
7201     122, 127, 132, 137, 512, 522, 532, 542, 552, 976, 1236, 1246, 2577, 3337, 3347, 0,
7202     567, 0,
7203     577, 1086, 2597, 2607, 2617, 0,
7204     587, 597, 607, 2627, 2647, 2657, 0,
7205     2667, 2677, 2687, 0,
7206     142, 627, 637, 647, 1156, 2697, 2707, 2717, 2727, 0,
7207     147, 152, 157, 162, 167, 662, 672, 682, 901, 986, 1096, 1256, 1266, 1386, 3357, 3367, 0,
7208     2777, 2787, 0,
7209     692, 702, 712, 1276, 1286, 2797, 2807, 2827, 0,
7210     722, 732, 742, 752, 1316, 2837, 2847, 0,
7211     762, 772, 1326, 2887, 2897, 2907, 2917, 0,
7212     172, 177, 182, 187, 782, 792, 802, 812, 822, 832, 911, 996, 1296, 1306, 2927, 2937, 2947, 3477, 3487, 0,
7213     2977, 2987, 0,
7214     842, 2997, 3007, 3017, 3027, 3037, 0,
7215     3047, 3057, 0,
7216     192, 852, 862, 1406, 3067, 3547, 3557, 3567, 3577, 0,
7217     867, 877, 887, 3077, 3087, 3097, 0,
7218     197, 202, 207, 212, 217, 222, 337, 347, 357, 971, 1201, 1211, 1351, 2362, 3142, 3152, 0,
7219     2372, 2382, 2392, 0,
7220     227, 367, 377, 387, 397, 0,
7221     407, 2412, 2422, 2432, 2442, 2452, 0,
7222     232, 237, 242, 247, 417, 427, 437, 447, 457, 1221, 1231, 1361, 2482, 2492, 3262, 3272, 3282, 0,
7223     2512, 0,
7224     467, 477, 487, 497, 1081, 1151, 2522, 0,
7225     507, 1341, 2532, 2542, 2552, 2562, 2572, 3107, 0,
7226     252, 257, 262, 267, 517, 527, 537, 547, 981, 1241, 1251, 2582, 3342, 3352, 0,
7227     572, 1126, 0,
7228     582, 1091, 2602, 2612, 2622, 0,
7229     592, 602, 612, 2632, 2652, 2662, 0,
7230     2672, 2682, 2692, 0,
7231     272, 632, 642, 652, 1161, 2702, 2712, 2722, 2732, 0,
7232     277, 282, 287, 292, 297, 667, 677, 687, 906, 991, 1101, 1261, 1271, 1391, 3362, 3372, 0,
7233     2782, 2792, 0,
7234     697, 707, 717, 1281, 1291, 2802, 2812, 2832, 0,
7235     727, 737, 747, 757, 1321, 2842, 2852, 0,
7236     767, 777, 1331, 2892, 2902, 2912, 2922, 3112, 0,
7237     302, 307, 312, 317, 787, 797, 807, 817, 827, 837, 916, 1001, 1301, 1311, 2932, 2942, 2952, 3482, 3492, 0,
7238     2982, 2992, 0,
7239     847, 3002, 3012, 3022, 3032, 3042, 3117, 0,
7240     3052, 3062, 0,
7241     322, 327, 857, 1411, 3072, 3122, 3552, 3562, 3572, 3582, 0,
7242     872, 882, 892, 3082, 3092, 3102, 0,
7243     1537, 4468, 4662, 0,
7244     3157, 3167, 3177, 3187, 0,
7245     1046, 0,
7246     1166, 0,
7247     1066, 1176, 0,
7248     2397, 0,
7249     3287, 3297, 3307, 3317, 0,
7250     2587, 0,
7251     3377, 3387, 3397, 3407, 0,
7252     1376, 2737, 2747, 0,
7253     1366, 0,
7254     1186, 0,
7255     1006, 1016, 1026, 1036, 0,
7256     3162, 3172, 3182, 3192, 0,
7257     1051, 0,
7258     1171, 0,
7259     1071, 1181, 0,
7260     2402, 0,
7261     3292, 3302, 3312, 3322, 0,
7262     2592, 0,
7263     3382, 3392, 3402, 3412, 0,
7264     1381, 2742, 2752, 0,
7265     1371, 0,
7266     1191, 0,
7267     1011, 1021, 1031, 1041, 0,
7268     3207, 3217, 3227, 3237, 0,
7269     3212, 3222, 3232, 3242, 0,
7270     2457, 2467, 0,
7271     2462, 2472, 0,
7272     2757, 2767, 0,
7273     2762, 2772, 0,
7274     2857, 0,
7275     2862, 0,
7276     2867, 0,
7277     2872, 0,
7278     2957, 0,
7279     2962, 0,
7280     2967, 0,
7281     2972, 0,
7282     3132, 0,
7283     3427, 3437, 3447, 3457, 3467, 0,
7284     3432, 3442, 3452, 3462, 3472, 0,
7285     3497, 3507, 3517, 3527, 3537, 0,
7286     3502, 3512, 3522, 3532, 3542, 0,
7287     1116, 0,
7288     1106, 0,
7289     1111, 0,
7290     1056, 0,
7291     1061, 0,
7292     2497, 0,
7293     2502, 0,
7294     1396, 0,
7295     1401, 0,
7296     1121, 0,
7297     1514, 0,
7298     1542, 3627, 3632, 4425, 4430, 4435, 4444, 0,
7299     1551, 3697, 3702, 4498, 0,
7300     1556, 3767, 3772, 4507, 4516, 0,
7301     1561, 1586, 3847, 3852, 4565, 4570, 4575, 0,
7302     1566, 3917, 3922, 4700, 0,
7303     4657, 0,
7304     1571, 1591, 3987, 4638, 4643, 4648, 0,
7305     1576, 4047, 4052, 4709, 4718, 0,
7306     4410, 0,
7307     4483, 0,
7308     1596, 3587, 3592, 4087, 4390, 4395, 4405, 4415, 0,
7309     1601, 3667, 3672, 4096, 0,
7310     1606, 3727, 3732, 4105, 4478, 4488, 0,
7311     1611, 1621, 3807, 3812, 4114, 4536, 4541, 4555, 0,
7312     1631, 3887, 3892, 4123, 0,
7313     4618, 4623, 0,
7314     1626, 1636, 3947, 3952, 4132, 4599, 4604, 4628, 0,
7315     1641, 4007, 4012, 4141, 4680, 4690, 0,
7316     1581, 4546, 4560, 0,
7317     1616, 4609, 4633, 0,
7318     4685, 0,
7319     1658, 1663, 0,
7320     1703, 0,
7321     1788, 1798, 0,
7322     1698, 0,
7323     1688, 1693, 1808, 0,
7324     1778, 1828, 0,
7325     1838, 0,
7326     1713, 1723, 1848, 1858, 0,
7327     1708, 0,
7328     1868, 0,
7329     1718, 1898, 1908, 1918, 0,
7330     1928, 0,
7331     1938, 0,
7332     1888, 0,
7333     1793, 1803, 0,
7334     1743, 0,
7335     1733, 1738, 1813, 0,
7336     1783, 1833, 0,
7337     1843, 0,
7338     1728, 1758, 1853, 1863, 0,
7339     1753, 0,
7340     1873, 0,
7341     1763, 1903, 1913, 1923, 0,
7342     1933, 0,
7343     1943, 0,
7344     1893, 0,
7345     1748, 0,
7346     1768, 0,
7347     1773, 0,
7348     1818, 0,
7349     1823, 0,
7350     1878, 0,
7351     1883, 0,
7352     11678, 11683, 11688, 0,
7353     11693, 11803, 0,
7354     11698, 0,
7355     11703, 0,
7356     11708, 0,
7357     11713, 11798, 0,
7358     11718, 0,
7359     11723, 0,
7360     11608, 11728, 0,
7361     11733, 0,
7362     11738, 11808, 0,
7363     11743, 0,
7364     11748, 0,
7365     11753, 0,
7366     11758, 0,
7367     11763, 0,
7368     11768, 11813, 0,
7369     11773, 0,
7370     11778, 0,
7371     11783, 0,
7372     11658, 11663, 11788, 0,
7373     11793, 0,
7374     11613, 0,
7375     15105, 0,
7376     15109, 15113, 0,
7377     15117, 15121, 0,
7378     15125, 15129, 0,
7379     15133, 15137, 0,
7380     12307, 12312, 12317, 12322, 12327, 12332, 12337, 12342, 12347, 12352, 12357, 12362, 12367, 12372, 12377, 12382, 12387, 12392, 12413, 12418, 12423, 12428, 12433, 12919, 12924, 12929, 12934, 12939, 12944, 13174, 13179, 13184, 13189, 13194, 13534, 13539, 15141, 15145, 15149, 15153, 0,
7381     14732, 14739, 1958, 1968, 14007, 14002, 1953, 15157, 15161, 0,
7382     14468, 14684, 12448, 12453, 12458, 12463, 12949, 12954, 12959, 12964, 12969, 12974, 13199, 13204, 13209, 13214, 13219, 13544, 13549, 12438, 12443, 15165, 15169, 15173, 15177, 0,
7383     15181, 15185, 0,
7384     14012, 14018, 14024, 14030, 14036, 14042, 14048, 14054, 14474, 14480, 14486, 14492, 14498, 14504, 13229, 13234, 13239, 13244, 13559, 13554, 12468, 12473, 12478, 12483, 12488, 12493, 12979, 12984, 12989, 12994, 12999, 13004, 13224, 15189, 15193, 15197, 15201, 0,
7385     12498, 12503, 12508, 12513, 13009, 13014, 13019, 13024, 13029, 13034, 13249, 13564, 13569, 15205, 15209, 15213, 15217, 0,
7386     14808, 14660, 14060, 14066, 14510, 14516, 14522, 12518, 12523, 13254, 13259, 13707, 13712, 13847, 13852, 15221, 15225, 15229, 15233, 0,
7387     14072, 14078, 14666, 13264, 13269, 13697, 13702, 13842, 13837, 12528, 12533, 15237, 15241, 15245, 15249, 0,
7388     12538, 12543, 12548, 13274, 13279, 13717, 13722, 13857, 13862, 15253, 15257, 15261, 15265, 0,
7389     15269, 15273, 0,
7390     12868, 15277, 15281, 0,
7391     14760, 12873, 15285, 15289, 0,
7392     15293, 15297, 0,
7393     14084, 14090, 14096, 14102, 14108, 14114, 14120, 14126, 14528, 14708, 13677, 13682, 13772, 13817, 13822, 13912, 13947, 13962, 13967, 13972, 12553, 12558, 12563, 12568, 13284, 13289, 13294, 13299, 13574, 13579, 15301, 15305, 15309, 15313, 0,
7394     14150, 14156, 14162, 14168, 14174, 14180, 14186, 14540, 13767, 13827, 13832, 13887, 13892, 13897, 13902, 13907, 13927, 13932, 13937, 13942, 13952, 13977, 13982, 13987, 13584, 13589, 13687, 13692, 13747, 13752, 13757, 13762, 15317, 15321, 15325, 15329, 0,
7395     14787, 14753, 14781, 14138, 14132, 14144, 14534, 14702, 14720, 12573, 12578, 13304, 13309, 13314, 13727, 13732, 13777, 13872, 13917, 13867, 15333, 15337, 15341, 15345, 0,
7396     14192, 14198, 14204, 14546, 13319, 13324, 13329, 13334, 13737, 13742, 13782, 13877, 13882, 13922, 12583, 12588, 12593, 12598, 15349, 15353, 15357, 15361, 0,
7397     14210, 14216, 14222, 14228, 13647, 13652, 13787, 13792, 13992, 13957, 12603, 12608, 13339, 15365, 15369, 15373, 15377, 0,
7398     12613, 13344, 13997, 15381, 15385, 15389, 15393, 0,
7399     14767, 14696, 14234, 14240, 14246, 14252, 14612, 12618, 12623, 13349, 13354, 13657, 13662, 13797, 13802, 15397, 15401, 15405, 15409, 0,
7400     14258, 14264, 14270, 13359, 13364, 13667, 13672, 13812, 13807, 12628, 12633, 15413, 15417, 15421, 15425, 0,
7401     13629, 13635, 13641, 15040, 15060, 15070, 15080, 15090, 15100, 0,
7402     14276, 14282, 14678, 12653, 12658, 12663, 13039, 13044, 13369, 13374, 13379, 13384, 12638, 12643, 12648, 15429, 15433, 15437, 15441, 0,
7403     14600, 14726, 14294, 14288, 14588, 12668, 12673, 12678, 12683, 13049, 13054, 13389, 13394, 15445, 15449, 15453, 15457, 0,
7404     14618, 14642, 14690, 12703, 12708, 12713, 12718, 12723, 13059, 13064, 13069, 13074, 13079, 13399, 13404, 13409, 13414, 13419, 13594, 13599, 12688, 12693, 12698, 15461, 15465, 15469, 15473, 0,
7405     14648, 14300, 14306, 14312, 14318, 14324, 14330, 14336, 14342, 14348, 14552, 14558, 14606, 14636, 12728, 12733, 12738, 12743, 12748, 12753, 13084, 13089, 13094, 13424, 13429, 13434, 13439, 13444, 13604, 15573, 15578, 15583, 15588, 15593, 15598, 15603, 15608, 15477, 15481, 15485, 15489, 0,
7406     14746, 14354, 14360, 14366, 14372, 14378, 14384, 14390, 14396, 14582, 14630, 14672, 12758, 12763, 12768, 12773, 12778, 12783, 13099, 13104, 13449, 13454, 13459, 13464, 15493, 15497, 15501, 15505, 0,
7407     14414, 14420, 14426, 14432, 14438, 14444, 14450, 14594, 14624, 14654, 14714, 13134, 13469, 13474, 13479, 13484, 13489, 13609, 13614, 12788, 12793, 12798, 12803, 12808, 12813, 13109, 13114, 13119, 13124, 13129, 15509, 15513, 15517, 15521, 0,
7408     14402, 14408, 12823, 12828, 12833, 13494, 13504, 13499, 12818, 15525, 15529, 15533, 15537, 0,
7409     14774, 1963, 15541, 15545, 0,
7410     12878, 13139, 12299, 12303, 15549, 15553, 0,
7411     14456, 14462, 14564, 14570, 14576, 12858, 12863, 13144, 13149, 13154, 13159, 13164, 13169, 13509, 13514, 13519, 13524, 13529, 13619, 13624, 1973, 12838, 12843, 12848, 12853, 15557, 15561, 15565, 15569, 0,
7412     11823, 11827, 0,
7413     12255, 0,
7414     11911, 11915, 11919, 11923, 0,
7415     11879, 11883, 11887, 11891, 0,
7416     11831, 11835, 11839, 11843, 0,
7417     11847, 11851, 11855, 11859, 0,
7418     11895, 11899, 11903, 11907, 0,
7419     11863, 11867, 11871, 11875, 0,
7420     11975, 11979, 11983, 11987, 0,
7421     11959, 11963, 11967, 11971, 0,
7422     11991, 11995, 11999, 12003, 0,
7423     12007, 12011, 12015, 12019, 0,
7424     12047, 12051, 0,
7425     12031, 12035, 0,
7426     12023, 12027, 0,
7427     12039, 12043, 0,
7428     12063, 12067, 0,
7429     12055, 12059, 0,
7430     11927, 11931, 11935, 11939, 0,
7431     11943, 11947, 11951, 11955, 0,
7432     12071, 12075, 12079, 12083, 0,
7433     12215, 12219, 12223, 12227, 0,
7434     12087, 12091, 12095, 12099, 0,
7435     12119, 12123, 12127, 12131, 0,
7436     12103, 12107, 12111, 12115, 0,
7437     12135, 12139, 0,
7438     12143, 12147, 12151, 12155, 0,
7439     12183, 12187, 12191, 12195, 0,
7440     12159, 12163, 0,
7441     2003, 12167, 12171, 12175, 12179, 0,
7442     12267, 12271, 0,
7443     12239, 12243, 0,
7444     12231, 12235, 0,
7445     12247, 12251, 0,
7446     12275, 12279, 0,
7447     12259, 12263, 0,
7448     12397, 12401, 12405, 12409, 0,
7449     12283, 12287, 12291, 12295, 0,
7450     2008, 12199, 12203, 0,
7451     12207, 12211, 0,
7452     1998, 0,
7453     2028, 0,
7454     2033, 0,
7455     2038, 0,
7456     2043, 0,
7457     2048, 0,
7458     2053, 0,
7459     2013, 0,
7460     2058, 0,
7461     2063, 0,
7462     2018, 0,
7463     2023, 0,
7464     2078, 0,
7465     2083, 0,
7466     2088, 0,
7467     2068, 2073, 0,
7468     2103, 0,
7469     2108, 0,
7470     2113, 0,
7471     2118, 0,
7472     2093, 0,
7473     2098, 0,
7474     2138, 0,
7475     2143, 0,
7476     2123, 2128, 2133, 0,
7477     2148, 0,
7478     2153, 2163, 0,
7479     2158, 0,
7480     2168, 0,
7481     2173, 0,
7482     2178, 2183, 2188, 0,
7483     2193, 0,
7484     2198, 2208, 0,
7485     2203, 0,
7486     2213, 2218, 2228, 0,
7487     2223, 0,
7488     2282, 0,
7489     2257, 0,
7490     2262, 0,
7491     2267, 0,
7492     2272, 0,
7493     2277, 0,
7494     2287, 2292, 2317, 0,
7495     2347, 0,
7496     2322, 0,
7497     2327, 0,
7498     2332, 0,
7499     2337, 0,
7500     2342, 0,
7501     2297, 0,
7502     2307, 0,
7503     2352, 0,
7504     2637, 0,
7505     2642, 0,
7506     2817, 0,
7507     2822, 0,
7508     2877, 0,
7509     2882, 0,
7510     3197, 3247, 0,
7511     3202, 3252, 0,
7512     3327, 0,
7513     3332, 0,
7514     3417, 0,
7515     3422, 0,
7516     3597, 3607, 3617, 4150, 0,
7517     3602, 3612, 3622, 4155, 0,
7518     4160, 0,
7519     4165, 0,
7520     4170, 0,
7521     4175, 0,
7522     4180, 0,
7523     4185, 0,
7524     3637, 3647, 3657, 4190, 0,
7525     3642, 3652, 3662, 4195, 0,
7526     4200, 0,
7527     4205, 0,
7528     4210, 0,
7529     4215, 0,
7530     4220, 0,
7531     4225, 0,
7532     3677, 3687, 0,
7533     3682, 3692, 0,
7534     3707, 3717, 0,
7535     3712, 3722, 0,
7536     3737, 3747, 3757, 4230, 0,
7537     3742, 3752, 3762, 4235, 0,
7538     4240, 0,
7539     4245, 0,
7540     4250, 0,
7541     4255, 0,
7542     4260, 0,
7543     4265, 0,
7544     3777, 3787, 3797, 4270, 0,
7545     3782, 3792, 3802, 4275, 0,
7546     4280, 0,
7547     4285, 0,
7548     4290, 0,
7549     4295, 0,
7550     4300, 0,
7551     4305, 0,
7552     3817, 3827, 3837, 0,
7553     3822, 3832, 3842, 0,
7554     3857, 3867, 3877, 0,
7555     3862, 3872, 3882, 0,
7556     3897, 3907, 0,
7557     3902, 3912, 0,
7558     3927, 3937, 0,
7559     3932, 3942, 0,
7560     3957, 3967, 3977, 0,
7561     3962, 3972, 3982, 0,
7562     3992, 3997, 4002, 0,
7563     4017, 4027, 4037, 4310, 0,
7564     4022, 4032, 4042, 4315, 0,
7565     4320, 0,
7566     4325, 0,
7567     4330, 0,
7568     4335, 0,
7569     4340, 0,
7570     4345, 0,
7571     4057, 4067, 4077, 4350, 0,
7572     4062, 4072, 4082, 4355, 0,
7573     4360, 0,
7574     4365, 0,
7575     4370, 0,
7576     4375, 0,
7577     4380, 0,
7578     4385, 0,
7579     4400, 0,
7580     4473, 0,
7581     4675, 0,
7582     4420, 0,
7583     4521, 4526, 4531, 0,
7584     4493, 0,
7585     4695, 0,
7586     4584, 4589, 4594, 0,
7587     5391, 0,
7588     5396, 0,
7589     5401, 0,
7590     5406, 0,
7591     5416, 0,
7592     5411, 0,
7593     5421, 0,
7594     5426, 0,
7595     5431, 0,
7596     5436, 0,
7597     5441, 0,
7598     5468, 0,
7599     5473, 0,
7600     5478, 0,
7601     5483, 0,
7602     5498, 0,
7603     5493, 0,
7604     5513, 0,
7605     5518, 0,
7606     5523, 0,
7607     5528, 0,
7608     5533, 0,
7609     5538, 0,
7610     5543, 0,
7611     5548, 0,
7612     5593, 0,
7613     5598, 0,
7614     5553, 0,
7615     5558, 0,
7616     5563, 0,
7617     5568, 0,
7618     5603, 0,
7619     5608, 0,
7620     5573, 0,
7621     5578, 0,
7622     5583, 0,
7623     5588, 0,
7624     5613, 0,
7625     5618, 0,
7626     5623, 0,
7627     5628, 0,
7628     7351, 0,
7629     7226, 0,
7630     7231, 0,
7631     7236, 0,
7632     7241, 0,
7633     7246, 0,
7634     7251, 0,
7635     7256, 0,
7636     7261, 0,
7637     7266, 0,
7638     7271, 0,
7639     7276, 0,
7640     7281, 0,
7641     7286, 0,
7642     7291, 0,
7643     7296, 0,
7644     7301, 7306, 0,
7645     7311, 7316, 0,
7646     7321, 7326, 0,
7647     7331, 7336, 0,
7648     7341, 7346, 0,
7649     7366, 0,
7650     7496, 0,
7651     7371, 0,
7652     7376, 0,
7653     7381, 0,
7654     7386, 0,
7655     7391, 0,
7656     7396, 0,
7657     7401, 0,
7658     7406, 0,
7659     7411, 0,
7660     7416, 0,
7661     7421, 0,
7662     7426, 0,
7663     7431, 0,
7664     7436, 0,
7665     7441, 0,
7666     7446, 7451, 0,
7667     7456, 7461, 0,
7668     7466, 7471, 0,
7669     7476, 7481, 0,
7670     7486, 7491, 0,
7671     7501, 0,
7672     7506, 0,
7673     7511, 0,
7674     7516, 0,
7675     7521, 0,
7676     11668, 11673, 0,
7677
7678 };
7679
7680 static const Q_UINT16 li_00[] = {
7681     0, 0, 0, 0, 0, 0, 0, 0,
7682     0, 0, 0, 0, 0, 0, 0, 0,
7683     0, 0, 0, 0, 0, 0, 0, 0,
7684     0, 0, 0, 0, 0, 0, 0, 0,
7685     1, 0, 0, 0, 0, 0, 0, 0,
7686     0, 0, 0, 0, 0, 0, 0, 0,
7687     0, 0, 0, 0, 0, 0, 0, 0,
7688     0, 0, 0, 0, 16, 18, 20, 0,
7689     0, 22, 39, 43, 49, 56, 74, 76,
7690     84, 92, 108, 110, 116, 123, 127, 137,
7691     154, 0, 157, 166, 174, 182, 202, 205,
7692     212, 215, 225, 0, 0, 0, 0, 0,
7693     0, 232, 249, 253, 259, 266, 284, 286,
7694     294, 303, 318, 321, 327, 334, 338, 348,
7695     365, 0, 368, 377, 385, 394, 414, 417,
7696     425, 428, 439, 0, 0, 0, 0, 0,
7697     0, 0, 0, 0, 0, 0, 0, 0,
7698     0, 0, 0, 0, 0, 0, 0, 0,
7699     0, 0, 0, 0, 0, 0, 0, 0,
7700     0, 0, 0, 0, 0, 0, 0, 0,
7701     0, 0, 0, 0, 0, 0, 0, 0,
7702     446, 0, 0, 0, 0, 0, 0, 0,
7703     0, 0, 0, 0, 0, 0, 0, 0,
7704     0, 0, 0, 0, 0, 0, 0, 0,
7705     0, 0, 450, 0, 455, 457, 459, 462,
7706     0, 0, 464, 0, 0, 0, 0, 469,
7707     0, 0, 0, 0, 471, 476, 480, 0,
7708     482, 0, 0, 0, 484, 0, 0, 0,
7709     0, 0, 489, 0, 494, 496, 498, 501,
7710     0, 0, 503, 0, 0, 0, 0, 508,
7711     0, 0, 0, 0, 510, 515, 519, 0,
7712     521, 0, 0, 0, 523, 0, 0, 0,
7713 };
7714
7715 static const Q_UINT16 li_01[] = {
7716     0, 0, 528, 533, 0, 0, 0, 0,
7717     0, 0, 0, 0, 0, 0, 0, 0,
7718     0, 0, 538, 541, 0, 0, 0, 0,
7719     0, 0, 0, 0, 0, 0, 0, 0,
7720     0, 0, 0, 0, 0, 0, 0, 0,
7721     0, 0, 0, 0, 0, 0, 0, 0,
7722     0, 0, 0, 0, 0, 0, 0, 0,
7723     0, 0, 0, 0, 0, 0, 0, 0,
7724     0, 0, 0, 0, 0, 0, 0, 0,
7725     0, 0, 0, 0, 544, 547, 0, 0,
7726     0, 0, 0, 0, 0, 0, 0, 0,
7727     0, 0, 550, 552, 0, 0, 0, 0,
7728     554, 556, 0, 0, 0, 0, 0, 0,
7729     558, 560, 562, 564, 0, 0, 0, 0,
7730     0, 0, 0, 0, 0, 0, 0, 0,
7731     0, 0, 0, 0, 0, 0, 0, 566,
7732     0, 0, 0, 0, 0, 0, 0, 0,
7733     0, 0, 0, 0, 0, 0, 0, 0,
7734     0, 0, 0, 0, 0, 0, 0, 0,
7735     0, 0, 0, 0, 0, 0, 0, 0,
7736     568, 574, 0, 0, 0, 0, 0, 0,
7737     0, 0, 0, 0, 0, 0, 0, 580,
7738     586, 0, 0, 0, 0, 0, 0, 592,
7739     0, 0, 0, 0, 0, 0, 0, 0,
7740     0, 0, 0, 0, 0, 0, 0, 0,
7741     0, 0, 0, 0, 0, 0, 0, 0,
7742     0, 0, 0, 0, 0, 0, 0, 0,
7743     0, 0, 0, 0, 0, 0, 0, 0,
7744     0, 0, 0, 0, 0, 0, 0, 0,
7745     0, 0, 594, 596, 0, 0, 0, 0,
7746     0, 0, 0, 0, 0, 0, 0, 0,
7747     0, 0, 0, 0, 0, 0, 0, 0,
7748 };
7749
7750 static const Q_UINT16 li_02[] = {
7751     0, 0, 0, 0, 0, 0, 0, 0,
7752     0, 0, 0, 0, 0, 0, 0, 0,
7753     0, 0, 0, 0, 0, 0, 0, 0,
7754     0, 0, 0, 0, 0, 0, 0, 0,
7755     0, 0, 0, 0, 0, 0, 598, 600,
7756     602, 604, 0, 0, 0, 0, 606, 608,
7757     0, 0, 0, 0, 0, 0, 0, 0,
7758     0, 0, 0, 0, 0, 0, 0, 0,
7759     0, 0, 0, 0, 0, 0, 0, 0,
7760     0, 0, 0, 0, 0, 0, 0, 0,
7761     0, 0, 0, 0, 0, 0, 0, 0,
7762     0, 0, 0, 0, 0, 0, 0, 0,
7763     0, 0, 0, 0, 0, 0, 0, 0,
7764     0, 0, 0, 0, 0, 0, 0, 0,
7765     0, 0, 0, 0, 0, 0, 0, 0,
7766     0, 0, 0, 0, 0, 0, 0, 0,
7767     0, 0, 0, 0, 0, 0, 0, 0,
7768     0, 0, 0, 0, 0, 0, 0, 0,
7769     0, 0, 610, 0, 0, 0, 0, 0,
7770     0, 0, 0, 0, 0, 0, 0, 0,
7771     0, 0, 0, 0, 0, 0, 0, 0,
7772     0, 0, 0, 0, 0, 0, 0, 0,
7773     0, 0, 0, 0, 0, 0, 0, 0,
7774     0, 0, 0, 0, 0, 0, 0, 0,
7775     0, 0, 0, 0, 0, 0, 0, 0,
7776     0, 0, 0, 0, 0, 0, 0, 0,
7777     0, 0, 0, 0, 0, 0, 0, 0,
7778     0, 0, 0, 0, 0, 0, 0, 0,
7779     0, 0, 0, 0, 0, 0, 0, 0,
7780     0, 0, 0, 0, 0, 0, 0, 0,
7781     0, 0, 0, 0, 0, 0, 0, 0,
7782     0, 0, 0, 0, 0, 0, 0, 0,
7783 };
7784
7785 static const Q_UINT16 li_03[] = {
7786     0, 0, 0, 0, 0, 0, 0, 0,
7787     612, 0, 0, 0, 0, 0, 0, 0,
7788     0, 0, 0, 0, 0, 0, 0, 0,
7789     0, 0, 0, 0, 0, 0, 0, 0,
7790     0, 0, 0, 0, 0, 0, 0, 0,
7791     0, 0, 0, 0, 0, 0, 0, 0,
7792     0, 0, 0, 0, 0, 0, 0, 0,
7793     0, 0, 0, 0, 0, 0, 0, 0,
7794     0, 0, 0, 0, 0, 0, 0, 0,
7795     0, 0, 0, 0, 0, 0, 0, 0,
7796     0, 0, 0, 0, 0, 0, 0, 0,
7797     0, 0, 0, 0, 0, 0, 0, 0,
7798     0, 0, 0, 0, 0, 0, 0, 0,
7799     0, 0, 0, 0, 0, 0, 0, 0,
7800     0, 0, 0, 0, 0, 0, 0, 0,
7801     0, 0, 0, 0, 0, 0, 0, 0,
7802     0, 0, 0, 0, 0, 0, 0, 0,
7803     0, 0, 0, 0, 0, 0, 0, 0,
7804     0, 614, 0, 0, 0, 622, 0, 627,
7805     0, 633, 0, 0, 0, 0, 0, 641,
7806     0, 646, 0, 0, 0, 648, 0, 0,
7807     0, 655, 0, 0, 661, 0, 663, 0,
7808     0, 665, 0, 0, 0, 674, 0, 679,
7809     0, 686, 0, 0, 0, 0, 0, 695,
7810     0, 700, 0, 0, 0, 703, 0, 0,
7811     0, 712, 719, 723, 0, 0, 727, 0,
7812     0, 0, 729, 0, 0, 0, 0, 0,
7813     0, 0, 0, 0, 0, 0, 0, 0,
7814     0, 0, 0, 0, 0, 0, 0, 0,
7815     0, 0, 0, 0, 0, 0, 0, 0,
7816     0, 0, 0, 0, 0, 0, 0, 0,
7817     0, 0, 0, 0, 0, 0, 0, 0,
7818 };
7819
7820 static const Q_UINT16 li_04[] = {
7821     0, 0, 0, 0, 0, 0, 732, 0,
7822     0, 0, 0, 0, 0, 0, 0, 0,
7823     734, 0, 0, 737, 0, 739, 743, 746,
7824     748, 0, 753, 0, 0, 0, 755, 0,
7825     0, 0, 0, 757, 0, 0, 0, 762,
7826     0, 0, 0, 764, 0, 766, 0, 0,
7827     768, 0, 0, 771, 0, 773, 777, 780,
7828     782, 0, 787, 0, 0, 0, 789, 0,
7829     0, 0, 0, 791, 0, 0, 0, 796,
7830     0, 0, 0, 798, 0, 800, 0, 0,
7831     0, 0, 0, 0, 0, 0, 802, 0,
7832     0, 0, 0, 0, 0, 0, 0, 0,
7833     0, 0, 0, 0, 0, 0, 0, 0,
7834     0, 0, 0, 0, 0, 0, 0, 0,
7835     0, 0, 0, 0, 804, 806, 0, 0,
7836     0, 0, 0, 0, 0, 0, 0, 0,
7837     0, 0, 0, 0, 0, 0, 0, 0,
7838     0, 0, 0, 0, 0, 0, 0, 0,
7839     0, 0, 0, 0, 0, 0, 0, 0,
7840     0, 0, 0, 0, 0, 0, 0, 0,
7841     0, 0, 0, 0, 0, 0, 0, 0,
7842     0, 0, 0, 0, 0, 0, 0, 0,
7843     0, 0, 0, 0, 0, 0, 0, 0,
7844     0, 0, 0, 0, 0, 0, 0, 0,
7845     0, 0, 0, 0, 0, 0, 0, 0,
7846     0, 0, 0, 0, 0, 0, 0, 0,
7847     0, 0, 0, 0, 0, 0, 0, 0,
7848     808, 810, 0, 0, 0, 0, 0, 0,
7849     0, 0, 0, 0, 0, 0, 0, 0,
7850     812, 814, 0, 0, 0, 0, 0, 0,
7851     0, 0, 0, 0, 0, 0, 0, 0,
7852     0, 0, 0, 0, 0, 0, 0, 0,
7853 };
7854
7855 static const Q_UINT16 li_05[] = {
7856     0, 0, 0, 0, 0, 0, 0, 0,
7857     0, 0, 0, 0, 0, 0, 0, 0,
7858     0, 0, 0, 0, 0, 0, 0, 0,
7859     0, 0, 0, 0, 0, 0, 0, 0,
7860     0, 0, 0, 0, 0, 0, 0, 0,
7861     0, 0, 0, 0, 0, 0, 0, 0,
7862     0, 0, 0, 0, 0, 0, 0, 0,
7863     0, 0, 0, 0, 0, 0, 0, 0,
7864     0, 0, 0, 0, 0, 0, 0, 0,
7865     0, 0, 0, 0, 0, 0, 0, 0,
7866     0, 0, 0, 0, 0, 0, 0, 0,
7867     0, 0, 0, 0, 0, 0, 0, 0,
7868     0, 0, 0, 0, 0, 0, 0, 0,
7869     0, 0, 0, 0, 0, 0, 0, 0,
7870     0, 0, 0, 0, 0, 0, 0, 0,
7871     0, 0, 0, 0, 0, 0, 0, 0,
7872     0, 0, 0, 0, 0, 0, 0, 0,
7873     0, 0, 0, 0, 0, 0, 0, 0,
7874     0, 0, 0, 0, 0, 0, 0, 0,
7875     0, 0, 0, 0, 0, 0, 0, 0,
7876     0, 0, 0, 0, 0, 0, 0, 0,
7877     0, 0, 0, 0, 0, 0, 0, 0,
7878     0, 0, 0, 0, 0, 0, 0, 0,
7879     0, 0, 0, 0, 0, 0, 0, 0,
7880     0, 0, 0, 0, 0, 0, 0, 0,
7881     0, 0, 0, 0, 0, 0, 0, 0,
7882     816, 820, 823, 825, 827, 829, 832, 0,
7883     834, 836, 839, 841, 844, 0, 846, 0,
7884     848, 850, 0, 852, 854, 0, 857, 859,
7885     861, 863, 867, 0, 0, 0, 0, 0,
7886     0, 0, 869, 0, 0, 0, 0, 0,
7887     0, 0, 0, 0, 0, 0, 0, 0,
7888 };
7889
7890 static const Q_UINT16 li_06[] = {
7891     0, 0, 0, 0, 0, 0, 0, 0,
7892     0, 0, 0, 0, 0, 0, 0, 0,
7893     0, 0, 0, 0, 0, 0, 0, 0,
7894     0, 0, 0, 0, 0, 0, 0, 0,
7895     0, 871, 873, 876, 879, 882, 885, 926,
7896     936, 962, 965, 1003, 1021, 1041, 1057, 1071,
7897     1074, 1078, 1083, 1086, 1121, 1158, 1183, 1206,
7898     1224, 1232, 1252, 0, 0, 0, 0, 0,
7899     1268, 1278, 1298, 1316, 1344, 1386, 1415, 1450,
7900     1464, 1469, 1476, 0, 0, 0, 0, 0,
7901     0, 0, 0, 0, 0, 0, 0, 0,
7902     0, 0, 0, 0, 0, 0, 0, 0,
7903     0, 0, 0, 0, 0, 0, 0, 0,
7904     0, 0, 0, 0, 0, 0, 0, 0,
7905     0, 1506, 0, 0, 0, 0, 0, 1509,
7906     0, 1511, 1516, 1521, 0, 0, 1526, 1531,
7907     1536, 0, 0, 1541, 1546, 0, 1551, 1556,
7908     1561, 0, 0, 0, 1564, 1567, 1570, 0,
7909     0, 1573, 0, 0, 0, 0, 0, 0,
7910     1576, 0, 0, 0, 0, 0, 0, 0,
7911     0, 0, 0, 0, 1579, 0, 1584, 0,
7912     0, 1589, 0, 0, 0, 1594, 0, 1599,
7913     0, 1604, 0, 1609, 0, 0, 0, 0,
7914     0, 0, 1614, 1617, 0, 0, 1622, 0,
7915     1627, 1630, 0, 0, 0, 1636, 1639, 1642,
7916     1645, 1648, 0, 1651, 1654, 0, 0, 0,
7917     1659, 0, 1664, 1668, 0, 1671, 0, 0,
7918     0, 0, 0, 0, 0, 0, 0, 0,
7919     0, 0, 0, 0, 0, 0, 0, 0,
7920     0, 0, 0, 0, 0, 0, 0, 0,
7921     0, 0, 0, 0, 0, 0, 0, 0,
7922     0, 0, 0, 0, 0, 0, 0, 0,
7923 };
7924
7925 static const Q_UINT16 li_07[] = {
7926     0, 0, 0, 0, 0, 0, 0, 0,
7927     0, 0, 0, 0, 0, 0, 0, 0,
7928     0, 0, 0, 0, 0, 0, 0, 0,
7929     0, 0, 0, 0, 0, 0, 0, 0,
7930     0, 0, 0, 0, 0, 0, 0, 0,
7931     0, 0, 0, 0, 0, 0, 0, 0,
7932     0, 0, 0, 0, 0, 0, 0, 0,
7933     0, 0, 0, 0, 0, 0, 0, 0,
7934     0, 0, 0, 0, 0, 0, 0, 0,
7935     0, 0, 0, 0, 0, 0, 0, 0,
7936     0, 0, 0, 0, 0, 0, 0, 0,
7937     0, 0, 0, 0, 0, 0, 0, 0,
7938     0, 0, 0, 0, 0, 0, 0, 0,
7939     0, 0, 0, 0, 0, 0, 0, 0,
7940     0, 0, 0, 0, 0, 0, 0, 0,
7941     0, 0, 0, 0, 0, 0, 0, 0,
7942     0, 0, 0, 0, 0, 0, 0, 0,
7943     0, 0, 0, 0, 0, 0, 0, 0,
7944     0, 0, 0, 0, 0, 0, 0, 0,
7945     0, 0, 0, 0, 0, 0, 0, 0,
7946     0, 0, 0, 0, 0, 0, 0, 0,
7947     0, 0, 0, 0, 0, 0, 0, 0,
7948     0, 0, 0, 0, 0, 0, 0, 0,
7949     0, 0, 0, 0, 0, 0, 0, 0,
7950     0, 0, 0, 0, 0, 0, 0, 0,
7951     0, 0, 0, 0, 0, 0, 0, 0,
7952     0, 0, 0, 0, 0, 0, 0, 0,
7953     0, 0, 0, 0, 0, 0, 0, 0,
7954     0, 0, 0, 0, 0, 0, 0, 0,
7955     0, 0, 0, 0, 0, 0, 0, 0,
7956     0, 0, 0, 0, 0, 0, 0, 0,
7957     0, 0, 0, 0, 0, 0, 0, 0,
7958 };
7959
7960 static const Q_UINT16 li_09[] = {
7961     0, 0, 0, 0, 0, 0, 0, 0,
7962     0, 0, 0, 0, 0, 0, 0, 0,
7963     0, 0, 0, 0, 0, 1673, 1675, 1677,
7964     0, 0, 0, 0, 1679, 0, 0, 0,
7965     0, 1681, 1683, 0, 0, 0, 0, 0,
7966     1685, 0, 0, 1687, 0, 0, 0, 1689,
7967     1691, 0, 0, 1693, 0, 0, 0, 0,
7968     0, 0, 0, 0, 0, 0, 0, 0,
7969     0, 0, 0, 0, 0, 0, 0, 0,
7970     0, 0, 0, 0, 0, 0, 0, 0,
7971     0, 0, 0, 0, 0, 0, 0, 0,
7972     0, 0, 0, 0, 0, 0, 0, 0,
7973     0, 0, 0, 0, 0, 0, 0, 0,
7974     0, 0, 0, 0, 0, 0, 0, 0,
7975     0, 0, 0, 0, 0, 0, 0, 0,
7976     0, 0, 0, 0, 0, 0, 0, 0,
7977     0, 0, 0, 0, 0, 0, 0, 0,
7978     0, 0, 0, 0, 0, 0, 0, 0,
7979     0, 0, 0, 0, 0, 0, 0, 0,
7980     0, 0, 0, 0, 0, 0, 0, 0,
7981     0, 1695, 1697, 0, 0, 0, 0, 0,
7982     0, 0, 0, 0, 0, 0, 0, 1699,
7983     0, 0, 0, 0, 0, 0, 0, 0,
7984     0, 0, 0, 0, 0, 0, 0, 0,
7985     0, 0, 0, 0, 0, 0, 0, 1701,
7986     0, 0, 0, 0, 0, 0, 0, 0,
7987     0, 0, 0, 0, 0, 0, 0, 0,
7988     0, 0, 0, 0, 0, 0, 0, 0,
7989     0, 0, 0, 0, 0, 0, 0, 0,
7990     0, 0, 0, 0, 0, 0, 0, 0,
7991     0, 0, 0, 0, 0, 0, 0, 0,
7992     0, 0, 0, 0, 0, 0, 0, 0,
7993 };
7994
7995 static const Q_UINT16 li_0A[] = {
7996     0, 0, 0, 0, 0, 0, 0, 0,
7997     0, 0, 0, 0, 0, 0, 0, 0,
7998     0, 0, 0, 0, 0, 0, 1704, 1706,
7999     0, 0, 0, 0, 1708, 0, 0, 0,
8000     0, 0, 0, 0, 0, 0, 0, 0,
8001     0, 0, 0, 1710, 0, 0, 0, 0,
8002     0, 0, 1712, 0, 0, 0, 0, 0,
8003     1714, 0, 0, 0, 0, 0, 0, 0,
8004     0, 0, 0, 0, 0, 0, 0, 0,
8005     0, 0, 0, 0, 0, 0, 0, 0,
8006     0, 0, 0, 0, 0, 0, 0, 0,
8007     0, 0, 0, 0, 0, 0, 0, 0,
8008     0, 0, 0, 0, 0, 0, 0, 0,
8009     0, 0, 0, 0, 0, 0, 0, 0,
8010     0, 0, 0, 0, 0, 0, 0, 0,
8011     0, 0, 0, 0, 0, 0, 0, 0,
8012     0, 0, 0, 0, 0, 0, 0, 0,
8013     0, 0, 0, 0, 0, 0, 0, 0,
8014     0, 0, 0, 0, 0, 0, 0, 0,
8015     0, 0, 0, 0, 0, 0, 0, 0,
8016     0, 0, 0, 0, 0, 0, 0, 0,
8017     0, 0, 0, 0, 0, 0, 0, 0,
8018     0, 0, 0, 0, 0, 0, 0, 0,
8019     0, 0, 0, 0, 0, 0, 0, 0,
8020     0, 0, 0, 0, 0, 0, 0, 0,
8021     0, 0, 0, 0, 0, 0, 0, 0,
8022     0, 0, 0, 0, 0, 0, 0, 0,
8023     0, 0, 0, 0, 0, 0, 0, 0,
8024     0, 0, 0, 0, 0, 0, 0, 0,
8025     0, 0, 0, 0, 0, 0, 0, 0,
8026     0, 0, 0, 0, 0, 0, 0, 0,
8027     0, 0, 0, 0, 0, 0, 0, 0,
8028 };
8029
8030 static const Q_UINT16 li_0B[] = {
8031     0, 0, 0, 0, 0, 0, 0, 0,
8032     0, 0, 0, 0, 0, 0, 0, 0,
8033     0, 0, 0, 0, 0, 0, 0, 0,
8034     0, 0, 0, 0, 0, 0, 0, 0,
8035     0, 1716, 1718, 0, 0, 0, 0, 0,
8036     0, 0, 0, 0, 0, 0, 0, 0,
8037     0, 0, 0, 0, 0, 0, 0, 0,
8038     0, 0, 0, 0, 0, 0, 0, 0,
8039     0, 0, 0, 0, 0, 0, 0, 1720,
8040     0, 0, 0, 0, 0, 0, 0, 0,
8041     0, 0, 0, 0, 0, 0, 0, 0,
8042     0, 0, 0, 0, 0, 0, 0, 0,
8043     0, 0, 0, 0, 0, 0, 0, 0,
8044     0, 0, 0, 0, 0, 0, 0, 0,
8045     0, 0, 0, 0, 0, 0, 0, 0,
8046     0, 0, 0, 0, 0, 0, 0, 0,
8047     0, 0, 0, 0, 0, 0, 0, 0,
8048     0, 0, 0, 0, 0, 0, 0, 0,
8049     0, 0, 1724, 0, 0, 0, 0, 0,
8050     0, 0, 0, 0, 0, 0, 0, 0,
8051     0, 0, 0, 0, 0, 0, 0, 0,
8052     0, 0, 0, 0, 0, 0, 0, 0,
8053     0, 0, 0, 0, 0, 0, 0, 0,
8054     0, 0, 0, 0, 0, 0, 0, 0,
8055     0, 0, 0, 0, 0, 0, 1726, 1729,
8056     0, 0, 0, 0, 0, 0, 0, 0,
8057     0, 0, 0, 0, 0, 0, 0, 0,
8058     0, 0, 0, 0, 0, 0, 0, 0,
8059     0, 0, 0, 0, 0, 0, 0, 0,
8060     0, 0, 0, 0, 0, 0, 0, 0,
8061     0, 0, 0, 0, 0, 0, 0, 0,
8062     0, 0, 0, 0, 0, 0, 0, 0,
8063 };
8064
8065 static const Q_UINT16 li_0C[] = {
8066     0, 0, 0, 0, 0, 0, 0, 0,
8067     0, 0, 0, 0, 0, 0, 0, 0,
8068     0, 0, 0, 0, 0, 0, 0, 0,
8069     0, 0, 0, 0, 0, 0, 0, 0,
8070     0, 0, 0, 0, 0, 0, 0, 0,
8071     0, 0, 0, 0, 0, 0, 0, 0,
8072     0, 0, 0, 0, 0, 0, 0, 0,
8073     0, 0, 0, 0, 0, 0, 0, 0,
8074     0, 0, 0, 0, 0, 0, 1731, 0,
8075     0, 0, 0, 0, 0, 0, 0, 0,
8076     0, 0, 0, 0, 0, 0, 0, 0,
8077     0, 0, 0, 0, 0, 0, 0, 0,
8078     0, 0, 0, 0, 0, 0, 0, 0,
8079     0, 0, 0, 0, 0, 0, 0, 0,
8080     0, 0, 0, 0, 0, 0, 0, 0,
8081     0, 0, 0, 0, 0, 0, 0, 0,
8082     0, 0, 0, 0, 0, 0, 0, 0,
8083     0, 0, 0, 0, 0, 0, 0, 0,
8084     0, 0, 0, 0, 0, 0, 0, 0,
8085     0, 0, 0, 0, 0, 0, 0, 0,
8086     0, 0, 0, 0, 0, 0, 0, 0,
8087     0, 0, 0, 0, 0, 0, 0, 0,
8088     0, 0, 0, 0, 0, 0, 0, 0,
8089     0, 0, 0, 0, 0, 0, 0, 1733,
8090     0, 0, 0, 0, 0, 0, 1735, 0,
8091     0, 0, 1739, 0, 0, 0, 0, 0,
8092     0, 0, 0, 0, 0, 0, 0, 0,
8093     0, 0, 0, 0, 0, 0, 0, 0,
8094     0, 0, 0, 0, 0, 0, 0, 0,
8095     0, 0, 0, 0, 0, 0, 0, 0,
8096     0, 0, 0, 0, 0, 0, 0, 0,
8097     0, 0, 0, 0, 0, 0, 0, 0,
8098 };
8099
8100 static const Q_UINT16 li_0D[] = {
8101     0, 0, 0, 0, 0, 0, 0, 0,
8102     0, 0, 0, 0, 0, 0, 0, 0,
8103     0, 0, 0, 0, 0, 0, 0, 0,
8104     0, 0, 0, 0, 0, 0, 0, 0,
8105     0, 0, 0, 0, 0, 0, 0, 0,
8106     0, 0, 0, 0, 0, 0, 0, 0,
8107     0, 0, 0, 0, 0, 0, 0, 0,
8108     0, 0, 0, 0, 0, 0, 0, 0,
8109     0, 0, 0, 0, 0, 0, 1741, 1744,
8110     0, 0, 0, 0, 0, 0, 0, 0,
8111     0, 0, 0, 0, 0, 0, 0, 0,
8112     0, 0, 0, 0, 0, 0, 0, 0,
8113     0, 0, 0, 0, 0, 0, 0, 0,
8114     0, 0, 0, 0, 0, 0, 0, 0,
8115     0, 0, 0, 0, 0, 0, 0, 0,
8116     0, 0, 0, 0, 0, 0, 0, 0,
8117     0, 0, 0, 0, 0, 0, 0, 0,
8118     0, 0, 0, 0, 0, 0, 0, 0,
8119     0, 0, 0, 0, 0, 0, 0, 0,
8120     0, 0, 0, 0, 0, 0, 0, 0,
8121     0, 0, 0, 0, 0, 0, 0, 0,
8122     0, 0, 0, 0, 0, 0, 0, 0,
8123     0, 0, 0, 0, 0, 0, 0, 0,
8124     0, 0, 0, 0, 0, 0, 0, 0,
8125     0, 0, 0, 0, 0, 0, 0, 0,
8126     0, 0, 0, 0, 0, 0, 0, 0,
8127     0, 0, 0, 0, 0, 0, 0, 0,
8128     0, 1746, 0, 0, 1750, 0, 0, 0,
8129     0, 0, 0, 0, 0, 0, 0, 0,
8130     0, 0, 0, 0, 0, 0, 0, 0,
8131     0, 0, 0, 0, 0, 0, 0, 0,
8132     0, 0, 0, 0, 0, 0, 0, 0,
8133 };
8134
8135 static const Q_UINT16 li_0F[] = {
8136     0, 0, 0, 0, 0, 0, 0, 0,
8137     0, 0, 0, 0, 0, 0, 0, 0,
8138     0, 0, 0, 0, 0, 0, 0, 0,
8139     0, 0, 0, 0, 0, 0, 0, 0,
8140     0, 0, 0, 0, 0, 0, 0, 0,
8141     0, 0, 0, 0, 0, 0, 0, 0,
8142     0, 0, 0, 0, 0, 0, 0, 0,
8143     0, 0, 0, 0, 0, 0, 0, 0,
8144     1752, 0, 1754, 0, 0, 0, 0, 0,
8145     0, 0, 0, 0, 1756, 0, 0, 0,
8146     0, 1758, 0, 0, 0, 0, 1760, 0,
8147     0, 0, 0, 1762, 0, 0, 0, 0,
8148     0, 0, 0, 0, 0, 0, 0, 0,
8149     0, 0, 0, 0, 0, 0, 0, 0,
8150     0, 1764, 0, 0, 0, 0, 0, 0,
8151     0, 0, 0, 0, 0, 0, 0, 0,
8152     0, 0, 0, 0, 0, 0, 0, 0,
8153     0, 0, 0, 0, 0, 0, 0, 0,
8154     1768, 0, 1770, 0, 0, 0, 0, 0,
8155     0, 0, 0, 0, 1772, 0, 0, 0,
8156     0, 1774, 0, 0, 0, 0, 1776, 0,
8157     0, 0, 0, 1778, 0, 0, 0, 0,
8158     0, 0, 1780, 1782, 0, 0, 0, 0,
8159     0, 0, 0, 0, 0, 0, 0, 0,
8160     0, 0, 0, 0, 0, 0, 0, 0,
8161     0, 0, 0, 0, 0, 0, 0, 0,
8162     0, 0, 0, 0, 0, 0, 0, 0,
8163     0, 0, 0, 0, 0, 0, 0, 0,
8164     0, 0, 0, 0, 0, 0, 0, 0,
8165     0, 0, 0, 0, 0, 0, 0, 0,
8166     0, 0, 0, 0, 0, 0, 0, 0,
8167     0, 0, 0, 0, 0, 0, 0, 0,
8168 };
8169
8170 static const Q_UINT16 li_10[] = {
8171     0, 0, 0, 0, 0, 0, 0, 0,
8172     0, 0, 0, 0, 0, 0, 0, 0,
8173     0, 0, 0, 0, 0, 0, 0, 0,
8174     0, 0, 0, 0, 0, 0, 0, 0,
8175     0, 0, 0, 0, 0, 1784, 0, 0,
8176     0, 0, 0, 0, 0, 0, 0, 0,
8177     0, 0, 0, 0, 0, 0, 0, 0,
8178     0, 0, 0, 0, 0, 0, 0, 0,
8179     0, 0, 0, 0, 0, 0, 0, 0,
8180     0, 0, 0, 0, 0, 0, 0, 0,
8181     0, 0, 0, 0, 0, 0, 0, 0,
8182     0, 0, 0, 0, 0, 0, 0, 0,
8183     0, 0, 0, 0, 0, 0, 0, 0,
8184     0, 0, 0, 0, 0, 0, 0, 0,
8185     0, 0, 0, 0, 0, 0, 0, 0,
8186     0, 0, 0, 0, 0, 0, 0, 0,
8187     0, 0, 0, 0, 0, 0, 0, 0,
8188     0, 0, 0, 0, 0, 0, 0, 0,
8189     0, 0, 0, 0, 0, 0, 0, 0,
8190     0, 0, 0, 0, 0, 0, 0, 0,
8191     0, 0, 0, 0, 0, 0, 0, 0,
8192     0, 0, 0, 0, 0, 0, 0, 0,
8193     0, 0, 0, 0, 0, 0, 0, 0,
8194     0, 0, 0, 0, 0, 0, 0, 0,
8195     0, 0, 0, 0, 0, 0, 0, 0,
8196     0, 0, 0, 0, 0, 0, 0, 0,
8197     0, 0, 0, 0, 0, 0, 0, 0,
8198     0, 0, 0, 0, 0, 0, 0, 0,
8199     0, 0, 0, 0, 0, 0, 0, 0,
8200     0, 0, 0, 0, 0, 0, 0, 0,
8201     0, 0, 0, 0, 0, 0, 0, 0,
8202     0, 0, 0, 0, 0, 0, 0, 0,
8203 };
8204
8205 static const Q_UINT16 li_1E[] = {
8206     0, 0, 0, 0, 0, 0, 0, 0,
8207     0, 0, 0, 0, 0, 0, 0, 0,
8208     0, 0, 0, 0, 0, 0, 0, 0,
8209     0, 0, 0, 0, 0, 0, 0, 0,
8210     0, 0, 0, 0, 0, 0, 0, 0,
8211     0, 0, 0, 0, 0, 0, 0, 0,
8212     0, 0, 0, 0, 0, 0, 1786, 1788,
8213     0, 0, 0, 0, 0, 0, 0, 0,
8214     0, 0, 0, 0, 0, 0, 0, 0,
8215     0, 0, 0, 0, 0, 0, 0, 0,
8216     0, 0, 0, 0, 0, 0, 0, 0,
8217     0, 0, 1790, 1792, 0, 0, 0, 0,
8218     0, 0, 1794, 1796, 0, 0, 0, 0,
8219     0, 0, 0, 0, 0, 0, 0, 0,
8220     0, 0, 0, 0, 0, 0, 0, 0,
8221     0, 0, 0, 0, 0, 0, 0, 0,
8222     0, 0, 0, 0, 0, 0, 0, 0,
8223     0, 0, 0, 0, 0, 0, 0, 0,
8224     0, 0, 0, 0, 0, 0, 0, 0,
8225     0, 0, 0, 0, 0, 0, 0, 0,
8226     1798, 1801, 0, 0, 0, 0, 0, 0,
8227     0, 0, 0, 0, 0, 0, 0, 0,
8228     0, 0, 0, 0, 0, 0, 0, 0,
8229     1804, 1806, 0, 0, 0, 0, 0, 0,
8230     0, 0, 0, 0, 0, 0, 0, 0,
8231     0, 0, 0, 0, 1808, 1810, 0, 0,
8232     0, 0, 0, 0, 0, 0, 0, 0,
8233     0, 0, 0, 0, 0, 0, 0, 0,
8234     0, 0, 0, 0, 0, 0, 0, 0,
8235     0, 0, 0, 0, 0, 0, 0, 0,
8236     0, 0, 0, 0, 0, 0, 0, 0,
8237     0, 0, 0, 0, 0, 0, 0, 0,
8238 };
8239
8240 static const Q_UINT16 li_1F[] = {
8241     1812, 1817, 1822, 1824, 1826, 1828, 1830, 1832,
8242     1834, 1839, 1844, 1846, 1848, 1850, 1852, 1854,
8243     1856, 1859, 0, 0, 0, 0, 0, 0,
8244     1862, 1865, 0, 0, 0, 0, 0, 0,
8245     1868, 1873, 1878, 1880, 1882, 1884, 1886, 1888,
8246     1890, 1895, 1900, 1902, 1904, 1906, 1908, 1910,
8247     1912, 1916, 0, 0, 0, 0, 0, 0,
8248     1920, 1924, 0, 0, 0, 0, 0, 0,
8249     1928, 1931, 0, 0, 0, 0, 0, 0,
8250     1934, 1937, 0, 0, 0, 0, 0, 0,
8251     1940, 1944, 0, 0, 0, 0, 0, 0,
8252     0, 1948, 0, 0, 0, 0, 0, 0,
8253     1952, 1957, 1962, 1964, 1966, 1968, 1970, 1972,
8254     1974, 1979, 1984, 1986, 1988, 1990, 1992, 1994,
8255     1996, 0, 0, 0, 1998, 0, 0, 0,
8256     0, 0, 0, 0, 2000, 0, 0, 0,
8257     0, 0, 0, 0, 0, 0, 0, 0,
8258     0, 0, 0, 0, 0, 0, 0, 0,
8259     0, 0, 0, 0, 0, 0, 0, 0,
8260     0, 0, 0, 0, 0, 0, 0, 0,
8261     0, 0, 0, 0, 0, 0, 0, 0,
8262     0, 0, 0, 0, 0, 0, 0, 0,
8263     0, 0, 0, 0, 0, 0, 2002, 0,
8264     0, 0, 0, 0, 0, 0, 0, 2004,
8265     0, 0, 0, 0, 0, 0, 2008, 0,
8266     0, 0, 0, 0, 0, 0, 0, 0,
8267     0, 0, 0, 0, 0, 0, 0, 0,
8268     0, 0, 0, 0, 0, 0, 0, 0,
8269     0, 0, 0, 0, 0, 0, 0, 0,
8270     0, 0, 0, 0, 0, 0, 0, 0,
8271     0, 0, 0, 0, 0, 0, 2010, 0,
8272     0, 0, 0, 0, 0, 0, 2012, 0,
8273 };
8274
8275 static const Q_UINT16 li_21[] = {
8276     0, 0, 0, 0, 0, 0, 0, 0,
8277     0, 0, 0, 0, 0, 0, 0, 0,
8278     0, 0, 0, 0, 0, 0, 0, 0,
8279     0, 0, 0, 0, 0, 0, 0, 0,
8280     0, 0, 0, 0, 0, 0, 0, 0,
8281     0, 0, 0, 0, 0, 0, 0, 0,
8282     0, 0, 0, 0, 0, 0, 0, 0,
8283     0, 0, 0, 0, 0, 0, 0, 0,
8284     0, 0, 0, 0, 0, 0, 0, 0,
8285     0, 0, 0, 0, 0, 0, 0, 0,
8286     0, 0, 0, 0, 0, 0, 0, 0,
8287     0, 0, 0, 0, 0, 0, 0, 0,
8288     0, 0, 0, 0, 0, 0, 0, 0,
8289     0, 0, 0, 0, 0, 0, 0, 0,
8290     0, 0, 0, 0, 0, 0, 0, 0,
8291     0, 0, 0, 0, 0, 0, 0, 0,
8292     0, 0, 0, 0, 0, 0, 0, 0,
8293     0, 0, 0, 0, 0, 0, 0, 0,
8294     2016, 0, 2018, 0, 2020, 0, 0, 0,
8295     0, 0, 0, 0, 0, 0, 0, 0,
8296     0, 0, 0, 0, 0, 0, 0, 0,
8297     0, 0, 0, 0, 0, 0, 0, 0,
8298     0, 0, 0, 0, 0, 0, 0, 0,
8299     0, 0, 0, 0, 0, 0, 0, 0,
8300     0, 0, 0, 0, 0, 0, 0, 0,
8301     0, 0, 0, 0, 0, 0, 0, 0,
8302     2022, 0, 2024, 0, 2026, 0, 0, 0,
8303     0, 0, 0, 0, 0, 0, 0, 0,
8304     0, 0, 0, 0, 0, 0, 0, 0,
8305     0, 0, 0, 0, 0, 0, 0, 0,
8306     0, 0, 0, 0, 0, 0, 0, 0,
8307     0, 0, 0, 0, 0, 0, 0, 0,
8308 };
8309
8310 static const Q_UINT16 li_22[] = {
8311     0, 0, 0, 2028, 0, 0, 0, 0,
8312     2030, 0, 0, 2032, 0, 0, 0, 0,
8313     0, 0, 0, 0, 0, 0, 0, 0,
8314     0, 0, 0, 0, 0, 0, 0, 0,
8315     0, 0, 0, 2034, 0, 2036, 0, 0,
8316     0, 0, 0, 0, 0, 0, 0, 0,
8317     0, 0, 0, 0, 0, 0, 0, 0,
8318     0, 0, 0, 0, 2038, 0, 0, 0,
8319     0, 0, 0, 2040, 0, 2042, 0, 0,
8320     2044, 0, 0, 0, 0, 2046, 0, 0,
8321     0, 0, 0, 0, 0, 0, 0, 0,
8322     0, 0, 0, 0, 0, 0, 0, 0,
8323     0, 2048, 0, 0, 2050, 2052, 0, 0,
8324     0, 0, 0, 0, 0, 0, 0, 0,
8325     0, 0, 2054, 2056, 0, 0, 2058, 2060,
8326     0, 0, 2062, 2064, 2066, 2068, 0, 0,
8327     0, 0, 2070, 2072, 0, 0, 2074, 2076,
8328     0, 0, 0, 0, 0, 0, 0, 0,
8329     0, 2078, 2080, 0, 0, 0, 0, 0,
8330     0, 0, 0, 0, 0, 0, 0, 0,
8331     0, 0, 2082, 0, 0, 0, 0, 0,
8332     2084, 2086, 0, 2088, 0, 0, 0, 0,
8333     0, 0, 2090, 2092, 2094, 2096, 0, 0,
8334     0, 0, 0, 0, 0, 0, 0, 0,
8335     0, 0, 0, 0, 0, 0, 0, 0,
8336     0, 0, 0, 0, 0, 0, 0, 0,
8337     0, 0, 0, 0, 0, 0, 0, 0,
8338     0, 0, 0, 0, 0, 0, 0, 0,
8339     0, 0, 0, 0, 0, 0, 0, 0,
8340     0, 0, 0, 0, 0, 0, 0, 0,
8341     0, 0, 0, 0, 0, 0, 0, 0,
8342     0, 0, 0, 0, 0, 0, 0, 0,
8343 };
8344
8345 static const Q_UINT16 li_30[] = {
8346     0, 0, 0, 0, 0, 0, 0, 0,
8347     0, 0, 0, 0, 0, 0, 0, 0,
8348     0, 0, 0, 0, 0, 0, 0, 0,
8349     0, 0, 0, 0, 0, 0, 0, 0,
8350     0, 0, 0, 0, 0, 0, 0, 0,
8351     0, 0, 0, 0, 0, 0, 0, 0,
8352     0, 0, 0, 0, 0, 0, 0, 0,
8353     0, 0, 0, 0, 0, 0, 0, 0,
8354     0, 0, 0, 0, 0, 0, 2098, 0,
8355     0, 0, 0, 2100, 0, 2102, 0, 2104,
8356     0, 2106, 0, 2108, 0, 2110, 0, 2112,
8357     0, 2114, 0, 2116, 0, 2118, 0, 2120,
8358     0, 2122, 0, 0, 2124, 0, 2126, 0,
8359     2128, 0, 0, 0, 0, 0, 0, 2130,
8360     0, 0, 2133, 0, 0, 2136, 0, 0,
8361     2139, 0, 0, 2142, 0, 0, 0, 0,
8362     0, 0, 0, 0, 0, 0, 0, 0,
8363     0, 0, 0, 0, 0, 0, 0, 0,
8364     0, 0, 0, 0, 0, 0, 0, 0,
8365     0, 0, 0, 0, 0, 2145, 0, 0,
8366     0, 0, 0, 0, 0, 0, 2147, 0,
8367     0, 0, 0, 2149, 0, 2151, 0, 2153,
8368     0, 2155, 0, 2157, 0, 2159, 0, 2161,
8369     0, 2163, 0, 2165, 0, 2167, 0, 2169,
8370     0, 2171, 0, 0, 2173, 0, 2175, 0,
8371     2177, 0, 0, 0, 0, 0, 0, 2179,
8372     0, 0, 2182, 0, 0, 2185, 0, 0,
8373     2188, 0, 0, 2191, 0, 0, 0, 0,
8374     0, 0, 0, 0, 0, 0, 0, 0,
8375     0, 0, 0, 0, 0, 0, 0, 2194,
8376     2196, 2198, 2200, 0, 0, 0, 0, 0,
8377     0, 0, 0, 0, 0, 2202, 0, 0,
8378 };
8379
8380 static const Q_UINT16 li_FB[] = {
8381     0, 0, 0, 0, 0, 0, 0, 0,
8382     0, 0, 0, 0, 0, 0, 0, 0,
8383     0, 0, 0, 0, 0, 0, 0, 0,
8384     0, 0, 0, 0, 0, 0, 0, 0,
8385     0, 0, 0, 0, 0, 0, 0, 0,
8386     0, 0, 0, 0, 0, 0, 0, 0,
8387     0, 0, 0, 0, 0, 0, 0, 0,
8388     0, 0, 0, 0, 0, 0, 0, 0,
8389     0, 0, 0, 0, 0, 0, 0, 0,
8390     0, 2204, 0, 0, 0, 0, 0, 0,
8391     0, 0, 0, 0, 0, 0, 0, 0,
8392     0, 0, 0, 0, 0, 0, 0, 0,
8393     0, 0, 0, 0, 0, 0, 0, 0,
8394     0, 0, 0, 0, 0, 0, 0, 0,
8395     0, 0, 0, 0, 0, 0, 0, 0,
8396     0, 0, 0, 0, 0, 0, 0, 0,
8397     0, 0, 0, 0, 0, 0, 0, 0,
8398     0, 0, 0, 0, 0, 0, 0, 0,
8399     0, 0, 0, 0, 0, 0, 0, 0,
8400     0, 0, 0, 0, 0, 0, 0, 0,
8401     0, 0, 0, 0, 0, 0, 0, 0,
8402     0, 0, 0, 0, 0, 0, 0, 0,
8403     0, 0, 0, 0, 0, 0, 0, 0,
8404     0, 0, 0, 0, 0, 0, 0, 0,
8405     0, 0, 0, 0, 0, 0, 0, 0,
8406     0, 0, 0, 0, 0, 0, 0, 0,
8407     0, 0, 0, 0, 0, 0, 0, 0,
8408     0, 0, 0, 0, 0, 0, 0, 0,
8409     0, 0, 0, 0, 0, 0, 0, 0,
8410     0, 0, 0, 0, 0, 0, 0, 0,
8411     0, 0, 0, 0, 0, 0, 0, 0,
8412     0, 0, 0, 0, 0, 0, 0, 0,
8413 };
8414
8415 static const Q_UINT16 * const ligature_info[256] = {
8416     li_00, li_01, li_02, li_03, li_04, li_05, li_06, li_07,
8417     li_07, li_09, li_0A, li_0B, li_0C, li_0D, li_07, li_0F,
8418     li_10, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8419     li_07, li_07, li_07, li_07, li_07, li_07, li_1E, li_1F,
8420     li_07, li_21, li_22, li_07, li_07, li_07, li_07, li_07,
8421     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8422     li_30, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8423     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8424     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8425     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8426     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8427     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8428     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8429     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8430     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8431     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8432     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8433     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8434     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8435     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8436     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8437     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8438     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8439     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8440     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8441     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8442     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8443     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8444     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8445     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8446     li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8447     li_07, li_07, li_07, li_FB, li_07, li_07, li_07, li_07,
8448 };
8449 // 16188 bytes
8450
8451 static const Q_UINT8 dir_00[] = {
8452     18, 18, 18, 18, 18, 18, 18, 18,
8453     18, 8, 7, 8, 9, 7, 18, 18,
8454     18, 18, 18, 18, 18, 18, 18, 18,
8455     18, 18, 18, 18, 7, 7, 7, 8,
8456     9, 10, 10, 4, 4, 4, 10, 10,
8457     138, 138, 10, 4, 6, 4, 6, 3,
8458     2, 2, 2, 2, 2, 2, 2, 2,
8459     2, 2, 6, 10, 138, 10, 138, 10,
8460     10, 0, 0, 0, 0, 0, 0, 0,
8461     0, 0, 0, 0, 0, 0, 0, 0,
8462     0, 0, 0, 0, 0, 0, 0, 0,
8463     0, 0, 0, 138, 10, 138, 10, 10,
8464     10, 0, 0, 0, 0, 0, 0, 0,
8465     0, 0, 0, 0, 0, 0, 0, 0,
8466     0, 0, 0, 0, 0, 0, 0, 0,
8467     0, 0, 0, 138, 10, 138, 10, 18,
8468     18, 18, 18, 18, 18, 7, 18, 18,
8469     18, 18, 18, 18, 18, 18, 18, 18,
8470     18, 18, 18, 18, 18, 18, 18, 18,
8471     18, 18, 18, 18, 18, 18, 18, 18,
8472     6, 10, 4, 4, 4, 4, 10, 10,
8473     10, 10, 0, 138, 10, 10, 10, 10,
8474     4, 4, 2, 2, 10, 0, 10, 10,
8475     10, 2, 0, 138, 10, 10, 10, 10,
8476     0, 0, 0, 0, 0, 0, 0, 0,
8477     0, 0, 0, 0, 0, 0, 0, 0,
8478     0, 0, 0, 0, 0, 0, 0, 10,
8479     0, 0, 0, 0, 0, 0, 0, 0,
8480     0, 0, 0, 0, 0, 0, 0, 0,
8481     0, 0, 0, 0, 0, 0, 0, 0,
8482     0, 0, 0, 0, 0, 0, 0, 10,
8483     0, 0, 0, 0, 0, 0, 0, 0,
8484 };
8485
8486 static const Q_UINT8 dir_01[] = {
8487     0, 0, 0, 0, 0, 0, 0, 0,
8488     0, 0, 0, 0, 0, 0, 0, 0,
8489     0, 0, 0, 0, 0, 0, 0, 0,
8490     0, 0, 0, 0, 0, 0, 0, 0,
8491     0, 0, 0, 0, 0, 0, 0, 0,
8492     0, 0, 0, 0, 0, 0, 0, 0,
8493     0, 0, 0, 0, 0, 0, 0, 0,
8494     0, 0, 0, 0, 0, 0, 0, 0,
8495     0, 0, 0, 0, 0, 0, 0, 0,
8496     0, 0, 0, 0, 0, 0, 0, 0,
8497     0, 0, 0, 0, 0, 0, 0, 0,
8498     0, 0, 0, 0, 0, 0, 0, 0,
8499     0, 0, 0, 0, 0, 0, 0, 0,
8500     0, 0, 0, 0, 0, 0, 0, 0,
8501     0, 0, 0, 0, 0, 0, 0, 0,
8502     0, 0, 0, 0, 0, 0, 0, 0,
8503     0, 0, 0, 0, 0, 0, 0, 0,
8504     0, 0, 0, 0, 0, 0, 0, 0,
8505     0, 0, 0, 0, 0, 0, 0, 0,
8506     0, 0, 0, 0, 0, 0, 0, 0,
8507     0, 0, 0, 0, 0, 0, 0, 0,
8508     0, 0, 0, 0, 0, 0, 0, 0,
8509     0, 0, 0, 0, 0, 0, 0, 0,
8510     0, 0, 0, 0, 0, 0, 0, 0,
8511     0, 0, 0, 0, 0, 0, 0, 0,
8512     0, 0, 0, 0, 0, 0, 0, 0,
8513     0, 0, 0, 0, 0, 0, 0, 0,
8514     0, 0, 0, 0, 0, 0, 0, 0,
8515     0, 0, 0, 0, 0, 0, 0, 0,
8516     0, 0, 0, 0, 0, 0, 0, 0,
8517     0, 0, 0, 0, 0, 0, 0, 0,
8518     0, 0, 0, 0, 0, 0, 0, 0,
8519 };
8520
8521 static const Q_UINT8 dir_02[] = {
8522     0, 0, 0, 0, 0, 0, 0, 0,
8523     0, 0, 0, 0, 0, 0, 0, 0,
8524     0, 0, 0, 0, 0, 0, 0, 0,
8525     0, 0, 0, 0, 0, 0, 0, 0,
8526     0, 0, 0, 0, 0, 0, 0, 0,
8527     0, 0, 0, 0, 0, 0, 0, 0,
8528     0, 0, 0, 0, 0, 0, 0, 0,
8529     0, 0, 0, 0, 0, 0, 0, 0,
8530     0, 0, 0, 0, 0, 0, 0, 0,
8531     0, 0, 0, 0, 0, 0, 0, 0,
8532     0, 0, 0, 0, 0, 0, 0, 0,
8533     0, 0, 0, 0, 0, 0, 0, 0,
8534     0, 0, 0, 0, 0, 0, 0, 0,
8535     0, 0, 0, 0, 0, 0, 0, 0,
8536     0, 0, 0, 0, 0, 0, 0, 0,
8537     0, 0, 0, 0, 0, 0, 0, 0,
8538     0, 0, 0, 0, 0, 0, 0, 0,
8539     0, 0, 0, 0, 0, 0, 0, 0,
8540     0, 0, 0, 0, 0, 0, 0, 0,
8541     0, 0, 0, 0, 0, 0, 0, 0,
8542     0, 0, 0, 0, 0, 0, 0, 0,
8543     0, 0, 0, 0, 0, 0, 0, 0,
8544     0, 0, 0, 0, 0, 0, 0, 0,
8545     0, 10, 10, 0, 0, 0, 0, 0,
8546     0, 0, 10, 10, 10, 10, 10, 10,
8547     10, 10, 10, 10, 10, 10, 10, 10,
8548     0, 0, 10, 10, 10, 10, 10, 10,
8549     10, 10, 10, 10, 10, 10, 10, 10,
8550     0, 0, 0, 0, 0, 10, 10, 10,
8551     10, 10, 10, 10, 10, 10, 0, 0,
8552     0, 0, 0, 0, 0, 0, 0, 0,
8553     0, 0, 0, 0, 0, 0, 0, 0,
8554 };
8555
8556 static const Q_UINT8 dir_03[] = {
8557     17, 17, 17, 17, 17, 17, 17, 17,
8558     17, 17, 17, 17, 17, 17, 17, 17,
8559     17, 17, 17, 17, 17, 17, 17, 17,
8560     17, 17, 17, 17, 17, 17, 17, 17,
8561     17, 17, 17, 17, 17, 17, 17, 17,
8562     17, 17, 17, 17, 17, 17, 17, 17,
8563     17, 17, 17, 17, 17, 17, 17, 17,
8564     17, 17, 17, 17, 17, 17, 17, 17,
8565     17, 17, 17, 17, 17, 17, 17, 17,
8566     17, 17, 17, 17, 17, 17, 17, 0,
8567     0, 0, 0, 0, 0, 0, 0, 0,
8568     0, 0, 0, 0, 0, 0, 0, 0,
8569     17, 17, 17, 0, 0, 0, 0, 0,
8570     0, 0, 0, 0, 0, 0, 0, 0,
8571     0, 0, 0, 0, 10, 10, 0, 0,
8572     0, 0, 0, 0, 0, 0, 10, 0,
8573     0, 0, 0, 0, 10, 10, 0, 10,
8574     0, 0, 0, 0, 0, 0, 0, 0,
8575     0, 0, 0, 0, 0, 0, 0, 0,
8576     0, 0, 0, 0, 0, 0, 0, 0,
8577     0, 0, 0, 0, 0, 0, 0, 0,
8578     0, 0, 0, 0, 0, 0, 0, 0,
8579     0, 0, 0, 0, 0, 0, 0, 0,
8580     0, 0, 0, 0, 0, 0, 0, 0,
8581     0, 0, 0, 0, 0, 0, 0, 0,
8582     0, 0, 0, 0, 0, 0, 0, 0,
8583     0, 0, 0, 0, 0, 0, 0, 0,
8584     0, 0, 0, 0, 0, 0, 0, 0,
8585     0, 0, 0, 0, 0, 0, 0, 0,
8586     0, 0, 0, 0, 0, 0, 0, 0,
8587     0, 0, 0, 0, 0, 0, 0, 0,
8588     0, 0, 0, 0, 0, 0, 0, 0,
8589 };
8590
8591 static const Q_UINT8 dir_04[] = {
8592     0, 0, 0, 0, 0, 0, 0, 0,
8593     0, 0, 0, 0, 0, 0, 0, 0,
8594     0, 0, 0, 0, 0, 0, 0, 0,
8595     0, 0, 0, 0, 0, 0, 0, 0,
8596     0, 0, 0, 0, 0, 0, 0, 0,
8597     0, 0, 0, 0, 0, 0, 0, 0,
8598     0, 0, 0, 0, 0, 0, 0, 0,
8599     0, 0, 0, 0, 0, 0, 0, 0,
8600     0, 0, 0, 0, 0, 0, 0, 0,
8601     0, 0, 0, 0, 0, 0, 0, 0,
8602     0, 0, 0, 0, 0, 0, 0, 0,
8603     0, 0, 0, 0, 0, 0, 0, 0,
8604     0, 0, 0, 0, 0, 0, 0, 0,
8605     0, 0, 0, 0, 0, 0, 0, 0,
8606     0, 0, 0, 0, 0, 0, 0, 0,
8607     0, 0, 0, 0, 0, 0, 0, 0,
8608     0, 0, 0, 17, 17, 17, 17, 0,
8609     17, 17, 0, 0, 0, 0, 0, 0,
8610     0, 0, 0, 0, 0, 0, 0, 0,
8611     0, 0, 0, 0, 0, 0, 0, 0,
8612     0, 0, 0, 0, 0, 0, 0, 0,
8613     0, 0, 0, 0, 0, 0, 0, 0,
8614     0, 0, 0, 0, 0, 0, 0, 0,
8615     0, 0, 0, 0, 0, 0, 0, 0,
8616     0, 0, 0, 0, 0, 0, 0, 0,
8617     0, 0, 0, 0, 0, 0, 0, 0,
8618     0, 0, 0, 0, 0, 0, 0, 0,
8619     0, 0, 0, 0, 0, 0, 0, 0,
8620     0, 0, 0, 0, 0, 0, 0, 0,
8621     0, 0, 0, 0, 0, 0, 0, 0,
8622     0, 0, 0, 0, 0, 0, 0, 0,
8623     0, 0, 0, 0, 0, 0, 0, 0,
8624 };
8625
8626 static const Q_UINT8 dir_05[] = {
8627     0, 0, 0, 0, 0, 0, 0, 0,
8628     0, 0, 0, 0, 0, 0, 0, 0,
8629     0, 0, 0, 0, 0, 0, 0, 0,
8630     0, 0, 0, 0, 0, 0, 0, 0,
8631     0, 0, 0, 0, 0, 0, 0, 0,
8632     0, 0, 0, 0, 0, 0, 0, 0,
8633     0, 0, 0, 0, 0, 0, 0, 0,
8634     0, 0, 0, 0, 0, 0, 0, 0,
8635     0, 0, 0, 0, 0, 0, 0, 0,
8636     0, 0, 0, 0, 0, 0, 0, 0,
8637     0, 0, 0, 0, 0, 0, 0, 0,
8638     0, 0, 0, 0, 0, 0, 0, 0,
8639     0, 0, 0, 0, 0, 0, 0, 0,
8640     0, 0, 0, 0, 0, 0, 0, 0,
8641     0, 0, 0, 0, 0, 0, 0, 0,
8642     0, 0, 0, 0, 0, 0, 0, 0,
8643     0, 0, 0, 0, 0, 0, 0, 0,
8644     0, 0, 10, 0, 0, 0, 0, 0,
8645     0, 17, 17, 17, 17, 17, 17, 17,
8646     17, 17, 17, 17, 17, 17, 17, 17,
8647     17, 17, 0, 17, 17, 17, 17, 17,
8648     17, 17, 17, 17, 17, 17, 17, 17,
8649     17, 17, 17, 17, 17, 17, 17, 17,
8650     17, 17, 0, 17, 17, 17, 1, 17,
8651     1, 17, 17, 1, 17, 0, 0, 0,
8652     0, 0, 0, 0, 0, 0, 0, 0,
8653     1, 1, 1, 1, 1, 1, 1, 1,
8654     1, 1, 1, 1, 1, 1, 1, 1,
8655     1, 1, 1, 1, 1, 1, 1, 1,
8656     1, 1, 1, 0, 0, 0, 0, 0,
8657     1, 1, 1, 1, 1, 0, 0, 0,
8658     0, 0, 0, 0, 0, 0, 0, 0,
8659 };
8660
8661 static const Q_UINT8 dir_06[] = {
8662     0, 0, 0, 0, 0, 0, 0, 0,
8663     0, 0, 0, 0, 6, 0, 0, 0,
8664     0, 0, 0, 0, 0, 0, 0, 0,
8665     0, 0, 0, 13, 0, 0, 0, 13,
8666     0, 13, 77, 77, 77, 77, 45, 77,
8667     45, 77, 45, 45, 45, 45, 45, 77,
8668     77, 77, 77, 45, 45, 45, 45, 45,
8669     45, 45, 45, 0, 0, 0, 0, 0,
8670     109, 45, 45, 45, 45, 45, 45, 45,
8671     77, 77, 45, 17, 17, 17, 17, 17,
8672     17, 17, 17, 17, 17, 17, 0, 0,
8673     0, 0, 0, 0, 0, 0, 0, 0,
8674     5, 5, 5, 5, 5, 5, 5, 5,
8675     5, 5, 4, 5, 5, 13, 0, 0,
8676     17, 13, 77, 77, 13, 77, 77, 77,
8677     45, 45, 45, 45, 45, 45, 45, 45,
8678     45, 45, 45, 45, 45, 45, 45, 45,
8679     77, 77, 77, 77, 77, 77, 77, 77,
8680     77, 77, 77, 77, 77, 77, 77, 77,
8681     77, 77, 45, 45, 45, 45, 45, 45,
8682     45, 45, 45, 45, 45, 45, 45, 45,
8683     45, 45, 45, 45, 45, 45, 45, 45,
8684     45, 45, 45, 45, 45, 45, 45, 45,
8685     45, 45, 45, 45, 45, 45, 45, 45,
8686     77, 45, 77, 77, 77, 77, 77, 77,
8687     77, 77, 77, 77, 45, 77, 45, 77,
8688     45, 45, 77, 77, 13, 13, 17, 17,
8689     17, 17, 17, 17, 17, 17, 17, 17,
8690     17, 17, 17, 17, 17, 13, 13, 17,
8691     17, 10, 17, 17, 17, 17, 0, 0,
8692     2, 2, 2, 2, 2, 2, 2, 2,
8693     2, 2, 45, 45, 45, 13, 13, 0,
8694 };
8695
8696 static const Q_UINT8 dir_07[] = {
8697     13, 13, 13, 13, 13, 13, 13, 13,
8698     13, 13, 13, 13, 13, 13, 0, 18,
8699     77, 17, 45, 45, 45, 77, 77, 77,
8700     77, 77, 45, 45, 45, 45, 77, 45,
8701     45, 45, 45, 45, 45, 45, 45, 45,
8702     77, 45, 77, 45, 77, 0, 0, 0,
8703     17, 17, 17, 17, 17, 17, 17, 17,
8704     17, 17, 17, 17, 17, 17, 17, 17,
8705     17, 17, 17, 17, 17, 17, 17, 17,
8706     17, 17, 17, 0, 0, 0, 0, 0,
8707     0, 0, 0, 0, 0, 0, 0, 0,
8708     0, 0, 0, 0, 0, 0, 0, 0,
8709     0, 0, 0, 0, 0, 0, 0, 0,
8710     0, 0, 0, 0, 0, 0, 0, 0,
8711     0, 0, 0, 0, 0, 0, 0, 0,
8712     0, 0, 0, 0, 0, 0, 0, 0,
8713     13, 13, 13, 13, 13, 13, 13, 13,
8714     13, 13, 13, 13, 13, 13, 13, 13,
8715     13, 13, 13, 13, 13, 13, 13, 13,
8716     13, 13, 13, 13, 13, 13, 13, 13,
8717     13, 13, 13, 13, 13, 13, 17, 17,
8718     17, 17, 17, 17, 17, 17, 17, 17,
8719     17, 0, 0, 0, 0, 0, 0, 0,
8720     0, 0, 0, 0, 0, 0, 0, 0,
8721     0, 0, 0, 0, 0, 0, 0, 0,
8722     0, 0, 0, 0, 0, 0, 0, 0,
8723     0, 0, 0, 0, 0, 0, 0, 0,
8724     0, 0, 0, 0, 0, 0, 0, 0,
8725     0, 0, 0, 0, 0, 0, 0, 0,
8726     0, 0, 0, 0, 0, 0, 0, 0,
8727     0, 0, 0, 0, 0, 0, 0, 0,
8728     0, 0, 0, 0, 0, 0, 0, 0,
8729 };
8730
8731 static const Q_UINT8 dir_09[] = {
8732     0, 17, 17, 0, 0, 0, 0, 0,
8733     0, 0, 0, 0, 0, 0, 0, 0,
8734     0, 0, 0, 0, 0, 0, 0, 0,
8735     0, 0, 0, 0, 0, 0, 0, 0,
8736     0, 0, 0, 0, 0, 0, 0, 0,
8737     0, 0, 0, 0, 0, 0, 0, 0,
8738     0, 0, 0, 0, 0, 0, 0, 0,
8739     0, 0, 0, 0, 17, 0, 0, 0,
8740     0, 17, 17, 17, 17, 17, 17, 17,
8741     17, 0, 0, 0, 0, 17, 0, 0,
8742     0, 17, 17, 17, 17, 0, 0, 0,
8743     0, 0, 0, 0, 0, 0, 0, 0,
8744     0, 0, 17, 17, 0, 0, 0, 0,
8745     0, 0, 0, 0, 0, 0, 0, 0,
8746     0, 0, 0, 0, 0, 0, 0, 0,
8747     0, 0, 0, 0, 0, 0, 0, 0,
8748     0, 17, 0, 0, 0, 0, 0, 0,
8749     0, 0, 0, 0, 0, 0, 0, 0,
8750     0, 0, 0, 0, 0, 0, 0, 0,
8751     0, 0, 0, 0, 0, 0, 0, 0,
8752     0, 0, 0, 0, 0, 0, 0, 0,
8753     0, 0, 0, 0, 0, 0, 0, 0,
8754     0, 0, 0, 0, 0, 0, 0, 0,
8755     0, 0, 0, 0, 17, 0, 0, 0,
8756     0, 17, 17, 17, 17, 0, 0, 0,
8757     0, 0, 0, 0, 0, 17, 0, 0,
8758     0, 0, 0, 0, 0, 0, 0, 0,
8759     0, 0, 0, 0, 0, 0, 0, 0,
8760     0, 0, 17, 17, 0, 0, 0, 0,
8761     0, 0, 0, 0, 0, 0, 0, 0,
8762     0, 0, 4, 4, 0, 0, 0, 0,
8763     0, 0, 0, 0, 0, 0, 0, 0,
8764 };
8765
8766 static const Q_UINT8 dir_0A[] = {
8767     0, 0, 17, 0, 0, 0, 0, 0,
8768     0, 0, 0, 0, 0, 0, 0, 0,
8769     0, 0, 0, 0, 0, 0, 0, 0,
8770     0, 0, 0, 0, 0, 0, 0, 0,
8771     0, 0, 0, 0, 0, 0, 0, 0,
8772     0, 0, 0, 0, 0, 0, 0, 0,
8773     0, 0, 0, 0, 0, 0, 0, 0,
8774     0, 0, 0, 0, 17, 0, 0, 0,
8775     0, 17, 17, 0, 0, 0, 0, 17,
8776     17, 0, 0, 17, 17, 17, 0, 0,
8777     0, 0, 0, 0, 0, 0, 0, 0,
8778     0, 0, 0, 0, 0, 0, 0, 0,
8779     0, 0, 0, 0, 0, 0, 0, 0,
8780     0, 0, 0, 0, 0, 0, 0, 0,
8781     17, 17, 0, 0, 0, 0, 0, 0,
8782     0, 0, 0, 0, 0, 0, 0, 0,
8783     0, 17, 17, 0, 0, 0, 0, 0,
8784     0, 0, 0, 0, 0, 0, 0, 0,
8785     0, 0, 0, 0, 0, 0, 0, 0,
8786     0, 0, 0, 0, 0, 0, 0, 0,
8787     0, 0, 0, 0, 0, 0, 0, 0,
8788     0, 0, 0, 0, 0, 0, 0, 0,
8789     0, 0, 0, 0, 0, 0, 0, 0,
8790     0, 0, 0, 0, 17, 0, 0, 0,
8791     0, 17, 17, 17, 17, 17, 0, 17,
8792     17, 0, 0, 0, 0, 17, 0, 0,
8793     0, 0, 0, 0, 0, 0, 0, 0,
8794     0, 0, 0, 0, 0, 0, 0, 0,
8795     0, 0, 0, 0, 0, 0, 0, 0,
8796     0, 0, 0, 0, 0, 0, 0, 0,
8797     0, 0, 0, 0, 0, 0, 0, 0,
8798     0, 0, 0, 0, 0, 0, 0, 0,
8799 };
8800
8801 static const Q_UINT8 dir_0B[] = {
8802     0, 17, 0, 0, 0, 0, 0, 0,
8803     0, 0, 0, 0, 0, 0, 0, 0,
8804     0, 0, 0, 0, 0, 0, 0, 0,
8805     0, 0, 0, 0, 0, 0, 0, 0,
8806     0, 0, 0, 0, 0, 0, 0, 0,
8807     0, 0, 0, 0, 0, 0, 0, 0,
8808     0, 0, 0, 0, 0, 0, 0, 0,
8809     0, 0, 0, 0, 17, 0, 0, 17,
8810     0, 17, 17, 17, 0, 0, 0, 0,
8811     0, 0, 0, 0, 0, 17, 0, 0,
8812     0, 0, 0, 0, 0, 0, 17, 0,
8813     0, 0, 0, 0, 0, 0, 0, 0,
8814     0, 0, 0, 0, 0, 0, 0, 0,
8815     0, 0, 0, 0, 0, 0, 0, 0,
8816     0, 0, 0, 0, 0, 0, 0, 0,
8817     0, 0, 0, 0, 0, 0, 0, 0,
8818     0, 0, 17, 0, 0, 0, 0, 0,
8819     0, 0, 0, 0, 0, 0, 0, 0,
8820     0, 0, 0, 0, 0, 0, 0, 0,
8821     0, 0, 0, 0, 0, 0, 0, 0,
8822     0, 0, 0, 0, 0, 0, 0, 0,
8823     0, 0, 0, 0, 0, 0, 0, 0,
8824     0, 0, 0, 0, 0, 0, 0, 0,
8825     0, 0, 0, 0, 0, 0, 0, 0,
8826     17, 0, 0, 0, 0, 0, 0, 0,
8827     0, 0, 0, 0, 0, 17, 0, 0,
8828     0, 0, 0, 0, 0, 0, 0, 0,
8829     0, 0, 0, 0, 0, 0, 0, 0,
8830     0, 0, 0, 0, 0, 0, 0, 0,
8831     0, 0, 0, 0, 0, 0, 0, 0,
8832     0, 0, 0, 0, 0, 0, 0, 0,
8833     0, 0, 0, 0, 0, 0, 0, 0,
8834 };
8835
8836 static const Q_UINT8 dir_0C[] = {
8837     0, 0, 0, 0, 0, 0, 0, 0,
8838     0, 0, 0, 0, 0, 0, 0, 0,
8839     0, 0, 0, 0, 0, 0, 0, 0,
8840     0, 0, 0, 0, 0, 0, 0, 0,
8841     0, 0, 0, 0, 0, 0, 0, 0,
8842     0, 0, 0, 0, 0, 0, 0, 0,
8843     0, 0, 0, 0, 0, 0, 0, 0,
8844     0, 0, 0, 0, 0, 0, 17, 17,
8845     17, 0, 0, 0, 0, 0, 17, 17,
8846     17, 0, 17, 17, 17, 17, 0, 0,
8847     0, 0, 0, 0, 0, 17, 17, 0,
8848     0, 0, 0, 0, 0, 0, 0, 0,
8849     0, 0, 0, 0, 0, 0, 0, 0,
8850     0, 0, 0, 0, 0, 0, 0, 0,
8851     0, 0, 0, 0, 0, 0, 0, 0,
8852     0, 0, 0, 0, 0, 0, 0, 0,
8853     0, 0, 0, 0, 0, 0, 0, 0,
8854     0, 0, 0, 0, 0, 0, 0, 0,
8855     0, 0, 0, 0, 0, 0, 0, 0,
8856     0, 0, 0, 0, 0, 0, 0, 0,
8857     0, 0, 0, 0, 0, 0, 0, 0,
8858     0, 0, 0, 0, 0, 0, 0, 0,
8859     0, 0, 0, 0, 0, 0, 0, 0,
8860     0, 0, 0, 0, 0, 0, 0, 17,
8861     0, 0, 0, 0, 0, 0, 17, 0,
8862     0, 0, 0, 0, 17, 17, 0, 0,
8863     0, 0, 0, 0, 0, 0, 0, 0,
8864     0, 0, 0, 0, 0, 0, 0, 0,
8865     0, 0, 0, 0, 0, 0, 0, 0,
8866     0, 0, 0, 0, 0, 0, 0, 0,
8867     0, 0, 0, 0, 0, 0, 0, 0,
8868     0, 0, 0, 0, 0, 0, 0, 0,
8869 };
8870
8871 static const Q_UINT8 dir_0D[] = {
8872     0, 0, 0, 0, 0, 0, 0, 0,
8873     0, 0, 0, 0, 0, 0, 0, 0,
8874     0, 0, 0, 0, 0, 0, 0, 0,
8875     0, 0, 0, 0, 0, 0, 0, 0,
8876     0, 0, 0, 0, 0, 0, 0, 0,
8877     0, 0, 0, 0, 0, 0, 0, 0,
8878     0, 0, 0, 0, 0, 0, 0, 0,
8879     0, 0, 0, 0, 0, 0, 0, 0,
8880     0, 17, 17, 17, 0, 0, 0, 0,
8881     0, 0, 0, 0, 0, 17, 0, 0,
8882     0, 0, 0, 0, 0, 0, 0, 0,
8883     0, 0, 0, 0, 0, 0, 0, 0,
8884     0, 0, 0, 0, 0, 0, 0, 0,
8885     0, 0, 0, 0, 0, 0, 0, 0,
8886     0, 0, 0, 0, 0, 0, 0, 0,
8887     0, 0, 0, 0, 0, 0, 0, 0,
8888     0, 0, 0, 0, 0, 0, 0, 0,
8889     0, 0, 0, 0, 0, 0, 0, 0,
8890     0, 0, 0, 0, 0, 0, 0, 0,
8891     0, 0, 0, 0, 0, 0, 0, 0,
8892     0, 0, 0, 0, 0, 0, 0, 0,
8893     0, 0, 0, 0, 0, 0, 0, 0,
8894     0, 0, 0, 0, 0, 0, 0, 0,
8895     0, 0, 0, 0, 0, 0, 0, 0,
8896     0, 0, 0, 0, 0, 0, 0, 0,
8897     0, 0, 17, 0, 0, 0, 0, 0,
8898     0, 0, 17, 17, 17, 0, 17, 0,
8899     0, 0, 0, 0, 0, 0, 0, 0,
8900     0, 0, 0, 0, 0, 0, 0, 0,
8901     0, 0, 0, 0, 0, 0, 0, 0,
8902     0, 0, 0, 0, 0, 0, 0, 0,
8903     0, 0, 0, 0, 0, 0, 0, 0,
8904 };
8905
8906 static const Q_UINT8 dir_0E[] = {
8907     0, 0, 0, 0, 0, 0, 0, 0,
8908     0, 0, 0, 0, 0, 0, 0, 0,
8909     0, 0, 0, 0, 0, 0, 0, 0,
8910     0, 0, 0, 0, 0, 0, 0, 0,
8911     0, 0, 0, 0, 0, 0, 0, 0,
8912     0, 0, 0, 0, 0, 0, 0, 0,
8913     0, 17, 0, 0, 17, 17, 17, 17,
8914     17, 17, 17, 0, 0, 0, 0, 4,
8915     0, 0, 0, 0, 0, 0, 0, 17,
8916     17, 17, 17, 17, 17, 17, 17, 0,
8917     0, 0, 0, 0, 0, 0, 0, 0,
8918     0, 0, 0, 0, 0, 0, 0, 0,
8919     0, 0, 0, 0, 0, 0, 0, 0,
8920     0, 0, 0, 0, 0, 0, 0, 0,
8921     0, 0, 0, 0, 0, 0, 0, 0,
8922     0, 0, 0, 0, 0, 0, 0, 0,
8923     0, 0, 0, 0, 0, 0, 0, 0,
8924     0, 0, 0, 0, 0, 0, 0, 0,
8925     0, 0, 0, 0, 0, 0, 0, 0,
8926     0, 0, 0, 0, 0, 0, 0, 0,
8927     0, 0, 0, 0, 0, 0, 0, 0,
8928     0, 0, 0, 0, 0, 0, 0, 0,
8929     0, 17, 0, 0, 17, 17, 17, 17,
8930     17, 17, 0, 17, 17, 0, 0, 0,
8931     0, 0, 0, 0, 0, 0, 0, 0,
8932     17, 17, 17, 17, 17, 17, 0, 0,
8933     0, 0, 0, 0, 0, 0, 0, 0,
8934     0, 0, 0, 0, 0, 0, 0, 0,
8935     0, 0, 0, 0, 0, 0, 0, 0,
8936     0, 0, 0, 0, 0, 0, 0, 0,
8937     0, 0, 0, 0, 0, 0, 0, 0,
8938     0, 0, 0, 0, 0, 0, 0, 0,
8939 };
8940
8941 static const Q_UINT8 dir_0F[] = {
8942     0, 0, 0, 0, 0, 0, 0, 0,
8943     0, 0, 0, 0, 0, 0, 0, 0,
8944     0, 0, 0, 0, 0, 0, 0, 0,
8945     17, 17, 0, 0, 0, 0, 0, 0,
8946     0, 0, 0, 0, 0, 0, 0, 0,
8947     0, 0, 0, 0, 0, 0, 0, 0,
8948     0, 0, 0, 0, 0, 17, 0, 17,
8949     0, 17, 10, 10, 10, 10, 0, 0,
8950     0, 0, 0, 0, 0, 0, 0, 0,
8951     0, 0, 0, 0, 0, 0, 0, 0,
8952     0, 0, 0, 0, 0, 0, 0, 0,
8953     0, 0, 0, 0, 0, 0, 0, 0,
8954     0, 0, 0, 0, 0, 0, 0, 0,
8955     0, 0, 0, 0, 0, 0, 0, 0,
8956     0, 17, 17, 17, 17, 17, 17, 17,
8957     17, 17, 17, 17, 17, 17, 17, 0,
8958     17, 17, 17, 17, 17, 0, 17, 17,
8959     0, 0, 0, 0, 0, 0, 0, 0,
8960     17, 17, 17, 17, 17, 17, 17, 17,
8961     0, 17, 17, 17, 17, 17, 17, 17,
8962     17, 17, 17, 17, 17, 17, 17, 17,
8963     17, 17, 17, 17, 17, 17, 17, 17,
8964     17, 17, 17, 17, 17, 17, 17, 17,
8965     17, 17, 17, 17, 17, 0, 0, 0,
8966     0, 0, 0, 0, 0, 0, 17, 0,
8967     0, 0, 0, 0, 0, 0, 0, 0,
8968     0, 0, 0, 0, 0, 0, 0, 0,
8969     0, 0, 0, 0, 0, 0, 0, 0,
8970     0, 0, 0, 0, 0, 0, 0, 0,
8971     0, 0, 0, 0, 0, 0, 0, 0,
8972     0, 0, 0, 0, 0, 0, 0, 0,
8973     0, 0, 0, 0, 0, 0, 0, 0,
8974 };
8975
8976 static const Q_UINT8 dir_10[] = {
8977     0, 0, 0, 0, 0, 0, 0, 0,
8978     0, 0, 0, 0, 0, 0, 0, 0,
8979     0, 0, 0, 0, 0, 0, 0, 0,
8980     0, 0, 0, 0, 0, 0, 0, 0,
8981     0, 0, 0, 0, 0, 0, 0, 0,
8982     0, 0, 0, 0, 0, 17, 17, 17,
8983     17, 0, 17, 0, 0, 0, 17, 17,
8984     0, 17, 0, 0, 0, 0, 0, 0,
8985     0, 0, 0, 0, 0, 0, 0, 0,
8986     0, 0, 0, 0, 0, 0, 0, 0,
8987     0, 0, 0, 0, 0, 0, 0, 0,
8988     17, 17, 0, 0, 0, 0, 0, 0,
8989     0, 0, 0, 0, 0, 0, 0, 0,
8990     0, 0, 0, 0, 0, 0, 0, 0,
8991     0, 0, 0, 0, 0, 0, 0, 0,
8992     0, 0, 0, 0, 0, 0, 0, 0,
8993     0, 0, 0, 0, 0, 0, 0, 0,
8994     0, 0, 0, 0, 0, 0, 0, 0,
8995     0, 0, 0, 0, 0, 0, 0, 0,
8996     0, 0, 0, 0, 0, 0, 0, 0,
8997     0, 0, 0, 0, 0, 0, 0, 0,
8998     0, 0, 0, 0, 0, 0, 0, 0,
8999     0, 0, 0, 0, 0, 0, 0, 0,
9000     0, 0, 0, 0, 0, 0, 0, 0,
9001     0, 0, 0, 0, 0, 0, 0, 0,
9002     0, 0, 0, 0, 0, 0, 0, 0,
9003     0, 0, 0, 0, 0, 0, 0, 0,
9004     0, 0, 0, 0, 0, 0, 0, 0,
9005     0, 0, 0, 0, 0, 0, 0, 0,
9006     0, 0, 0, 0, 0, 0, 0, 0,
9007     0, 0, 0, 0, 0, 0, 0, 0,
9008     0, 0, 0, 0, 0, 0, 0, 0,
9009 };
9010
9011 static const Q_UINT8 dir_16[] = {
9012     0, 0, 0, 0, 0, 0, 0, 0,
9013     0, 0, 0, 0, 0, 0, 0, 0,
9014     0, 0, 0, 0, 0, 0, 0, 0,
9015     0, 0, 0, 0, 0, 0, 0, 0,
9016     0, 0, 0, 0, 0, 0, 0, 0,
9017     0, 0, 0, 0, 0, 0, 0, 0,
9018     0, 0, 0, 0, 0, 0, 0, 0,
9019     0, 0, 0, 0, 0, 0, 0, 0,
9020     0, 0, 0, 0, 0, 0, 0, 0,
9021     0, 0, 0, 0, 0, 0, 0, 0,
9022     0, 0, 0, 0, 0, 0, 0, 0,
9023     0, 0, 0, 0, 0, 0, 0, 0,
9024     0, 0, 0, 0, 0, 0, 0, 0,
9025     0, 0, 0, 0, 0, 0, 0, 0,
9026     0, 0, 0, 0, 0, 0, 0, 0,
9027     0, 0, 0, 0, 0, 0, 0, 0,
9028     9, 0, 0, 0, 0, 0, 0, 0,
9029     0, 0, 0, 0, 0, 0, 0, 0,
9030     0, 0, 0, 0, 0, 0, 0, 0,
9031     0, 0, 0, 10, 10, 0, 0, 0,
9032     0, 0, 0, 0, 0, 0, 0, 0,
9033     0, 0, 0, 0, 0, 0, 0, 0,
9034     0, 0, 0, 0, 0, 0, 0, 0,
9035     0, 0, 0, 0, 0, 0, 0, 0,
9036     0, 0, 0, 0, 0, 0, 0, 0,
9037     0, 0, 0, 0, 0, 0, 0, 0,
9038     0, 0, 0, 0, 0, 0, 0, 0,
9039     0, 0, 0, 0, 0, 0, 0, 0,
9040     0, 0, 0, 0, 0, 0, 0, 0,
9041     0, 0, 0, 0, 0, 0, 0, 0,
9042     0, 0, 0, 0, 0, 0, 0, 0,
9043     0, 0, 0, 0, 0, 0, 0, 0,
9044 };
9045
9046 static const Q_UINT8 dir_17[] = {
9047     0, 0, 0, 0, 0, 0, 0, 0,
9048     0, 0, 0, 0, 0, 0, 0, 0,
9049     0, 0, 0, 0, 0, 0, 0, 0,
9050     0, 0, 0, 0, 0, 0, 0, 0,
9051     0, 0, 0, 0, 0, 0, 0, 0,
9052     0, 0, 0, 0, 0, 0, 0, 0,
9053     0, 0, 0, 0, 0, 0, 0, 0,
9054     0, 0, 0, 0, 0, 0, 0, 0,
9055     0, 0, 0, 0, 0, 0, 0, 0,
9056     0, 0, 0, 0, 0, 0, 0, 0,
9057     0, 0, 0, 0, 0, 0, 0, 0,
9058     0, 0, 0, 0, 0, 0, 0, 0,
9059     0, 0, 0, 0, 0, 0, 0, 0,
9060     0, 0, 0, 0, 0, 0, 0, 0,
9061     0, 0, 0, 0, 0, 0, 0, 0,
9062     0, 0, 0, 0, 0, 0, 0, 0,
9063     0, 0, 0, 0, 0, 0, 0, 0,
9064     0, 0, 0, 0, 0, 0, 0, 0,
9065     0, 0, 0, 0, 0, 0, 0, 0,
9066     0, 0, 0, 0, 0, 0, 0, 0,
9067     0, 0, 0, 0, 0, 0, 0, 0,
9068     0, 0, 0, 0, 0, 0, 0, 0,
9069     0, 0, 0, 0, 0, 0, 0, 17,
9070     17, 17, 17, 17, 17, 17, 0, 0,
9071     0, 0, 0, 0, 0, 0, 17, 0,
9072     0, 17, 17, 17, 17, 17, 17, 17,
9073     17, 17, 17, 17, 0, 0, 0, 0,
9074     0, 0, 0, 4, 0, 0, 0, 0,
9075     0, 0, 0, 0, 0, 0, 0, 0,
9076     0, 0, 0, 0, 0, 0, 0, 0,
9077     0, 0, 0, 0, 0, 0, 0, 0,
9078     0, 0, 0, 0, 0, 0, 0, 0,
9079 };
9080
9081 static const Q_UINT8 dir_18[] = {
9082     10, 10, 10, 10, 10, 10, 10, 10,
9083     10, 10, 10, 18, 18, 18, 18, 0,
9084     0, 0, 0, 0, 0, 0, 0, 0,
9085     0, 0, 0, 0, 0, 0, 0, 0,
9086     0, 0, 0, 0, 0, 0, 0, 0,
9087     0, 0, 0, 0, 0, 0, 0, 0,
9088     0, 0, 0, 0, 0, 0, 0, 0,
9089     0, 0, 0, 0, 0, 0, 0, 0,
9090     0, 0, 0, 0, 0, 0, 0, 0,
9091     0, 0, 0, 0, 0, 0, 0, 0,
9092     0, 0, 0, 0, 0, 0, 0, 0,
9093     0, 0, 0, 0, 0, 0, 0, 0,
9094     0, 0, 0, 0, 0, 0, 0, 0,
9095     0, 0, 0, 0, 0, 0, 0, 0,
9096     0, 0, 0, 0, 0, 0, 0, 0,
9097     0, 0, 0, 0, 0, 0, 0, 0,
9098     0, 0, 0, 0, 0, 0, 0, 0,
9099     0, 0, 0, 0, 0, 0, 0, 0,
9100     0, 0, 0, 0, 0, 0, 0, 0,
9101     0, 0, 0, 0, 0, 0, 0, 0,
9102     0, 0, 0, 0, 0, 0, 0, 0,
9103     0, 17, 0, 0, 0, 0, 0, 0,
9104     0, 0, 0, 0, 0, 0, 0, 0,
9105     0, 0, 0, 0, 0, 0, 0, 0,
9106     0, 0, 0, 0, 0, 0, 0, 0,
9107     0, 0, 0, 0, 0, 0, 0, 0,
9108     0, 0, 0, 0, 0, 0, 0, 0,
9109     0, 0, 0, 0, 0, 0, 0, 0,
9110     0, 0, 0, 0, 0, 0, 0, 0,
9111     0, 0, 0, 0, 0, 0, 0, 0,
9112     0, 0, 0, 0, 0, 0, 0, 0,
9113     0, 0, 0, 0, 0, 0, 0, 0,
9114 };
9115
9116 static const Q_UINT8 dir_1F[] = {
9117     0, 0, 0, 0, 0, 0, 0, 0,
9118     0, 0, 0, 0, 0, 0, 0, 0,
9119     0, 0, 0, 0, 0, 0, 0, 0,
9120     0, 0, 0, 0, 0, 0, 0, 0,
9121     0, 0, 0, 0, 0, 0, 0, 0,
9122     0, 0, 0, 0, 0, 0, 0, 0,
9123     0, 0, 0, 0, 0, 0, 0, 0,
9124     0, 0, 0, 0, 0, 0, 0, 0,
9125     0, 0, 0, 0, 0, 0, 0, 0,
9126     0, 0, 0, 0, 0, 0, 0, 0,
9127     0, 0, 0, 0, 0, 0, 0, 0,
9128     0, 0, 0, 0, 0, 0, 0, 0,
9129     0, 0, 0, 0, 0, 0, 0, 0,
9130     0, 0, 0, 0, 0, 0, 0, 0,
9131     0, 0, 0, 0, 0, 0, 0, 0,
9132     0, 0, 0, 0, 0, 0, 0, 0,
9133     0, 0, 0, 0, 0, 0, 0, 0,
9134     0, 0, 0, 0, 0, 0, 0, 0,
9135     0, 0, 0, 0, 0, 0, 0, 0,
9136     0, 0, 0, 0, 0, 0, 0, 0,
9137     0, 0, 0, 0, 0, 0, 0, 0,
9138     0, 0, 0, 0, 0, 0, 0, 0,
9139     0, 0, 0, 0, 0, 0, 0, 0,
9140     0, 0, 0, 0, 0, 10, 0, 10,
9141     10, 10, 0, 0, 0, 0, 0, 0,
9142     0, 0, 0, 0, 0, 10, 10, 10,
9143     0, 0, 0, 0, 0, 0, 0, 0,
9144     0, 0, 0, 0, 0, 10, 10, 10,
9145     0, 0, 0, 0, 0, 0, 0, 0,
9146     0, 0, 0, 0, 0, 10, 10, 10,
9147     0, 0, 0, 0, 0, 0, 0, 0,
9148     0, 0, 0, 0, 0, 10, 10, 0,
9149 };
9150
9151 static const Q_UINT8 dir_20[] = {
9152     9, 9, 9, 9, 9, 9, 9, 9,
9153     9, 9, 9, 18, 18, 18, 0, 1,
9154     10, 10, 10, 10, 10, 10, 10, 10,
9155     10, 10, 10, 10, 10, 10, 10, 10,
9156     10, 10, 10, 10, 10, 10, 10, 10,
9157     9, 7, 11, 14, 16, 12, 15, 9,
9158     4, 4, 4, 4, 4, 10, 10, 10,
9159     10, 138, 138, 10, 10, 10, 10, 10,
9160     10, 10, 10, 10, 10, 138, 138, 0,
9161     10, 10, 10, 10, 10, 10, 0, 0,
9162     0, 0, 0, 0, 0, 0, 0, 0,
9163     0, 0, 0, 0, 0, 0, 0, 0,
9164     0, 0, 0, 0, 0, 0, 0, 0,
9165     0, 0, 18, 18, 18, 18, 18, 18,
9166     2, 0, 0, 0, 2, 2, 2, 2,
9167     2, 2, 4, 4, 10, 138, 138, 0,
9168     2, 2, 2, 2, 2, 2, 2, 2,
9169     2, 2, 4, 4, 10, 138, 138, 0,
9170     0, 0, 0, 0, 0, 0, 0, 0,
9171     0, 0, 0, 0, 0, 0, 0, 0,
9172     4, 4, 4, 4, 4, 4, 4, 4,
9173     4, 4, 4, 4, 4, 4, 4, 4,
9174     0, 0, 0, 0, 0, 0, 0, 0,
9175     0, 0, 0, 0, 0, 0, 0, 0,
9176     0, 0, 0, 0, 0, 0, 0, 0,
9177     0, 0, 0, 0, 0, 0, 0, 0,
9178     17, 17, 17, 17, 17, 17, 17, 17,
9179     17, 17, 17, 17, 17, 17, 17, 17,
9180     17, 17, 17, 17, 0, 0, 0, 0,
9181     0, 0, 0, 0, 0, 0, 0, 0,
9182     0, 0, 0, 0, 0, 0, 0, 0,
9183     0, 0, 0, 0, 0, 0, 0, 0,
9184 };
9185
9186 static const Q_UINT8 dir_21[] = {
9187     10, 10, 0, 10, 10, 10, 10, 0,
9188     10, 10, 0, 0, 0, 0, 0, 0,
9189     0, 0, 0, 0, 10, 0, 10, 10,
9190     10, 0, 0, 0, 0, 0, 10, 10,
9191     10, 10, 10, 10, 0, 10, 0, 10,
9192     0, 10, 0, 0, 0, 0, 4, 0,
9193     0, 0, 10, 0, 0, 0, 0, 0,
9194     0, 0, 10, 0, 0, 0, 0, 0,
9195     0, 0, 0, 0, 0, 0, 0, 0,
9196     0, 0, 0, 0, 0, 0, 0, 0,
9197     0, 0, 0, 10, 10, 10, 10, 10,
9198     10, 10, 10, 10, 10, 10, 10, 10,
9199     0, 0, 0, 0, 0, 0, 0, 0,
9200     0, 0, 0, 0, 0, 0, 0, 0,
9201     0, 0, 0, 0, 0, 0, 0, 0,
9202     0, 0, 0, 0, 0, 0, 0, 0,
9203     0, 0, 0, 0, 0, 0, 0, 0,
9204     0, 0, 0, 0, 0, 0, 0, 0,
9205     10, 10, 10, 10, 10, 10, 10, 10,
9206     10, 10, 10, 10, 10, 10, 10, 10,
9207     10, 10, 10, 10, 10, 10, 10, 10,
9208     10, 10, 10, 10, 10, 10, 10, 10,
9209     10, 10, 10, 10, 10, 10, 10, 10,
9210     10, 10, 10, 10, 10, 10, 10, 10,
9211     10, 10, 10, 10, 10, 10, 10, 10,
9212     10, 10, 10, 10, 10, 10, 10, 10,
9213     10, 10, 10, 10, 10, 10, 10, 10,
9214     10, 10, 10, 10, 10, 10, 10, 10,
9215     10, 10, 10, 10, 10, 10, 10, 10,
9216     10, 10, 10, 10, 10, 10, 10, 10,
9217     10, 10, 10, 10, 0, 0, 0, 0,
9218     0, 0, 0, 0, 0, 0, 0, 0,
9219 };
9220
9221 static const Q_UINT8 dir_22[] = {
9222     10, 138, 138, 138, 138, 10, 10, 10,
9223     138, 138, 138, 138, 138, 138, 10, 10,
9224     10, 138, 4, 4, 10, 138, 138, 10,
9225     10, 10, 138, 138, 138, 138, 10, 138,
9226     138, 138, 138, 10, 138, 10, 138, 10,
9227     10, 10, 10, 138, 138, 138, 138, 138,
9228     138, 138, 138, 138, 10, 10, 10, 10,
9229     10, 138, 10, 138, 138, 138, 138, 138,
9230     138, 138, 138, 138, 138, 138, 138, 138,
9231     138, 138, 138, 138, 138, 10, 10, 10,
9232     10, 10, 138, 138, 138, 138, 10, 10,
9233     10, 10, 10, 10, 10, 10, 10, 138,
9234     138, 10, 138, 10, 138, 138, 138, 138,
9235     138, 138, 138, 138, 10, 10, 138, 138,
9236     138, 138, 138, 138, 138, 138, 138, 138,
9237     138, 138, 138, 138, 138, 138, 138, 138,
9238     138, 138, 138, 138, 138, 138, 138, 138,
9239     138, 138, 138, 138, 138, 10, 10, 138,
9240     138, 138, 138, 10, 10, 10, 10, 10,
9241     138, 10, 10, 10, 10, 10, 10, 10,
9242     10, 10, 138, 138, 10, 10, 138, 138,
9243     138, 138, 138, 138, 138, 138, 138, 138,
9244     138, 138, 138, 138, 138, 138, 138, 138,
9245     138, 10, 10, 10, 10, 10, 138, 138,
9246     10, 10, 10, 10, 10, 10, 10, 10,
9247     10, 138, 138, 138, 138, 138, 10, 10,
9248     138, 138, 10, 10, 10, 10, 138, 138,
9249     138, 138, 138, 138, 138, 138, 138, 138,
9250     138, 138, 138, 138, 138, 138, 138, 138,
9251     138, 138, 138, 138, 138, 138, 10, 10,
9252     138, 138, 0, 0, 0, 0, 0, 0,
9253     0, 0, 0, 0, 0, 0, 0, 0,
9254 };
9255
9256 static const Q_UINT8 dir_23[] = {
9257     10, 10, 10, 10, 10, 10, 10, 10,
9258     138, 138, 138, 138, 10, 10, 10, 10,
9259     10, 10, 10, 10, 10, 10, 10, 10,
9260     10, 10, 10, 10, 10, 10, 10, 10,
9261     138, 138, 10, 10, 10, 10, 10, 10,
9262     10, 138, 138, 10, 10, 10, 10, 10,
9263     10, 10, 10, 10, 10, 10, 0, 0,
9264     0, 0, 0, 0, 0, 0, 0, 0,
9265     0, 0, 0, 0, 0, 0, 0, 0,
9266     0, 0, 0, 0, 0, 0, 0, 0,
9267     0, 0, 0, 0, 0, 0, 0, 0,
9268     0, 0, 0, 0, 0, 0, 0, 0,
9269     0, 0, 0, 0, 0, 0, 0, 0,
9270     0, 0, 0, 0, 0, 0, 0, 0,
9271     0, 0, 0, 0, 0, 0, 0, 0,
9272     0, 0, 0, 10, 0, 10, 10, 10,
9273     10, 10, 10, 10, 10, 10, 10, 10,
9274     10, 10, 10, 10, 10, 10, 10, 10,
9275     10, 10, 10, 10, 10, 0, 10, 10,
9276     10, 10, 10, 0, 0, 0, 0, 0,
9277     0, 0, 0, 0, 0, 0, 0, 0,
9278     0, 0, 0, 0, 0, 0, 0, 0,
9279     0, 0, 0, 0, 0, 0, 0, 0,
9280     0, 0, 0, 0, 0, 0, 0, 0,
9281     0, 0, 0, 0, 0, 0, 0, 0,
9282     0, 0, 0, 0, 0, 0, 0, 0,
9283     0, 0, 0, 0, 0, 0, 0, 0,
9284     0, 0, 0, 0, 0, 0, 0, 0,
9285     0, 0, 0, 0, 0, 0, 0, 0,
9286     0, 0, 0, 0, 0, 0, 0, 0,
9287     0, 0, 0, 0, 0, 0, 0, 0,
9288     0, 0, 0, 0, 0, 0, 0, 0,
9289 };
9290
9291 static const Q_UINT8 dir_24[] = {
9292     10, 10, 10, 10, 10, 10, 10, 10,
9293     10, 10, 10, 10, 10, 10, 10, 10,
9294     10, 10, 10, 10, 10, 10, 10, 10,
9295     10, 10, 10, 10, 10, 10, 10, 10,
9296     10, 10, 10, 10, 10, 10, 10, 0,
9297     0, 0, 0, 0, 0, 0, 0, 0,
9298     0, 0, 0, 0, 0, 0, 0, 0,
9299     0, 0, 0, 0, 0, 0, 0, 0,
9300     10, 10, 10, 10, 10, 10, 10, 10,
9301     10, 10, 10, 0, 0, 0, 0, 0,
9302     0, 0, 0, 0, 0, 0, 0, 0,
9303     0, 0, 0, 0, 0, 0, 0, 0,
9304     2, 2, 2, 2, 2, 2, 2, 2,
9305     2, 2, 2, 2, 2, 2, 2, 2,
9306     2, 2, 2, 2, 2, 2, 2, 2,
9307     2, 2, 2, 2, 2, 2, 2, 2,
9308     2, 2, 2, 2, 2, 2, 2, 2,
9309     2, 2, 2, 2, 2, 2, 2, 2,
9310     2, 2, 2, 2, 2, 2, 2, 2,
9311     2, 2, 2, 2, 0, 0, 0, 0,
9312     0, 0, 0, 0, 0, 0, 0, 0,
9313     0, 0, 0, 0, 0, 0, 0, 0,
9314     0, 0, 0, 0, 0, 0, 0, 0,
9315     0, 0, 0, 0, 0, 0, 0, 0,
9316     0, 0, 0, 0, 0, 0, 0, 0,
9317     0, 0, 0, 0, 0, 0, 0, 0,
9318     0, 0, 0, 0, 0, 0, 0, 0,
9319     0, 0, 0, 0, 0, 0, 0, 0,
9320     0, 0, 0, 0, 0, 0, 0, 0,
9321     0, 0, 2, 0, 0, 0, 0, 0,
9322     0, 0, 0, 0, 0, 0, 0, 0,
9323     0, 0, 0, 0, 0, 0, 0, 0,
9324 };
9325
9326 static const Q_UINT8 dir_25[] = {
9327     10, 10, 10, 10, 10, 10, 10, 10,
9328     10, 10, 10, 10, 10, 10, 10, 10,
9329     10, 10, 10, 10, 10, 10, 10, 10,
9330     10, 10, 10, 10, 10, 10, 10, 10,
9331     10, 10, 10, 10, 10, 10, 10, 10,
9332     10, 10, 10, 10, 10, 10, 10, 10,
9333     10, 10, 10, 10, 10, 10, 10, 10,
9334     10, 10, 10, 10, 10, 10, 10, 10,
9335     10, 10, 10, 10, 10, 10, 10, 10,
9336     10, 10, 10, 10, 10, 10, 10, 10,
9337     10, 10, 10, 10, 10, 10, 10, 10,
9338     10, 10, 10, 10, 10, 10, 10, 10,
9339     10, 10, 10, 10, 10, 10, 10, 10,
9340     10, 10, 10, 10, 10, 10, 10, 10,
9341     10, 10, 10, 10, 10, 10, 10, 10,
9342     10, 10, 10, 10, 10, 10, 10, 10,
9343     10, 10, 10, 10, 10, 10, 10, 10,
9344     10, 10, 10, 10, 10, 10, 10, 10,
9345     10, 10, 10, 10, 10, 10, 0, 0,
9346     0, 0, 0, 0, 0, 0, 0, 0,
9347     10, 10, 10, 10, 10, 10, 10, 10,
9348     10, 10, 10, 10, 10, 10, 10, 10,
9349     10, 10, 10, 10, 10, 10, 10, 10,
9350     10, 10, 10, 10, 10, 10, 10, 10,
9351     10, 10, 10, 10, 10, 10, 10, 10,
9352     10, 10, 10, 10, 10, 10, 10, 10,
9353     10, 10, 10, 10, 10, 10, 10, 10,
9354     10, 10, 10, 10, 10, 10, 10, 10,
9355     10, 10, 10, 10, 10, 10, 10, 10,
9356     10, 10, 10, 10, 10, 10, 10, 10,
9357     10, 10, 10, 10, 10, 10, 10, 10,
9358     0, 0, 0, 0, 0, 0, 0, 0,
9359 };
9360
9361 static const Q_UINT8 dir_26[] = {
9362     10, 10, 10, 10, 10, 10, 10, 10,
9363     10, 10, 10, 10, 10, 10, 10, 10,
9364     10, 10, 10, 10, 0, 0, 0, 0,
9365     0, 10, 10, 10, 10, 10, 10, 10,
9366     10, 10, 10, 10, 10, 10, 10, 10,
9367     10, 10, 10, 10, 10, 10, 10, 10,
9368     10, 10, 10, 10, 10, 10, 10, 10,
9369     10, 10, 10, 10, 10, 10, 10, 10,
9370     10, 10, 10, 10, 10, 10, 10, 10,
9371     10, 10, 10, 10, 10, 10, 10, 10,
9372     10, 10, 10, 10, 10, 10, 10, 10,
9373     10, 10, 10, 10, 10, 10, 10, 10,
9374     10, 10, 10, 10, 10, 10, 10, 10,
9375     10, 10, 10, 10, 10, 10, 10, 10,
9376     10, 10, 0, 0, 0, 0, 0, 0,
9377     0, 0, 0, 0, 0, 0, 0, 0,
9378     0, 0, 0, 0, 0, 0, 0, 0,
9379     0, 0, 0, 0, 0, 0, 0, 0,
9380     0, 0, 0, 0, 0, 0, 0, 0,
9381     0, 0, 0, 0, 0, 0, 0, 0,
9382     0, 0, 0, 0, 0, 0, 0, 0,
9383     0, 0, 0, 0, 0, 0, 0, 0,
9384     0, 0, 0, 0, 0, 0, 0, 0,
9385     0, 0, 0, 0, 0, 0, 0, 0,
9386     0, 0, 0, 0, 0, 0, 0, 0,
9387     0, 0, 0, 0, 0, 0, 0, 0,
9388     0, 0, 0, 0, 0, 0, 0, 0,
9389     0, 0, 0, 0, 0, 0, 0, 0,
9390     0, 0, 0, 0, 0, 0, 0, 0,
9391     0, 0, 0, 0, 0, 0, 0, 0,
9392     0, 0, 0, 0, 0, 0, 0, 0,
9393     0, 0, 0, 0, 0, 0, 0, 0,
9394 };
9395
9396 static const Q_UINT8 dir_27[] = {
9397     0, 10, 10, 10, 10, 0, 10, 10,
9398     10, 10, 0, 0, 10, 10, 10, 10,
9399     10, 10, 10, 10, 10, 10, 10, 10,
9400     10, 10, 10, 10, 10, 10, 10, 10,
9401     10, 10, 10, 10, 10, 10, 10, 10,
9402     0, 10, 10, 10, 10, 10, 10, 10,
9403     10, 10, 10, 10, 10, 10, 10, 10,
9404     10, 10, 10, 10, 10, 10, 10, 10,
9405     10, 10, 10, 10, 10, 10, 10, 10,
9406     10, 10, 10, 10, 0, 10, 0, 10,
9407     10, 10, 10, 0, 0, 0, 10, 0,
9408     10, 10, 10, 10, 10, 10, 10, 0,
9409     0, 10, 10, 10, 10, 10, 10, 10,
9410     0, 0, 0, 0, 0, 0, 0, 0,
9411     0, 0, 0, 0, 0, 0, 10, 10,
9412     10, 10, 10, 10, 10, 10, 10, 10,
9413     10, 10, 10, 10, 10, 10, 10, 10,
9414     10, 10, 10, 10, 10, 10, 10, 10,
9415     10, 10, 10, 10, 10, 0, 0, 0,
9416     10, 10, 10, 10, 10, 10, 10, 10,
9417     10, 10, 10, 10, 10, 10, 10, 10,
9418     10, 10, 10, 10, 10, 10, 10, 10,
9419     0, 10, 10, 10, 10, 10, 10, 10,
9420     10, 10, 10, 10, 10, 10, 10, 0,
9421     0, 0, 0, 0, 0, 0, 0, 0,
9422     0, 0, 0, 0, 0, 0, 0, 0,
9423     0, 0, 0, 0, 0, 0, 0, 0,
9424     0, 0, 0, 0, 0, 0, 0, 0,
9425     0, 0, 0, 0, 0, 0, 0, 0,
9426     0, 0, 0, 0, 0, 0, 0, 0,
9427     0, 0, 0, 0, 0, 0, 0, 0,
9428     0, 0, 0, 0, 0, 0, 0, 0,
9429 };
9430
9431 static const Q_UINT8 dir_28[] = {
9432     10, 10, 10, 10, 10, 10, 10, 10,
9433     10, 10, 10, 10, 10, 10, 10, 10,
9434     10, 10, 10, 10, 10, 10, 10, 10,
9435     10, 10, 10, 10, 10, 10, 10, 10,
9436     10, 10, 10, 10, 10, 10, 10, 10,
9437     10, 10, 10, 10, 10, 10, 10, 10,
9438     10, 10, 10, 10, 10, 10, 10, 10,
9439     10, 10, 10, 10, 10, 10, 10, 10,
9440     10, 10, 10, 10, 10, 10, 10, 10,
9441     10, 10, 10, 10, 10, 10, 10, 10,
9442     10, 10, 10, 10, 10, 10, 10, 10,
9443     10, 10, 10, 10, 10, 10, 10, 10,
9444     10, 10, 10, 10, 10, 10, 10, 10,
9445     10, 10, 10, 10, 10, 10, 10, 10,
9446     10, 10, 10, 10, 10, 10, 10, 10,
9447     10, 10, 10, 10, 10, 10, 10, 10,
9448     10, 10, 10, 10, 10, 10, 10, 10,
9449     10, 10, 10, 10, 10, 10, 10, 10,
9450     10, 10, 10, 10, 10, 10, 10, 10,
9451     10, 10, 10, 10, 10, 10, 10, 10,
9452     10, 10, 10, 10, 10, 10, 10, 10,
9453     10, 10, 10, 10, 10, 10, 10, 10,
9454     10, 10, 10, 10, 10, 10, 10, 10,
9455     10, 10, 10, 10, 10, 10, 10, 10,
9456     10, 10, 10, 10, 10, 10, 10, 10,
9457     10, 10, 10, 10, 10, 10, 10, 10,
9458     10, 10, 10, 10, 10, 10, 10, 10,
9459     10, 10, 10, 10, 10, 10, 10, 10,
9460     10, 10, 10, 10, 10, 10, 10, 10,
9461     10, 10, 10, 10, 10, 10, 10, 10,
9462     10, 10, 10, 10, 10, 10, 10, 10,
9463     10, 10, 10, 10, 10, 10, 10, 10,
9464 };
9465
9466 static const Q_UINT8 dir_2E[] = {
9467     0, 0, 0, 0, 0, 0, 0, 0,
9468     0, 0, 0, 0, 0, 0, 0, 0,
9469     0, 0, 0, 0, 0, 0, 0, 0,
9470     0, 0, 0, 0, 0, 0, 0, 0,
9471     0, 0, 0, 0, 0, 0, 0, 0,
9472     0, 0, 0, 0, 0, 0, 0, 0,
9473     0, 0, 0, 0, 0, 0, 0, 0,
9474     0, 0, 0, 0, 0, 0, 0, 0,
9475     0, 0, 0, 0, 0, 0, 0, 0,
9476     0, 0, 0, 0, 0, 0, 0, 0,
9477     0, 0, 0, 0, 0, 0, 0, 0,
9478     0, 0, 0, 0, 0, 0, 0, 0,
9479     0, 0, 0, 0, 0, 0, 0, 0,
9480     0, 0, 0, 0, 0, 0, 0, 0,
9481     0, 0, 0, 0, 0, 0, 0, 0,
9482     0, 0, 0, 0, 0, 0, 0, 0,
9483     10, 10, 10, 10, 10, 10, 10, 10,
9484     10, 10, 10, 10, 10, 10, 10, 10,
9485     10, 10, 10, 10, 10, 10, 10, 10,
9486     10, 10, 0, 10, 10, 10, 10, 10,
9487     10, 10, 10, 10, 10, 10, 10, 10,
9488     10, 10, 10, 10, 10, 10, 10, 10,
9489     10, 10, 10, 10, 10, 10, 10, 10,
9490     10, 10, 10, 10, 10, 10, 10, 10,
9491     10, 10, 10, 10, 10, 10, 10, 10,
9492     10, 10, 10, 10, 10, 10, 10, 10,
9493     10, 10, 10, 10, 10, 10, 10, 10,
9494     10, 10, 10, 10, 10, 10, 10, 10,
9495     10, 10, 10, 10, 10, 10, 10, 10,
9496     10, 10, 10, 10, 10, 10, 10, 10,
9497     10, 10, 10, 10, 0, 0, 0, 0,
9498     0, 0, 0, 0, 0, 0, 0, 0,
9499 };
9500
9501 static const Q_UINT8 dir_2F[] = {
9502     10, 10, 10, 10, 10, 10, 10, 10,
9503     10, 10, 10, 10, 10, 10, 10, 10,
9504     10, 10, 10, 10, 10, 10, 10, 10,
9505     10, 10, 10, 10, 10, 10, 10, 10,
9506     10, 10, 10, 10, 10, 10, 10, 10,
9507     10, 10, 10, 10, 10, 10, 10, 10,
9508     10, 10, 10, 10, 10, 10, 10, 10,
9509     10, 10, 10, 10, 10, 10, 10, 10,
9510     10, 10, 10, 10, 10, 10, 10, 10,
9511     10, 10, 10, 10, 10, 10, 10, 10,
9512     10, 10, 10, 10, 10, 10, 10, 10,
9513     10, 10, 10, 10, 10, 10, 10, 10,
9514     10, 10, 10, 10, 10, 10, 10, 10,
9515     10, 10, 10, 10, 10, 10, 10, 10,
9516     10, 10, 10, 10, 10, 10, 10, 10,
9517     10, 10, 10, 10, 10, 10, 10, 10,
9518     10, 10, 10, 10, 10, 10, 10, 10,
9519     10, 10, 10, 10, 10, 10, 10, 10,
9520     10, 10, 10, 10, 10, 10, 10, 10,
9521     10, 10, 10, 10, 10, 10, 10, 10,
9522     10, 10, 10, 10, 10, 10, 10, 10,
9523     10, 10, 10, 10, 10, 10, 10, 10,
9524     10, 10, 10, 10, 10, 10, 10, 10,
9525     10, 10, 10, 10, 10, 10, 10, 10,
9526     10, 10, 10, 10, 10, 10, 10, 10,
9527     10, 10, 10, 10, 10, 10, 10, 10,
9528     10, 10, 10, 10, 10, 10, 0, 0,
9529     0, 0, 0, 0, 0, 0, 0, 0,
9530     0, 0, 0, 0, 0, 0, 0, 0,
9531     0, 0, 0, 0, 0, 0, 0, 0,
9532     10, 10, 10, 10, 10, 10, 10, 10,
9533     10, 10, 10, 10, 0, 0, 0, 0,
9534 };
9535
9536 static const Q_UINT8 dir_30[] = {
9537     9, 10, 10, 10, 10, 0, 0, 0,
9538     138, 138, 138, 138, 138, 138, 138, 138,
9539     138, 138, 10, 10, 138, 138, 138, 138,
9540     138, 138, 138, 138, 10, 10, 10, 10,
9541     10, 0, 0, 0, 0, 0, 0, 0,
9542     0, 0, 17, 17, 17, 17, 17, 17,
9543     10, 0, 0, 0, 0, 0, 10, 10,
9544     0, 0, 0, 0, 0, 0, 10, 10,
9545     0, 0, 0, 0, 0, 0, 0, 0,
9546     0, 0, 0, 0, 0, 0, 0, 0,
9547     0, 0, 0, 0, 0, 0, 0, 0,
9548     0, 0, 0, 0, 0, 0, 0, 0,
9549     0, 0, 0, 0, 0, 0, 0, 0,
9550     0, 0, 0, 0, 0, 0, 0, 0,
9551     0, 0, 0, 0, 0, 0, 0, 0,
9552     0, 0, 0, 0, 0, 0, 0, 0,
9553     0, 0, 0, 0, 0, 0, 0, 0,
9554     0, 0, 0, 0, 0, 0, 0, 0,
9555     0, 0, 0, 0, 0, 0, 0, 0,
9556     0, 17, 17, 10, 10, 0, 0, 0,
9557     0, 0, 0, 0, 0, 0, 0, 0,
9558     0, 0, 0, 0, 0, 0, 0, 0,
9559     0, 0, 0, 0, 0, 0, 0, 0,
9560     0, 0, 0, 0, 0, 0, 0, 0,
9561     0, 0, 0, 0, 0, 0, 0, 0,
9562     0, 0, 0, 0, 0, 0, 0, 0,
9563     0, 0, 0, 0, 0, 0, 0, 0,
9564     0, 0, 0, 0, 0, 0, 0, 0,
9565     0, 0, 0, 0, 0, 0, 0, 0,
9566     0, 0, 0, 0, 0, 0, 0, 0,
9567     0, 0, 0, 0, 0, 0, 0, 0,
9568     0, 0, 0, 10, 0, 0, 0, 0,
9569 };
9570
9571 static const Q_UINT8 dir_A4[] = {
9572     0, 0, 0, 0, 0, 0, 0, 0,
9573     0, 0, 0, 0, 0, 0, 0, 0,
9574     0, 0, 0, 0, 0, 0, 0, 0,
9575     0, 0, 0, 0, 0, 0, 0, 0,
9576     0, 0, 0, 0, 0, 0, 0, 0,
9577     0, 0, 0, 0, 0, 0, 0, 0,
9578     0, 0, 0, 0, 0, 0, 0, 0,
9579     0, 0, 0, 0, 0, 0, 0, 0,
9580     0, 0, 0, 0, 0, 0, 0, 0,
9581     0, 0, 0, 0, 0, 0, 0, 0,
9582     0, 0, 0, 0, 0, 0, 0, 0,
9583     0, 0, 0, 0, 0, 0, 0, 0,
9584     0, 0, 0, 0, 0, 0, 0, 0,
9585     0, 0, 0, 0, 0, 0, 0, 0,
9586     0, 0, 0, 0, 0, 0, 0, 0,
9587     0, 0, 0, 0, 0, 0, 0, 0,
9588     0, 0, 0, 0, 0, 0, 0, 0,
9589     0, 0, 0, 0, 0, 0, 0, 0,
9590     10, 10, 10, 10, 10, 10, 10, 10,
9591     10, 10, 10, 10, 10, 10, 10, 10,
9592     10, 10, 0, 0, 10, 10, 10, 10,
9593     10, 10, 10, 10, 10, 10, 10, 10,
9594     10, 10, 10, 10, 0, 10, 10, 10,
9595     10, 10, 10, 10, 10, 10, 10, 10,
9596     10, 0, 10, 10, 10, 0, 10, 0,
9597     0, 0, 0, 0, 0, 0, 0, 0,
9598     0, 0, 0, 0, 0, 0, 0, 0,
9599     0, 0, 0, 0, 0, 0, 0, 0,
9600     0, 0, 0, 0, 0, 0, 0, 0,
9601     0, 0, 0, 0, 0, 0, 0, 0,
9602     0, 0, 0, 0, 0, 0, 0, 0,
9603     0, 0, 0, 0, 0, 0, 0, 0,
9604 };
9605
9606 static const Q_UINT8 dir_FB[] = {
9607     0, 0, 0, 0, 0, 0, 0, 0,
9608     0, 0, 0, 0, 0, 0, 0, 0,
9609     0, 0, 0, 0, 0, 0, 0, 0,
9610     0, 0, 0, 0, 0, 1, 17, 1,
9611     1, 1, 1, 1, 1, 1, 1, 1,
9612     1, 4, 1, 1, 1, 1, 1, 1,
9613     1, 1, 1, 1, 1, 1, 1, 0,
9614     1, 1, 1, 1, 1, 0, 1, 0,
9615     1, 1, 0, 1, 1, 0, 1, 1,
9616     1, 1, 1, 1, 1, 1, 1, 1,
9617     13, 13, 13, 13, 13, 13, 13, 13,
9618     13, 13, 13, 13, 13, 13, 13, 13,
9619     13, 13, 13, 13, 13, 13, 13, 13,
9620     13, 13, 13, 13, 13, 13, 13, 13,
9621     13, 13, 13, 13, 13, 13, 13, 13,
9622     13, 13, 13, 13, 13, 13, 13, 13,
9623     13, 13, 13, 13, 13, 13, 13, 13,
9624     13, 13, 13, 13, 13, 13, 13, 13,
9625     13, 13, 13, 13, 13, 13, 13, 13,
9626     13, 13, 13, 13, 13, 13, 13, 13,
9627     13, 13, 13, 13, 13, 13, 13, 13,
9628     13, 13, 13, 13, 13, 13, 13, 13,
9629     13, 13, 0, 0, 0, 0, 0, 0,
9630     0, 0, 0, 0, 0, 0, 0, 0,
9631     0, 0, 0, 0, 0, 0, 0, 0,
9632     0, 0, 0, 0, 0, 0, 0, 0,
9633     0, 0, 0, 13, 13, 13, 13, 13,
9634     13, 13, 13, 13, 13, 13, 13, 13,
9635     13, 13, 13, 13, 13, 13, 13, 13,
9636     13, 13, 13, 13, 13, 13, 13, 13,
9637     13, 13, 13, 13, 13, 13, 13, 13,
9638     13, 13, 13, 13, 13, 13, 13, 13,
9639 };
9640
9641 static const Q_UINT8 dir_FC[] = {
9642     13, 13, 13, 13, 13, 13, 13, 13,
9643     13, 13, 13, 13, 13, 13, 13, 13,
9644     13, 13, 13, 13, 13, 13, 13, 13,
9645     13, 13, 13, 13, 13, 13, 13, 13,
9646     13, 13, 13, 13, 13, 13, 13, 13,
9647     13, 13, 13, 13, 13, 13, 13, 13,
9648     13, 13, 13, 13, 13, 13, 13, 13,
9649     13, 13, 13, 13, 13, 13, 13, 13,
9650     13, 13, 13, 13, 13, 13, 13, 13,
9651     13, 13, 13, 13, 13, 13, 13, 13,
9652     13, 13, 13, 13, 13, 13, 13, 13,
9653     13, 13, 13, 13, 13, 13, 13, 13,
9654     13, 13, 13, 13, 13, 13, 13, 13,
9655     13, 13, 13, 13, 13, 13, 13, 13,
9656     13, 13, 13, 13, 13, 13, 13, 13,
9657     13, 13, 13, 13, 13, 13, 13, 13,
9658     13, 13, 13, 13, 13, 13, 13, 13,
9659     13, 13, 13, 13, 13, 13, 13, 13,
9660     13, 13, 13, 13, 13, 13, 13, 13,
9661     13, 13, 13, 13, 13, 13, 13, 13,
9662     13, 13, 13, 13, 13, 13, 13, 13,
9663     13, 13, 13, 13, 13, 13, 13, 13,
9664     13, 13, 13, 13, 13, 13, 13, 13,
9665     13, 13, 13, 13, 13, 13, 13, 13,
9666     13, 13, 13, 13, 13, 13, 13, 13,
9667     13, 13, 13, 13, 13, 13, 13, 13,
9668     13, 13, 13, 13, 13, 13, 13, 13,
9669     13, 13, 13, 13, 13, 13, 13, 13,
9670     13, 13, 13, 13, 13, 13, 13, 13,
9671     13, 13, 13, 13, 13, 13, 13, 13,
9672     13, 13, 13, 13, 13, 13, 13, 13,
9673     13, 13, 13, 13, 13, 13, 13, 13,
9674 };
9675
9676 static const Q_UINT8 dir_FD[] = {
9677     13, 13, 13, 13, 13, 13, 13, 13,
9678     13, 13, 13, 13, 13, 13, 13, 13,
9679     13, 13, 13, 13, 13, 13, 13, 13,
9680     13, 13, 13, 13, 13, 13, 13, 13,
9681     13, 13, 13, 13, 13, 13, 13, 13,
9682     13, 13, 13, 13, 13, 13, 13, 13,
9683     13, 13, 13, 13, 13, 13, 13, 13,
9684     13, 13, 13, 13, 13, 13, 10, 10,
9685     0, 0, 0, 0, 0, 0, 0, 0,
9686     0, 0, 0, 0, 0, 0, 0, 0,
9687     13, 13, 13, 13, 13, 13, 13, 13,
9688     13, 13, 13, 13, 13, 13, 13, 13,
9689     13, 13, 13, 13, 13, 13, 13, 13,
9690     13, 13, 13, 13, 13, 13, 13, 13,
9691     13, 13, 13, 13, 13, 13, 13, 13,
9692     13, 13, 13, 13, 13, 13, 13, 13,
9693     13, 13, 13, 13, 13, 13, 13, 13,
9694     13, 13, 13, 13, 13, 13, 13, 13,
9695     0, 0, 13, 13, 13, 13, 13, 13,
9696     13, 13, 13, 13, 13, 13, 13, 13,
9697     13, 13, 13, 13, 13, 13, 13, 13,
9698     13, 13, 13, 13, 13, 13, 13, 13,
9699     13, 13, 13, 13, 13, 13, 13, 13,
9700     13, 13, 13, 13, 13, 13, 13, 13,
9701     13, 13, 13, 13, 13, 13, 13, 13,
9702     0, 0, 0, 0, 0, 0, 0, 0,
9703     0, 0, 0, 0, 0, 0, 0, 0,
9704     0, 0, 0, 0, 0, 0, 0, 0,
9705     0, 0, 0, 0, 0, 0, 0, 0,
9706     0, 0, 0, 0, 0, 0, 0, 0,
9707     13, 13, 13, 13, 13, 13, 13, 13,
9708     13, 13, 13, 13, 0, 0, 0, 0,
9709 };
9710
9711 static const Q_UINT8 dir_FE[] = {
9712     0, 0, 0, 0, 0, 0, 0, 0,
9713     0, 0, 0, 0, 0, 0, 0, 0,
9714     0, 0, 0, 0, 0, 0, 0, 0,
9715     0, 0, 0, 0, 0, 0, 0, 0,
9716     17, 17, 17, 17, 0, 0, 0, 0,
9717     0, 0, 0, 0, 0, 0, 0, 0,
9718     10, 10, 10, 10, 10, 10, 10, 10,
9719     10, 10, 10, 10, 10, 10, 10, 10,
9720     10, 10, 10, 10, 10, 0, 0, 0,
9721     0, 10, 10, 10, 10, 10, 10, 10,
9722     6, 10, 6, 0, 10, 6, 10, 10,
9723     10, 10, 10, 10, 10, 10, 10, 4,
9724     10, 10, 4, 4, 10, 10, 10, 0,
9725     10, 4, 4, 10, 0, 0, 0, 0,
9726     13, 13, 13, 0, 13, 0, 13, 13,
9727     13, 13, 13, 13, 13, 13, 13, 13,
9728     13, 13, 13, 13, 13, 13, 13, 13,
9729     13, 13, 13, 13, 13, 13, 13, 13,
9730     13, 13, 13, 13, 13, 13, 13, 13,
9731     13, 13, 13, 13, 13, 13, 13, 13,
9732     13, 13, 13, 13, 13, 13, 13, 13,
9733     13, 13, 13, 13, 13, 13, 13, 13,
9734     13, 13, 13, 13, 13, 13, 13, 13,
9735     13, 13, 13, 13, 13, 13, 13, 13,
9736     13, 13, 13, 13, 13, 13, 13, 13,
9737     13, 13, 13, 13, 13, 13, 13, 13,
9738     13, 13, 13, 13, 13, 13, 13, 13,
9739     13, 13, 13, 13, 13, 13, 13, 13,
9740     13, 13, 13, 13, 13, 13, 13, 13,
9741     13, 13, 13, 13, 13, 13, 13, 13,
9742     13, 13, 13, 13, 13, 13, 13, 13,
9743     13, 13, 13, 13, 13, 0, 0, 18,
9744 };
9745
9746 static const Q_UINT8 dir_FF[] = {
9747     0, 10, 10, 4, 4, 4, 10, 10,
9748     10, 10, 10, 4, 6, 4, 6, 3,
9749     2, 2, 2, 2, 2, 2, 2, 2,
9750     2, 2, 6, 10, 10, 10, 10, 10,
9751     10, 0, 0, 0, 0, 0, 0, 0,
9752     0, 0, 0, 0, 0, 0, 0, 0,
9753     0, 0, 0, 0, 0, 0, 0, 0,
9754     0, 0, 0, 10, 10, 10, 10, 10,
9755     10, 0, 0, 0, 0, 0, 0, 0,
9756     0, 0, 0, 0, 0, 0, 0, 0,
9757     0, 0, 0, 0, 0, 0, 0, 0,
9758     0, 0, 0, 10, 10, 10, 10, 0,
9759     0, 10, 10, 10, 10, 10, 0, 0,
9760     0, 0, 0, 0, 0, 0, 0, 0,
9761     0, 0, 0, 0, 0, 0, 0, 0,
9762     0, 0, 0, 0, 0, 0, 0, 0,
9763     0, 0, 0, 0, 0, 0, 0, 0,
9764     0, 0, 0, 0, 0, 0, 0, 0,
9765     0, 0, 0, 0, 0, 0, 0, 0,
9766     0, 0, 0, 0, 0, 0, 0, 0,
9767     0, 0, 0, 0, 0, 0, 0, 0,
9768     0, 0, 0, 0, 0, 0, 0, 0,
9769     0, 0, 0, 0, 0, 0, 0, 0,
9770     0, 0, 0, 0, 0, 0, 0, 0,
9771     0, 0, 0, 0, 0, 0, 0, 0,
9772     0, 0, 0, 0, 0, 0, 0, 0,
9773     0, 0, 0, 0, 0, 0, 0, 0,
9774     0, 0, 0, 0, 0, 0, 0, 0,
9775     4, 4, 10, 10, 10, 4, 4, 0,
9776     10, 10, 10, 10, 10, 10, 10, 0,
9777     0, 0, 0, 0, 0, 0, 0, 0,
9778     0, 18, 18, 18, 10, 10, 0, 0,
9779 };
9780
9781 static const Q_UINT8 * const direction_info[256] = {
9782     dir_00, dir_01, dir_02, dir_03, dir_04, dir_05, dir_06, dir_07,
9783     dir_01, dir_09, dir_0A, dir_0B, dir_0C, dir_0D, dir_0E, dir_0F,
9784     dir_10, dir_01, dir_01, dir_01, dir_01, dir_01, dir_16, dir_17,
9785     dir_18, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_1F,
9786     dir_20, dir_21, dir_22, dir_23, dir_24, dir_25, dir_26, dir_27,
9787     dir_28, dir_01, dir_01, dir_01, dir_01, dir_01, dir_2E, dir_2F,
9788     dir_30, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9789     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9790     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9791     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9792     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9793     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9794     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9795     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9796     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9797     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9798     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9799     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9800     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9801     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9802     dir_01, dir_01, dir_01, dir_01, dir_A4, dir_01, dir_01, dir_01,
9803     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9804     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9805     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9806     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9807     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9808     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9809     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9810     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9811     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9812     dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
9813     dir_01, dir_01, dir_01, dir_FB, dir_FC, dir_FD, dir_FE, dir_FF,
9814 };
9815 // 26940 bytes
9816
9817 #endif
9818
9819 // END OF GENERATED DATA
9820
9821 // This is generated too. Script?
9822
9823 #ifndef QT_NO_UNICODETABLES
9824
9825 static const Q_UINT16 case_0 [] = {
9826     0, 0, 0, 0, 0, 0, 0, 0,
9827     0, 0, 0, 0, 0, 0, 0, 0,
9828     0, 0, 0, 0, 0, 0, 0, 0,
9829     0, 0, 0, 0, 0, 0, 0, 0,
9830     0, 0, 0, 0, 0, 0, 0, 0,
9831     0, 0, 0, 0, 0, 0, 0, 0,
9832     0, 0, 0, 0, 0, 0, 0, 0,
9833     0, 0, 0, 0, 0, 0, 0, 0,
9834     0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
9835     0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
9836     0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
9837     0x78, 0x79, 0x7a, 0, 0, 0, 0, 0,
9838     0, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
9839     0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
9840     0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
9841     0x58, 0x59, 0x5a, 0, 0, 0, 0, 0,
9842     0, 0, 0, 0, 0, 0, 0, 0,
9843     0, 0, 0, 0, 0, 0, 0, 0,
9844     0, 0, 0, 0, 0, 0, 0, 0,
9845     0, 0, 0, 0, 0, 0, 0, 0,
9846     0, 0, 0, 0, 0, 0, 0, 0,
9847     0, 0, 0x0, 0, 0, 0, 0, 0,
9848     0, 0, 0, 0, 0, 0x0, 0, 0,
9849     0, 0, 0x0, 0, 0, 0, 0, 0,
9850     0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
9851     0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
9852     0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0,
9853     0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x0,
9854     0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
9855     0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
9856     0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0,
9857     0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178,
9858 };
9859
9860 static const Q_UINT16 case_1 [] = {
9861     0x101, 0x100, 0x103, 0x102, 0x105, 0x104, 0x107, 0x106,
9862     0x109, 0x108, 0x10b, 0x10a, 0x10d, 0x10c, 0x10f, 0x10e,
9863     0x111, 0x110, 0x113, 0x112, 0x115, 0x114, 0x117, 0x116,
9864     0x119, 0x118, 0x11b, 0x11a, 0x11d, 0x11c, 0x11f, 0x11e,
9865     0x121, 0x120, 0x123, 0x122, 0x125, 0x124, 0x127, 0x126,
9866     0x129, 0x128, 0x12b, 0x12a, 0x12d, 0x12c, 0x12f, 0x12e,
9867     0x69, 0x49, 0x133, 0x132, 0x135, 0x134, 0x137, 0x136,
9868     0x0, 0x13a, 0x139, 0x13c, 0x13b, 0x13e, 0x13d, 0x140,
9869     0x13f, 0x142, 0x141, 0x144, 0x143, 0x146, 0x145, 0x148,
9870     0x147, 0x0, 0x14b, 0x14a, 0x14d, 0x14c, 0x14f, 0x14e,
9871     0x151, 0x150, 0x153, 0x152, 0x155, 0x154, 0x157, 0x156,
9872     0x159, 0x158, 0x15b, 0x15a, 0x15d, 0x15c, 0x15f, 0x15e,
9873     0x161, 0x160, 0x163, 0x162, 0x165, 0x164, 0x167, 0x166,
9874     0x169, 0x168, 0x16b, 0x16a, 0x16d, 0x16c, 0x16f, 0x16e,
9875     0x171, 0x170, 0x173, 0x172, 0x175, 0x174, 0x177, 0x176,
9876     0xff, 0x17a, 0x179, 0x17c, 0x17b, 0x17e, 0x17d, 0x53,
9877     0x0, 0x253, 0x183, 0x182, 0x185, 0x184, 0x254, 0x188,
9878     0x187, 0x256, 0x257, 0x18c, 0x18b, 0x0, 0x1dd, 0x259,
9879     0x25b, 0x192, 0x191, 0x260, 0x263, 0x3d9, 0x269, 0x268,
9880     0x199, 0x198, 0x51, 0x0, 0x26f, 0x272, 0x0, 0x275,
9881     0x1a1, 0x1a0, 0x1a3, 0x1a2, 0x1a5, 0x1a4, 0x280, 0x1a8,
9882     0x1a7, 0x283, 0, 0x0, 0x1ad, 0x1ac, 0x288, 0x1b0,
9883     0x1af, 0x28a, 0x28b, 0x1b4, 0x1b3, 0x1b6, 0x1b5, 0x292,
9884     0x1b9, 0x1b8, 0x0, 0, 0x1bd, 0x1bc, 0, 0,
9885     0, 0, 0, 0, 0x1c6, 0, 0x1c4, 0x1c9,
9886     0, 0x1c7, 0x1cc, 0, 0x1ca, 0x1ce, 0x1cd, 0x1d0,
9887     0x1cf, 0x1d2, 0x1d1, 0x1d4, 0x1d3, 0x1d6, 0x1d5, 0x1d8,
9888     0x1d7, 0x1da, 0x1d9, 0x1dc, 0x1db, 0x18e, 0x1df, 0x1de,
9889     0x1e1, 0x1e0, 0x1e3, 0x1e2, 0x1e5, 0x1e4, 0x1e7, 0x1e6,
9890     0x1e9, 0x1e8, 0x1eb, 0x1ea, 0x1ed, 0x1ec, 0x1ef, 0x1ee,
9891     0x0, 0x1f3, 0, 0x1f1, 0x1f5, 0x1f4, 0, 0,
9892     0, 0, 0x1fb, 0x1fa, 0x1fd, 0x1fc, 0x1ff, 0x1fe,
9893 };
9894
9895 static const Q_UINT16 case_2 [] = {
9896     0x201, 0x200, 0x203, 0x202, 0x205, 0x204, 0x207, 0x206,
9897     0x209, 0x208, 0x20b, 0x20a, 0x20d, 0x20c, 0x20f, 0x20e,
9898     0x211, 0x210, 0x213, 0x212, 0x215, 0x214, 0x217, 0x216,
9899     0, 0, 0, 0, 0, 0, 0, 0,
9900     0, 0, 0, 0, 0, 0, 0, 0,
9901     0, 0, 0, 0, 0, 0, 0, 0,
9902     0, 0, 0, 0, 0, 0, 0, 0,
9903     0, 0, 0, 0, 0, 0, 0, 0,
9904     0, 0, 0, 0, 0, 0, 0, 0,
9905     0, 0, 0, 0, 0, 0, 0, 0,
9906     0x0, 0x0, 0x0, 0x181, 0x186, 0x0, 0x189, 0x18a,
9907     0x0, 0x18f, 0x0, 0x190, 0x0, 0x0, 0x0, 0x0,
9908     0x193, 0x0, 0x0, 0x194, 0x0, 0x0, 0x631, 0x579,
9909     0x197, 0x196, 0x0, 0x0, 0x0, 0x0, 0x0, 0x19c,
9910     0x0, 0x0, 0x19d, 0x0, 0x0, 0x19f, 0x0, 0x0,
9911     0x0, 0x0, 0x7e1, 0x0, 0x0, 0x0, 0x0, 0x0,
9912     0x1a6, 0x0, 0x0, 0x1a9, 0x0, 0x0, 0x0, 0x0,
9913     0x1ae, 0x0, 0x1b1, 0x1b2, 0x0, 0xa21, 0x971, 0x0,
9914     0x0, 0x0, 0x1b7, 0x0, 0x0, 0x0, 0x0, 0x0,
9915     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
9916     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
9917     0x0, 0, 0, 0, 0, 0, 0, 0,
9918     0, 0, 0, 0, 0, 0, 0, 0,
9919     0, 0, 0, 0, 0, 0, 0, 0,
9920     0, 0, 0, 0, 0, 0, 0, 0,
9921     0, 0, 0, 0, 0, 0, 0, 0,
9922     0, 0, 0, 0, 0, 0, 0, 0,
9923     0, 0, 0, 0, 0, 0, 0, 0,
9924     0, 0, 0, 0, 0, 0, 0, 0,
9925     0, 0, 0, 0, 0, 0, 0, 0,
9926     0, 0, 0, 0, 0, 0, 0, 0,
9927     0, 0, 0, 0, 0, 0, 0, 0,
9928 };
9929
9930 static const Q_UINT16 case_3 [] = {
9931     0, 0, 0, 0, 0, 0, 0, 0,
9932     0, 0, 0, 0, 0, 0, 0, 0,
9933     0, 0, 0, 0, 0, 0, 0, 0,
9934     0, 0, 0, 0, 0, 0, 0, 0,
9935     0, 0, 0, 0, 0, 0, 0, 0,
9936     0, 0, 0, 0, 0, 0, 0, 0,
9937     0, 0, 0, 0, 0, 0, 0, 0,
9938     0, 0, 0, 0, 0, 0, 0, 0,
9939     0, 0, 0, 0, 0, 0, 0, 0,
9940     0, 0, 0, 0, 0, 0, 0, 0,
9941     0, 0, 0, 0, 0, 0, 0, 0,
9942     0, 0, 0, 0, 0, 0, 0, 0,
9943     0, 0, 0, 0, 0, 0, 0, 0,
9944     0, 0, 0, 0, 0, 0, 0, 0,
9945     0, 0, 0, 0, 0, 0, 0, 0,
9946     0, 0, 0, 0, 0, 0, 0, 0,
9947     0, 0, 0, 0, 0, 0, 0x3ac, 0,
9948     0x3ad, 0x3ae, 0x3af, 0, 0x3cc, 0, 0x3cd, 0x3ce,
9949     0x0, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7,
9950     0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf,
9951     0x3c0, 0x3c1, 0, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7,
9952     0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x386, 0x388, 0x389, 0x38a,
9953     0x0, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397,
9954     0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f,
9955     0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7,
9956     0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0,
9957     0x392, 0x398, 0x0, 0x0, 0x0, 0x3a6, 0x3a0, 0,
9958     0, 0, 0x0, 0, 0x0, 0, 0x0, 0,
9959     0x0, 0, 0x3e3, 0x3e2, 0x3e5, 0x3e4, 0x3e7, 0x3e6,
9960     0x3e9, 0x3e8, 0x3eb, 0x3ea, 0x3ed, 0x3ec, 0x3ef, 0x3ee,
9961     0x39a, 0x3a1, 0x3a3, 0, 0, 0, 0, 0,
9962     0, 0, 0, 0, 0, 0, 0, 0,
9963 };
9964
9965 static const Q_UINT16 case_4 [] = {
9966     0, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457,
9967     0x458, 0x459, 0x45a, 0x45b, 0x45c, 0, 0x45e, 0x45f,
9968     0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437,
9969     0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f,
9970     0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447,
9971     0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f,
9972     0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417,
9973     0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f,
9974     0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427,
9975     0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f,
9976     0, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407,
9977     0x408, 0x409, 0x40a, 0x40b, 0x40c, 0, 0x40e, 0x40f,
9978     0x461, 0x460, 0x463, 0x462, 0x465, 0x464, 0x467, 0x466,
9979     0x469, 0x468, 0x46b, 0x46a, 0x46d, 0x46c, 0x46f, 0x46e,
9980     0x471, 0x470, 0x473, 0x472, 0x475, 0x474, 0x477, 0x476,
9981     0x479, 0x478, 0x47b, 0x47a, 0x47d, 0x47c, 0x47f, 0x47e,
9982     0x481, 0x480, 0, 0, 0, 0, 0, 0,
9983     0, 0, 0, 0, 0, 0, 0, 0,
9984     0x491, 0x490, 0x493, 0x492, 0x495, 0x494, 0x497, 0x496,
9985     0x499, 0x498, 0x49b, 0x49a, 0x49d, 0x49c, 0x49f, 0x49e,
9986     0x4a1, 0x4a0, 0x4a3, 0x4a2, 0x4a5, 0x4a4, 0x4a7, 0x4a6,
9987     0x4a9, 0x4a8, 0x4ab, 0x4aa, 0x4ad, 0x4ac, 0x4af, 0x4ae,
9988     0x4b1, 0x4b0, 0x4b3, 0x4b2, 0x4b5, 0x4b4, 0x4b7, 0x4b6,
9989     0x4b9, 0x4b8, 0x4bb, 0x4ba, 0x4bd, 0x4bc, 0x4bf, 0x4be,
9990     0, 0x4c2, 0x4c1, 0x4c4, 0x4c3, 0, 0, 0x4c8,
9991     0x4c7, 0, 0, 0x4cc, 0x4cb, 0, 0, 0,
9992     0x4d1, 0x4d0, 0x4d3, 0x4d2, 0x4d5, 0x4d4, 0x4d7, 0x4d6,
9993     0x4d9, 0x4d8, 0x4db, 0x4da, 0x4dd, 0x4dc, 0x4df, 0x4de,
9994     0x4e1, 0x4e0, 0x4e3, 0x4e2, 0x4e5, 0x4e4, 0x4e7, 0x4e6,
9995     0x4e9, 0x4e8, 0x4eb, 0x4ea, 0, 0, 0x4ef, 0x4ee,
9996     0x4f1, 0x4f0, 0x4f3, 0x4f2, 0x4f5, 0x4f4, 0, 0,
9997     0x4f9, 0x4f8, 0, 0, 0, 0, 0, 0,
9998 };
9999
10000 static const Q_UINT16 case_5 [] = {
10001     0, 0, 0, 0, 0, 0, 0, 0,
10002     0, 0, 0, 0, 0, 0, 0, 0,
10003     0, 0, 0, 0, 0, 0, 0, 0,
10004     0, 0, 0, 0, 0, 0, 0, 0,
10005     0, 0, 0, 0, 0, 0, 0, 0,
10006     0, 0, 0, 0, 0, 0, 0, 0,
10007     0, 0x561, 0x562, 0x563, 0x564, 0x565, 0x566, 0x567,
10008     0x568, 0x569, 0x56a, 0x56b, 0x56c, 0x56d, 0x56e, 0x56f,
10009     0x570, 0x571, 0x572, 0x573, 0x574, 0x575, 0x576, 0x577,
10010     0x578, 0x579, 0x57a, 0x57b, 0x57c, 0x57d, 0x57e, 0x57f,
10011     0x580, 0x581, 0x582, 0x583, 0x584, 0x585, 0x586, 0,
10012     0, 0, 0, 0, 0, 0, 0, 0,
10013     0, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537,
10014     0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f,
10015     0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547,
10016     0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f,
10017     0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0x0,
10018     0, 0, 0, 0, 0, 0, 0, 0,
10019     0, 0, 0, 0, 0, 0, 0, 0,
10020     0, 0, 0, 0, 0, 0, 0, 0,
10021     0, 0, 0, 0, 0, 0, 0, 0,
10022     0, 0, 0, 0, 0, 0, 0, 0,
10023     0, 0, 0, 0, 0, 0, 0, 0,
10024     0, 0, 0, 0, 0, 0, 0, 0,
10025     0, 0, 0, 0, 0, 0, 0, 0,
10026     0, 0, 0, 0, 0, 0, 0, 0,
10027     0, 0, 0, 0, 0, 0, 0, 0,
10028     0, 0, 0, 0, 0, 0, 0, 0,
10029     0, 0, 0, 0, 0, 0, 0, 0,
10030     0, 0, 0, 0, 0, 0, 0, 0,
10031     0, 0, 0, 0, 0, 0, 0, 0,
10032     0, 0, 0, 0, 0, 0, 0, 0,
10033 };
10034
10035 static const Q_UINT16 case_10 [] = {
10036     0, 0, 0, 0, 0, 0, 0, 0,
10037     0, 0, 0, 0, 0, 0, 0, 0,
10038     0, 0, 0, 0, 0, 0, 0, 0,
10039     0, 0, 0, 0, 0, 0, 0, 0,
10040     0, 0, 0, 0, 0, 0, 0, 0,
10041     0, 0, 0, 0, 0, 0, 0, 0,
10042     0, 0, 0, 0, 0, 0, 0, 0,
10043     0, 0, 0, 0, 0, 0, 0, 0,
10044     0, 0, 0, 0, 0, 0, 0, 0,
10045     0, 0, 0, 0, 0, 0, 0, 0,
10046     0, 0, 0, 0, 0, 0, 0, 0,
10047     0, 0, 0, 0, 0, 0, 0, 0,
10048     0, 0, 0, 0, 0, 0, 0, 0,
10049     0, 0, 0, 0, 0, 0, 0, 0,
10050     0, 0, 0, 0, 0, 0, 0, 0,
10051     0, 0, 0, 0, 0, 0, 0, 0,
10052     0, 0, 0, 0, 0, 0, 0, 0,
10053     0, 0, 0, 0, 0, 0, 0, 0,
10054     0, 0, 0, 0, 0, 0, 0, 0,
10055     0, 0, 0, 0, 0, 0, 0, 0,
10056     0x10d0, 0x10d1, 0x10d2, 0x10d3, 0x10d4, 0x10d5, 0x10d6, 0x10d7,
10057     0x10d8, 0x10d9, 0x10da, 0x10db, 0x10dc, 0x10dd, 0x10de, 0x10df,
10058     0x10e0, 0x10e1, 0x10e2, 0x10e3, 0x10e4, 0x10e5, 0x10e6, 0x10e7,
10059     0x10e8, 0x10e9, 0x10ea, 0x10eb, 0x10ec, 0x10ed, 0x10ee, 0x10ef,
10060     0x10f0, 0x10f1, 0x10f2, 0x10f3, 0x10f4, 0x10f5, 0, 0,
10061     0, 0, 0, 0, 0, 0, 0, 0,
10062     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10063     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10064     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10065     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10066     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0,
10067     0, 0, 0, 0, 0, 0, 0, 0,
10068 };
10069
10070 static const Q_UINT16 case_1e [] = {
10071     0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06,
10072     0x1e09, 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e,
10073     0x1e11, 0x1e10, 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16,
10074     0x1e19, 0x1e18, 0x1e1b, 0x1e1a, 0x1e1d, 0x1e1c, 0x1e1f, 0x1e1e,
10075     0x1e21, 0x1e20, 0x1e23, 0x1e22, 0x1e25, 0x1e24, 0x1e27, 0x1e26,
10076     0x1e29, 0x1e28, 0x1e2b, 0x1e2a, 0x1e2d, 0x1e2c, 0x1e2f, 0x1e2e,
10077     0x1e31, 0x1e30, 0x1e33, 0x1e32, 0x1e35, 0x1e34, 0x1e37, 0x1e36,
10078     0x1e39, 0x1e38, 0x1e3b, 0x1e3a, 0x1e3d, 0x1e3c, 0x1e3f, 0x1e3e,
10079     0x1e41, 0x1e40, 0x1e43, 0x1e42, 0x1e45, 0x1e44, 0x1e47, 0x1e46,
10080     0x1e49, 0x1e48, 0x1e4b, 0x1e4a, 0x1e4d, 0x1e4c, 0x1e4f, 0x1e4e,
10081     0x1e51, 0x1e50, 0x1e53, 0x1e52, 0x1e55, 0x1e54, 0x1e57, 0x1e56,
10082     0x1e59, 0x1e58, 0x1e5b, 0x1e5a, 0x1e5d, 0x1e5c, 0x1e5f, 0x1e5e,
10083     0x1e61, 0x1e60, 0x1e63, 0x1e62, 0x1e65, 0x1e64, 0x1e67, 0x1e66,
10084     0x1e69, 0x1e68, 0x1e6b, 0x1e6a, 0x1e6d, 0x1e6c, 0x1e6f, 0x1e6e,
10085     0x1e71, 0x1e70, 0x1e73, 0x1e72, 0x1e75, 0x1e74, 0x1e77, 0x1e76,
10086     0x1e79, 0x1e78, 0x1e7b, 0x1e7a, 0x1e7d, 0x1e7c, 0x1e7f, 0x1e7e,
10087     0x1e81, 0x1e80, 0x1e83, 0x1e82, 0x1e85, 0x1e84, 0x1e87, 0x1e86,
10088     0x1e89, 0x1e88, 0x1e8b, 0x1e8a, 0x1e8d, 0x1e8c, 0x1e8f, 0x1e8e,
10089     0x1e91, 0x1e90, 0x1e93, 0x1e92, 0x1e95, 0x1e94, 0x0, 0x0,
10090     0x0, 0x0, 0x0, 0x1e60, 0, 0, 0, 0,
10091     0x1ea1, 0x1ea0, 0x1ea3, 0x1ea2, 0x1ea5, 0x1ea4, 0x1ea7, 0x1ea6,
10092     0x1ea9, 0x1ea8, 0x1eab, 0x1eaa, 0x1ead, 0x1eac, 0x1eaf, 0x1eae,
10093     0x1eb1, 0x1eb0, 0x1eb3, 0x1eb2, 0x1eb5, 0x1eb4, 0x1eb7, 0x1eb6,
10094     0x1eb9, 0x1eb8, 0x1ebb, 0x1eba, 0x1ebd, 0x1ebc, 0x1ebf, 0x1ebe,
10095     0x1ec1, 0x1ec0, 0x1ec3, 0x1ec2, 0x1ec5, 0x1ec4, 0x1ec7, 0x1ec6,
10096     0x1ec9, 0x1ec8, 0x1ecb, 0x1eca, 0x1ecd, 0x1ecc, 0x1ecf, 0x1ece,
10097     0x1ed1, 0x1ed0, 0x1ed3, 0x1ed2, 0x1ed5, 0x1ed4, 0x1ed7, 0x1ed6,
10098     0x1ed9, 0x1ed8, 0x1edb, 0x1eda, 0x1edd, 0x1edc, 0x1edf, 0x1ede,
10099     0x1ee1, 0x1ee0, 0x1ee3, 0x1ee2, 0x1ee5, 0x1ee4, 0x1ee7, 0x1ee6,
10100     0x1ee9, 0x1ee8, 0x1eeb, 0x1eea, 0x1eed, 0x1eec, 0x1eef, 0x1eee,
10101     0x1ef1, 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6,
10102     0x1ef9, 0x1ef8, 0, 0, 0, 0, 0, 0,
10103 };
10104
10105 static const Q_UINT16 case_1f [] = {
10106     0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f,
10107     0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07,
10108     0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0, 0,
10109     0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0, 0,
10110     0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f,
10111     0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27,
10112     0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f,
10113     0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37,
10114     0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0, 0,
10115     0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0, 0,
10116     0x0, 0x1f59, 0x0, 0x1f5b, 0x0, 0x1f5d, 0x0, 0x1f5f,
10117     0, 0x1f51, 0, 0x1f53, 0, 0x1f55, 0, 0x1f57,
10118     0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f,
10119     0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67,
10120     0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb,
10121     0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0, 0,
10122     0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f,
10123     0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87,
10124     0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f,
10125     0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
10126     0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf,
10127     0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
10128     0x1fb8, 0x1fb9, 0x0, 0x1fbc, 0x0, 0, 0x0, 0x0,
10129     0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0, 0x399, 0,
10130     0, 0, 0x0, 0x1fcc, 0x0, 0, 0x0, 0x0,
10131     0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0, 0, 0,
10132     0x1fd8, 0x1fd9, 0x0, 0x0, 0, 0, 0x0, 0x0,
10133     0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0, 0, 0, 0,
10134     0x1fe8, 0x1fe9, 0x0, 0x0, 0x0, 0x1fec, 0x0, 0x0,
10135     0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0, 0, 0,
10136     0, 0, 0x0, 0x1ffc, 0x0, 0, 0x0, 0x0,
10137     0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0, 0, 0,
10138 };
10139
10140 static const Q_UINT16 case_20 [] = {
10141     0, 0, 0, 0, 0, 0, 0, 0,
10142     0, 0, 0, 0, 0, 0, 0, 0,
10143     0, 0, 0, 0, 0, 0, 0, 0,
10144     0, 0, 0, 0, 0, 0, 0, 0,
10145     0, 0, 0, 0, 0, 0, 0, 0,
10146     0, 0, 0, 0, 0, 0, 0, 0,
10147     0, 0, 0, 0, 0, 0, 0, 0,
10148     0, 0, 0, 0, 0, 0, 0, 0,
10149     0, 0, 0, 0, 0, 0, 0, 0,
10150     0, 0, 0, 0, 0, 0, 0, 0,
10151     0, 0, 0, 0, 0, 0, 0, 0,
10152     0, 0, 0, 0, 0, 0, 0, 0,
10153     0, 0, 0, 0, 0, 0, 0, 0,
10154     0, 0, 0, 0, 0, 0, 0, 0,
10155     0, 0, 0, 0, 0, 0, 0, 0,
10156     0, 0, 0, 0, 0, 0, 0, 0x0,
10157     0, 0, 0, 0, 0, 0, 0, 0,
10158     0, 0, 0, 0, 0, 0, 0, 0,
10159     0, 0, 0, 0, 0, 0, 0, 0,
10160     0, 0, 0, 0, 0, 0, 0, 0,
10161     0, 0, 0, 0, 0, 0, 0, 0,
10162     0, 0, 0, 0, 0, 0, 0, 0,
10163     0, 0, 0, 0, 0, 0, 0, 0,
10164     0, 0, 0, 0, 0, 0, 0, 0,
10165     0, 0, 0, 0, 0, 0, 0, 0,
10166     0, 0, 0, 0, 0, 0, 0, 0,
10167     0, 0, 0, 0, 0, 0, 0, 0,
10168     0, 0, 0, 0, 0, 0, 0, 0,
10169     0, 0, 0, 0, 0, 0, 0, 0,
10170     0, 0, 0, 0, 0, 0, 0, 0,
10171     0, 0, 0, 0, 0, 0, 0, 0,
10172     0, 0, 0, 0, 0, 0, 0, 0,
10173 };
10174
10175 static const Q_UINT16 case_21 [] = {
10176     0, 0, 0x0, 0, 0, 0, 0, 0x0,
10177     0, 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10178     0x0, 0x0, 0x0, 0x0, 0, 0x0, 0, 0,
10179     0x761, 0x0, 0x0, 0x0, 0x0, 0x0, 0, 0,
10180     0, 0, 0, 0, 0x0, 0, 0x0, 0,
10181     0x0, 0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
10182     0x0, 0x0, 0, 0x0, 0x0, 0, 0, 0,
10183     0, 0, 0, 0, 0, 0, 0, 0,
10184     0, 0, 0, 0, 0, 0, 0, 0,
10185     0, 0, 0, 0, 0, 0, 0, 0,
10186     0, 0, 0, 0, 0, 0, 0, 0,
10187     0, 0, 0, 0, 0, 0, 0, 0,
10188     0, 0, 0, 0, 0, 0, 0, 0,
10189     0, 0, 0, 0, 0, 0, 0, 0,
10190     0, 0, 0, 0, 0, 0, 0, 0,
10191     0, 0, 0, 0, 0, 0, 0, 0,
10192     0, 0, 0, 0, 0, 0, 0, 0,
10193     0, 0, 0, 0, 0, 0, 0, 0,
10194     0, 0, 0, 0, 0, 0, 0, 0,
10195     0, 0, 0, 0, 0, 0, 0, 0,
10196     0, 0, 0, 0, 0, 0, 0, 0,
10197     0, 0, 0, 0, 0, 0, 0, 0,
10198     0, 0, 0, 0, 0, 0, 0, 0,
10199     0, 0, 0, 0, 0, 0, 0, 0,
10200     0, 0, 0, 0, 0, 0, 0, 0,
10201     0, 0, 0, 0, 0, 0, 0, 0,
10202     0, 0, 0, 0, 0, 0, 0, 0,
10203     0, 0, 0, 0, 0, 0, 0, 0,
10204     0, 0, 0, 0, 0, 0, 0, 0,
10205     0, 0, 0, 0, 0, 0, 0, 0,
10206     0, 0, 0, 0, 0, 0, 0, 0,
10207     0, 0, 0, 0, 0, 0, 0, 0,
10208 };
10209
10210 static const Q_UINT16 case_fb [] = {
10211     0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0,
10212     0, 0, 0, 0, 0, 0, 0, 0,
10213     0, 0, 0, 0x0, 0x0, 0x0, 0x0, 0x0,
10214     0, 0, 0, 0, 0, 0, 0, 0,
10215     0, 0, 0, 0, 0, 0, 0, 0,
10216     0, 0, 0, 0, 0, 0, 0, 0,
10217     0, 0, 0, 0, 0, 0, 0, 0,
10218     0, 0, 0, 0, 0, 0, 0, 0,
10219     0, 0, 0, 0, 0, 0, 0, 0,
10220     0, 0, 0, 0, 0, 0, 0, 0,
10221     0, 0, 0, 0, 0, 0, 0, 0,
10222     0, 0, 0, 0, 0, 0, 0, 0,
10223     0, 0, 0, 0, 0, 0, 0, 0,
10224     0, 0, 0, 0, 0, 0, 0, 0,
10225     0, 0, 0, 0, 0, 0, 0, 0,
10226     0, 0, 0, 0, 0, 0, 0, 0,
10227     0, 0, 0, 0, 0, 0, 0, 0,
10228     0, 0, 0, 0, 0, 0, 0, 0,
10229     0, 0, 0, 0, 0, 0, 0, 0,
10230     0, 0, 0, 0, 0, 0, 0, 0,
10231     0, 0, 0, 0, 0, 0, 0, 0,
10232     0, 0, 0, 0, 0, 0, 0, 0,
10233     0, 0, 0, 0, 0, 0, 0, 0,
10234     0, 0, 0, 0, 0, 0, 0, 0,
10235     0, 0, 0, 0, 0, 0, 0, 0,
10236     0, 0, 0, 0, 0, 0, 0, 0,
10237     0, 0, 0, 0, 0, 0, 0, 0,
10238     0, 0, 0, 0, 0, 0, 0, 0,
10239     0, 0, 0, 0, 0, 0, 0, 0,
10240     0, 0, 0, 0, 0, 0, 0, 0,
10241     0, 0, 0, 0, 0, 0, 0, 0,
10242     0, 0, 0, 0, 0, 0, 0, 0,
10243 };
10244
10245 static const Q_UINT16 case_ff [] = {
10246     0, 0, 0, 0, 0, 0, 0, 0,
10247     0, 0, 0, 0, 0, 0, 0, 0,
10248     0, 0, 0, 0, 0, 0, 0, 0,
10249     0, 0, 0, 0, 0, 0, 0, 0,
10250     0, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
10251     0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
10252     0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
10253     0xff58, 0xff59, 0xff5a, 0, 0, 0, 0, 0,
10254     0, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
10255     0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
10256     0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
10257     0xff38, 0xff39, 0xff3a, 0, 0, 0, 0, 0,
10258     0, 0, 0, 0, 0, 0, 0, 0,
10259     0, 0, 0, 0, 0, 0, 0, 0,
10260     0, 0, 0, 0, 0, 0, 0, 0,
10261     0, 0, 0, 0, 0, 0, 0, 0,
10262     0, 0, 0, 0, 0, 0, 0, 0,
10263     0, 0, 0, 0, 0, 0, 0, 0,
10264     0, 0, 0, 0, 0, 0, 0, 0,
10265     0, 0, 0, 0, 0, 0, 0, 0,
10266     0, 0, 0, 0, 0, 0, 0, 0,
10267     0, 0, 0, 0, 0, 0, 0, 0,
10268     0, 0, 0, 0, 0, 0, 0, 0,
10269     0, 0, 0, 0, 0, 0, 0, 0,
10270     0, 0, 0, 0, 0, 0, 0, 0,
10271     0, 0, 0, 0, 0, 0, 0, 0,
10272     0, 0, 0, 0, 0, 0, 0, 0,
10273     0, 0, 0, 0, 0, 0, 0, 0,
10274     0, 0, 0, 0, 0, 0, 0, 0,
10275     0, 0, 0, 0, 0, 0, 0, 0,
10276     0, 0, 0, 0, 0, 0, 0, 0,
10277     0, 0, 0, 0, 0, 0, 0, 0,
10278 };
10279
10280 static const Q_UINT16 * const case_info[256] = {
10281
10282     case_0, case_1, case_2, case_3, case_4, case_5, 0, 0,
10283     0, 0, 0, 0, 0, 0, 0, 0,
10284     case_10, 0, 0, 0, 0, 0, 0, 0,
10285     0, 0, 0, 0, 0, 0, case_1e, case_1f,
10286     case_20, case_21, 0, 0, 0, 0, 0, 0,
10287     0, 0, 0, 0, 0, 0, 0, 0,
10288     0, 0, 0, 0, 0, 0, 0, 0,
10289     0, 0, 0, 0, 0, 0, 0, 0,
10290     0, 0, 0, 0, 0, 0, 0, 0,
10291     0, 0, 0, 0, 0, 0, 0, 0,
10292     0, 0, 0, 0, 0, 0, 0, 0,
10293     0, 0, 0, 0, 0, 0, 0, 0,
10294     0, 0, 0, 0, 0, 0, 0, 0,
10295     0, 0, 0, 0, 0, 0, 0, 0,
10296     0, 0, 0, 0, 0, 0, 0, 0,
10297     0, 0, 0, 0, 0, 0, 0, 0,
10298     0, 0, 0, 0, 0, 0, 0, 0,
10299     0, 0, 0, 0, 0, 0, 0, 0,
10300     0, 0, 0, 0, 0, 0, 0, 0,
10301     0, 0, 0, 0, 0, 0, 0, 0,
10302     0, 0, 0, 0, 0, 0, 0, 0,
10303     0, 0, 0, 0, 0, 0, 0, 0,
10304     0, 0, 0, 0, 0, 0, 0, 0,
10305     0, 0, 0, 0, 0, 0, 0, 0,
10306     0, 0, 0, 0, 0, 0, 0, 0,
10307     0, 0, 0, 0, 0, 0, 0, 0,
10308     0, 0, 0, 0, 0, 0, 0, 0,
10309     0, 0, 0, 0, 0, 0, 0, 0,
10310     0, 0, 0, 0, 0, 0, 0, 0,
10311     0, 0, 0, 0, 0, 0, 0, 0,
10312     0, 0, 0, 0, 0, 0, 0, 0,
10313     0, 0, 0, case_fb, 0, 0, 0, case_ff,
10314 };
10315
10316 static const Q_INT8 num_0 [] = {
10317     -1, -1, -1, -1, -1, -1, -1, -1,
10318     -1, -1, -1, -1, -1, -1, -1, -1,
10319     -1, -1, -1, -1, -1, -1, -1, -1,
10320     -1, -1, -1, -1, -1, -1, -1, -1,
10321     -1, -1, -1, -1, -1, -1, -1, -1,
10322     -1, -1, -1, -1, -1, -1, -1, -1,
10323     0, 1, 2, 3, 4, 5, 6, 7,
10324     8, 9, -1, -1, -1, -1, -1, -1,
10325     -1, -1, -1, -1, -1, -1, -1, -1,
10326     -1, -1, -1, -1, -1, -1, -1, -1,
10327     -1, -1, -1, -1, -1, -1, -1, -1,
10328     -1, -1, -1, -1, -1, -1, -1, -1,
10329     -1, -1, -1, -1, -1, -1, -1, -1,
10330     -1, -1, -1, -1, -1, -1, -1, -1,
10331     -1, -1, -1, -1, -1, -1, -1, -1,
10332     -1, -1, -1, -1, -1, -1, -1, -1,
10333     -1, -1, -1, -1, -1, -1, -1, -1,
10334     -1, -1, -1, -1, -1, -1, -1, -1,
10335     -1, -1, -1, -1, -1, -1, -1, -1,
10336     -1, -1, -1, -1, -1, -1, -1, -1,
10337     -1, -1, -1, -1, -1, -1, -1, -1,
10338     -1, -1, -1, -1, -1, -1, -1, -1,
10339     -1, -1, 2, 3, -1, -1, -1, -1,
10340     -1, 1, -1, -1, -1, -1, -1, -1,
10341     -1, -1, -1, -1, -1, -1, -1, -1,
10342     -1, -1, -1, -1, -1, -1, -1, -1,
10343     -1, -1, -1, -1, -1, -1, -1, -1,
10344     -1, -1, -1, -1, -1, -1, -1, -1,
10345     -1, -1, -1, -1, -1, -1, -1, -1,
10346     -1, -1, -1, -1, -1, -1, -1, -1,
10347     -1, -1, -1, -1, -1, -1, -1, -1,
10348     -1, -1, -1, -1, -1, -1, -1, -1,
10349 };
10350
10351 static const Q_INT8 num_6 [] = {
10352     -1, -1, -1, -1, -1, -1, -1, -1,
10353     -1, -1, -1, -1, -1, -1, -1, -1,
10354     -1, -1, -1, -1, -1, -1, -1, -1,
10355     -1, -1, -1, -1, -1, -1, -1, -1,
10356     -1, -1, -1, -1, -1, -1, -1, -1,
10357     -1, -1, -1, -1, -1, -1, -1, -1,
10358     -1, -1, -1, -1, -1, -1, -1, -1,
10359     -1, -1, -1, -1, -1, -1, -1, -1,
10360     -1, -1, -1, -1, -1, -1, -1, -1,
10361     -1, -1, -1, -1, -1, -1, -1, -1,
10362     -1, -1, -1, -1, -1, -1, -1, -1,
10363     -1, -1, -1, -1, -1, -1, -1, -1,
10364     0, 1, 2, 3, 4, 5, 6, 7,
10365     8, 9, -1, -1, -1, -1, -1, -1,
10366     -1, -1, -1, -1, -1, -1, -1, -1,
10367     -1, -1, -1, -1, -1, -1, -1, -1,
10368     -1, -1, -1, -1, -1, -1, -1, -1,
10369     -1, -1, -1, -1, -1, -1, -1, -1,
10370     -1, -1, -1, -1, -1, -1, -1, -1,
10371     -1, -1, -1, -1, -1, -1, -1, -1,
10372     -1, -1, -1, -1, -1, -1, -1, -1,
10373     -1, -1, -1, -1, -1, -1, -1, -1,
10374     -1, -1, -1, -1, -1, -1, -1, -1,
10375     -1, -1, -1, -1, -1, -1, -1, -1,
10376     -1, -1, -1, -1, -1, -1, -1, -1,
10377     -1, -1, -1, -1, -1, -1, -1, -1,
10378     -1, -1, -1, -1, -1, -1, -1, -1,
10379     -1, -1, -1, -1, -1, -1, -1, -1,
10380     -1, -1, -1, -1, -1, -1, -1, -1,
10381     -1, -1, -1, -1, -1, -1, -1, -1,
10382     0, 1, 2, 3, 4, 5, 6, 7,
10383     8, 9, -1, -1, -1, -1, -1, -1,
10384 };
10385
10386 static const Q_INT8 num_9 [] = {
10387     -1, -1, -1, -1, -1, -1, -1, -1,
10388     -1, -1, -1, -1, -1, -1, -1, -1,
10389     -1, -1, -1, -1, -1, -1, -1, -1,
10390     -1, -1, -1, -1, -1, -1, -1, -1,
10391     -1, -1, -1, -1, -1, -1, -1, -1,
10392     -1, -1, -1, -1, -1, -1, -1, -1,
10393     -1, -1, -1, -1, -1, -1, -1, -1,
10394     -1, -1, -1, -1, -1, -1, -1, -1,
10395     -1, -1, -1, -1, -1, -1, -1, -1,
10396     -1, -1, -1, -1, -1, -1, -1, -1,
10397     -1, -1, -1, -1, -1, -1, -1, -1,
10398     -1, -1, -1, -1, -1, -1, -1, -1,
10399     -1, -1, -1, -1, -1, -1, 0, 1,
10400     2, 3, 4, 5, 6, 7, 8, 9,
10401     -1, -1, -1, -1, -1, -1, -1, -1,
10402     -1, -1, -1, -1, -1, -1, -1, -1,
10403     -1, -1, -1, -1, -1, -1, -1, -1,
10404     -1, -1, -1, -1, -1, -1, -1, -1,
10405     -1, -1, -1, -1, -1, -1, -1, -1,
10406     -1, -1, -1, -1, -1, -1, -1, -1,
10407     -1, -1, -1, -1, -1, -1, -1, -1,
10408     -1, -1, -1, -1, -1, -1, -1, -1,
10409     -1, -1, -1, -1, -1, -1, -1, -1,
10410     -1, -1, -1, -1, -1, -1, -1, -1,
10411     -1, -1, -1, -1, -1, -1, -1, -1,
10412     -1, -1, -1, -1, -1, -1, -1, -1,
10413     -1, -1, -1, -1, -1, -1, -1, -1,
10414     -1, -1, -1, -1, -1, -1, -1, -1,
10415     -1, -1, -1, -1, -1, -1, 0, 1,
10416     2, 3, 4, 5, 6, 7, 8, 9,
10417     -1, -1, -1, -1, -1, -1, -1, -1,
10418     -1, -1, -1, -1, -1, -1, -1, -1,
10419 };
10420
10421 static const Q_INT8 num_b [] = {
10422     -1, -1, -1, -1, -1, -1, -1, -1,
10423     -1, -1, -1, -1, -1, -1, -1, -1,
10424     -1, -1, -1, -1, -1, -1, -1, -1,
10425     -1, -1, -1, -1, -1, -1, -1, -1,
10426     -1, -1, -1, -1, -1, -1, -1, -1,
10427     -1, -1, -1, -1, -1, -1, -1, -1,
10428     -1, -1, -1, -1, -1, -1, -1, -1,
10429     -1, -1, -1, -1, -1, -1, -1, -1,
10430     -1, -1, -1, -1, -1, -1, -1, -1,
10431     -1, -1, -1, -1, -1, -1, -1, -1,
10432     -1, -1, -1, -1, -1, -1, -1, -1,
10433     -1, -1, -1, -1, -1, -1, -1, -1,
10434     -1, -1, -1, -1, -1, -1, 0, 1,
10435     2, 3, 4, 5, 6, 7, 8, 9,
10436     -1, -1, -1, -1, -1, -1, -1, -1,
10437     -1, -1, -1, -1, -1, -1, -1, -1,
10438     -1, -1, -1, -1, -1, -1, -1, -1,
10439     -1, -1, -1, -1, -1, -1, -1, -1,
10440     -1, -1, -1, -1, -1, -1, -1, -1,
10441     -1, -1, -1, -1, -1, -1, -1, -1,
10442     -1, -1, -1, -1, -1, -1, -1, -1,
10443     -1, -1, -1, -1, -1, -1, -1, -1,
10444     -1, -1, -1, -1, -1, -1, -1, -1,
10445     -1, -1, -1, -1, -1, -1, -1, -1,
10446     -1, -1, -1, -1, -1, -1, -1, -1,
10447     -1, -1, -1, -1, -1, -1, -1, -1,
10448     -1, -1, -1, -1, -1, -1, -1, -1,
10449     -1, -1, -1, -1, -1, -1, -1, -1,
10450     -1, -1, -1, -1, -1, -1, -1, 1,
10451     2, 3, 4, 5, 6, 7, 8, 9,
10452     -1, -1, -1, -1, -1, -1, -1, -1,
10453     -1, -1, -1, -1, -1, -1, -1, -1,
10454 };
10455
10456 static const Q_INT8 num_d [] = {
10457     -1, -1, -1, -1, -1, -1, -1, -1,
10458     -1, -1, -1, -1, -1, -1, -1, -1,
10459     -1, -1, -1, -1, -1, -1, -1, -1,
10460     -1, -1, -1, -1, -1, -1, -1, -1,
10461     -1, -1, -1, -1, -1, -1, -1, -1,
10462     -1, -1, -1, -1, -1, -1, -1, -1,
10463     -1, -1, -1, -1, -1, -1, -1, -1,
10464     -1, -1, -1, -1, -1, -1, -1, -1,
10465     -1, -1, -1, -1, -1, -1, -1, -1,
10466     -1, -1, -1, -1, -1, -1, -1, -1,
10467     -1, -1, -1, -1, -1, -1, -1, -1,
10468     -1, -1, -1, -1, -1, -1, -1, -1,
10469     -1, -1, -1, -1, -1, -1, 0, 1,
10470     2, 3, 4, 5, 6, 7, 8, 9,
10471     -1, -1, -1, -1, -1, -1, -1, -1,
10472     -1, -1, -1, -1, -1, -1, -1, -1,
10473     -1, -1, -1, -1, -1, -1, -1, -1,
10474     -1, -1, -1, -1, -1, -1, -1, -1,
10475     -1, -1, -1, -1, -1, -1, -1, -1,
10476     -1, -1, -1, -1, -1, -1, -1, -1,
10477     -1, -1, -1, -1, -1, -1, -1, -1,
10478     -1, -1, -1, -1, -1, -1, -1, -1,
10479     -1, -1, -1, -1, -1, -1, -1, -1,
10480     -1, -1, -1, -1, -1, -1, -1, -1,
10481     -1, -1, -1, -1, -1, -1, -1, -1,
10482     -1, -1, -1, -1, -1, -1, -1, -1,
10483     -1, -1, -1, -1, -1, -1, -1, -1,
10484     -1, -1, -1, -1, -1, -1, -1, -1,
10485     -1, -1, -1, -1, -1, -1, -1, -1,
10486     -1, -1, -1, -1, -1, -1, -1, -1,
10487     -1, -1, -1, -1, -1, -1, -1, -1,
10488     -1, -1, -1, -1, -1, -1, -1, -1,
10489 };
10490
10491 static const Q_INT8 num_e [] = {
10492     -1, -1, -1, -1, -1, -1, -1, -1,
10493     -1, -1, -1, -1, -1, -1, -1, -1,
10494     -1, -1, -1, -1, -1, -1, -1, -1,
10495     -1, -1, -1, -1, -1, -1, -1, -1,
10496     -1, -1, -1, -1, -1, -1, -1, -1,
10497     -1, -1, -1, -1, -1, -1, -1, -1,
10498     -1, -1, -1, -1, -1, -1, -1, -1,
10499     -1, -1, -1, -1, -1, -1, -1, -1,
10500     -1, -1, -1, -1, -1, -1, -1, -1,
10501     -1, -1, -1, -1, -1, -1, -1, -1,
10502     0, 1, 2, 3, 4, 5, 6, 7,
10503     8, 9, -1, -1, -1, -1, -1, -1,
10504     -1, -1, -1, -1, -1, -1, -1, -1,
10505     -1, -1, -1, -1, -1, -1, -1, -1,
10506     -1, -1, -1, -1, -1, -1, -1, -1,
10507     -1, -1, -1, -1, -1, -1, -1, -1,
10508     -1, -1, -1, -1, -1, -1, -1, -1,
10509     -1, -1, -1, -1, -1, -1, -1, -1,
10510     -1, -1, -1, -1, -1, -1, -1, -1,
10511     -1, -1, -1, -1, -1, -1, -1, -1,
10512     -1, -1, -1, -1, -1, -1, -1, -1,
10513     -1, -1, -1, -1, -1, -1, -1, -1,
10514     -1, -1, -1, -1, -1, -1, -1, -1,
10515     -1, -1, -1, -1, -1, -1, -1, -1,
10516     -1, -1, -1, -1, -1, -1, -1, -1,
10517     -1, -1, -1, -1, -1, -1, -1, -1,
10518     0, 1, 2, 3, 4, 5, 6, 7,
10519     8, 9, -1, -1, -1, -1, -1, -1,
10520     -1, -1, -1, -1, -1, -1, -1, -1,
10521     -1, -1, -1, -1, -1, -1, -1, -1,
10522     -1, -1, -1, -1, -1, -1, -1, -1,
10523     -1, -1, -1, -1, -1, -1, -1, -1,
10524 };
10525
10526 static const Q_INT8 num_f [] = {
10527     -1, -1, -1, -1, -1, -1, -1, -1,
10528     -1, -1, -1, -1, -1, -1, -1, -1,
10529     -1, -1, -1, -1, -1, -1, -1, -1,
10530     -1, -1, -1, -1, -1, -1, -1, -1,
10531     0, 1, 2, 3, 4, 5, 6, 7,
10532     8, 9, -1, -1, -1, -1, -1, -1,
10533     -1, -1, -1, -1, -1, -1, -1, -1,
10534     -1, -1, -1, -1, -1, -1, -1, -1,
10535     -1, -1, -1, -1, -1, -1, -1, -1,
10536     -1, -1, -1, -1, -1, -1, -1, -1,
10537     -1, -1, -1, -1, -1, -1, -1, -1,
10538     -1, -1, -1, -1, -1, -1, -1, -1,
10539     -1, -1, -1, -1, -1, -1, -1, -1,
10540     -1, -1, -1, -1, -1, -1, -1, -1,
10541     -1, -1, -1, -1, -1, -1, -1, -1,
10542     -1, -1, -1, -1, -1, -1, -1, -1,
10543     -1, -1, -1, -1, -1, -1, -1, -1,
10544     -1, -1, -1, -1, -1, -1, -1, -1,
10545     -1, -1, -1, -1, -1, -1, -1, -1,
10546     -1, -1, -1, -1, -1, -1, -1, -1,
10547     -1, -1, -1, -1, -1, -1, -1, -1,
10548     -1, -1, -1, -1, -1, -1, -1, -1,
10549     -1, -1, -1, -1, -1, -1, -1, -1,
10550     -1, -1, -1, -1, -1, -1, -1, -1,
10551     -1, -1, -1, -1, -1, -1, -1, -1,
10552     -1, -1, -1, -1, -1, -1, -1, -1,
10553     -1, -1, -1, -1, -1, -1, -1, -1,
10554     -1, -1, -1, -1, -1, -1, -1, -1,
10555     -1, -1, -1, -1, -1, -1, -1, -1,
10556     -1, -1, -1, -1, -1, -1, -1, -1,
10557     -1, -1, -1, -1, -1, -1, -1, -1,
10558     -1, -1, -1, -1, -1, -1, -1, -1,
10559 };
10560
10561 static const Q_INT8 num_20 [] = {
10562     -1, -1, -1, -1, -1, -1, -1, -1,
10563     -1, -1, -1, -1, -1, -1, -1, -1,
10564     -1, -1, -1, -1, -1, -1, -1, -1,
10565     -1, -1, -1, -1, -1, -1, -1, -1,
10566     -1, -1, -1, -1, -1, -1, -1, -1,
10567     -1, -1, -1, -1, -1, -1, -1, -1,
10568     -1, -1, -1, -1, -1, -1, -1, -1,
10569     -1, -1, -1, -1, -1, -1, -1, -1,
10570     -1, -1, -1, -1, -1, -1, -1, -1,
10571     -1, -1, -1, -1, -1, -1, -1, -1,
10572     -1, -1, -1, -1, -1, -1, -1, -1,
10573     -1, -1, -1, -1, -1, -1, -1, -1,
10574     -1, -1, -1, -1, -1, -1, -1, -1,
10575     -1, -1, -1, -1, -1, -1, -1, -1,
10576     0, -1, -1, -1, 4, 5, 6, 7,
10577     8, 9, -1, -1, -1, -1, -1, -1,
10578     0, 1, 2, 3, 4, 5, 6, 7,
10579     8, 9, -1, -1, -1, -1, -1, -1,
10580     -1, -1, -1, -1, -1, -1, -1, -1,
10581     -1, -1, -1, -1, -1, -1, -1, -1,
10582     -1, -1, -1, -1, -1, -1, -1, -1,
10583     -1, -1, -1, -1, -1, -1, -1, -1,
10584     -1, -1, -1, -1, -1, -1, -1, -1,
10585     -1, -1, -1, -1, -1, -1, -1, -1,
10586     -1, -1, -1, -1, -1, -1, -1, -1,
10587     -1, -1, -1, -1, -1, -1, -1, -1,
10588     -1, -1, -1, -1, -1, -1, -1, -1,
10589     -1, -1, -1, -1, -1, -1, -1, -1,
10590     -1, -1, -1, -1, -1, -1, -1, -1,
10591     -1, -1, -1, -1, -1, -1, -1, -1,
10592     -1, -1, -1, -1, -1, -1, -1, -1,
10593     -1, -1, -1, -1, -1, -1, -1, -1,
10594 };
10595
10596 static const Q_INT8 num_ff [] = {
10597     -1, -1, -1, -1, -1, -1, -1, -1,
10598     -1, -1, -1, -1, -1, -1, -1, -1,
10599     0, 1, 2, 3, 4, 5, 6, 7,
10600     8, 9, -1, -1, -1, -1, -1, -1,
10601     -1, -1, -1, -1, -1, -1, -1, -1,
10602     -1, -1, -1, -1, -1, -1, -1, -1,
10603     -1, -1, -1, -1, -1, -1, -1, -1,
10604     -1, -1, -1, -1, -1, -1, -1, -1,
10605     -1, -1, -1, -1, -1, -1, -1, -1,
10606     -1, -1, -1, -1, -1, -1, -1, -1,
10607     -1, -1, -1, -1, -1, -1, -1, -1,
10608     -1, -1, -1, -1, -1, -1, -1, -1,
10609     -1, -1, -1, -1, -1, -1, -1, -1,
10610     -1, -1, -1, -1, -1, -1, -1, -1,
10611     -1, -1, -1, -1, -1, -1, -1, -1,
10612     -1, -1, -1, -1, -1, -1, -1, -1,
10613     -1, -1, -1, -1, -1, -1, -1, -1,
10614     -1, -1, -1, -1, -1, -1, -1, -1,
10615     -1, -1, -1, -1, -1, -1, -1, -1,
10616     -1, -1, -1, -1, -1, -1, -1, -1,
10617     -1, -1, -1, -1, -1, -1, -1, -1,
10618     -1, -1, -1, -1, -1, -1, -1, -1,
10619     -1, -1, -1, -1, -1, -1, -1, -1,
10620     -1, -1, -1, -1, -1, -1, -1, -1,
10621     -1, -1, -1, -1, -1, -1, -1, -1,
10622     -1, -1, -1, -1, -1, -1, -1, -1,
10623     -1, -1, -1, -1, -1, -1, -1, -1,
10624     -1, -1, -1, -1, -1, -1, -1, -1,
10625     -1, -1, -1, -1, -1, -1, -1, -1,
10626     -1, -1, -1, -1, -1, -1, -1, -1,
10627     -1, -1, -1, -1, -1, -1, -1, -1,
10628     -1, -1, -1, -1, -1, -1, -1, -1,
10629 };
10630
10631 static const Q_INT8 * const decimal_info[256] = {
10632      num_0, 0, 0, 0, 0, 0, num_6, 0,
10633      0, num_9, num_9, num_b, num_9, num_d, num_e, num_f,
10634      0, 0, 0, 0, 0, 0, 0, 0,
10635      0, 0, 0, 0, 0, 0, 0, 0,
10636      num_20, 0, 0, 0, 0, 0, 0, 0,
10637      0, 0, 0, 0, 0, 0, 0, 0,
10638      0, 0, 0, 0, 0, 0, 0, 0,
10639      0, 0, 0, 0, 0, 0, 0, 0,
10640      0, 0, 0, 0, 0, 0, 0, 0,
10641      0, 0, 0, 0, 0, 0, 0, 0,
10642      0, 0, 0, 0, 0, 0, 0, 0,
10643      0, 0, 0, 0, 0, 0, 0, 0,
10644      0, 0, 0, 0, 0, 0, 0, 0,
10645      0, 0, 0, 0, 0, 0, 0, 0,
10646      0, 0, 0, 0, 0, 0, 0, 0,
10647      0, 0, 0, 0, 0, 0, 0, 0,
10648      0, 0, 0, 0, 0, 0, 0, 0,
10649      0, 0, 0, 0, 0, 0, 0, 0,
10650      0, 0, 0, 0, 0, 0, 0, 0,
10651      0, 0, 0, 0, 0, 0, 0, 0,
10652      0, 0, 0, 0, 0, 0, 0, 0,
10653      0, 0, 0, 0, 0, 0, 0, 0,
10654      0, 0, 0, 0, 0, 0, 0, 0,
10655      0, 0, 0, 0, 0, 0, 0, 0,
10656      0, 0, 0, 0, 0, 0, 0, 0,
10657      0, 0, 0, 0, 0, 0, 0, 0,
10658      0, 0, 0, 0, 0, 0, 0, 0,
10659      0, 0, 0, 0, 0, 0, 0, 0,
10660      0, 0, 0, 0, 0, 0, 0, 0,
10661      0, 0, 0, 0, 0, 0, 0, 0,
10662      0, 0, 0, 0, 0, 0, 0, 0,
10663      0, 0, 0, 0, 0, 0, 0, num_ff,
10664 };
10665
10666 static const Q_UINT16 symmetricPairs[] = {
10667     0x0028, 0x0029, 0x0029, 0x0028, 0x003C, 0x003E, 0x003E, 0x003C,
10668     0x005B, 0x005D, 0x005D, 0x005B, 0x007B, 0x007D, 0x007D, 0x007B,
10669     0x2045, 0x2046, 0x2046, 0x2045, 0x207D, 0x207E, 0x207E, 0x207D,
10670     0x208D, 0x208E, 0x208E, 0x208D, 0x3008, 0x3009, 0x3009, 0x3008,
10671     0x300A, 0x300B, 0x300B, 0x300A, 0x300C, 0x300D, 0x300D, 0x300C,
10672     0x300E, 0x300F, 0x300F, 0x300E, 0x3010, 0x3011, 0x3011, 0x3010,
10673     0x3014, 0x3015, 0x3015, 0x3014, 0x3016, 0x3017, 0x3017, 0x3016,
10674     0x3018, 0x3019, 0x3019, 0x3018, 0x301A, 0x301B, 0x301B, 0x301A,
10675     0xFD3E, 0xFD3F, 0xFD3F, 0xFD3E, 0xFE59, 0xFE5A, 0xFE5A, 0xFE59,
10676     0xFE5B, 0xFE5C, 0xFE5C, 0xFE5B, 0xFE5D, 0xFE5E, 0xFE5E, 0xFE5D,
10677     0xFF08, 0xFF09, 0xFF09, 0xFF08, 0xFF3B, 0xFF3D, 0xFF3D, 0xFF3B,
10678     0xFF5B, 0xFF5D, 0xFF5D, 0xFF5B, 0xFF62, 0xFF63, 0xFF63, 0xFF62,
10679 };
10680
10681 static int symmetricPairsSize =
10682    sizeof(symmetricPairs)/sizeof(symmetricPairs[0]);
10683
10684 /*
10685  * ----------------------------------------------------------------------
10686  * End of unicode tables
10687  * ----------------------------------------------------------------------
10688  */
10689
10690 #endif
10691
10692
10693 static int ucstrcmp( const QString &as, const QString &bs )
10694 {
10695     const QChar *a = as.unicode();
10696     const QChar *b = bs.unicode();
10697     if ( a == b )
10698         return 0;
10699     if ( a == 0 )
10700         return 1;
10701     if ( b == 0 )
10702         return -1;
10703     int l=QMIN(as.length(),bs.length());
10704     while ( l-- && *a == *b )
10705         a++,b++;
10706     if ( l==-1 )
10707         return ( as.length()-bs.length() );
10708     return a->unicode() - b->unicode();
10709 }
10710
10711 static int ucstrncmp( const QChar *a, const QChar *b, int l )
10712 {
10713     while ( l-- && *a == *b )
10714         a++,b++;
10715     if ( l==-1 )
10716         return 0;
10717     return a->unicode() - b->unicode();
10718 }
10719
10720 static int ucstrnicmp( const QChar *a, const QChar *b, int l )
10721 {
10722     while ( l-- && a->lower() == b->lower() )
10723         a++,b++;
10724     if ( l==-1 )
10725         return 0;
10726     QChar al = a->lower();
10727     QChar bl = b->lower();
10728     return al.unicode() - bl.unicode();
10729 }
10730
10731 // NOT REVISED
10732 /*! \class QCharRef qstring.h
10733   \brief The QCharRef class is a helper class for QString.
10734
10735   It provides the ability to work on characters in a QString in a natural
10736   fashion.
10737
10738   When you get an object of type QCharRef, you can assign to it, which
10739   will operate on the string from which you got it.  That is its whole
10740   purpose in life.  It becomes invalid once further modifications are
10741   made to the string: If you want to keep it, copy it into a QChar.
10742
10743   Most of the QChar member functions also exist in QCharRef.  However,
10744   they are not explicitly documented here.
10745
10746   \sa QString::operator[]() QString::at() QChar
10747 */
10748
10749 /*! \class QChar qstring.h
10750
10751 \brief The QChar class provides a light-weight Unicode character.
10752
10753 Unicode characters are (so far) 16-bit entities without any markup or
10754 structure.  This class represents such an entity.  It is rather
10755 light-weight, so it can be used everywhere.  Most compilers treat it
10756 approximately like "short int".  (In a few years, it may be necessary
10757 to make QChar 32-bit, once more than 65536 Unicode code points have
10758 been defined and come into use.)
10759
10760 QChar provides a full complement of testing/classification functions,
10761 conversion to and from other formats, from composed to decomposed
10762 unicode, and will try to compare and case-convert if you ask it to.
10763
10764 The classification functions include functions like those in ctype.h,
10765 but operating on the full range of unicode characters.  They all
10766 return TRUE if the character is a certain type of character, and FALSE
10767 otherwise.
10768
10769 These functions are: isNull() (returns TRUE if the character is
10770 U+0000), isPrint() (TRUE if the character is any sort of printable
10771 character, including whitespace), isPunct() (any sort of punctation),
10772 isMark() (Unicode Marks), isLetter (letters), isNumber() (any sort of
10773 numeric characters), isLetterOrNumber(),  and isDigit() (decimal digits).
10774 All of these are wrappers around category(), which returns the
10775 unicode-defined category of each character.
10776
10777 QChar further provides direction(), which indicates the "natural"
10778 writing direction of this character, joining(), which indicates how
10779 this character joins with its neighbors (needed mostly for Arabic)
10780 and finally mirrored(), which indicates whether this character needs
10781 to be mirrored when it is printed in its unnatural writing
10782 direction.
10783
10784 Composed Unicode characters (like &aring;) can be converted to
10785 decomposed Unicode ("a" followed by "ring above") using
10786 decomposition().
10787
10788 In Unicode, comparison is not necessarily possible, and case
10789 conversion is at best very hard.  Unicode, covering the "entire"
10790 globe, also includes a globe-sized collection of case and sorting
10791 problems.  Qt tries, but not very hard: operator== and friends will do
10792 comparison based purely on the numeric Unicode value (code point) of
10793 the characters, and upper() and lower() will do case changes when the
10794 character has a well-defined upper/lower-case equivalent. There is no
10795 provision for locale-dependent case folding rules or comparison: These
10796 functions are meant to be fast, so they can be used unambiguously in
10797 data structures.
10798
10799 The conversion functions include unicode() (to a scalar), latin1() (to
10800 scalar, but converts all non-Latin1 characters to 0), row() (gives the
10801 Unicode row), cell() (gives the unicode cell), digitValue() (gives the
10802 integer value of any of the numerous digit characters), and a host of
10803 constructors.
10804
10805 \sa QString QCharRef \link unicode.html About Unicode \endlink
10806 */
10807
10808 /*! \enum QChar::Category
10809
10810 This enum maps the Unicode character categories.  The currently known
10811 categories are: <ul>
10812
10813 <li> \c NoCategory - used when Qt is dazed and confused and cannot
10814 make sense of anything.
10815
10816 <li> \c Mark_NonSpacing - (Mn) -
10817
10818 <li> \c Mark_SpacingCombining - (Mc) -
10819
10820 <li> \c Mark_Enclosing - (Me) -
10821
10822 <li> \c Number_DecimalDigit - (Nd) -
10823
10824 <li> \c Number_Letter - (Nl) -
10825
10826 <li> \c Number_Other - (No) -
10827
10828 <li> \c Separator_Space - (Zs) -
10829
10830 <li> \c Separator_Line - (Zl) -
10831
10832 <li> \c Separator_Paragraph - (Zp) -
10833
10834 <li> \c Other_Control - (Cc) -
10835
10836 <li> \c Other_Format - (Cf) -
10837
10838 <li> \c Other_Surrogate - (Cs) -
10839
10840 <li> \c Other_PrivateUse - (Co) -
10841
10842 <li> \c Other_NotAssigned - (Cn) -
10843
10844 <li> \c Letter_Uppercase - (Lu) -
10845
10846 <li> \c Letter_Lowercase - (Ll) -
10847
10848 <li> \c Letter_Titlecase - (Lt) -
10849
10850 <li> \c Letter_Modifier - (Lm) -
10851
10852 <li> \c Letter_Other - (Lo) -
10853
10854 <li> \c Punctuation_Connector - (Pc) -
10855
10856 <li> \c Punctuation_Dask - (Pd) -
10857
10858 <li> \c Punctuation_Open - (Ps) -
10859
10860 <li> \c Punctuation_Close - (Pe) -
10861
10862 <li> \c Punctuation_InitialQuote - (Pi) -
10863
10864 <li> \c Punctuation_FinalQuote - (Pf) -
10865
10866 <li> \c Punctuation_Other - (Po) -
10867
10868 <li> \c Symbol_Math - (Sm) -
10869
10870 <li> \c Symbol_Currency - (Sc) -
10871
10872 <li> \c Symbol_Modifier - (Sk) -
10873
10874 <li> \c Symbol_Other - (So) -
10875
10876 </ul>
10877 */
10878
10879 /*! \enum QChar::Direction
10880
10881   This enum type defines the Unicode direction attributes.
10882   See <a href="http://www.unicode.org">the Unicode Standard</a>
10883   for a description of the values.
10884
10885   In order to conform to C/C++ naming conventions "Dir" is
10886   prepended to the codes used in The Unicode Standard.
10887 */
10888
10889 /*! \enum QChar::Decomposition
10890
10891   This enum type defines the Unicode decomposition attributes.
10892   See <a href="http://www.unicode.org">the Unicode Standard</a>
10893   for a description of the values.
10894 */
10895
10896 /*! \enum QChar::Joining
10897
10898   This enum type defines the Unicode decomposition attributes.
10899   See <a href="http://www.unicode.org">the Unicode Standard</a>
10900   for a description of the values.
10901 */
10902
10903
10904
10905 /*! \fn QChar::QChar()
10906
10907 Constructs a null QChar (one that isNull()).
10908 */
10909
10910
10911 /*! \fn QChar::QChar( char c )
10912
10913 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
10914 */
10915
10916
10917 /*! \fn QChar::QChar( uchar c )
10918
10919 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
10920 */
10921
10922
10923 /*! \fn QChar::QChar( uchar c, uchar r )
10924
10925 Constructs a QChar for Unicode cell \a c in row \a r.
10926 */
10927
10928
10929 /*! \fn QChar::QChar( const QChar& c )
10930
10931 Constructs a copy of \a c.  This is a deep copy, if such a
10932 light-weight object can be said to have deep copies.
10933 */
10934
10935
10936 /*! \fn QChar::QChar( ushort rc )
10937
10938 Constructs a QChar for the character with Unicode code point \a rc.
10939 */
10940
10941
10942 /*! \fn QChar::QChar( short rc )
10943
10944 Constructs a QChar for the character with Unicode code point \a rc.
10945 */
10946
10947
10948 /*! \fn QChar::QChar( uint rc )
10949
10950 Constructs a QChar for the character with Unicode code point \a rc.
10951 */
10952
10953
10954 /*! \fn QChar::QChar( int rc )
10955
10956 Constructs a QChar for the character with Unicode code point \a rc.
10957 */
10958
10959
10960 /*! \fn bool  QChar::networkOrdered ()
10961
10962   Returns TRUE if this character is in network byte order (MSB first),
10963   and FALSE if it is not.  This is a platform-dependent property, so
10964   we strongly advise against using this function in portable code.
10965 */
10966
10967
10968 /*!
10969   \fn bool QChar::isNull() const
10970   Returns TRUE if the characters is the unicode character 0x0000,
10971   ie. ASCII NUL.
10972 */
10973
10974 /*!
10975   \fn uchar QChar::cell () const
10976   Returns the cell (least significant byte) of the Unicode character.
10977 */
10978 /*!
10979   \fn uchar QChar::row () const
10980   Returns the row (most significant byte) of the Unicode character.
10981 */
10982 /*!
10983   \fn uchar& QChar::cell ()
10984   Returns a reference to the cell (least significant byte) of the Unicode character.
10985 */
10986 /*!
10987   \fn uchar& QChar::row ()
10988   Returns a reference to the row (most significant byte) of the Unicode character.
10989 */
10990
10991 /*!
10992   Returns whether the character is a printable character.  This is
10993   any character not of category Cc or Cn.  Note that this gives no indication
10994   of whether the character is available in some font.
10995 */
10996 bool QChar::isPrint() const
10997 {
10998     Category c = category();
10999     return !(c == Other_Control || c == Other_NotAssigned);
11000 }
11001
11002 /*!
11003   Returns whether the character is a separator
11004   character (Separator_* categories).
11005 */
11006 bool QChar::isSpace() const
11007 {
11008     if( !row() )
11009         if( cell() >= 9 && cell() <=13 ) return TRUE;
11010     Category c = category();
11011     return c >= Separator_Space && c <= Separator_Paragraph;
11012 }
11013
11014 /*!
11015   Returns whether the character is a mark (Mark_* categories).
11016 */
11017 bool QChar::isMark() const
11018 {
11019     Category c = category();
11020     return c >= Mark_NonSpacing && c <= Mark_Enclosing;
11021 }
11022
11023 /*!
11024   Returns whether the character is punctuation (Punctuation_* categories).
11025 */
11026 bool QChar::isPunct() const
11027 {
11028     Category c = category();
11029     return (c >= Punctuation_Connector && c <= Punctuation_Other);
11030 }
11031
11032 /*!
11033   Returns whether the character is a letter (Letter_* categories).
11034 */
11035 bool QChar::isLetter() const
11036 {
11037     Category c = category();
11038     return (c >= Letter_Uppercase && c <= Letter_Other);
11039 }
11040
11041 /*!
11042   Returns whether the character is a number (of any sort - Number_* categories).
11043
11044   \sa isDigit()
11045 */
11046 bool QChar::isNumber() const
11047 {
11048     Category c = category();
11049     return c >= Number_DecimalDigit && c <= Number_Other;
11050 }
11051
11052 /*!
11053   Returns whether the character is a letter or number (Letter_* or Number_* categories).
11054 */
11055 bool QChar::isLetterOrNumber() const
11056 {
11057     Category c = category();
11058     return (c >= Letter_Uppercase && c <= Letter_Other)
11059         || (c >= Number_DecimalDigit && c <= Number_Other);
11060 }
11061
11062
11063 /*!
11064   Returns whether the character is a decimal digit (Number_DecimalDigit).
11065   */
11066 bool QChar::isDigit() const
11067 {
11068     return (category() == Number_DecimalDigit);
11069 }
11070
11071 /*!
11072   Returns the numeric value of the digit, or -1 if the character is not
11073   a digit.
11074 */
11075 int QChar::digitValue() const
11076 {
11077 #ifndef QT_NO_UNICODETABLES
11078     const Q_INT8 *dec_row = decimal_info[row()];
11079     if( !dec_row )
11080         return -1;
11081     return decimal_info[row()][cell()];
11082 #else
11083     // ##### just latin1
11084     if ( rw != 0 || cl < '0' || cl > '9' )
11085         return -1;
11086     else
11087         return cl - '0';
11088 #endif
11089 }
11090
11091 /*!
11092   Returns the character category.
11093
11094   \sa Category
11095 */
11096 QChar::Category QChar::category() const
11097 {
11098 #ifndef QT_NO_UNICODETABLES
11099     return (Category)(unicode_info[row()][cell()]);
11100 #else
11101 // ### just ASCII
11102     if ( rw == 0 ) {
11103         return (Category)(ui_00[cell()]);
11104     }
11105     return Letter_Uppercase; //#######
11106 #endif
11107 }
11108
11109 /*!
11110   Returns the characters directionality.
11111
11112   \sa Direction
11113 */
11114 QChar::Direction QChar::direction() const
11115 {
11116 #ifndef QT_NO_UNICODETABLES
11117     const Q_UINT8 *rowp = direction_info[row()];
11118     if(!rowp) return QChar::DirL;
11119     return (Direction) ( *(rowp+cell()) &0x1f );
11120 #else
11121     return DirL;
11122 #endif
11123 }
11124
11125 /*!
11126   This function is not supported (it may change to use Unicode
11127   character classes).
11128
11129   Returns information about the joining properties of the
11130   character (needed for arabic).
11131 */
11132 QChar::Joining QChar::joining() const
11133 {
11134 #ifndef QT_NO_UNICODETABLES
11135     const Q_UINT8 *rowp = direction_info[row()];
11136     if ( !rowp )
11137         return QChar::OtherJoining;
11138     return (Joining) ((*(rowp+cell()) >> 5) &0x3);
11139 #else
11140     return OtherJoining;
11141 #endif
11142 }
11143
11144
11145 /*!
11146   Returns whether the character is a mirrored character (one that
11147   should be reversed if the text direction is reversed).
11148 */
11149 bool QChar::mirrored() const
11150 {
11151 #ifndef QT_NO_UNICODETABLES
11152     const Q_UINT8 *rowp = direction_info[row()];
11153     if ( !rowp )
11154         return FALSE;
11155     return *(rowp+cell())>128;
11156 #else
11157     return FALSE;
11158 #endif
11159 }
11160
11161 /*!
11162   Returns the mirrored char if this character is a mirrored char, the char
11163   itself otherwise
11164 */
11165 QChar QChar::mirroredChar() const
11166 {
11167 #ifndef QT_NO_UNICODETABLES
11168     if(!mirrored()) return *this;
11169
11170     int i;
11171     int c = unicode();
11172     for (i = 0; i < symmetricPairsSize; i += 2) {
11173         if (symmetricPairs[i] == c)
11174           return symmetricPairs[i+1];
11175     }
11176     return 0;
11177 #else
11178     return *this;
11179 #endif
11180 }
11181
11182 /*!
11183   Decomposes a character into its parts. Returns QString::null if
11184   no decomposition exists.
11185 */
11186 QString QChar::decomposition() const
11187 {
11188 #ifndef QT_NO_UNICODETABLES
11189     const Q_UINT16 *r = decomposition_info[row()];
11190     if(!r) return QString::null;
11191
11192     Q_UINT16 pos = r[cell()];
11193     if(!pos) return QString::null;
11194     pos+=2;
11195
11196     QString s;
11197     Q_UINT16 c;
11198     while((c = decomposition_map[pos++]) != 0) s += QChar(c);
11199
11200     return s;
11201 #else
11202     return null;
11203 #endif
11204 }
11205
11206 /*!
11207   Returns the tag defining the composition of the character.
11208   Returns QChar::Single if no decomposition exists.
11209 */
11210 QChar::Decomposition QChar::decompositionTag() const
11211 {
11212 #ifndef QT_NO_UNICODETABLES
11213     const Q_UINT16 *r = decomposition_info[row()];
11214     if(!r) return QChar::Single;
11215
11216     Q_UINT16 pos = r[cell()];
11217     if(!pos) return QChar::Single;
11218
11219     return (QChar::Decomposition) decomposition_map[pos];
11220 #else
11221     return Single; // ########### FIX eg. just latin1
11222 #endif
11223 }
11224
11225 /*!
11226   Returns the lowercase equivalent if the character is uppercase,
11227   or the character itself otherwise.
11228 */
11229 QChar QChar::lower() const
11230 {
11231 #ifndef QT_NO_UNICODETABLES
11232     if(category() != Letter_Uppercase) return *this;
11233     Q_UINT16 lower = *(case_info[row()]+cell());
11234     if(lower == 0) return *this;
11235     return lower;
11236 #else
11237     if (row())
11238         return *this;
11239     else
11240         return QChar(tolower(latin1()));
11241 #endif
11242 }
11243
11244 /*!
11245   Returns the uppercase equivalent if the character is lowercase,
11246   or the character itself otherwise.
11247 */
11248 QChar QChar::upper() const
11249 {
11250 #ifndef QT_NO_UNICODETABLES
11251     if(category() != Letter_Lowercase) return *this;
11252     Q_UINT16 upper = *(case_info[row()]+cell());
11253     if(upper == 0) return *this;
11254     return upper;
11255 #else
11256     if (row())
11257         return *this;
11258     else
11259         return QChar(toupper(latin1()));
11260 #endif
11261 }
11262
11263 /*!
11264   \fn QChar::operator char() const
11265
11266   Returns the Latin1 character equivalent to the QChar,
11267   or 0.  This is mainly useful for non-internationalized software.
11268
11269   \sa unicode()
11270 */
11271
11272 /*!
11273   \fn ushort QChar::unicode() const
11274
11275   Returns the numeric Unicode value equal to the QChar.  Normally, you
11276   should use QChar objects as they are equivalent, but for some low-level
11277   tasks (eg. indexing into an array of Unicode information), this function
11278   is useful.
11279 */
11280
11281 /*****************************************************************************
11282   Documentation of QChar related functions
11283  *****************************************************************************/
11284
11285 /*!
11286   \fn int operator==( QChar c1, QChar c2 )
11287   \relates QChar
11288
11289   Returns TRUE if \a c1 and \a c2 are the same Unicode character.
11290 */
11291
11292 /*!
11293   \fn int operator==( char ch, QChar c )
11294   \relates QChar
11295
11296   Returns TRUE if \a c is the ASCII/Latin1 character \a ch.
11297 */
11298
11299 /*!
11300   \fn int operator==( QChar c, char ch )
11301   \relates QChar
11302
11303   Returns TRUE if \a c is the ASCII/Latin1 character \a ch.
11304 */
11305
11306 /*!
11307   \fn int operator!=( QChar c1, QChar c2 )
11308   \relates QChar
11309
11310   Returns TRUE if \a c1 and \a c2 are not the same Unicode character.
11311 */
11312
11313 /*!
11314   \fn int operator!=( char ch, QChar c )
11315   \relates QChar
11316
11317   Returns TRUE if \a c is not the ASCII/Latin1 character \a ch.
11318 */
11319
11320 /*!
11321   \fn int operator!=( QChar c, char ch )
11322   \relates QChar
11323
11324   Returns TRUE if \a c is not the ASCII/Latin1 character \a ch.
11325 */
11326
11327 /*!
11328   \fn int operator<=( QChar c1, QChar c2 )
11329   \relates QChar
11330
11331   Returns TRUE if the numeric Unicode value of \a c1 is less than that
11332   of \a c2, or they are the same Unicode character.
11333 */
11334
11335 /*!
11336   \fn int operator<=( QChar c, char ch )
11337   \relates QChar
11338
11339   Returns TRUE if the numeric Unicode value of \a c is less than or
11340   equal to that of the ASCII/Latin1 character \a ch.
11341 */
11342
11343 /*!
11344   \fn int operator<=( char ch, QChar c )
11345   \relates QChar
11346
11347   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11348   character \a ch is less than or equal to that of \a c.
11349 */
11350
11351 /*!
11352   \fn int operator>=( QChar c1, QChar c2 )
11353   \relates QChar
11354
11355   Returns TRUE if the numeric Unicode value of \a c1 is greater than that
11356   of \a c2, or they are the same Unicode character.
11357 */
11358
11359 /*!
11360   \fn int operator>=( QChar c, char ch )
11361   \relates QChar
11362
11363   Returns TRUE if the numeric Unicode value of \a c is greater than or
11364   equal to that of the ASCII/Latin1 character \a ch.
11365 */
11366
11367 /*!
11368   \fn int operator>=( char ch, QChar c )
11369   \relates QChar
11370
11371   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11372   character \a ch is greater than or equal to that of \a c.
11373 */
11374
11375 /*!
11376   \fn int operator<( QChar c1, QChar c2 )
11377   \relates QChar
11378
11379   Returns TRUE if the numeric Unicode value of \a c1 is less than that
11380   of \a c2.
11381 */
11382
11383 /*!
11384   \fn int operator<( QChar c, char ch )
11385   \relates QChar
11386
11387   Returns TRUE if the numeric Unicode value of \a c is less than that
11388   of the ASCII/Latin1 character \a ch.
11389 */
11390
11391 /*!
11392   \fn int operator<( char ch, QChar c )
11393   \relates QChar
11394
11395   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11396   character \a ch is less than that of \a c.
11397 */
11398
11399 /*!
11400   \fn int operator>( QChar c1, QChar c2 )
11401   \relates QChar
11402
11403   Returns TRUE if the numeric Unicode value of \a c1 is greater than
11404   that of \a c2.
11405 */
11406
11407 /*!
11408   \fn int operator>( QChar c, char ch )
11409   \relates QChar
11410
11411   Returns TRUE if the numeric Unicode value of \a c is greater than
11412   that of the ASCII/Latin1 character \a ch.
11413 */
11414
11415 /*!
11416   \fn int operator>( char ch, QChar c )
11417   \relates QChar
11418
11419   Returns TRUE if the numeric Unicode value of the ASCII/Latin1
11420   character \a ch is greater than that of \a c.
11421 */
11422
11423 #ifndef QT_NO_UNICODETABLES
11424
11425 // small class used internally in QString::Compose()
11426 class QLigature
11427 {
11428 public:
11429     QLigature( QChar c );
11430
11431     Q_UINT16 first() { cur = ligatures; return cur ? *cur : 0; }
11432     Q_UINT16 next() { return cur && *cur ? *(cur++) : 0; }
11433     Q_UINT16 current() { return cur ? *cur : 0; }
11434
11435     int match(QString & str, unsigned int index);
11436     QChar head();
11437     QChar::Decomposition tag();
11438
11439 private:
11440     Q_UINT16 *ligatures;
11441     Q_UINT16 *cur;
11442 };
11443
11444 QLigature::QLigature( QChar c )
11445 {
11446     const Q_UINT16 *r = ligature_info[c.row()];
11447     if( !r )
11448         ligatures = 0;
11449     else
11450     {
11451         const Q_UINT16 pos = r[c.cell()];
11452         ligatures = (Q_UINT16 *)&(ligature_map[pos]);
11453     }
11454     cur = ligatures;
11455 }
11456
11457 QChar QLigature::head()
11458 {
11459     if(current())
11460         return QChar(decomposition_map[current()+1]);
11461
11462     return QChar::null;
11463 }
11464
11465 QChar::Decomposition QLigature::tag()
11466 {
11467     if(current())
11468         return (QChar::Decomposition) decomposition_map[current()];
11469
11470     return QChar::Canonical;
11471 }
11472
11473 int QLigature::match(QString & str, unsigned int index)
11474 {
11475     unsigned int i=index;
11476
11477     if(!current()) return 0;
11478
11479     Q_UINT16 lig = current() + 2;
11480     Q_UINT16 ch;
11481
11482     while ((i < str.length()) && (ch = decomposition_map[lig])) {
11483         if (str[(int)i] != QChar(ch))
11484             return 0;
11485         i++; lig++;
11486     }
11487
11488     if (!decomposition_map[lig])
11489     {
11490         return i-index;
11491     }
11492     return 0;
11493 }
11494
11495 // this function is just used in QString::compose()
11496 static inline bool format(QChar::Decomposition tag, QString & str,
11497                           int index, int len)
11498 {
11499     unsigned int l = index + len;
11500     unsigned int r = index;
11501
11502     bool left = FALSE, right = FALSE;
11503
11504     left = ((l < str.length()) &&
11505             ((str[(int)l].joining() == QChar::Dual) ||
11506              (str[(int)l].joining() == QChar::Right)));
11507     if (r > 0) {
11508         r--;
11509         //printf("joining(right) = %d\n", str[(int)r].joining());
11510         right = (str[(int)r].joining() == QChar::Dual);
11511     }
11512
11513
11514     switch (tag) {
11515     case QChar::Medial:
11516         return (left && right);
11517     case QChar::Initial:
11518         return (left && !right);
11519     case QChar::Final:
11520         return (right);// && !left);
11521     case QChar::Isolated:
11522     default:
11523         return (!right && !left);
11524     }
11525 } // format()
11526 #endif
11527
11528 /*
11529   QString::compose() and visual() were developed by Gordon Tisher
11530   <tisher@uniserve.ca>, with input from Lars Knoll <knoll@mpi-hd.mpg.de>,
11531   who developed the unicode data tables.
11532 */
11533 /*!
11534   Note that this function is not supported in Qt 2.0, and is merely
11535   for experimental and illustrative purposes.  It is mainly of interest
11536   to those experimenting with Arabic and other composition-rich texts.
11537
11538   Applies possible ligatures to a QString, useful when composition-rich
11539   text requires rendering with glyph-poor fonts, but also
11540   makes compositions such as QChar(0x0041) ('A') and QChar(0x0308)
11541   (Unicode accent diaresis) giving QChar(0x00c4) (German A Umlaut).
11542 */
11543 void QString::compose()
11544 {
11545 #ifndef QT_NO_UNICODETABLES
11546     unsigned int index=0, len;
11547     unsigned int cindex = 0;
11548
11549     QChar code, head;
11550
11551     QArray<QChar> dia;
11552
11553     QString composed = *this;
11554
11555     while (index < length()) {
11556         code = at(index);
11557         //printf("\n\nligature for 0x%x:\n", code.unicode());
11558         QLigature ligature(code);
11559         ligature.first();
11560         while(ligature.current()) {
11561             if ((len = ligature.match(*this, index)) != 0) {
11562                 head = ligature.head();
11563                 unsigned short code = head.unicode();
11564                 // we exclude Arabic presentation forms A and a few
11565                 // other ligatures, which are undefined in most fonts
11566                 if(!(code > 0xfb50 && code < 0xfe80) &&
11567                    !(code > 0xfb00 && code < 0xfb2a)) {
11568                                 // joining info is only needed for arabic
11569                     if (format(ligature.tag(), *this, index, len)) {
11570                         //printf("using ligature 0x%x, len=%d\n",code,len);
11571                         // replace letter
11572                         composed.replace(cindex, len, QChar(head));
11573                         index += len-1;
11574                         // we continue searching in case we have a final
11575                         // form because medial ones are preferred.
11576                         if ( len != 1 || ligature.tag() !=QChar::Final )
11577                             break;
11578                     }
11579                 }
11580             }
11581             ligature.next();
11582         }
11583         cindex++;
11584         index++;
11585     }
11586     *this = composed;
11587 #endif
11588 }
11589
11590 static QChar LRM ((ushort)0x200e);
11591 static QChar RLM ((ushort)0x200f);
11592 static QChar LRE ((ushort)0x202a);
11593 static QChar RLE ((ushort)0x202b);
11594 static QChar RLO ((ushort)0x202e);
11595 static QChar LRO ((ushort)0x202d);
11596 static QChar PDF ((ushort)0x202c);
11597
11598 #if 0
11599 static inline bool is_arabic(unsigned short x) {
11600     return (((x >= 0x0600) && (x <= 0x07bf)) ||
11601             ((x >= 0xfb50) && (x <= 0xfdff)) ||
11602             ((x >= 0xfe70) && (x <= 0xfeff)));
11603 }
11604 #endif
11605
11606 #ifndef QT_NO_UNICODETABLES
11607 static inline bool is_neutral(unsigned short dir) {
11608   return ((dir == QChar::DirB) ||
11609                   (dir == QChar::DirS) ||
11610                   (dir == QChar::DirWS) ||
11611                   (dir == QChar::DirON) ||
11612                   (dir == QChar::DirNSM));
11613 }
11614 #endif
11615
11616 /*!
11617   This function returns the basic directionality of the string (QChar::DirR for
11618   right to left and QChar::DirL for left to right). Useful to find the right
11619   alignment.
11620   */
11621 QChar::Direction QString::basicDirection()
11622 {
11623 #ifndef QT_NO_UNICODETABLES
11624     // find base direction
11625     unsigned int pos = 0;
11626     while ((pos < length()) &&
11627            (at(pos) != RLE) &&
11628            (at(pos) != LRE) &&
11629            (at(pos) != RLO) &&
11630            (at(pos) != LRO) &&
11631            (at(pos).direction() > 1) &&
11632            (at(pos).direction() != QChar::DirAL)) // not R and not L
11633         pos++;
11634
11635     if ((at(pos).direction() == QChar::DirR) ||
11636         (at(pos).direction() == QChar::DirAL) ||
11637         (at(pos) == RLE) ||
11638         (at(pos) == RLO))
11639         return QChar::DirR;
11640 #endif
11641
11642     return QChar::DirL;
11643 }
11644
11645 #ifndef QT_NO_UNICODETABLES
11646 // reverses part of the QChar array to get visual ordering
11647 // called from QString::visual()
11648 //
11649 static unsigned int reverse( QString &chars, unsigned char *level,
11650                              unsigned int a, unsigned int b)
11651 {
11652     unsigned int c = a;
11653     unsigned char lev = level[c];
11654
11655     while ((c < b) && (level[c] >= lev)) {
11656         if (level[c] > lev)
11657             c = reverse(chars, level, c, b);
11658         c++;
11659     }
11660
11661     if (lev > 0) {
11662         QChar temp;
11663         unsigned int d = a, e = c-1;
11664         while (d < e) {
11665             temp = chars[(int)d];
11666             chars[(int)d] = chars[(int)e];
11667             chars[(int)e] = temp;
11668
11669             d++; e--;
11670         }
11671     }
11672
11673     return c;
11674 }
11675
11676 // small class used for the ordering algorithm in QString::visual()
11677 class QBidiState {
11678 public:
11679     unsigned char level;
11680     signed   char override;
11681
11682     QBidiState(unsigned char l, signed char o) : level(l), override(o) {};
11683 };
11684
11685 // matrix for resolving neutral types
11686
11687 #define NEG1 (QChar::Direction)(-1)
11688
11689 static QChar::Direction resolv[5][5] =
11690 {
11691         { NEG1,         QChar::DirR, QChar::DirL, QChar::DirEN, QChar::DirAN },
11692         { QChar::DirR,  QChar::DirR, NEG1,        QChar::DirR,  QChar::DirR  },
11693         { QChar::DirL,  NEG1,        QChar::DirL, QChar::DirL,  NEG1         },
11694         { QChar::DirEN, QChar::DirR, QChar::DirL, QChar::DirEN, QChar::DirR  },
11695         { QChar::DirAN, QChar::DirR, NEG1,        NEG1,         QChar::DirAN }
11696 };
11697
11698 #endif
11699
11700 /*!
11701   This function returns the QString ordered visually. Useful for
11702   painting the string or when transforming to a visually ordered
11703   encoding.
11704 */
11705 QString QString::visual(int index, int len)
11706 {
11707 #ifndef QT_NO_UNICODETABLES
11708     // #### This needs much more optimizing - it is called for
11709     // #### every text operation.
11710
11711     unsigned char *level;
11712     QChar::Direction *dir;
11713     unsigned char base = 0;
11714
11715     unsigned int l = length();
11716
11717     // check bounds
11718     if (len == -1)
11719         len = length()-index;
11720     if ((uint)index > l)
11721         return QString::null;
11722
11723     // find base direction
11724     unsigned int pos = 0;
11725     while ((pos < length()) &&
11726            (at(pos) != RLE) &&
11727            (at(pos) != LRE) &&
11728            (at(pos) != RLO) &&
11729            (at(pos) != LRO) &&
11730            (at(pos).direction() > 1) &&
11731            (at(pos).direction() != QChar::DirAL)
11732            ) // not R and not L
11733         pos++;
11734
11735     if ((pos < length()) &&
11736             ((at(pos).direction() == QChar::DirR) ||
11737              (at(pos).direction() == QChar::DirAL) ||
11738             (at(pos) == RLE) ||
11739             (at(pos) == RLO)))
11740         base = 1;
11741
11742     // is there any BiDi char at all?
11743     if ( base == 0 && pos == l ) {
11744         return mid(index, len);
11745     }
11746
11747
11748     level = new uchar[l];
11749     dir   = new QChar::Direction[l];
11750
11751     // explicit override pass
11752     //unsigned int code_count = 0;
11753
11754     QStack<QBidiState> stack;
11755     stack.setAutoDelete(TRUE);
11756
11757     unsigned char    clevel   = base;
11758     signed char      override = -1;
11759
11760     for (pos = 0; pos < l; pos++) {
11761
11762         if (at(pos) == RLE) {
11763             //code_count++;
11764             stack.push(new QBidiState(clevel, override));
11765             if (clevel < 254)
11766                 clevel += 1 + clevel % 2;
11767             override = -1;
11768         }
11769         else if (at(pos) == LRE) {
11770             //code_count++;
11771             stack.push(new QBidiState(clevel, override));
11772             if (clevel < 254)
11773                 clevel += 2 - clevel % 2;
11774             override = -1;
11775         }
11776         else if (at(pos) == RLO) {
11777             //code_count++;
11778             stack.push(new QBidiState(clevel, override));
11779             if (clevel < 254)
11780                 clevel += 1 + clevel % 2;
11781             override = QChar::DirR;
11782         }
11783         else if (at(pos) == LRO) {
11784             //code_count++;
11785             stack.push(new QBidiState(clevel, override));
11786             if (clevel < 254)
11787                 clevel += 2 - clevel % 2;
11788             override = QChar::DirL;
11789         }
11790         else if (at(pos) == PDF) {
11791             //code_count++;
11792             if (!stack.isEmpty()) {
11793                 override = stack.top()->override;
11794                 clevel   = stack.top()->level;
11795                 stack.remove();
11796             }
11797         }
11798
11799         // TODO: catch block separators (newlines, paras, etc.)
11800
11801         level[pos] = clevel;
11802         if (override != -1)
11803             dir[pos] = (QChar::Direction) override;
11804         else
11805             dir[pos] = at(pos).direction();
11806     }
11807
11808     // weak type pass
11809     for (pos = 0; pos < l; pos++) {
11810
11811         int i;
11812
11813         switch (at(pos).direction()) {
11814         case QChar::DirEN:
11815             i   = pos-1;
11816             while ((i >= 0) &&
11817                    !(at(i).direction() == QChar::DirAN) &&
11818                    !(at(i).direction() == QChar::DirAL) &&
11819                    !(at(i).direction() == QChar::DirB))
11820                 i--;
11821
11822             if ((i >= 0) &&
11823                 ((at(i).direction() == QChar::DirAN) ||
11824                  (at(i).direction() == QChar::DirAL)))
11825                 dir[pos] = QChar::DirAN;
11826
11827             break;
11828         case QChar::DirES:
11829         case QChar::DirCS:
11830             if ((pos > 0) && (pos < l-1) &&
11831                 (dir[pos-1] == dir[pos+1]))
11832                 dir[pos] = dir[pos-1];
11833             else
11834                 dir[pos] = QChar::DirON;
11835
11836             break;
11837         case QChar::DirET:
11838             if (((pos > 0) && (dir[pos-1] == QChar::DirEN)) ||
11839                 ((pos < l-1) && (dir[pos+1] == QChar::DirEN)))
11840                 dir[pos] = QChar::DirEN;
11841             else
11842                 dir[pos] = QChar::DirON;
11843
11844             break;
11845         case QChar::DirAL:
11846             dir[pos] = QChar::DirR;
11847             break;
11848         default:
11849             break;
11850         }
11851     }
11852
11853     // neutral type pass
11854     for (pos = 0; pos < l; pos++) {
11855           QChar::Direction left,right; // declaring l here shadowed previous l
11856
11857         if (is_neutral(dir[pos])) {
11858             if (pos > 0)
11859                 left = dir[pos-1];
11860             else
11861                 left = (base == 0 ? QChar::DirL : QChar::DirR);
11862
11863             int i = pos;
11864
11865             while ((i < (int)l-1) && is_neutral(dir[i+1]))
11866                 i++;
11867
11868             if (i < (int)l-1)
11869                 right = dir[i+1];
11870             else
11871                 right = (base == 0 ? QChar::DirL : QChar::DirR);
11872
11873             for (int j=pos; j <= i; j++) {
11874                   int a = 1, b = 1;
11875                   while ((a < 5) && (left != resolv[0][a]))
11876                         a++;
11877                   while ((b < 5) && (right != resolv[0][b]))
11878                         b++;
11879                   if ((a == 5) || (b == 5))
11880                         dir[j] = (base == 0 ? QChar::DirL : QChar::DirR);
11881                   else
11882                         dir[j] = resolv[a][b];
11883
11884                   if (dir[j] == (QChar::Direction)(-1))
11885                         dir[j] = (base == 0 ? QChar::DirL : QChar::DirR);
11886             }
11887         }
11888     }
11889
11890     // implicit level pass
11891     QChar::Direction prec = (base == 0 ? QChar::DirL : QChar::DirR);
11892
11893     for (pos = 0; pos < l; pos++) {
11894         if (level[pos] % 2) {
11895             switch (dir[pos]) {
11896             case QChar::DirL:
11897             case QChar::DirAN:
11898             case QChar::DirEN:
11899                 level[pos] += 1;
11900                 break;
11901             default:
11902                 break;
11903             }
11904         } else {
11905             switch (dir[pos]) {
11906             case QChar::DirL:
11907                                 // do nothing
11908                 break;
11909             case QChar::DirR:
11910                 level[pos] += 1;
11911                 break;
11912             case QChar::DirEN:
11913                 if (prec == QChar::DirL)
11914                     continue;
11915                                 // fall through
11916             case QChar::DirAN:
11917                 level[pos] += 2;
11918                 break;
11919             default:
11920                 break;
11921             }
11922         }
11923
11924         prec = dir[pos];
11925     }
11926
11927         // now do the work!
11928         QString ret(*this);
11929     reverse(ret, level, index, index+len);
11930
11931     delete [] level;
11932     delete [] dir;
11933
11934     return ret;
11935 #else
11936     return mid(index,len);
11937 #endif
11938 }
11939
11940
11941
11942 // These macros are used for efficient allocation of QChar strings.
11943 // IMPORTANT! If you change these, make sure you also change the
11944 // "delete unicode" statement in ~QStringData() in qstring.h correspondingly!
11945
11946 #define QT_ALLOC_QCHAR_VEC( N ) (QChar*) new char[ sizeof(QChar)*( N ) ]
11947 #define QT_DELETE_QCHAR_VEC( P ) delete[] ((char*)( P ))
11948
11949
11950 /*!
11951   This utility function converts the 8-bit string
11952   \a ba to Unicode, returning the result.
11953
11954   The caller is responsible for deleting the return value with delete[].
11955 */
11956
11957 QChar* QString::asciiToUnicode( const QByteArray& ba, uint* len )
11958 {
11959     if ( ba.isNull() ) {
11960         *len = 0;
11961         return 0;
11962     }
11963     int l = 0;
11964     while ( l < (int)ba.size() && ba[l] )
11965         l++;
11966     char* str = ba.data();
11967     QChar *uc = new QChar[ l ];   // Can't use macro, since function is public
11968     QChar *result = uc;
11969     if ( len )
11970         *len = l;
11971     while (l--)
11972         *uc++ = *str++;
11973     return result;
11974 }
11975
11976 static QChar* internalAsciiToUnicode( const QByteArray& ba, uint* len )
11977 {
11978     if ( ba.isNull() ) {
11979         *len = 0;
11980         return 0;
11981     }
11982     int l = 0;
11983     while ( l < (int)ba.size() && ba[l] )
11984         l++;
11985     char* str = ba.data();
11986     QChar *uc = QT_ALLOC_QCHAR_VEC( l );
11987     QChar *result = uc;
11988     if ( len )
11989         *len = l;
11990     while (l--)
11991         *uc++ = *str++;
11992     return result;
11993 }
11994
11995 /*!
11996   This utility function converts the NUL-terminated 8-bit string
11997   \a str to Unicode, returning the result and setting \a len to
11998   the length of the Unicode string.
11999
12000   The caller is responsible for deleting the return value with delete[].
12001 */
12002
12003 QChar* QString::asciiToUnicode( const char *str, uint* len, uint maxlen )
12004 {
12005     QChar* result = 0;
12006     uint l = 0;
12007     if ( str ) {
12008         if ( maxlen != (uint)-1 ) {
12009             while ( l < maxlen && str[l] )
12010                 l++;
12011         } else {
12012             // Faster?
12013             l = qstrlen(str);
12014         }
12015         QChar *uc = new QChar[ l ]; // Can't use macro since function is public
12016         result = uc;
12017         uint i = l;
12018         while ( i-- )
12019             *uc++ = *str++;
12020     }
12021     if ( len )
12022         *len = l;
12023     return result;
12024 }
12025
12026 static QChar* internalAsciiToUnicode( const char *str, uint* len,
12027                                       uint maxlen = (uint)-1 )
12028 {
12029     QChar* result = 0;
12030     uint l = 0;
12031     if ( str ) {
12032         if ( maxlen != (uint)-1 ) {
12033             while ( l < maxlen && str[l] )
12034                 l++;
12035         } else {
12036             // Faster?
12037             l = qstrlen(str);
12038         }
12039         QChar *uc = QT_ALLOC_QCHAR_VEC( l );
12040         result = uc;
12041         uint i = l;
12042         while ( i-- )
12043             *uc++ = *str++;
12044     }
12045     if ( len )
12046         *len = l;
12047     return result;
12048 }
12049
12050 /*!
12051   This utility function converts \a l 16-bit characters from
12052   \a uc to ASCII, returning a NUL-terminated string.
12053
12054   The caller is responsible for deleting the string with delete[].
12055 */
12056 char* QString::unicodeToAscii(const QChar *uc, uint l)
12057 {
12058     if (!uc) {
12059         return 0;
12060     }
12061     char *a = new char[l+1];
12062     char *result = a;
12063     while (l--)
12064         *a++ = *uc++;
12065     *a = '\0';
12066     return result;
12067 }
12068
12069 static uint computeNewMax( uint len )
12070 {
12071   if (len >= 0x80000000)
12072     return len;
12073
12074   uint newMax = 4;
12075   while ( newMax < len )
12076     newMax *= 2;
12077   // try to save some memory
12078   if ( newMax >= 1024 * 1024 && len <= newMax - (newMax >> 2) )
12079     newMax -= newMax >> 2;
12080   return newMax;
12081 }
12082
12083 /*!
12084   Returns the QString as a zero terminated array of unsigned shorts
12085   if the string is not null; otherwise returns zero.
12086
12087   The result remains valid so long as one unmodified
12088   copy of the source string exists.
12089  */
12090 const unsigned short *QString::ucs2() const
12091 {
12092   if ( ! d->unicode )
12093     return 0;
12094   unsigned int len = d->len;
12095   if ( d->maxl < len + 1 ) {
12096     // detach, grow or shrink
12097     uint newMax = computeNewMax( len + 1 );
12098     QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12099     if ( nd ) {
12100       if ( d->unicode )
12101         memcpy( nd, d->unicode, sizeof(QChar)*len );
12102       ((QString *)this)->deref();
12103       ((QString *)this)->d = new QStringData( nd, len, newMax );
12104     }
12105   }
12106   d->unicode[len] = 0;
12107   return (unsigned short *) d->unicode;
12108 }
12109
12110 /*!
12111     Constructs a string that is a deep copy of \a str, interpreted as a
12112     UCS2 encoded, zero terminated, Unicode string.
12113
12114     If \a str is 0, then a null string is created.
12115     \sa isNull()
12116  */
12117 QString QString::fromUcs2( const unsigned short *str )
12118 {
12119   if ( !str ) {
12120     return QString::null;
12121   } else {
12122     int length = 0;
12123     while ( str[length] != 0 )
12124       length++;
12125     QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12126     memcpy( uc, str, length*sizeof(QChar) );
12127     return QString( new QStringData( uc, length, length ), TRUE );
12128   }
12129 }
12130
12131
12132 /*****************************************************************************
12133   QString member functions
12134  *****************************************************************************/
12135
12136 /*!
12137   \class QString qstring.h
12138
12139   \brief The QString class provides an abstraction of Unicode text and
12140           the classic C null-terminated char array (<var>char*</var>).
12141
12142   \ingroup tools
12143   \ingroup shared
12144
12145   QString uses \link shclass.html implicit sharing\endlink, and so it
12146   is very efficient and easy to use.
12147
12148   In all QString methods that take <var>const char*</var> parameters,
12149   the <var>const char*</var> is interpreted as a classic C-style
12150   0-terminated ASCII string. It is legal for the <var>const
12151   char*</var> parameter to be 0. The results are undefined if the
12152   <var>const char*</var> string is not 0-terminated. Functions that
12153   copy classic C strings into a QString will not copy the terminating
12154   0-character. The QChar array of the QString (as returned by
12155   unicode()) is not terminated by a null.
12156
12157   A QString that has not been assigned to anything is \a null, i.e. both
12158   the length and data pointer is 0. A QString that references the empty
12159   string ("", a single '\0' char) is \a empty.  Both null and empty
12160   QStrings are legal parameters to the methods. Assigning <var>const char
12161   * 0</var> to QString gives a null QString.
12162
12163   Note that if you find that you are mixing usage of QCString, QString,
12164   and QByteArray, this causes lots of unnecessary copying and might
12165   indicate that the true nature of the data you are dealing with is
12166   uncertain.  If the data is NUL-terminated 8-bit data, use QCString;
12167   if it is unterminated (ie. contains NULs) 8-bit data, use QByteArray;
12168   if it is text, use QString.
12169
12170   \sa QChar \link shclass.html Shared classes\endlink
12171 */
12172
12173 Q_EXPORT QStringData *QString::shared_null = 0;
12174 //QT_STATIC_CONST_IMPL QString QString::null;
12175 QT_STATIC_CONST_IMPL QChar QChar::null;
12176 QT_STATIC_CONST_IMPL QChar QChar::replacement((ushort)0xfffd);
12177 QT_STATIC_CONST_IMPL QChar QChar::byteOrderMark((ushort)0xfeff);
12178 QT_STATIC_CONST_IMPL QChar QChar::byteOrderSwapped((ushort)0xfffe);
12179 QT_STATIC_CONST_IMPL QChar QChar::nbsp((ushort)0x00a0);
12180
12181 #if defined(_CC_MSVC_) && _MSC_VER <= 1300
12182 const QString::Null QString::null;
12183 #else
12184 const QString::Null QString::null = { };
12185 #endif
12186
12187
12188 QStringData* QString::makeSharedNull()
12189 {
12190     return shared_null=new QStringData;
12191 }
12192
12193 // Uncomment this to get some useful statistics.
12194 // #define Q2HELPER(x) x
12195
12196 #ifdef Q2HELPER
12197 static int stat_construct_charstar=0;
12198 static int stat_construct_charstar_size=0;
12199 static int stat_construct_null=0;
12200 static int stat_construct_int=0;
12201 static int stat_construct_int_size=0;
12202 static int stat_construct_ba=0;
12203 static int stat_get_ascii=0;
12204 static int stat_get_ascii_size=0;
12205 static int stat_copy_on_write=0;
12206 static int stat_copy_on_write_size=0;
12207 static int stat_fast_copy=0;
12208 Q_EXPORT void qt_qstring_stats()
12209 {
12210         qDebug("construct_charstar = %d (%d chars)", stat_construct_charstar, stat_construct_charstar_size);
12211         qDebug("construct_null = %d", stat_construct_null);
12212         qDebug("construct_int = %d (%d chars)", stat_construct_int, stat_construct_int_size);
12213         qDebug("construct_ba = %d", stat_construct_ba);
12214         qDebug("get_ascii = %d (%d chars)", stat_get_ascii, stat_get_ascii_size);
12215         qDebug("copy_on_write = %d (%d chars)", stat_copy_on_write, stat_copy_on_write_size);
12216         qDebug("fast_copy = %d", stat_fast_copy);
12217 }
12218 #else
12219 #define Q2HELPER(x)
12220 #endif
12221
12222 /*!
12223   \fn QString::QString()
12224
12225   Constructs a null string.
12226   \sa isNull()
12227 */
12228
12229 /*!
12230   Constructs a string containing the one character \a ch.
12231 */
12232 QString::QString( QChar ch )
12233 {
12234     d = new QStringData( QT_ALLOC_QCHAR_VEC( 1 ), 1, 1 );
12235     d->unicode[0] = ch;
12236 }
12237
12238 /*!
12239   Constructs an implicitly-shared copy of \a s.
12240 */
12241 QString::QString( const QString &s ) :
12242     d(s.d)
12243 {
12244     Q2HELPER(stat_fast_copy++)
12245     d->ref();
12246 }
12247
12248 /*!
12249   Private function.
12250
12251   Constructs a string with preallocated space for \a size characters.
12252
12253   The string is empty.
12254
12255   \sa isNull()
12256 */
12257
12258 QString::QString( int size, bool /*dummy*/ )
12259 {
12260     if ( size ) {
12261         Q2HELPER(stat_construct_int++)
12262         int l = size;
12263         Q2HELPER(stat_construct_int_size+=l)
12264         QChar* uc = QT_ALLOC_QCHAR_VEC( l );
12265         d = new QStringData( uc, 0, l );
12266     } else {
12267         Q2HELPER(stat_construct_null++)
12268         d = shared_null ? shared_null : (shared_null=new QStringData);
12269         d->ref();
12270     }
12271 }
12272
12273 /*!
12274   Constructs a string that is a deep copy of \a ba interpreted as
12275   a classic C string.
12276 */
12277
12278 QString::QString( const QByteArray& ba )
12279 {
12280     Q2HELPER(stat_construct_ba++)
12281     uint l;
12282     QChar *uc = internalAsciiToUnicode(ba,&l);
12283     d = new QStringData(uc,l,l);
12284 }
12285
12286 QString::QString( const QCString& ba )
12287 {
12288     //Q2HELPER(stat_construct_ba++)
12289     //uint l;
12290     //QChar *uc = internalAsciiToUnicode(ba,&l);
12291     //d = new QStringData(uc,l,l);
12292     Q2HELPER(stat_fast_copy++)
12293     QString s = QString::fromUtf8(ba.data(),ba.length());
12294     d = s.d;
12295     d->ref();
12296 }
12297
12298 /*!
12299   Constructs a string that is a deep copy of the
12300   first \a length QChar in the array \a unicode.
12301
12302   If \a unicode and \a length are 0, a null string is created.
12303
12304   If only \a unicode is 0, the string is empty, but has
12305   \a length characters of space preallocated - QString expands
12306   automatically anyway, but this may speed some cases up a little.
12307
12308   \sa isNull()
12309 */
12310
12311 QString::QString( const QChar* unicode, uint length )
12312 {
12313     if ( !unicode && !length ) {
12314         d = shared_null ? shared_null : makeSharedNull();
12315         d->ref();
12316     } else {
12317         QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12318         if ( unicode )
12319             memcpy(uc, unicode, length*sizeof(QChar));
12320         d = new QStringData(uc,unicode ? length : 0,length);
12321     }
12322 }
12323
12324 /*!
12325   Constructs a string that is a deep copy of \a str, interpreted as a
12326   classic C string.
12327
12328   If \a str is 0 a null string is created.
12329
12330   This is a cast constructor, but it is perfectly safe: converting a Latin1
12331   const char* to QString preserves all the information.
12332   You can disable this constructor by
12333   defining QT_NO_CAST_ASCII when you compile your applications.
12334   You can also make QString objects by using setLatin1()/fromLatin1(), or
12335   fromLocal8Bit(), fromUtf8(), or whatever encoding is appropriate for
12336   the 8-bit data you have.
12337
12338   \sa isNull()
12339 */
12340
12341 QString::QString( const char *str )
12342 {
12343     //Q2HELPER(stat_construct_charstar++)
12344     //uint l;
12345     //QChar *uc = internalAsciiToUnicode(str,&l);
12346     //Q2HELPER(stat_construct_charstar_size+=l)
12347     //d = new QStringData(uc,l,l);
12348     Q2HELPER(stat_fast_copy++)
12349     QString s = QString::fromUtf8(str);
12350     d = s.d;
12351     d->ref();
12352 }
12353
12354
12355 /*! \fn QString::~QString()
12356
12357 Destroys the string and frees the "real" string, if this was the last
12358 copy of that string.
12359 */
12360
12361
12362 /*!
12363   Deallocates any space reserved solely by this QString.
12364 */
12365
12366 void QString::real_detach()
12367 {
12368     setLength( length() );
12369 }
12370
12371 void QString::deref()
12372 {
12373     if ( d->deref() ) {
12374         if ( d == shared_null )
12375             shared_null = 0;
12376         delete d;
12377         d = 0; // helps debugging
12378     }
12379 }
12380
12381 void QStringData::deleteSelf()
12382 {
12383     delete this;
12384 }
12385
12386 /*!
12387   \fn QString& QString::operator=( QChar c )
12388   Sets the string to contain just the single character \a c.
12389 */
12390
12391 /*!
12392   \fn QString& QString::operator=( char c )
12393   Sets the string to contain just the single character \a c.
12394 */
12395
12396 /*!
12397   Assigns a shallow copy of \a s to this string and returns a
12398   reference to this string.
12399 */
12400 QString &QString::operator=( const QString &s )
12401 {
12402     Q2HELPER(stat_fast_copy++)
12403     s.d->ref();
12404     deref();
12405     d = s.d;
12406     return *this;
12407 }
12408
12409 /*!
12410   Assigns a deep copy of \a cs, interpreted as a classic C string, to
12411   this string and returns a reference to this string.
12412 */
12413 QString &QString::operator=( const QCString& cs )
12414 {
12415     return setLatin1(cs);
12416 }
12417
12418
12419 /*!
12420   Assigns a deep copy of \a str, interpreted as a classic C string,
12421   to this string and returns a reference to this string.
12422
12423   If \a str is 0 a null string is created.
12424
12425   \sa isNull()
12426 */
12427 QString &QString::operator=( const char *str )
12428 {
12429     return setLatin1(str);
12430 }
12431
12432
12433 /*!
12434   \fn bool QString::isNull() const
12435
12436   Returns TRUE if the string is null.
12437   A null string is also an empty string.
12438
12439   Example:
12440   \code
12441     QString a;          // a.unicode() == 0,  a.length() == 0
12442     QString b = "";     // b.unicode() == "", b.length() == 0
12443     a.isNull();         // TRUE, because a.unicode() == 0
12444     a.isEmpty();        // TRUE, because a.length() == 0
12445     b.isNull();         // FALSE, because b.unicode() != 0
12446     b.isEmpty();        // TRUE, because b.length() == 0
12447   \endcode
12448
12449   \sa isEmpty(), length()
12450 */
12451
12452 /*!
12453   \fn bool QString::isEmpty() const
12454
12455   Returns TRUE if the string is empty, i.e. if length() == 0.
12456   An empty string is not always a null string.
12457
12458   See example in isNull().
12459
12460   \sa isNull(), length()
12461 */
12462
12463 /*!
12464   \fn uint QString::length() const
12465
12466   Returns the length of the string.
12467
12468   Null strings and empty strings have zero length.
12469
12470   \sa isNull(), isEmpty()
12471 */
12472
12473 /*!
12474   Truncates the string at position \a newLen if newLen is less than the
12475   current length . Otherwise, nothing happens.
12476
12477   Example:
12478   \code
12479     QString s = "truncate this string";
12480     s.truncate( 5 );                            // s == "trunc"
12481   \endcode
12482
12483   In Qt 1.x, it was possible to "truncate" a string to a longer
12484   length.  This is no longer possible.
12485
12486 */
12487
12488 void QString::truncate( uint newLen )
12489 {
12490     if ( newLen < d->len )
12491         setLength( newLen );
12492 }
12493
12494 /*### Make this public in 3.0
12495   Ensures that at least \a newLen characters are allocated, and
12496   sets the length to \a newLen.  This function always detaches the
12497   string from other references to the same data.  Any new space
12498   allocated is \e not defined.
12499
12500   If \a newLen is 0, this string becomes empty, unless this string is
12501   null, in which case it remains null.
12502
12503   \sa truncate(), isNull(), isEmpty()
12504 */
12505
12506 void QString::setLength( uint newLen )
12507 {
12508     if ( d->count != 1 || newLen > d->maxl ||           // detach, grow, or
12509          ( newLen*4 < d->maxl && d->maxl > 4 ) ) {      // shrink
12510         Q2HELPER(stat_copy_on_write++)
12511         Q2HELPER(stat_copy_on_write_size+=d->len)
12512         uint newMax = 4;
12513         while ( newMax < newLen )
12514             newMax *= 2;
12515         QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12516         uint len = QMIN( d->len, newLen );
12517         if ( d->unicode )
12518             memcpy( nd, d->unicode, sizeof(QChar)*len );
12519         deref();
12520         d = new QStringData( nd, newLen, newMax );
12521     } else {
12522         d->len = newLen;
12523         d->dirtyascii = 1;
12524     }
12525 }
12526
12527 /*!  Returns a string equal to this one, but with the lowest-numbered
12528   occurrence of \c %i (for a positive integer i) replaced by \a a.
12529
12530   \code
12531     label.setText( tr("Rename %1 to %2?").arg(oldName).arg(newName) );
12532   \endcode
12533
12534   \a fieldwidth is the minimum amount of space \a a is padded to.  A
12535   positive value produces right-aligned text, while a negative value
12536   produces left aligned text.
12537
12538   \warning Using arg() for constructing "real" sentences
12539   programmatically is likely to lead to translation problems.
12540   Inserting objects like numbers or file names is fairly safe.
12541
12542   \warning Relying on spaces to create alignment is prone to lead to
12543   translation problems.
12544
12545   If there is no \c %i pattern, a warning message (qWarning()) is
12546   printed and the text as appended at the end of the string.  This is
12547   error recovery and should not occur in correct code.
12548
12549   \sa QObject::tr()
12550 */
12551 QString QString::arg(const QString& a, int fieldwidth) const
12552 {
12553     int pos, len;
12554     QString r = *this;
12555
12556     if ( !findArg( pos, len ) ) {
12557         qWarning( "QString::arg(): Argument missing: %s, %s",
12558                   (const char *)ascii(), (const char *)ascii() );
12559         // Make sure the text at least appears SOMEWHERE
12560         r += ' ';
12561         pos = r.length();
12562         len = 0;
12563     }
12564
12565     r.replace( pos, len, a );
12566     if ( fieldwidth < 0 ) {
12567         QString s;
12568         while ( (uint)-fieldwidth > a.length() ) {
12569             s += ' ';
12570             fieldwidth++;
12571         }
12572         r.insert( pos + a.length(), s );
12573     } else if ( fieldwidth ) {
12574         QString s;
12575         while ( (uint)fieldwidth > a.length() ) {
12576             s += ' ';
12577             fieldwidth--;
12578         }
12579         r.insert( pos, s );
12580     }
12581
12582     return r;
12583 }
12584
12585
12586 /*! \overload
12587
12588   \a a is expressed in to \a base notation, which is decimal by
12589   default and must be in the range 2-36 inclusive.
12590 */
12591 QString QString::arg(long a, int fieldwidth, int base) const
12592 {
12593     return arg( QString::number( a, base ), fieldwidth );
12594 }
12595
12596 /*! \overload
12597
12598   \a a is expressed in to \a base notation, which is decimal by
12599   default and must be in the range 2-36 inclusive.
12600 */
12601 QString QString::arg(ulong a, int fieldwidth, int base) const
12602 {
12603     return arg( QString::number( a, base ), fieldwidth );
12604 }
12605
12606 /*!
12607   \overload QString QString::arg(int a, int fieldwidth, int base) const
12608
12609   \a a is expressed in to \a base notation, which is decimal by
12610   default and must be in the range 2-36 inclusive.
12611
12612 */
12613
12614 /*!
12615   \overload QString QString::arg(uint a, int fieldwidth, int base) const
12616
12617   \a a is expressed in to \a base notation, which is decimal by
12618   default and must be in the range 2-36 inclusive.
12619 */
12620
12621 /*!
12622   \overload QString QString::arg(short a, int fieldwidth, int base) const
12623
12624   \a a is expressed in to \a base notation, which is decimal by
12625   default and must be in the range 2-36 inclusive.
12626 */
12627
12628 /*!
12629   \overload QString QString::arg(ushort a, int fieldwidth, int base) const
12630
12631   \a a is expressed in to \a base notation, which is decimal by
12632   default and must be in the range 2-36 inclusive.
12633 */
12634
12635
12636 /*! \overload
12637
12638   \a a is assumed to be in the Latin1 character set.
12639 */
12640 QString QString::arg(char a, int fieldwidth) const
12641 {
12642     QString c;
12643     c += a;
12644     return arg( c, fieldwidth );
12645 }
12646
12647 /*! \overload
12648 */
12649 QString QString::arg(QChar a, int fieldwidth) const
12650 {
12651     QString c;
12652     c += a;
12653     return arg( c, fieldwidth );
12654 }
12655
12656 /*! \overload
12657
12658   \a is formatted according to the \a fmt format specified, which is
12659   'g' by default and can be any of 'f', 'F', 'e', 'E', 'g' or 'G', all
12660   of which have the same meaning as for sprintf().  \a prec determines
12661   the precision, just as for number() and sprintf().
12662 */
12663 QString QString::arg(double a, int fieldwidth, char fmt, int prec) const
12664 {
12665     return arg( QString::number( a, fmt, prec ), fieldwidth );
12666 }
12667
12668
12669 /*!
12670   Just 1-digit arguments.
12671 */
12672 bool QString::findArg(int& pos, int& len) const
12673 {
12674     char lowest=0;
12675     for (uint i=0; i<length(); i++) {
12676         if ( at(i) == '%' && i+1<length() ) {
12677             char dig = at(i+1);
12678             if ( dig >= '0' && dig <= '9' ) {
12679                 if ( !lowest || dig < lowest ) {
12680                     lowest = dig;
12681                     pos = i;
12682                     len = 2;
12683                 }
12684             }
12685         }
12686     }
12687     return lowest != 0;
12688 }
12689
12690 /*!
12691   Safely builds a formatted string from a format string and an
12692   arbitrary list of arguments.  The format string supports all
12693   the escape sequences of printf() in the standard C library.
12694
12695   The %s escape sequence expects a utf8() encoded string. 
12696   The format string \e cformat is expected to be in latin1. If you need a unicode
12697   format string, use QString::arg() instead. For typesafe
12698   string building, with full Unicode support, you can use QTextOStream
12699   like this:
12700
12701   \code
12702     QString str;
12703     QString s = ...;
12704     int x = ...;
12705     QTextOStream(&str) << s << " : " << x;
12706   \endcode
12707
12708   For \link QObject::tr() translations,\endlink especially if the
12709   strings contains more than one escape sequence, you should consider
12710   using the arg() function instead.  This allows the order of the
12711   replacements to be controlled by the translator, and has Unicode
12712   support.
12713
12714   \sa arg()
12715 */
12716
12717 QString &QString::sprintf( const char* cformat, ... )
12718 {
12719     va_list ap;
12720     va_start( ap, cformat );
12721
12722     if ( !cformat || !*cformat ) {
12723         // Qt 1.x compat
12724         *this = QString::fromLatin1( "" );
12725         return *this;
12726     }
12727     QString format = QString::fromLatin1( cformat );
12728
12729     static QRegExp *escape = 0;
12730     if (!escape)
12731         escape = new QRegExp( "%#?0?-? ?\\+?'?[0-9*]*\\.?[0-9*]*h?l?L?q?Z?" );
12732
12733     QString result;
12734     uint last = 0;
12735
12736     int len = 0;
12737     int pos;
12738     while ( 1 ) {
12739         pos = escape->match( cformat, last, &len );
12740         // Non-escaped text
12741         if ( pos > (int)last )
12742             result += format.mid(last,pos-last);
12743         if ( pos < 0 ) {
12744             // The rest
12745             if ( last < format.length() )
12746                 result += format.mid(last);
12747             break;
12748         }
12749         last = pos + len + 1;
12750
12751         // Escape
12752         QString f = format.mid( pos, len );
12753         uint width, decimals;
12754         int params = 0;
12755         int wpos = f.find('*');
12756         if ( wpos >= 0 ) {
12757             params++;
12758             width = va_arg( ap, int );
12759             if ( f.find('*', wpos + 1) >= 0 ) {
12760                 decimals = va_arg( ap, int );
12761                 params++;
12762             } else {
12763                 decimals = 0;
12764             }
12765         } else {
12766             decimals = width = 0;
12767         }
12768         QString replacement;
12769         if ( format[pos+len] == 's' ||
12770              format[pos+len] == 'S' ||
12771              format[pos+len] == 'c' )
12772         {
12773             bool rightjust = ( f.find('-') < 0 );
12774             // Yes, %-5s really means left adjust in sprintf
12775
12776             if ( wpos < 0 ) {
12777                 QRegExp num( "[0-9]+" );
12778                 QRegExp dot( "\\." );
12779                 int nlen;
12780                 int p = num.match( f.data(), 0, &nlen );
12781                 int q = dot.match( f.data(), 0 );
12782                 if ( q < 0 || (p < q && p >= 0) )
12783                     width = f.mid( p, nlen ).toInt();
12784                 if ( q >= 0 ) {
12785                     p = num.match( f.data(), q );
12786                     // "decimals" is used to specify string truncation
12787                     if ( p >= 0 )
12788                         decimals = f.mid( p, nlen ).toInt();
12789                 }
12790             }
12791
12792             if ( format[pos+len] == 's' ) {
12793 #ifndef QT_NO_TEXTCODEC
12794                 QString s = QString::fromUtf8(va_arg(ap, char*));
12795 #else
12796                 QString s = QString::fromLatin1(va_arg(ap, char*));
12797 #endif
12798                 if ( decimals <= 0 )
12799                     replacement = s;
12800                 else
12801                     replacement = s.left(decimals);
12802             } else {
12803                 int ch = va_arg(ap, int);
12804                 replacement = QChar((ushort)ch);
12805             }
12806             if ( replacement.length() < width ) {
12807                 replacement = rightjust
12808                     ? replacement.rightJustify(width)
12809                     : replacement.leftJustify(width);
12810             }
12811         } else if ( format[pos+len] == '%' ) {
12812             replacement = '%';
12813         } else if ( format[pos+len] == 'n' ) {
12814             int* n = va_arg(ap, int*);
12815             *n = result.length();
12816         } else {
12817             char in[64], out[330] = "";
12818             strncpy(in,f.latin1(),63);
12819             char fch = format[pos+len].latin1();
12820             in[f.length()] = fch;
12821             switch ( fch ) {
12822               case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': {
12823                 int value = va_arg(ap, int);
12824                 switch (params) {
12825                   case 0: ::sprintf( out, in, value ); break;
12826                   case 1: ::sprintf( out, in, width, value ); break;
12827                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12828                 }
12829               } break;
12830               case 'e': case 'E': case 'f': case 'g': case 'G': {
12831                 double value = va_arg(ap, double);
12832                 switch (params) {
12833                   case 0: ::sprintf( out, in, value ); break;
12834                   case 1: ::sprintf( out, in, width, value ); break;
12835                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12836                 }
12837               } break;
12838               case 'p': {
12839                 void* value = va_arg(ap, void*);
12840                 switch (params) {
12841                   case 0: ::sprintf( out, in, value ); break;
12842                   case 1: ::sprintf( out, in, width, value ); break;
12843                   case 2: ::sprintf( out, in, width, decimals, value ); break;
12844                 }
12845               } break;
12846             }
12847             replacement = QString::fromLatin1(out);
12848         }
12849         result += replacement;
12850     }
12851     *this = result;
12852
12853     va_end( ap );
12854     return *this;
12855 }
12856
12857 /*!
12858   Fills the string with \a len characters of value \a c.
12859
12860   If \a len is negative, the current string length is used.
12861 */
12862
12863 void QString::fill( QChar c, int len )
12864 {
12865     if ( len < 0 )
12866         len = length();
12867     if ( len == 0 ) {
12868         *this = "";
12869     } else {
12870         deref();
12871         QChar * nd = QT_ALLOC_QCHAR_VEC( len );
12872         d = new QStringData(nd,len,len);
12873         while (len--) *nd++ = c;
12874     }
12875 }
12876
12877
12878 /*!
12879   \fn QString QString::copy() const
12880
12881   \obsolete
12882
12883   Returns a deep copy of this string.
12884
12885   Doing this is redundant in Qt 2.x, since QString is implicitly
12886   shared, and so will automatically be deeply copied as necessary.
12887 */
12888
12889 /*!
12890   Finds the first occurrence of the character \a c, starting at
12891   position \a index. If \a index is -1, the search starts at the
12892   last character; if -2, at the next to last character; etc.
12893
12894   The search is case sensitive if \a cs is TRUE, or case insensitive
12895   if \a cs is FALSE.
12896
12897   Returns the position of \a c, or -1 if \a c could not be found.
12898 */
12899
12900 int QString::find( QChar c, int index, bool cs ) const
12901 {
12902     if ( index < 0 )
12903         index += length();
12904     if ( (uint)index >= length() )              // index outside string
12905         return -1;
12906     register const QChar *uc;
12907     uc = unicode()+index;
12908     int n = length()-index;
12909     if ( cs ) {
12910         while ( n-- && *uc != c )
12911             uc++;
12912     } else {
12913         c = c.lower();
12914         while ( n-- && uc->lower() != c )
12915             uc++;
12916     }
12917     if ( uint(uc - unicode()) >= length() )
12918         return -1;
12919     return (int)(uc - unicode());
12920 }
12921
12922 /*!
12923   Finds the first occurrence of the string \a str, starting at position
12924   \a index. If \a index is -1, the search starts at the last character;
12925   if -2, at the next to last character; etc.
12926
12927   The search is case sensitive if \a cs is TRUE, or case insensitive if
12928   \a cs is FALSE.
12929
12930   Returns the position of \a str, or -1 if \a str could not be found.
12931 */
12932
12933 int QString::find( const QString& str, int index, bool cs ) const
12934 {
12935     /*
12936       We use some weird hashing for efficiency's sake.  Instead of
12937       comparing strings, we compare the hash value of str with that of
12938       a part of this QString.  Only if that matches, we call ucstrncmp
12939       or ucstrnicmp.
12940
12941       The hash value of a string is the sum of the cells of its
12942       QChars.
12943     */
12944     if ( index < 0 )
12945         index += length();
12946     int lstr = str.length();
12947     int lthis = length() - index;
12948     if ( (uint)lthis > length() )
12949         return -1;
12950     int delta = lthis - lstr;
12951     if ( delta < 0 )
12952         return -1;
12953
12954     const QChar *uthis = unicode() + index;
12955     const QChar *ustr = str.unicode();
12956     uint hthis = 0;
12957     uint hstr = 0;
12958     int i;
12959     if ( cs ) {
12960         for ( i = 0; i < lstr; i++ ) {
12961             hthis += uthis[i].cell();
12962             hstr += ustr[i].cell();
12963         }
12964         i = 0;
12965         while ( TRUE ) {
12966             if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
12967                 return index + i;
12968             if ( i == delta )
12969                 return -1;
12970             hthis += uthis[i + lstr].cell();
12971             hthis -= uthis[i].cell();
12972             i++;
12973         }
12974     } else {
12975         for ( i = 0; i < lstr; i++ ) {
12976             hthis += uthis[i].lower().cell();
12977             hstr += ustr[i].lower().cell();
12978         }
12979         i = 0;
12980         while ( TRUE ) {
12981             if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
12982                 return index + i;
12983             if ( i == delta )
12984                 return -1;
12985             hthis += uthis[i + lstr].lower().cell();
12986             hthis -= uthis[i].lower().cell();
12987             i++;
12988         }
12989     }
12990 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
12991     return -1;
12992 #endif
12993 }
12994
12995 /*!
12996   \fn int QString::findRev( const char* str, int index ) const
12997
12998   Equivalent to findRev(QString(str), index).
12999 */
13000
13001 /*!
13002   \fn int QString::find( const char* str, int index ) const
13003
13004   Equivalent to find(QString(str), index).
13005 */
13006
13007 /*!
13008   Finds the first occurrence of the character \a c, starting at
13009   position \a index and searching backwards. If \a index is -1,
13010   the search starts at the last character; if -2, at the next to
13011   last character; etc.
13012
13013   The search is case sensitive if \a cs is TRUE, or case insensitive if \a
13014   cs is FALSE.
13015
13016   Returns the position of \a c, or -1 if \a c could not be found.
13017 */
13018
13019 int QString::findRev( QChar c, int index, bool cs ) const
13020 {
13021     QString t( c );
13022     return findRev( t, index, cs );
13023 }
13024
13025 /*!
13026   Finds the first occurrence of the string \a str, starting at
13027   position \a index and searching backwards. If \a index is -1,
13028   the search starts at the last character; -2, at the next to last
13029   character; etc.
13030
13031   The search is case sensitive if \a cs is TRUE, or case insensitive if \e
13032   cs is FALSE.
13033
13034   Returns the position of \a str, or -1 if \a str could not be found.
13035 */
13036
13037 int QString::findRev( const QString& str, int index, bool cs ) const
13038 {
13039     /*
13040       See QString::find() for explanations.
13041     */
13042     int lthis = length();
13043     if ( index < 0 )
13044         index += lthis;
13045
13046     int lstr = str.length();
13047     int delta = lthis - lstr;
13048     if ( index < 0 || index > lthis || delta < 0 )
13049         return -1;
13050     if ( index > delta )
13051         index = delta;
13052
13053     const QChar *uthis = unicode();
13054     const QChar *ustr = str.unicode();
13055     uint hthis = 0;
13056     uint hstr = 0;
13057     int i;
13058     if ( cs ) {
13059         for ( i = 0; i < lstr; i++ ) {
13060             hthis += uthis[index + i].cell();
13061             hstr += ustr[i].cell();
13062         }
13063         i = index;
13064         while ( TRUE ) {
13065             if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
13066                 return i;
13067             if ( i == 0 )
13068                 return -1;
13069             i--;
13070             hthis -= uthis[i + lstr].cell();
13071             hthis += uthis[i].cell();
13072         }
13073     } else {
13074         for ( i = 0; i < lstr; i++ ) {
13075             hthis += uthis[index + i].lower().cell();
13076             hstr += ustr[i].lower().cell();
13077         }
13078         i = index;
13079         while ( TRUE ) {
13080             if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
13081                 return i;
13082             if ( i == 0 )
13083                 return -1;
13084             i--;
13085             hthis -= uthis[i + lstr].lower().cell();
13086             hthis += uthis[i].lower().cell();
13087         }
13088     }
13089 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
13090     return -1;
13091 #endif
13092 }
13093
13094
13095 /*!
13096   Returns the number of times the character \a c occurs in the string.
13097
13098   The match is case sensitive if \a cs is TRUE, or case insensitive if \a cs
13099   is FALSE.
13100 */
13101
13102 int QString::contains( QChar c, bool cs ) const
13103 {
13104     int count = 0;
13105     const QChar *uc = unicode();
13106     if ( !uc )
13107         return 0;
13108     int n = length();
13109     if ( cs ) {                                 // case sensitive
13110         while ( n-- )
13111             if ( *uc++ == c )
13112                 count++;
13113     } else {                                    // case insensitive
13114         c = c.lower();
13115         while ( n-- ) {
13116             if ( uc->lower() == c )
13117                 count++;
13118             uc++;
13119         }
13120     }
13121     return count;
13122 }
13123
13124 /*!
13125   \overload
13126 */
13127 int QString::contains( const char* str, bool cs ) const
13128 {
13129     return contains(QString(str),cs);
13130 }
13131
13132 /*!
13133   \overload int QString::contains (char c, bool cs) const
13134 */
13135
13136 /*!
13137   \overload int QString::find (char c, int index, bool cs) const
13138
13139 */
13140
13141 /*!
13142   \overload int QString::findRev (char c, int index, bool cs) const
13143
13144 */
13145
13146 /*!
13147   Returns the number of times \a str occurs in the string.
13148
13149   The match is case sensitive if \a cs is TRUE, or case insensitive if \e
13150   cs is FALSE.
13151
13152   This function counts overlapping substrings, for example, "banana"
13153   contains two occurrences of "ana".
13154
13155   \sa findRev()
13156 */
13157
13158 int QString::contains( const QString &str, bool cs ) const
13159 {
13160     int count = 0;
13161     const QChar *uc = unicode();
13162     if ( !uc )
13163         return 0;
13164     int len = str.length();
13165     int n = length();
13166     while ( n-- ) {                             // counts overlapping strings
13167         // ### Doesn't account for length of this - searches over "end"
13168         if ( cs ) {
13169             if ( ucstrncmp( uc, str.unicode(), len ) == 0 )
13170                 count++;
13171         } else {
13172             if ( ucstrnicmp(uc, str.unicode(), len) == 0 )
13173                 count++;
13174         }
13175         uc++;
13176     }
13177     return count;
13178 }
13179
13180 /*!
13181   Returns a substring that contains the \a len leftmost characters
13182   of the string.
13183
13184   The whole string is returned if \a len exceeds the length of the
13185   string.
13186
13187
13188   Example:
13189   \code
13190     QString s = "Pineapple";
13191     QString t = s.left( 4 );    // t == "Pine"
13192   \endcode
13193
13194   \sa right(), mid(), isEmpty()
13195 */
13196
13197 QString QString::left( uint len ) const
13198 {
13199     if ( isEmpty() ) {
13200         return QString();
13201     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13202         return QString::fromLatin1("");
13203     } else if ( len > length() ) {
13204         return *this;
13205     } else {
13206         QString s( len, TRUE );
13207         memcpy( s.d->unicode, d->unicode, len*sizeof(QChar) );
13208         s.d->len = len;
13209         return s;
13210     }
13211 }
13212
13213 /*!
13214   Returns a substring that contains the \a len rightmost characters
13215   of the string.
13216
13217   The whole string is returned if \a len exceeds the length of the
13218   string.
13219
13220   Example:
13221   \code
13222     QString s = "Pineapple";
13223     QString t = s.right( 5 );   // t == "apple"
13224   \endcode
13225
13226   \sa left(), mid(), isEmpty()
13227 */
13228
13229 QString QString::right( uint len ) const
13230 {
13231     if ( isEmpty() ) {
13232         return QString();
13233     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13234         return QString::fromLatin1("");
13235     } else {
13236         uint l = length();
13237         if ( len > l )
13238             len = l;
13239         QString s( len, TRUE );
13240         memcpy( s.d->unicode, d->unicode+(l-len), len*sizeof(QChar) );
13241         s.d->len = len;
13242         return s;
13243     }
13244 }
13245
13246 /*!
13247   Returns a substring that contains the \a len characters of this
13248   string, starting at position \a index.
13249
13250   Returns a null string if the string is empty or \a index is out
13251   of range.  Returns the whole string from \a index if \a index+len exceeds
13252   the length of the string.
13253
13254   Example:
13255   \code
13256     QString s = "Five pineapples";
13257     QString t = s.mid( 5, 4 );                  // t == "pine"
13258   \endcode
13259
13260   \sa left(), right()
13261 */
13262
13263 QString QString::mid( uint index, uint len ) const
13264 {
13265     uint slen = length();
13266     if ( isEmpty() || index >= slen ) {
13267         return QString();
13268     } else if ( len == 0 ) {                    // ## just for 1.x compat:
13269         return QString::fromLatin1("");
13270     } else {
13271         if ( len > slen-index )
13272             len = slen - index;
13273         if ( index == 0 && len == length() )
13274             return *this;
13275         register const QChar *p = unicode()+index;
13276         QString s( len, TRUE );
13277         memcpy( s.d->unicode, p, len*sizeof(QChar) );
13278         s.d->len = len;
13279         return s;
13280     }
13281 }
13282
13283 /*!
13284   Returns a string of length \a width that contains this
13285   string and padded by the \a fill character.
13286
13287   If the length of the string exceeds \a width and \a truncate is FALSE,
13288   then the returned string is a copy of the string.
13289   If the length of the string exceeds \a width and \a truncate is TRUE,
13290   then the returned string is a left(\a width).
13291
13292   Example:
13293   \code
13294     QString s("apple");
13295     QString t = s.leftJustify(8, '.');          // t == "apple..."
13296   \endcode
13297
13298   \sa rightJustify()
13299 */
13300
13301 QString QString::leftJustify( uint width, QChar fill, bool truncate ) const
13302 {
13303     QString result;
13304     int len = length();
13305     int padlen = width - len;
13306     if ( padlen > 0 ) {
13307         result.setLength(len+padlen);
13308         if ( len )
13309             memcpy( result.d->unicode, unicode(), sizeof(QChar)*len );
13310         QChar* uc = result.d->unicode + len;
13311         while (padlen--)
13312             *uc++ = fill;
13313     } else {
13314         if ( truncate )
13315             result = left( width );
13316         else
13317             result = *this;
13318     }
13319     return result;
13320 }
13321
13322 /*!
13323   Returns a string of length \a width that contains pad
13324   characters followed by the string.
13325
13326   If the length of the string exceeds \a width and \a truncate is FALSE,
13327   then the returned string is a copy of the string.
13328   If the length of the string exceeds \a width and \a truncate is TRUE,
13329   then the returned string is a left(\a width).
13330
13331   Example:
13332   \code
13333     QString s("pie");
13334     QString t = s.rightJustify(8, '.');         // t == ".....pie"
13335   \endcode
13336
13337   \sa leftJustify()
13338 */
13339
13340 QString QString::rightJustify( uint width, QChar fill, bool truncate ) const
13341 {
13342     QString result;
13343     int len = length();
13344     int padlen = width - len;
13345     if ( padlen > 0 ) {
13346         result.setLength( len+padlen );
13347         QChar* uc = result.d->unicode;
13348         while (padlen--)
13349             *uc++ = fill;
13350         if ( len )
13351             memcpy( uc, unicode(), sizeof(QChar)*len );
13352     } else {
13353         if ( truncate )
13354             result = left( width );
13355         else
13356             result = *this;
13357     }
13358     return result;
13359 }
13360
13361 /*!
13362   Returns a new string that is the string converted to lower case.
13363
13364   Example:
13365   \code
13366     QString s("TeX");
13367     QString t = s.lower();      // t == "tex"
13368   \endcode
13369
13370   \sa upper()
13371 */
13372
13373 QString QString::lower() const
13374 {
13375     QString s(*this);
13376     int l=length();
13377     if ( l ) {
13378         s.real_detach(); // could do this only when we find a change
13379         register QChar *p=s.d->unicode;
13380         if ( p ) {
13381             while ( l-- ) {
13382                 *p = p->lower();
13383                 p++;
13384             }
13385         }
13386     }
13387     return s;
13388 }
13389
13390 /*!
13391   Returns a new string that is the string converted to upper case.
13392
13393   Example:
13394   \code
13395     QString s("TeX");
13396     QString t = s.upper();                      // t == "TEX"
13397   \endcode
13398
13399   \sa lower()
13400 */
13401
13402 QString QString::upper() const
13403 {
13404     QString s(*this);
13405     int l=length();
13406     if ( l ) {
13407         s.real_detach(); // could do this only when we find a change
13408         register QChar *p=s.d->unicode;
13409         if ( p ) {
13410             while ( l-- ) {
13411                 *p = p->upper();
13412                 p++;
13413             }
13414         }
13415     }
13416     return s;
13417 }
13418
13419
13420 /*!
13421   Returns a new string that has white space removed from the start and the end.
13422
13423   White space means any character for which QChar::isSpace() returns
13424   TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13425   (FF), 13 (CR), and 32 (Space).
13426
13427   Example:
13428   \code
13429     QString s = " space ";
13430     QString t = s.stripWhiteSpace();            // t == "space"
13431   \endcode
13432
13433   \sa simplifyWhiteSpace()
13434 */
13435
13436 QString QString::stripWhiteSpace() const
13437 {
13438     if ( isEmpty() )                            // nothing to do
13439         return *this;
13440     if ( !at(0).isSpace() && !at(length()-1).isSpace() )
13441         return *this;
13442
13443     register const QChar *s = unicode();
13444     QString result = fromLatin1("");
13445
13446     int start = 0;
13447     int end = length() - 1;
13448     while ( start<=end && s[start].isSpace() )  // skip white space from start
13449         start++;
13450     if ( start > end ) {                        // only white space
13451         return result;
13452     }
13453     while ( end && s[end].isSpace() )           // skip white space from end
13454         end--;
13455     int l = end - start + 1;
13456     result.setLength( l );
13457     if ( l )
13458         memcpy( result.d->unicode, &s[start], sizeof(QChar)*l );
13459     return result;
13460 }
13461
13462
13463 /*!
13464   Returns a new string that has white space removed from the start and the end,
13465   plus any sequence of internal white space replaced with a single space
13466   (ASCII 32).
13467
13468   White space means any character for which QChar::isSpace() returns
13469   TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13470   (FF), 13 (CR), and 32 (Space).
13471
13472   \code
13473     QString s = "  lots\t of\nwhite    space ";
13474     QString t = s.simplifyWhiteSpace();         // t == "lots of white space"
13475   \endcode
13476
13477   \sa stripWhiteSpace()
13478 */
13479
13480 QString QString::simplifyWhiteSpace() const
13481 {
13482     if ( isEmpty() )                            // nothing to do
13483         return *this;
13484     QString result;
13485     result.setLength( length() );
13486     const QChar *from = unicode();
13487     const QChar *fromend = from+length();
13488     int outc=0;
13489     QChar *to   = result.d->unicode;
13490     while ( TRUE ) {
13491         while ( from!=fromend && from->isSpace() )
13492             from++;
13493         while ( from!=fromend && !from->isSpace() )
13494             to[outc++] = *from++;
13495         if ( from!=fromend )
13496             to[outc++] = ' ';
13497         else
13498             break;
13499     }
13500     if ( outc > 0 && to[outc-1] == ' ' )
13501         outc--;
13502     result.truncate( outc );
13503     return result;
13504 }
13505
13506
13507 /*!
13508   Insert \a s into the string before position \a index.
13509
13510   If \a index is beyond the end of the string, the string is extended with
13511   spaces (ASCII 32) to length \a index and \a s is then appended.
13512
13513   \code
13514     QString s = "I like fish";
13515     s.insert( 2, "don't ");     // s == "I don't like fish"
13516     s = "x";
13517     s.insert( 3, "yz" );        // s == "x  yz"
13518   \endcode
13519 */
13520
13521 QString &QString::insert( uint index, const QString &s )
13522 {
13523     // the sub function takes care of &s == this case.
13524     return insert( index, s.unicode(), s.length() );
13525 }
13526
13527 /*!
13528   Insert \a len units of QChar data from \a s into the string before
13529   position \a index.
13530 */
13531
13532 QString &QString::insert( uint index, const QChar* s, uint len )
13533 {
13534     if ( len == 0 )
13535         return *this;
13536     uint olen = length();
13537     int nlen = olen + len;
13538
13539     int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13540     if ( df >= 0 && (uint)df < d->maxl ) {
13541         // Part of me - take a copy.
13542         QChar *tmp = QT_ALLOC_QCHAR_VEC( len );
13543         memcpy(tmp,s,len*sizeof(QChar));
13544         insert(index,tmp,len);
13545         QT_DELETE_QCHAR_VEC( tmp );
13546         return *this;
13547     }
13548
13549     if ( index >= olen ) {                      // insert after end of string
13550         setLength( len+index );
13551         int n = index-olen;
13552         QChar* uc = d->unicode+olen;
13553         while (n--)
13554             *uc++ = ' ';
13555         memcpy( d->unicode+index, s, sizeof(QChar)*len );
13556     } else {                                    // normal insert
13557         setLength( nlen );
13558         memmove( d->unicode+index+len, unicode()+index,
13559                  sizeof(QChar)*(olen-index) );
13560         memcpy( d->unicode+index, s, sizeof(QChar)*len );
13561     }
13562     return *this;
13563 }
13564
13565 /*!
13566   Insert \a c into the string at (before) position \a index and returns
13567   a reference to the string.
13568
13569   If \a index is beyond the end of the string, the string is extended with
13570   spaces (ASCII 32) to length \a index and \a c is then appended.
13571
13572   Example:
13573   \code
13574     QString s = "Ys";
13575     s.insert( 1, 'e' );         // s == "Yes"
13576     s.insert( 3, '!');          // s == "Yes!"
13577   \endcode
13578
13579   \sa remove(), replace()
13580 */
13581
13582 QString &QString::insert( uint index, QChar c ) // insert char
13583 {
13584     QString s( c );
13585     return insert( index, s );
13586 }
13587
13588 /*!
13589   \overload QString& QString::insert( uint index, char c )
13590 */
13591
13592 /*!
13593   \fn QString &QString::prepend( const QString &s )
13594
13595   Prepend \a s to the string. Equivalent to insert(0,s).
13596
13597   \sa insert()
13598 */
13599
13600 /*!
13601   \fn QString& QString::prepend( char ch )
13602   Prepends \a ch to the string and returns a reference to the result.
13603
13604   \sa insert()
13605  */
13606
13607 /*!
13608   \fn QString& QString::prepend( QChar ch )
13609   Prepends \a ch to the string and returns a reference to the result.
13610
13611   \sa insert()
13612  */
13613
13614
13615 /*!
13616   Removes \a len characters starting at position \a index from the
13617   string and returns a reference to the string.
13618
13619   If \a index is too big, nothing happens.  If \a index is valid, but
13620   \a len is too large, the rest of the string is removed.
13621
13622   \code
13623     QString s = "Montreal";
13624     s.remove( 1, 4 );
13625     // s == "Meal"
13626   \endcode
13627
13628   \sa insert(), replace()
13629 */
13630
13631 QString &QString::remove( uint index, uint len )
13632 {
13633     uint olen = length();
13634     if ( index + len >= olen ) {                // range problems
13635         if ( index < olen ) {                   // index ok
13636             setLength( index );
13637         }
13638     } else if ( len != 0 ) {
13639         real_detach();
13640         memmove( d->unicode+index, d->unicode+index+len,
13641                  sizeof(QChar)*(olen-index-len) );
13642         setLength( olen-len );
13643     }
13644     return *this;
13645 }
13646
13647 /*!
13648   Replaces \a len characters starting at position \a index from the
13649   string with \a s, and returns a reference to the string.
13650
13651   If \a index is too big, nothing is deleted and \a s is inserted at the
13652   end of the string.  If \a index is valid, but \a len is too large, \e
13653   str replaces the rest of the string.
13654
13655   \code
13656     QString s = "Say yes!";
13657     s.replace( 4, 3, "NO" );                    // s == "Say NO!"
13658   \endcode
13659
13660   \sa insert(), remove()
13661 */
13662
13663 QString &QString::replace( uint index, uint len, const QString &s )
13664 {
13665     return replace( index, len, s.unicode(), s.length() );
13666 }
13667
13668
13669 /*!
13670   Replaces \a len characters starting at position \a index by
13671   \a slen units ot QChar data from \a s, and returns a reference to the string.
13672
13673   \sa insert(), remove()
13674 */
13675
13676 QString &QString::replace( uint index, uint len, const QChar* s, uint slen )
13677 {
13678     if ( len == slen && index + len <= length() ) {
13679         // Optimized common case: replace without size change
13680         real_detach();
13681         memcpy( d->unicode+index, s, len*sizeof(QChar) );
13682     } else {
13683         int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13684         if ( df >= 0 && (uint)df < d->maxl ) {
13685             // Part of me - take a copy.
13686             QChar *tmp = QT_ALLOC_QCHAR_VEC( slen );
13687             memcpy(tmp,s,slen*sizeof(QChar));
13688             replace(index,len,tmp,slen);
13689             QT_DELETE_QCHAR_VEC( tmp );
13690             return *this;
13691         }
13692
13693         remove( index, len );
13694         insert( index, s, slen );
13695     }
13696     return *this;
13697 }
13698
13699
13700
13701 /*!
13702   Finds the first occurrence of the regular expression \a rx, starting at
13703   position \a index. If \a index is -1, the search starts at the last
13704   character; if -2, at the next to last character; etc.
13705
13706   Returns the position of the next match, or -1 if \a rx was not found.
13707
13708   \sa findRev() replace() contains()
13709 */
13710
13711 int QString::find( const QRegExp &rx, int index ) const
13712 {
13713     if ( index < 0 )
13714         index += length();
13715     return rx.match( data(), index );
13716 }
13717
13718 /*!
13719   Finds the first occurrence of the regular expression \a rx, starting at
13720   position \a index and searching backwards. If \a index is -1, the
13721   search starts at the last character; if -2, at the next to last
13722   character; etc.
13723
13724   Returns the position of the next match (backwards), or -1 if \a rx was not
13725   found.
13726
13727   \sa find()
13728 */
13729
13730 int QString::findRev( const QRegExp &rx, int index ) const
13731 {
13732     if ( index < 0 )                            // neg index ==> start from end
13733         index += length();
13734     if ( (uint)index > length() )               // bad index
13735         return -1;
13736     while( index >= 0 ) {
13737         if ( rx.match( data(), index ) == index )
13738             return index;
13739         index--;
13740     }
13741     return -1;
13742 }
13743
13744 /*!
13745   Counts the number of overlapping occurrences of \a rx in the string.
13746
13747   Example:
13748   \code
13749     QString s = "banana and panama";
13750     QRegExp r = QRegExp("a[nm]a", TRUE, FALSE);
13751     s.contains( r );                            // 4 matches
13752   \endcode
13753
13754   \sa find() findRev()
13755 */
13756
13757 int QString::contains( const QRegExp &rx ) const
13758 {
13759     if ( isEmpty() )
13760         return rx.match( data() ) < 0 ? 0 : 1;
13761     int count = 0;
13762     int index = -1;
13763     int len = length();
13764     while ( index < len-1 ) {                   // count overlapping matches
13765         index = rx.match( data(), index+1 );
13766         if ( index < 0 )
13767             break;
13768         count++;
13769     }
13770     return count;
13771 }
13772
13773
13774 /*!
13775   Replaces every occurrence of \a rx in the string with \a str.
13776   Returns a reference to the string.
13777
13778   Examples:
13779   \code
13780     QString s = "banana";
13781     s.replace( QRegExp("a.*a"), "" );           // becomes "b"
13782
13783     QString s = "banana";
13784     s.replace( QRegExp("^[bn]a"), " " );        // becomes " nana"
13785
13786     QString s = "banana";
13787     s.replace( QRegExp("^[bn]a"), "" );         // NOTE! becomes ""
13788   \endcode
13789
13790   \sa find() findRev()
13791 */
13792
13793 QString &QString::replace( const QRegExp &rx, const QString &str )
13794 {
13795     if ( isEmpty() )
13796         return *this;
13797     int index = 0;
13798     int slen  = str.length();
13799     int len;
13800     while ( index < (int)length() ) {
13801         index = rx.match( data(), index, &len, FALSE );
13802         if ( index >= 0 ) {
13803             replace( index, len, str );
13804             index += slen;
13805             if ( !len )
13806                 break;  // Avoid infinite loop on 0-length matches, e.g. [a-z]*
13807         }
13808         else
13809             break;
13810     }
13811     return *this;
13812 }
13813
13814 static bool
13815 ok_in_base( QChar c, int base )
13816 {
13817     if ( base <= 10 )
13818         return c.isDigit() && c.digitValue() < base;
13819     else
13820         return c.isDigit() || (c >= 'a' && c < char('a'+base-10))
13821                            || (c >= 'A' && c < char('A'+base-10));
13822 }
13823
13824 /*!
13825   Returns the string converted to a <code>long</code> value.
13826
13827   If \a ok is non-null, \a *ok is set to TRUE if there are no
13828   conceivable errors, and FALSE if the string is not a number at all, or if
13829   it has trailing garbage.
13830 */
13831
13832 long QString::toLong( bool *ok, int base ) const
13833 {
13834     const QChar *p = unicode();
13835     long val=0;
13836     int l = length();
13837     const long max_mult = INT_MAX / base;
13838     bool is_ok = FALSE;
13839     int neg = 0;
13840     if ( !p )
13841         goto bye;
13842     while ( l && p->isSpace() )                 // skip leading space
13843         l--,p++;
13844     if ( l && *p == '-' ) {
13845         l--;
13846         p++;
13847         neg = 1;
13848     } else if ( *p == '+' ) {
13849         l--;
13850         p++;
13851     }
13852
13853     // NOTE: toULong() code is similar
13854     if ( !l || !ok_in_base(*p,base) )
13855         goto bye;
13856     while ( l && ok_in_base(*p,base) ) {
13857         l--;
13858         int dv;
13859         if ( p->isDigit() ) {
13860             dv = p->digitValue();
13861         } else {
13862             if ( *p >= 'a' && *p <= 'z' )
13863                 dv = *p - 'a' + 10;
13864             else
13865                 dv = *p - 'A' + 10;
13866         }
13867         if ( val > max_mult || (val == max_mult && dv > (INT_MAX%base)+neg) )
13868             goto bye;
13869         val = base*val + dv;
13870         p++;
13871     }
13872     if ( neg )
13873         val = -val;
13874     while ( l && p->isSpace() )                 // skip trailing space
13875         l--,p++;
13876     if ( !l )
13877         is_ok = TRUE;
13878 bye:
13879     if ( ok )
13880         *ok = is_ok;
13881     return is_ok ? val : 0;
13882 }
13883
13884 /*!
13885   Returns the string converted to an <code>unsigned long</code>
13886   value.
13887
13888   If \a ok is non-null, \a *ok is set to TRUE if there are no
13889   conceivable errors, and FALSE if the string is not a number at all,
13890   or if it has trailing garbage.
13891 */
13892
13893 ulong QString::toULong( bool *ok, int base ) const
13894 {
13895     const QChar *p = unicode();
13896     ulong val=0;
13897     int l = length();
13898     const ulong max_mult = 429496729;           // UINT_MAX/10, rounded down
13899     bool is_ok = FALSE;
13900     if ( !p )
13901         goto bye;
13902     while ( l && p->isSpace() )                 // skip leading space
13903         l--,p++;
13904     if ( *p == '+' )
13905         l--,p++;
13906
13907     // NOTE: toLong() code is similar
13908     if ( !l || !ok_in_base(*p,base) )
13909         goto bye;
13910     while ( l && ok_in_base(*p,base) ) {
13911         l--;
13912         uint dv;
13913         if ( p->isDigit() ) {
13914             dv = p->digitValue();
13915         } else {
13916             if ( *p >= 'a' && *p <= 'z' )
13917                 dv = *p - 'a' + 10;
13918             else
13919                 dv = *p - 'A' + 10;
13920         }
13921         if ( val > max_mult || (val == max_mult && dv > (UINT_MAX%base)) )
13922             goto bye;
13923         val = base*val + dv;
13924         p++;
13925     }
13926
13927     while ( l && p->isSpace() )                 // skip trailing space
13928         l--,p++;
13929     if ( !l )
13930         is_ok = TRUE;
13931 bye:
13932     if ( ok )
13933         *ok = is_ok;
13934     return is_ok ? val : 0;
13935 }
13936
13937 /*!
13938   Returns the string converted to a <code>short</code> value.
13939
13940   If \a ok is non-null, \a *ok is set to TRUE if there are no
13941   conceivable errors, and FALSE if the string is not a number at all, or if
13942   it has trailing garbage.
13943 */
13944
13945 short QString::toShort( bool *ok, int base ) const
13946 {
13947     long v = toLong( ok, base );
13948     if ( ok && *ok && (v < -32768 || v > 32767) ) {
13949         *ok = FALSE;
13950         v = 0;
13951     }
13952     return (short)v;
13953 }
13954
13955 /*!
13956   Returns the string converted to an <code>unsigned short</code> value.
13957
13958   If \a ok is non-null, \a *ok is set to TRUE if there are no
13959   conceivable errors, and FALSE if the string is not a number at all, or if
13960   it has trailing garbage.
13961 */
13962
13963 ushort QString::toUShort( bool *ok, int base ) const
13964 {
13965     ulong v = toULong( ok, base );
13966     if ( ok && *ok && (v > 65535) ) {
13967         *ok = FALSE;
13968         v = 0;
13969     }
13970     return (ushort)v;
13971 }
13972
13973
13974 /*!
13975   Returns the string converted to a <code>int</code> value.
13976
13977   \code
13978   QString str("FF");
13979   bool ok;
13980   int hex = str.toInt( &ok, 16 ); // will return 255, and ok set to TRUE
13981   int dec = str.toInt( &ok, 10 ); // will return 0, and ok set to FALSE
13982   \endcode
13983
13984   If \a ok is non-null, \a *ok is set to TRUE if there are no
13985   conceivable errors, and FALSE if the string is not a number at all,
13986   or if it has trailing garbage.
13987 */
13988
13989 int QString::toInt( bool *ok, int base ) const
13990 {
13991     return (int)toLong( ok, base );
13992 }
13993
13994 /*!
13995   Returns the string converted to an <code>unsigned int</code> value.
13996
13997   If \a ok is non-null, \a *ok is set to TRUE if there are no
13998   conceivable errors, and FALSE if the string is not a number at all,
13999   or if it has trailing garbage.
14000 */
14001
14002 uint QString::toUInt( bool *ok, int base ) const
14003 {
14004     return (uint)toULong( ok, base );
14005 }
14006
14007 /*!
14008   Returns the string converted to a <code>double</code> value.
14009
14010   If \a ok is non-null, \a *ok is set to TRUE if there are no conceivable
14011   errors, and FALSE if the string is not a number at all, or if it has
14012   trailing garbage.
14013 */
14014
14015 double QString::toDouble( bool *ok ) const
14016 {
14017     char *end;
14018
14019     QCString a = latin1();
14020     // Just latin1() is not sufficient, since U0131 would look like '1'.
14021     for (uint i=0; i<d->len; i++)
14022         if ( d->unicode[i].row() )
14023             a[(int)i]='z';
14024
14025     double val = strtod( a.data() ? a.data() : "", &end );
14026     if ( ok )
14027         *ok = ( a && *a && ( end == 0 || *end == '\0' ) );
14028     return val;
14029 }
14030
14031 /*!
14032   Returns the string converted to a <code>float</code> value.
14033
14034   If \a ok is non-null, \a *ok is set to TRUE if there are no
14035   conceivable errors, and FALSE if the string is not a number at all,
14036   or if it has trailing garbage.
14037 */
14038
14039 float QString::toFloat( bool *ok ) const
14040 {
14041     return (float)toDouble( ok );
14042 }
14043
14044
14045 /*!
14046   Sets the string to the printed value of \a n and returns a
14047   reference to the string.
14048
14049   The value is converted to \a base notation (default is decimal).
14050   The base must be a value from 2 to 36.
14051 */
14052
14053 QString &QString::setNum( long n, int base )
14054 {
14055 #if defined(CHECK_RANGE)
14056     if ( base < 2 || base > 36 ) {
14057         qWarning( "QString::setNum: Invalid base %d", base );
14058         base = 10;
14059     }
14060 #endif
14061     char   charbuf[65*sizeof(QChar)];
14062     QChar *buf = (QChar*)charbuf;
14063     QChar *p = &buf[64];
14064     int  len = 0;
14065     bool neg;
14066     if ( n < 0 ) {
14067         neg = TRUE;
14068         if ( n == INT_MIN ) {
14069             // Cannot always negate this special case
14070             QString s1, s2;
14071             s1.setNum(n/base);
14072             s2.setNum((-(n+base))%base);
14073             *this = s1 + s2;
14074             return *this;
14075         }
14076         n = -n;
14077     } else {
14078         neg = FALSE;
14079     }
14080     do {
14081         *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14082         n /= base;
14083         len++;
14084     } while ( n );
14085     if ( neg ) {
14086         *--p = '-';
14087         len++;
14088     }
14089     return setUnicode( p, len );
14090 }
14091
14092 /*!
14093   Sets the string to the printed unsigned value of \a n and
14094   returns a reference to the string.
14095
14096   The value is converted to \a base notation (default is decimal).
14097   The base must be a value from 2 to 36.
14098 */
14099
14100 QString &QString::setNum( ulong n, int base )
14101 {
14102 #if defined(CHECK_RANGE)
14103     if ( base < 2 || base > 36 ) {
14104         qWarning( "QString::setNum: Invalid base %d", base );
14105         base = 10;
14106     }
14107 #endif
14108     char   charbuf[65*sizeof(QChar)];
14109     QChar *buf = (QChar*)charbuf;
14110     QChar *p = &buf[64];
14111     int len = 0;
14112     do {
14113         *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14114         n /= base;
14115         len++;
14116     } while ( n );
14117     return setUnicode(p,len);
14118 }
14119
14120 /*!
14121   \fn QString &QString::setNum( int n, int base )
14122   Sets the string to the printed value of \a n and returns a reference
14123   to the string.
14124 */
14125
14126 /*!
14127   \fn QString &QString::setNum( uint n, int base )
14128   Sets the string to the printed unsigned value of \a n and returns a
14129   reference to the string.
14130 */
14131
14132 /*!
14133   \fn QString &QString::setNum( short n, int base )
14134   Sets the string to the printed value of \a n and returns a reference
14135   to the string.
14136 */
14137
14138 /*!
14139   \fn QString &QString::setNum( ushort n, int base )
14140   Sets the string to the printed unsigned value of \a n and returns a
14141   reference to the string.
14142 */
14143
14144 /*!  Sets the string to the printed value of \a n, formatted in the \a f
14145   format with \a prec precision, and returns a reference to the
14146   string.
14147
14148   \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14149   same meaning as for sprintf().
14150 */
14151
14152 QString &QString::setNum( double n, char f, int prec )
14153 {
14154 #if defined(CHECK_RANGE)
14155     if ( !(f=='f' || f=='F' || f=='e' || f=='E' || f=='g' || f=='G') ) {
14156         qWarning( "QString::setNum: Invalid format char '%c'", f );
14157         f = 'f';
14158     }
14159 #endif
14160     char format[20];
14161     char buf[120];                              // enough for 99 precision?
14162     char *fs = format;                          // generate format string
14163     *fs++ = '%';                                //   "%.<prec>l<f>"
14164     if ( prec >= 0 ) {
14165         if ( prec > 99 )                        // buf big enough for precision?
14166             prec = 99;
14167         *fs++ = '.';
14168         if ( prec >= 10 ) {
14169             *fs++ = prec / 10 + '0';
14170             *fs++ = prec % 10 + '0';
14171         } else {
14172             *fs++ = prec + '0';
14173         }
14174     }
14175     *fs++ = 'l';
14176     *fs++ = f;
14177     *fs = '\0';
14178     ::sprintf( buf, format, n );
14179     return setLatin1(buf);
14180 }
14181
14182 /*!
14183   \overload QString &QString::setNum( float n, char f, int prec )
14184 */
14185
14186
14187 /*!
14188   A convenience factory function that returns a string representation
14189   of the number \a n.
14190
14191   \sa setNum()
14192  */
14193 QString QString::number( long n, int base )
14194 {
14195     QString s;
14196     s.setNum( n, base );
14197     return s;
14198 }
14199
14200 /*!
14201   A convenience factory function that returns a string representation
14202   of the number \a n.
14203
14204   \sa setNum()
14205  */
14206 QString QString::number( ulong n, int base )
14207 {
14208     QString s;
14209     s.setNum( n, base );
14210     return s;
14211 }
14212
14213 /*!
14214   A convenience factory function that returns a string representation
14215   of the number \a n.
14216
14217   \sa setNum()
14218  */
14219 QString QString::number( int n, int base )
14220 {
14221     QString s;
14222     s.setNum( n, base );
14223     return s;
14224 }
14225
14226 /*!
14227   A convenience factory function that returns a string representation
14228   of the number \a n.
14229
14230   \sa setNum()
14231  */
14232 QString QString::number( uint n, int base )
14233 {
14234     QString s;
14235     s.setNum( n, base );
14236     return s;
14237 }
14238
14239 /*!
14240   This static function returns the printed value of \a n, formatted in the
14241   \a f format with \a prec precision.
14242
14243   \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14244   same meaning as for sprintf().
14245
14246   \sa setNum()
14247  */
14248 QString QString::number( double n, char f, int prec )
14249 {
14250     QString s;
14251     s.setNum( n, f, prec );
14252     return s;
14253 }
14254
14255
14256 /*! \obsolete
14257
14258   Sets the character at position \a index to \a c and expands the
14259   string if necessary, filling with spaces.
14260
14261   This method is redundant in Qt 2.x, because operator[] will expand
14262   the string as necessary.
14263 */
14264
14265 void QString::setExpand( uint index, QChar c )
14266 {
14267     int spaces = index - d->len;
14268     at(index) = c;
14269     while (spaces-->0)
14270         d->unicode[--index]=' ';
14271 }
14272
14273
14274 /*!
14275   \fn const char* QString::data() const
14276
14277   \obsolete
14278
14279   Returns a pointer to a 0-terminated classic C string.
14280
14281   In Qt 1.x, this returned a char* allowing direct manipulation of the
14282   string as a sequence of bytes.  In Qt 2.x where QString is a Unicode
14283   string, char* conversion constructs a temporary string, and hence
14284   direct character operations are meaningless.
14285 */
14286
14287 /*!
14288   \fn bool QString::operator!() const
14289   Returns TRUE if it is a null string, otherwise FALSE.  Thus
14290   you can write:
14291
14292 \code
14293   QString name = getName();
14294   if ( !name )
14295     name = "Rodney";
14296 \endcode
14297
14298   Note that if you say:
14299
14300 \code
14301   QString name = getName();
14302   if ( name )
14303     doSomethingWith(name);
14304 \endcode
14305
14306   Then this will call <tt>operator const char*()</tt>, which will do what
14307   you want, but rather inefficiently - you may wish to define the macro
14308   QT_NO_ASCII_CAST when writing code which you wish to strictly remain
14309   Unicode-clean.
14310
14311   When you want the above semantics, use <tt>!isNull()</tt>
14312   or even <tt>!!</tt>:
14313
14314 \code
14315   QString name = getName();
14316   if ( !!name )
14317     doSomethingWith(name);
14318 \endcode
14319 */
14320
14321
14322 /*!
14323   \fn QString& QString::append( const QString& str )
14324   Appends \a str to the string and returns a reference to the result.
14325   Equivalent to operator+=().
14326  */
14327
14328 /*!
14329   \fn QString& QString::append( char ch )
14330   Appends \a ch to the string and returns a reference to the result.
14331   Equivalent to operator+=().
14332  */
14333
14334 /*!
14335   \fn QString& QString::append( QChar ch )
14336   Appends \a ch to the string and returns a reference to the result.
14337   Equivalent to operator+=().
14338  */
14339
14340 /*!
14341   Appends \a str to the string and returns a reference to the string.
14342 */
14343 QString& QString::operator+=( const QString &str )
14344 {
14345     uint len1 = length();
14346     uint len2 = str.length();
14347     if ( len2 ) {
14348         setLength(len1+len2);
14349         memcpy( d->unicode+len1, str.unicode(), sizeof(QChar)*len2 );
14350     } else if ( isNull() && !str.isNull() ) {   // ## just for 1.x compat:
14351         *this = fromLatin1("");
14352     }
14353     return *this;
14354 }
14355
14356 /*!
14357   Appends \a c to the string and returns a reference to the string.
14358 */
14359
14360 QString &QString::operator+=( QChar c )
14361 {
14362     setLength(length()+1);
14363     d->unicode[length()-1] = c;
14364     return *this;
14365 }
14366
14367 /*!
14368   Appends \a c to the string and returns a reference to the string.
14369 */
14370
14371 QString &QString::operator+=( char c )
14372 {
14373     setLength(length()+1);
14374     d->unicode[length()-1] = c;
14375     return *this;
14376 }
14377
14378
14379
14380 /*! \fn char QChar::latin1() const
14381
14382   Returns a latin-1 copy of this character, if this character is in
14383   the latin-1 character set.  If not, this function returns 0.
14384 */
14385
14386
14387 /*!
14388   Returns a Latin-1 representation of the string. Note that the returned
14389   value is undefined if the string contains non-Latin-1 characters.  If you
14390   want to convert strings into formats other than Unicode, see the
14391   QTextCodec classes.
14392
14393   This function is mainly useful for boot-strapping legacy code to
14394   use Unicode.
14395
14396   The result remains valid so long as one unmodified
14397   copy of the source string exists.
14398
14399   \sa utf8(), local8Bit()
14400 */
14401 const char* QString::latin1() const
14402 {
14403     if ( d->ascii ) {
14404         if ( d->dirtyascii )
14405             delete [] d->ascii;
14406         else
14407             return d->ascii;
14408     }
14409     Q2HELPER(stat_get_ascii++)
14410     Q2HELPER(stat_get_ascii_size+=d->len)
14411     static QTextCodec* codec = QTextCodec::codecForMib(106);
14412     if (codec) // we use utf8 coding also for latin1 if possible
14413     {
14414       QCString utf8str(codec->fromUnicode(*this));
14415       d->ascii = new char[utf8str.length()+1];
14416       if (utf8str.isEmpty())
14417       {
14418         d->ascii[0]='\0'; // make empty string
14419       }
14420       else // copy string
14421       {
14422         qstrcpy(d->ascii,utf8str.data());
14423       }
14424     }
14425     else // fall back to latin1
14426     {
14427       d->ascii = unicodeToAscii( d->unicode, d->len );
14428     }
14429     QCString utf8str(utf8());
14430     d->dirtyascii = 0;
14431     return d->ascii;
14432 }
14433
14434 /*! \obsolete
14435
14436   This functions simply calls latin1() and returns the result.
14437 */
14438 const char* QString::ascii() const
14439 {
14440     return latin1();
14441 }
14442
14443 #ifndef QT_NO_TEXTCODEC
14444 /*!
14445   Returns the string encoded in UTF8 format.
14446
14447   See QTextCodec for more diverse coding/decoding of Unicode strings.
14448
14449   \sa QString::fromUtf8(), local8Bit(), latin1()
14450 */
14451 QCString QString::utf8() const
14452 {
14453     static QTextCodec* codec = QTextCodec::codecForMib(106);
14454     return codec
14455             ? codec->fromUnicode(*this)
14456             : QCString(latin1());
14457 }
14458
14459 /*!
14460   Returns the unicode string decoded from the
14461   first \a len bytes of \a utf8.  If \a len is -1 (the default), the
14462   length of \a utf8 is used.  If trailing partial characters are in
14463   \a utf8, they are ignored.
14464
14465   See QTextCodec for more diverse coding/decoding of Unicode strings.
14466 */
14467 QString QString::fromUtf8(const char* utf8, int len)
14468 {
14469     static QTextCodec* codec = QTextCodec::codecForMib(106);
14470     if ( len < 0 ) len = qstrlen(utf8);
14471     return codec
14472             ? codec->toUnicode(utf8, len)
14473             : QString::fromLatin1(utf8, len);
14474 }
14475 #endif // QT_NO_TEXTCODEC
14476 /*!
14477   Creates a QString from Latin1 text.  This is the same as the
14478   QString(const char*) constructor, but you can make that constructor
14479   invisible if you compile with the define QT_NO_CAST_ASCII, in which
14480   case you can explicitly create a QString from Latin-1 text using
14481   this function.
14482 */
14483 QString QString::fromLatin1(const char* chars, int len)
14484 {
14485     uint l;
14486     QChar *uc;
14487     if ( len < 0 ) {
14488         uc = internalAsciiToUnicode(chars,&l);
14489     } else {
14490         uc = internalAsciiToUnicode(chars,&l,len);
14491     }
14492     return QString(new QStringData(uc,l,l), TRUE);
14493 }
14494
14495 /*!
14496   \fn const QChar* QString::unicode() const
14497
14498   Returns the Unicode representation of the string.  The result
14499   remains valid until the string is modified.
14500 */
14501
14502 /*!
14503   Returns the string encoded in a locale-specific format.  On X11, this
14504   is the QTextCodec::codecForLocale().  On Windows, it is a system-defined
14505   encoding.
14506
14507   See QTextCodec for more diverse coding/decoding of Unicode strings.
14508
14509   \sa QString::fromLocal8Bit(), latin1(), utf8()
14510 */
14511
14512
14513 QCString QString::local8Bit() const
14514 {
14515 #ifdef QT_NO_TEXTCODEC
14516     return latin1();
14517 #else
14518 #ifdef _WS_X11_
14519     static QTextCodec* codec = QTextCodec::codecForLocale();
14520     return codec
14521             ? codec->fromUnicode(*this)
14522             : QCString(latin1());
14523 #endif
14524 #ifdef _WS_MAC_
14525     static QTextCodec* codec = QTextCodec::codecForLocale();
14526     return codec
14527             ? codec->fromUnicode(*this)
14528             : QCString(latin1());
14529 #endif
14530 #ifdef _WS_WIN_
14531     return qt_winQString2MB( *this );
14532 #endif
14533 #ifdef _WS_QWS_
14534     return utf8(); // ##### if there is ANY 8 bit format supported?
14535 #endif
14536 #endif
14537 }
14538
14539 /*!
14540   Returns the unicode string decoded from the
14541   first \a len bytes of \a local8Bit.  If \a len is -1 (the default), the
14542   length of \a local8Bit is used.  If trailing partial characters are in
14543   \a local8Bit, they are ignored.
14544
14545   \a local8Bit is assumed to be encoded in a locale-specific format.
14546
14547   See QTextCodec for more diverse coding/decoding of Unicode strings.
14548 */
14549 QString QString::fromLocal8Bit(const char* local8Bit, int len)
14550 {
14551 #ifdef QT_NO_TEXTCODEC
14552     return fromLatin1( local8Bit, len );
14553 #else
14554
14555     if ( !local8Bit )
14556         return QString::null;
14557 #ifdef _WS_X11_
14558     static QTextCodec* codec = QTextCodec::codecForLocale();
14559     if ( len < 0 ) len = qstrlen(local8Bit);
14560     return codec
14561             ? codec->toUnicode(local8Bit, len)
14562             : QString::fromLatin1(local8Bit,len);
14563 #endif
14564 #ifdef _WS_MAC_
14565     static QTextCodec* codec = QTextCodec::codecForLocale();
14566     if ( len < 0 ) len = qstrlen(local8Bit);
14567     return codec
14568             ? codec->toUnicode(local8Bit, len)
14569             : QString::fromLatin1(local8Bit,len);
14570 #endif
14571 // Should this be OS_WIN32?
14572 #ifdef _WS_WIN_
14573     if ( len >= 0 ) {
14574         QCString s(local8Bit,len+1);
14575         return qt_winMB2QString(s);
14576     }
14577     return qt_winMB2QString( local8Bit );
14578 #endif
14579 #ifdef _WS_QWS_
14580     return fromUtf8(local8Bit,len);
14581 #endif
14582 #endif // QT_NO_TEXTCODEC
14583 }
14584
14585 /*!
14586   \fn QString::operator const char *() const
14587
14588   Returns latin1().  Be sure to see the warnings documented there.
14589   Note that for new code which you wish to be strictly Unicode-clean,
14590   you can define the macro QT_NO_ASCII_CAST when compiling your code
14591   to hide this function so that automatic casts are not done.  This
14592   has the added advantage that you catch the programming error
14593   described under operator!().
14594 */
14595
14596 /*!
14597   \fn QChar QString::at( uint ) const
14598
14599   Returns the character at \a i, or 0 if \a i is beyond the length
14600   of the string.
14601
14602   Note: If this QString is not const or const&, the non-const at()
14603   will be used instead, which will expand the string if \a i is beyond
14604   the length of the string.
14605 */
14606
14607 /*!
14608   \fn QChar QString::constref(uint i) const
14609   Equivalent to at(i), this returns the QChar at \a i by value.
14610
14611   \sa ref()
14612 */
14613
14614 /*!
14615   \fn QChar& QString::ref(uint i)
14616   Returns the QChar at \a i by reference.
14617
14618   \sa constref()
14619 */
14620
14621 /*!
14622   \fn QChar QString::operator[](int) const
14623
14624   Returns the character at \a i, or QChar::null if \a i is beyond the
14625   length of the string.
14626
14627   Note: If this QString is not const or const&, the non-const operator[]
14628   will be used instead, which will expand the string if \a i is beyond
14629   the length of the string.
14630 */
14631
14632 /*!
14633   \fn QCharRef QString::operator[](int)
14634
14635   Returns an object that references the character at \a i.
14636   This reference
14637   can then be assigned to, or otherwise used immediately, but
14638   becomes invalid once further modifications are made to the string.
14639   The QCharRef internal class can be used much like a constant QChar, but
14640   if you assign to it, you change the original string (which enlarges
14641   and detaches itself). You will get compilation errors if you try to
14642   use the result as anything but a QChar.
14643 */
14644
14645 /*!
14646   \fn QCharRef QString::at( uint i )
14647   Returns a reference to the character at \a i, expanding
14648   the string with QChar::null if necessary.  The resulting reference
14649   can then be assigned to, or otherwise used immediately, but
14650   becomes invalid once further modifications are made to the string.
14651 */
14652
14653 /*!
14654   Internal chunk of code to handle the
14655   uncommon cases of at() above.
14656 */
14657 void QString::subat( uint i )
14658 {
14659     uint olen = d->len;
14660     if ( i >= olen ) {
14661         setLength( i+1 );               // i is index; i+1 is needed length
14662         for ( uint j=olen; j<=i; j++ )
14663             d->unicode[j] = QChar::null;
14664     } else {
14665         // Just be sure to detach
14666         real_detach();
14667     }
14668 }
14669
14670
14671 /*!
14672   Resizes the string to \a len unicode characters and copies \a unicode
14673   into the string.  If \a unicode is null, nothing is copied, but the
14674   string is resized to \a len anyway. If \a len is zero, the string
14675   becomes a \link isNull() null\endlink string.
14676
14677   \sa setLatin1(), isNull()
14678 */
14679
14680 QString& QString::setUnicode( const QChar *unicode, uint len )
14681 {
14682     if ( len == 0 ) {                           // set to null string
14683         if ( d != shared_null ) {               // beware of nullstring being set to nullstring
14684             deref();
14685             d = shared_null ? shared_null : makeSharedNull();
14686             d->ref();
14687         }
14688     } else if ( d->count != 1 || len > d->maxl ||
14689          ( len*4 < d->maxl && d->maxl > 4 ) ) { // detach, grown or shrink
14690         Q2HELPER(stat_copy_on_write++)
14691         Q2HELPER(stat_copy_on_write_size+=d->len)
14692         uint newMax = 4;
14693         while ( newMax < len )
14694             newMax *= 2;
14695         QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
14696         if ( unicode )
14697             memcpy( nd, unicode, sizeof(QChar)*len );
14698         deref();
14699         d = new QStringData( nd, len, newMax );
14700     } else {
14701         d->len = len;
14702         d->dirtyascii = 1;
14703         if ( unicode )
14704             memcpy( d->unicode, unicode, sizeof(QChar)*len );
14705     }
14706     return *this;
14707 }
14708
14709 /*!
14710   Resizes the string to \a len unicode characters and copies
14711   \a unicode_as_ushorts into the string (on some X11 client
14712   platforms this will involve a byte-swapping pass).
14713
14714   If \a unicode is null, nothing is copied, but the
14715   string is resized to \a len anyway. If \a len is zero, the string
14716   becomes a \link isNull() null\endlink string.
14717
14718   \sa setLatin1(), isNull()
14719 */
14720 QString& QString::setUnicodeCodes( const ushort* unicode_as_ushorts, uint len )
14721 {
14722     setUnicode((const QChar*)unicode_as_ushorts, len);
14723     QChar t(0x1234);
14724     if ( unicode_as_ushorts && *((ushort*)&t) == 0x3412 ) {
14725         // Need to byteswap
14726         char* b = (char*)d->unicode;
14727         while ( len-- ) {
14728             char c = b[0];
14729             b[0] = b[1];
14730             b[1] = c;
14731             b += sizeof(QChar);
14732         }
14733     }
14734     return *this;
14735 }
14736
14737
14738 /*!
14739   Sets this string to \a str, interpreted as a classic Latin 1 C string.
14740   If the \a len argument is negative (default), it is set to strlen(str).
14741
14742   If \a str is 0 a null string is created.  If \a str is "" an empty
14743   string is created.
14744
14745   \sa isNull(), isEmpty()
14746 */
14747
14748 QString &QString::setLatin1( const char *str, int len )
14749 {
14750     if ( str == 0 )
14751         return setUnicode(0,0);
14752     if ( len < 0 )
14753         len = qstrlen(str);
14754     if ( len == 0 ) {                           // won't make a null string
14755         deref();
14756         uint l;
14757         QChar *uc = internalAsciiToUnicode(str,&l);
14758         d = new QStringData(uc,l,l);
14759     } else {
14760         setUnicode( 0, len );                   // resize but not copy
14761         QChar *p = d->unicode;
14762         while ( len-- )
14763             *p++ = *str++;
14764     }
14765     return *this;
14766 }
14767
14768
14769 /*!
14770   \fn int QString::compare (const QString & s1, const QString & s2)
14771
14772   Compare \a s1 to \a s2 returning an integer less than, equal to, or
14773   greater than zero if s1 is, respectively, lexically less than, equal to,
14774   or greater than s2.
14775 */
14776
14777 /*!
14778   Compares this string to \a s, returning an integer less than, equal to, or
14779   greater than zero if it is, respectively, lexically less than, equal to,
14780   or greater than \a s.
14781 */
14782 int QString::compare( const QString& s ) const
14783 {
14784     return ucstrcmp(*this,s);
14785 }
14786
14787 bool operator==( const QString &s1, const QString &s2 )
14788 {
14789     return (s1.length() == s2.length()) && s1.isNull() == s2.isNull() &&
14790            (memcmp((char*)s1.unicode(),(char*)s2.unicode(),
14791                    s1.length()*sizeof(QChar)) ==0);
14792 }
14793
14794 bool operator!=( const QString &s1, const QString &s2 )
14795 { return !(s1==s2); }
14796
14797 bool operator<( const QString &s1, const QString &s2 )
14798 { return ucstrcmp(s1,s2) < 0; }
14799
14800 bool operator<=( const QString &s1, const QString &s2 )
14801 { return ucstrcmp(s1,s2) <= 0; }
14802
14803 bool operator>( const QString &s1, const QString &s2 )
14804 { return ucstrcmp(s1,s2) > 0; }
14805
14806 bool operator>=( const QString &s1, const QString &s2 )
14807 { return ucstrcmp(s1,s2) >= 0; }
14808
14809
14810 bool operator==( const QString &s1, const char *s2 )
14811 { return s1==QString(s2); }
14812
14813 bool operator==( const char *s1, const QString &s2 )
14814 { return QString(s1)==s2; }
14815
14816 bool operator!=( const QString &s1, const char *s2 )
14817 { return !(s1==s2); }
14818
14819 bool operator!=( const char *s1, const QString &s2 )
14820 { return !(s1==s2); }
14821
14822 bool operator<( const QString &s1, const char *s2 )
14823 { return ucstrcmp(s1,s2) < 0; }
14824
14825 bool operator<( const char *s1, const QString &s2 )
14826 { return ucstrcmp(s1,s2) < 0; }
14827
14828 bool operator<=( const QString &s1, const char *s2 )
14829 { return ucstrcmp(s1,s2) <= 0; }
14830
14831 bool operator<=( const char *s1, const QString &s2 )
14832 { return ucstrcmp(s1,s2) <= 0; }
14833
14834 bool operator>( const QString &s1, const char *s2 )
14835 { return ucstrcmp(s1,s2) > 0; }
14836
14837 bool operator>( const char *s1, const QString &s2 )
14838 { return ucstrcmp(s1,s2) > 0; }
14839
14840 bool operator>=( const QString &s1, const char *s2 )
14841 { return ucstrcmp(s1,s2) >= 0; }
14842
14843 bool operator>=( const char *s1, const QString &s2 )
14844 { return ucstrcmp(s1,s2) >= 0; }
14845
14846
14847 /*****************************************************************************
14848   Documentation for QString related functions
14849  *****************************************************************************/
14850
14851 /*!
14852   \fn bool operator==( const QString &s1, const QString &s2 )
14853   \relates QString
14854   Returns TRUE if the two strings are equal, or FALSE if they are different.
14855   A null string is different from an empty, non-null string.
14856
14857   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14858 */
14859
14860 /*!
14861   \fn bool operator==( const QString &s1, const char *s2 )
14862   \relates QString
14863   Returns TRUE if the two strings are equal, or FALSE if they are different.
14864
14865   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14866 */
14867
14868 /*!
14869   \fn bool operator==( const char *s1, const QString &s2 )
14870   \relates QString
14871   Returns TRUE if the two strings are equal, or FALSE if they are different.
14872
14873   Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14874 */
14875
14876 /*!
14877   \fn bool operator!=( const QString &s1, const QString &s2 )
14878   \relates QString
14879   Returns TRUE if the two strings are different, or FALSE if they are equal.
14880
14881   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14882 */
14883
14884 /*!
14885   \fn bool operator!=( const QString &s1, const char *s2 )
14886   \relates QString
14887   Returns TRUE if the two strings are different, or FALSE if they are equal.
14888
14889   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14890 */
14891
14892 /*!
14893   \fn bool operator!=( const char *s1, const QString &s2 )
14894   \relates QString
14895   Returns TRUE if the two strings are different, or FALSE if they are equal.
14896
14897   Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14898 */
14899
14900 /*!
14901   \fn bool operator<( const QString &s1, const char *s2 )
14902   \relates QString
14903   Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
14904
14905   Equivalent to <code>qstrcmp(s1,s2) \< 0</code>.
14906 */
14907
14908 /*!
14909   \fn bool operator<( const char *s1, const QString &s2 )
14910   \relates QString
14911   Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
14912
14913   Equivalent to <code>qstrcmp(s1,s2) \< 0</code>.
14914 */
14915
14916 /*!
14917   \fn bool operator<=( const QString &s1, const char *s2 )
14918   \relates QString
14919   Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
14920   otherwise FALSE.
14921
14922   Equivalent to <code>qstrcmp(s1,s2) \<= 0</code>.
14923 */
14924
14925 /*!
14926   \fn bool operator<=( const char *s1, const QString &s2 )
14927   \relates QString
14928   Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
14929   otherwise FALSE.
14930
14931   Equivalent to <code>qstrcmp(s1,s2) \<= 0</code>.
14932 */
14933
14934 /*!
14935   \fn bool operator>( const QString &s1, const char *s2 )
14936   \relates QString
14937   Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
14938
14939   Equivalent to <code>qstrcmp(s1,s2) \> 0</code>.
14940 */
14941
14942 /*!
14943   \fn bool operator>( const char *s1, const QString &s2 )
14944   \relates QString
14945   Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
14946
14947   Equivalent to <code>qstrcmp(s1,s2) \> 0</code>.
14948 */
14949
14950 /*!
14951   \fn bool operator>=( const QString &s1, const char *s2 )
14952   \relates QString
14953   Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
14954   otherwise FALSE.
14955
14956   Equivalent to <code>qstrcmp(s1,s2) \>= 0</code>.
14957 */
14958
14959 /*!
14960   \fn bool operator>=( const char *s1, const QString &s2 )
14961   \relates QString
14962   Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
14963   otherwise FALSE.
14964
14965   Equivalent to <code>qstrcmp(s1,s2) \>= 0</code>.
14966 */
14967
14968 /*!
14969   \fn QString operator+( const QString &s1, const QString &s2 )
14970   \relates QString
14971   Returns the concatenated string of s1 and s2.
14972 */
14973
14974 /*!
14975   \fn QString operator+( const QString &s1, const char *s2 )
14976   \relates QString
14977   Returns the concatenated string of s1 and s2.
14978 */
14979
14980 /*!
14981   \fn QString operator+( const char *s1, const QString &s2 )
14982   \relates QString
14983   Returns the concatenated string of s1 and s2.
14984 */
14985
14986 /*!
14987   \fn QString operator+( const QString &s, char c )
14988   \relates QString
14989   Returns the concatenated string of s and c.
14990 */
14991
14992 /*!
14993   \fn QString operator+( char c, const QString &s )
14994   \relates QString
14995   Returns the concatenated string of c and s.
14996 */
14997
14998
14999 /*****************************************************************************
15000   QString stream functions
15001  *****************************************************************************/
15002 #ifndef QT_NO_DATASTREAM
15003 /*!
15004   \relates QString
15005   Writes a string to the stream.
15006
15007   \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15008 */
15009
15010 QDataStream &operator<<( QDataStream &s, const QString &str )
15011 {
15012     if ( s.version() == 1 ) {
15013         QCString l( str.latin1() );
15014         s << l;
15015     }
15016     else {
15017         const char* ub = (const char*)str.unicode();
15018         if ( ub || s.version() < 3 ) {
15019             if ( QChar::networkOrdered() ==
15020                     (s.byteOrder()==QDataStream::BigEndian) ) {
15021                 s.writeBytes( ub, (int)sizeof(QChar)*str.length() );
15022             } else {
15023                 static const uint auto_size = 1024;
15024                 char t[auto_size];
15025                 char *b;
15026                 if ( str.length()*sizeof(QChar) > auto_size ) {
15027                     b = new char[str.length()*sizeof(QChar)];
15028                 } else {
15029                     b = t;
15030                 }
15031                 int l = str.length();
15032                 char *c=b;
15033                 while ( l-- ) {
15034                     *c++ = ub[1];
15035                     *c++ = ub[0];
15036                     ub+=sizeof(QChar);
15037                 }
15038                 s.writeBytes( b, (int)sizeof(QChar)*str.length() );
15039                 if ( str.length()*sizeof(QChar) > auto_size )
15040                     delete [] b;
15041             }
15042         } else {
15043             // write null marker
15044             s << (Q_UINT32)0xffffffff;
15045         }
15046     }
15047     return s;
15048 }
15049
15050 /*!
15051   \relates QString
15052   Reads a string from the stream.
15053
15054   \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15055 */
15056
15057 QDataStream &operator>>( QDataStream &s, QString &str )
15058 {
15059 #ifdef QT_QSTRING_UCS_4
15060 #if defined(_CC_GNU_)
15061 #warning "operator>> not working properly"
15062 #endif
15063 #endif
15064     if ( s.version() == 1 ) {
15065         QCString l;
15066         s >> l;
15067         str = QString( l );
15068     }
15069     else {
15070         Q_UINT32 bytes;
15071         s >> bytes;                                     // read size of string
15072         if ( bytes == 0xffffffff ) {                    // null string
15073             str = QString::null;
15074         } else if ( bytes > 0 ) {                       // not empty
15075             str.setLength( bytes/2 );
15076             char* b = (char*)str.d->unicode;
15077             s.readRawBytes( b, bytes );
15078             if ( QChar::networkOrdered() !=
15079                     (s.byteOrder()==QDataStream::BigEndian) ) {
15080                 bytes /= 2;
15081                 while ( bytes-- ) {
15082                     char c = b[0];
15083                     b[0] = b[1];
15084                     b[1] = c;
15085                     b += 2;
15086                 }
15087             }
15088         } else {
15089             str = "";
15090         }
15091     }
15092     return s;
15093 }
15094 #endif // QT_NO_DATASTREAM
15095
15096 /*****************************************************************************
15097   QConstString member functions
15098  *****************************************************************************/
15099
15100 /*!
15101   \class QConstString qstring.h
15102   \brief A QString which uses constant Unicode data.
15103
15104   In order to minimize copying, highly optimized applications can use
15105   QConstString to provide a QString-compatible object from existing
15106   Unicode data.  It is then the user's responsibility to make sure
15107   that the Unicode data must exist for the entire lifetime of the
15108   QConstString object.
15109 */
15110
15111 /*!
15112   Constructs a QConstString that uses the first \a length Unicode
15113   characters in the array \a unicode.  Any attempt to modify
15114   copies of the string will cause it to create a copy of the
15115   data, thus it remains forever unmodified.
15116
15117   Note that \a unicode is \e not \e copied.  The caller \e must be
15118   able to guarantee that \a unicode will not be deleted or
15119   modified. Since that is generally not the case with \c const strings
15120   (they are references), this constructor demands a non-const pointer
15121   even though it never modifies \a unicode.
15122 */
15123 QConstString::QConstString( QChar* unicode, uint length ) :
15124     QString(new QStringData(unicode, length, length),TRUE)
15125 {
15126 }
15127
15128 /*!
15129   Destroys the QConstString, creating a copy of the data if
15130   other strings are still using it.
15131 */
15132 QConstString::~QConstString()
15133 {
15134     if ( d->count > 1 ) {
15135         QChar* cp = QT_ALLOC_QCHAR_VEC( d->len );
15136         memcpy( cp, d->unicode, d->len*sizeof(QChar) );
15137         d->unicode = cp;
15138     } else {
15139         d->unicode = 0;
15140     }
15141
15142     // The original d->unicode is now unlinked.
15143 }
15144
15145 /*!
15146   \fn const QString& QConstString::string() const
15147
15148   Returns a constant string referencing the data passed during
15149   construction.
15150 */
15151
15152 /*!
15153   Returns whether the strings starts with \a s, or not.
15154  */
15155 bool QString::startsWith( const QString& s ) const
15156 {
15157     for ( int i =0; i < (int) s.length(); i++ ) {
15158         if ( i >= (int) length() || d->unicode[i] != s[i] )
15159             return FALSE;
15160     }
15161     return TRUE;
15162 }
15163
15164
15165
15166 #if defined(_OS_WIN32_)
15167
15168 #include <windows.h>
15169
15170 /*!
15171   Returns a static Windows TCHAR* from a QString, possibly adding NUL.
15172
15173   The lifetime of the return value is until the next call to this function.
15174 */
15175 const void* qt_winTchar(const QString& str_in, bool addnul)
15176 {
15177     // So that the return value lives long enough.
15178     static QString str;
15179     str = str_in;
15180
15181 #ifdef UNICODE
15182     static uint buflen = 256;
15183     static TCHAR *buf = new TCHAR[buflen];
15184
15185     const QChar* uc = str.unicode();
15186
15187 #define EXTEND if (str.length() > buflen) { delete buf; buf = new TCHAR[buflen=str.length()+1]; }
15188
15189 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15190     EXTEND
15191     for ( int i=str.length(); i--; )
15192         buf[i] = uc[i].row() << 8 | uc[i].cell();
15193     if ( addnul )
15194         buf[str.length()] = 0;
15195 #else
15196     // Same endianness of TCHAR
15197     if ( addnul ) {
15198         EXTEND
15199         memcpy(buf,uc,sizeof(TCHAR)*str.length());
15200         buf[str.length()] = 0;
15201     } else {
15202         return uc;
15203     }
15204 #endif
15205     return buf;
15206 #undef EXTEND
15207
15208 #else
15209     return str.latin1();
15210 #endif
15211 }
15212
15213 /*!
15214   Makes a new null terminated Windows TCHAR* from a QString.
15215 */
15216 void* qt_winTchar_new(const QString& str)
15217 {
15218     TCHAR* result = new TCHAR[str.length()+1];
15219     memcpy(result, qt_winTchar(str,FALSE), sizeof(TCHAR)*str.length());
15220     result[str.length()] = 0;
15221     return result;
15222 }
15223
15224 /*!
15225   Makes a QString from a Windows TCHAR*.
15226 */
15227 QString qt_winQString(void* tc)
15228 {
15229 #ifdef UNICODE
15230
15231     int len=0;
15232     while ( ((TCHAR*)tc)[len] )
15233         len++;
15234 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15235     QString r;
15236     for ( int i=0; i<len; i++ )
15237         r += QChar(((TCHAR*)tc)[i]&0xff,((TCHAR*)tc)[i]>>8);
15238     return r;
15239 #else
15240     // Same endianness of TCHAR
15241     return QString((QChar*)tc,len);
15242 #endif
15243 #undef EXTEND
15244 #else
15245     return (TCHAR*)tc;
15246 #endif
15247 }
15248
15249 QCString qt_winQString2MB( const QString& s, int uclen )
15250 {
15251     if ( uclen < 0 )
15252         uclen = s.length();
15253     if ( uclen == 0 )
15254         return QCString();
15255     BOOL used_def;
15256     int bufSize=4096;
15257     QCString mb(bufSize);
15258     int len;
15259     while ( !(len=WideCharToMultiByte(CP_ACP, 0, (const WCHAR*)s.unicode(), uclen,
15260                 mb.data(), bufSize-1, 0, &used_def)) )
15261     {
15262         int r = GetLastError();
15263         if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15264             bufSize=1+WideCharToMultiByte( CP_ACP, 0,
15265                         (const WCHAR*)s.unicode(), uclen,
15266                         0, 0, 0, &used_def);
15267             mb.resize(bufSize);
15268                 // and try again...
15269         } else {
15270             // Fail.
15271             qWarning("WideCharToMultiByte cannot convert multibyte text (error %d): %s (UTF8)",
15272                 r, s.utf8().data());
15273             break;
15274         }
15275     }
15276     mb[len]='\0';
15277     return mb;
15278 }
15279
15280 // WATCH OUT: mblen must include the NUL (or just use -1)
15281 QString qt_winMB2QString( const char* mb, int mblen )
15282 {
15283     if ( !mb || !mblen )
15284         return QString::null;
15285     const int wclen_auto = 4096;
15286     WCHAR wc_auto[wclen_auto];
15287     int wclen = wclen_auto;
15288     WCHAR *wc = wc_auto;
15289     int len;
15290     while ( !(len=MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15291                 mb, mblen, wc, wclen )) )
15292     {
15293         int r = GetLastError();
15294         if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15295             if ( wc != wc_auto ) {
15296                 qWarning("Size changed in MultiByteToWideChar");
15297                 break;
15298             } else {
15299                 wclen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15300                                     mb, mblen, 0, 0 );
15301                 wc = new WCHAR[wclen];
15302                 // and try again...
15303             }
15304         } else {
15305             // Fail.
15306             qWarning("MultiByteToWideChar cannot convert multibyte text");
15307             break;
15308         }
15309     }
15310     if ( len <= 0 )
15311         return QString::null;
15312     QString s( (QChar*)wc, len-1 ); // len-1: we don't want terminator
15313     if ( wc != wc_auto )
15314         delete [] wc;
15315     return s;
15316 }
15317
15318
15319 #endif // _OS_WIN32_