All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
qstring.cpp
Go to the documentation of this file.
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] = {
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] = {
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] = {
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] = {
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 
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 */
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 
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 */
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 */
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()
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();
11438 
11439 private:
11442 };
11443 
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 
11458 {
11459  if(current())
11460  return QChar(decomposition_map[current()+1]);
11461 
11462  return QChar::null;
11463 }
11464 
11466 {
11467  if(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()
11497  int index, int len)
11498 {
11499  unsigned int l = index + len;
11500  unsigned int r = index;
11501 
11502  bool right = FALSE;
11503 
11504  bool 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 */
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  */
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 {
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 */
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;
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 
11958 {
11959  if ( ba.isNull() ) {
11960  if ( len )
11961  *len = 0;
11962  return 0;
11963  }
11964  int l = 0;
11965  while ( l < (int)ba.size() && ba[l] )
11966  l++;
11967  const char* str = ba.data();
11968  QChar *uc = new QChar[ l ]; // Can't use macro, since function is public
11969  QChar *result = uc;
11970  if ( len )
11971  *len = l;
11972  while (l--)
11973  *uc++ = *str++;
11974  return result;
11975 }
11976 
11977 static QChar* internalAsciiToUnicode( const QByteArray& ba, uint* len )
11978 {
11979  if ( ba.isNull() ) {
11980  if ( len )
11981  *len = 0;
11982  return 0;
11983  }
11984  int l = 0;
11985  while ( l < (int)ba.size() && ba[l] )
11986  l++;
11987  const char* str = ba.data();
11988  QChar *uc = QT_ALLOC_QCHAR_VEC( l );
11989  QChar *result = uc;
11990  if ( len )
11991  *len = l;
11992  while (l--)
11993  *uc++ = *str++;
11994  return result;
11995 }
11996 
11997 /*!
11998  This utility function converts the NUL-terminated 8-bit string
11999  \a str to Unicode, returning the result and setting \a len to
12000  the length of the Unicode string.
12001 
12002  The caller is responsible for deleting the return value with delete[].
12003 */
12004 
12006 {
12007  QChar* result = 0;
12008  uint l = 0;
12009  if ( str ) {
12010  if ( maxlen != (uint)-1 ) {
12011  while ( l < maxlen && str[l] )
12012  l++;
12013  } else {
12014  // Faster?
12015  l = qstrlen(str);
12016  }
12017  QChar *uc = new QChar[ l ]; // Can't use macro since function is public
12018  result = uc;
12019  uint i = l;
12020  while ( i-- )
12021  *uc++ = *str++;
12022  }
12023  if ( len )
12024  *len = l;
12025  return result;
12026 }
12027 
12028 static QChar* internalAsciiToUnicode( const char *str, uint* len,
12029  uint maxlen = (uint)-1 )
12030 {
12031  QChar* result = 0;
12032  uint l = 0;
12033  if ( str ) {
12034  if ( maxlen != (uint)-1 ) {
12035  while ( l < maxlen && str[l] )
12036  l++;
12037  } else {
12038  // Faster?
12039  l = qstrlen(str);
12040  }
12041  QChar *uc = QT_ALLOC_QCHAR_VEC( l );
12042  result = uc;
12043  uint i = l;
12044  while ( i-- )
12045  *uc++ = *str++;
12046  }
12047  if ( len )
12048  *len = l;
12049  return result;
12050 }
12051 
12052 /*!
12053  This utility function converts \a l 16-bit characters from
12054  \a uc to ASCII, returning a NUL-terminated string.
12055 
12056  The caller is responsible for deleting the string with delete[].
12057 */
12059 {
12060  if (!uc) {
12061  return 0;
12062  }
12063  char *a = new char[l+1];
12064  char *result = a;
12065  while (l--)
12066  *a++ = *uc++;
12067  *a = '\0';
12068  return result;
12069 }
12070 
12071 static uint computeNewMax( uint len )
12072 {
12073  if (len >= 0x80000000)
12074  return len;
12075 
12076  uint newMax = 4;
12077  while ( newMax < len )
12078  newMax *= 2;
12079  // try to save some memory
12080  if ( newMax >= 1024 * 1024 && len <= newMax - (newMax >> 2) )
12081  newMax -= newMax >> 2;
12082  return newMax;
12083 }
12084 
12085 /*!
12086  Returns the QString as a zero terminated array of unsigned shorts
12087  if the string is not null; otherwise returns zero.
12088 
12089  The result remains valid so long as one unmodified
12090  copy of the source string exists.
12091  */
12092 const unsigned short *QString::ucs2() const
12093 {
12094  if ( ! d->unicode )
12095  return 0;
12096  unsigned int len = d->len;
12097  if ( d->maxl < len + 1 ) {
12098  // detach, grow or shrink
12099  uint newMax = computeNewMax( len + 1 );
12100  QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12101  if ( nd ) {
12102  if ( d->unicode )
12103  memcpy( nd, d->unicode, sizeof(QChar)*len );
12104  ((QString *)this)->deref();
12105  ((QString *)this)->d = new QStringData( nd, len, newMax );
12106  }
12107  }
12108  d->unicode[len] = 0;
12109  return (unsigned short *) d->unicode;
12110 }
12111 
12112 /*!
12113  Constructs a string that is a deep copy of \a str, interpreted as a
12114  UCS2 encoded, zero terminated, Unicode string.
12115 
12116  If \a str is 0, then a null string is created.
12117  \sa isNull()
12118  */
12119 QString QString::fromUcs2( const unsigned short *str )
12120 {
12121  if ( !str ) {
12122  return QString::null;
12123  } else {
12124  int length = 0;
12125  while ( str[length] != 0 )
12126  length++;
12127  QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12128  memcpy( uc, str, length*sizeof(QChar) );
12129  return QString( new QStringData( uc, length, length ), TRUE );
12130  }
12131 }
12132 
12133 
12134 /*****************************************************************************
12135  QString member functions
12136  *****************************************************************************/
12137 
12138 /*!
12139  \class QString qstring.h
12140 
12141  \brief The QString class provides an abstraction of Unicode text and
12142  the classic C null-terminated char array (<var>char*</var>).
12143 
12144  \ingroup tools
12145  \ingroup shared
12146 
12147  QString uses \link shclass.html implicit sharing\endlink, and so it
12148  is very efficient and easy to use.
12149 
12150  In all QString methods that take <var>const char*</var> parameters,
12151  the <var>const char*</var> is interpreted as a classic C-style
12152  0-terminated ASCII string. It is legal for the <var>const
12153  char*</var> parameter to be 0. The results are undefined if the
12154  <var>const char*</var> string is not 0-terminated. Functions that
12155  copy classic C strings into a QString will not copy the terminating
12156  0-character. The QChar array of the QString (as returned by
12157  unicode()) is not terminated by a null.
12158 
12159  A QString that has not been assigned to anything is \a null, i.e. both
12160  the length and data pointer is 0. A QString that references the empty
12161  string ("", a single '\0' char) is \a empty. Both null and empty
12162  QStrings are legal parameters to the methods. Assigning <var>const char
12163  * 0</var> to QString gives a null QString.
12164 
12165  Note that if you find that you are mixing usage of QCString, QString,
12166  and QByteArray, this causes lots of unnecessary copying and might
12167  indicate that the true nature of the data you are dealing with is
12168  uncertain. If the data is NUL-terminated 8-bit data, use QCString;
12169  if it is unterminated (ie. contains NULs) 8-bit data, use QByteArray;
12170  if it is text, use QString.
12171 
12172  \sa QChar \link shclass.html Shared classes\endlink
12173 */
12174 
12176 //QT_STATIC_CONST_IMPL QString QString::null;
12182 
12183 #if defined(_CC_MSVC_) && _MSC_VER <= 1300
12185 #else
12186 const QString::Null QString::null = { };
12187 #endif
12188 
12189 
12191 {
12192  return shared_null=new QStringData;
12193 }
12194 
12195 // Uncomment this to get some useful statistics.
12196 // #define Q2HELPER(x) x
12197 
12198 #ifdef Q2HELPER
12199 static int stat_construct_charstar=0;
12200 static int stat_construct_charstar_size=0;
12201 static int stat_construct_null=0;
12202 static int stat_construct_int=0;
12203 static int stat_construct_int_size=0;
12204 static int stat_construct_ba=0;
12205 static int stat_get_ascii=0;
12206 static int stat_get_ascii_size=0;
12207 static int stat_copy_on_write=0;
12208 static int stat_copy_on_write_size=0;
12209 static int stat_fast_copy=0;
12210 Q_EXPORT void qt_qstring_stats()
12211 {
12212  qDebug("construct_charstar = %d (%d chars)", stat_construct_charstar, stat_construct_charstar_size);
12213  qDebug("construct_null = %d", stat_construct_null);
12214  qDebug("construct_int = %d (%d chars)", stat_construct_int, stat_construct_int_size);
12215  qDebug("construct_ba = %d", stat_construct_ba);
12216  qDebug("get_ascii = %d (%d chars)", stat_get_ascii, stat_get_ascii_size);
12217  qDebug("copy_on_write = %d (%d chars)", stat_copy_on_write, stat_copy_on_write_size);
12218  qDebug("fast_copy = %d", stat_fast_copy);
12219 }
12220 #else
12221 #define Q2HELPER(x)
12222 #endif
12223 
12224 /*!
12225  \fn QString::QString()
12226 
12227  Constructs a null string.
12228  \sa isNull()
12229 */
12230 
12231 /*!
12232  Constructs a string containing the one character \a ch.
12233 */
12235 {
12236  d = new QStringData( QT_ALLOC_QCHAR_VEC( 1 ), 1, 1 );
12237  d->unicode[0] = ch;
12238 }
12239 
12240 /*!
12241  Constructs an implicitly-shared copy of \a s.
12242 */
12244  d(s.d)
12245 {
12246  Q2HELPER(stat_fast_copy++)
12247  d->ref();
12248 }
12249 
12250 /*!
12251  Private function.
12252 
12253  Constructs a string with preallocated space for \a size characters.
12254 
12255  The string is empty.
12256 
12257  \sa isNull()
12258 */
12259 
12260 QString::QString( int size, bool /*dummy*/ )
12261 {
12262  if ( size ) {
12263  Q2HELPER(stat_construct_int++)
12264  int l = size;
12265  Q2HELPER(stat_construct_int_size+=l)
12266  QChar* uc = QT_ALLOC_QCHAR_VEC( l );
12267  d = new QStringData( uc, 0, l );
12268  } else {
12269  Q2HELPER(stat_construct_null++)
12271  d->ref();
12272  }
12273 }
12274 
12275 /*!
12276  Constructs a string that is a deep copy of \a ba interpreted as
12277  a classic C string.
12278 */
12279 
12281 {
12282  Q2HELPER(stat_construct_ba++)
12283  uint l;
12284  QChar *uc = internalAsciiToUnicode(ba,&l);
12285  d = new QStringData(uc,l,l);
12286 }
12287 
12289 {
12290  //Q2HELPER(stat_construct_ba++)
12291  //uint l;
12292  //QChar *uc = internalAsciiToUnicode(ba,&l);
12293  //d = new QStringData(uc,l,l);
12294  Q2HELPER(stat_fast_copy++)
12295  QString s = QString::fromUtf8(ba.data(),ba.length());
12296  d = s.d;
12297  d->ref();
12298 }
12299 
12300 /*!
12301  Constructs a string that is a deep copy of the
12302  first \a length QChar in the array \a unicode.
12303 
12304  If \a unicode and \a length are 0, a null string is created.
12305 
12306  If only \a unicode is 0, the string is empty, but has
12307  \a length characters of space preallocated - QString expands
12308  automatically anyway, but this may speed some cases up a little.
12309 
12310  \sa isNull()
12311 */
12312 
12314 {
12315  if ( !unicode && !length ) {
12317  d->ref();
12318  } else {
12319  QChar* uc = QT_ALLOC_QCHAR_VEC( length );
12320  if ( unicode )
12321  memcpy(uc, unicode, length*sizeof(QChar));
12322  d = new QStringData(uc,unicode ? length : 0,length);
12323  }
12324 }
12325 
12326 /*!
12327  Constructs a string that is a deep copy of \a str, interpreted as a
12328  classic C string.
12329 
12330  If \a str is 0 a null string is created.
12331 
12332  This is a cast constructor, but it is perfectly safe: converting a Latin1
12333  const char* to QString preserves all the information.
12334  You can disable this constructor by
12335  defining QT_NO_CAST_ASCII when you compile your applications.
12336  You can also make QString objects by using setLatin1()/fromLatin1(), or
12337  fromLocal8Bit(), fromUtf8(), or whatever encoding is appropriate for
12338  the 8-bit data you have.
12339 
12340  \sa isNull()
12341 */
12342 
12343 QString::QString( const char *str )
12344 {
12345  //Q2HELPER(stat_construct_charstar++)
12346  //uint l;
12347  //QChar *uc = internalAsciiToUnicode(str,&l);
12348  //Q2HELPER(stat_construct_charstar_size+=l)
12349  //d = new QStringData(uc,l,l);
12350  Q2HELPER(stat_fast_copy++)
12351  QString s = QString::fromUtf8(str);
12352  d = s.d;
12353  d->ref();
12354 }
12355 
12356 
12357 /*! \fn QString::~QString()
12358 
12359 Destroys the string and frees the "real" string, if this was the last
12360 copy of that string.
12361 */
12362 
12363 
12364 /*!
12365  Deallocates any space reserved solely by this QString.
12366 */
12367 
12369 {
12370  setLength( length() );
12371 }
12372 
12374 {
12375  if ( d->deref() ) {
12376  if ( d == shared_null )
12377  shared_null = 0;
12378  delete d;
12379  d = 0; // helps debugging
12380  }
12381 }
12382 
12384 {
12385  delete this;
12386 }
12387 
12388 /*!
12389  \fn QString& QString::operator=( QChar c )
12390  Sets the string to contain just the single character \a c.
12391 */
12392 
12393 /*!
12394  \fn QString& QString::operator=( char c )
12395  Sets the string to contain just the single character \a c.
12396 */
12397 
12398 /*!
12399  Assigns a shallow copy of \a s to this string and returns a
12400  reference to this string.
12401 */
12403 {
12404  Q2HELPER(stat_fast_copy++)
12405  s.d->ref();
12406  deref();
12407  d = s.d;
12408  return *this;
12409 }
12410 
12411 /*!
12412  Assigns a deep copy of \a cs, interpreted as a classic C string, to
12413  this string and returns a reference to this string.
12414 */
12416 {
12417  return setLatin1(cs);
12418 }
12419 
12420 
12421 /*!
12422  Assigns a deep copy of \a str, interpreted as a classic C string,
12423  to this string and returns a reference to this string.
12424 
12425  If \a str is 0 a null string is created.
12426 
12427  \sa isNull()
12428 */
12429 QString &QString::operator=( const char *str )
12430 {
12431  return setLatin1(str);
12432 }
12433 
12434 
12435 /*!
12436  \fn bool QString::isNull() const
12437 
12438  Returns TRUE if the string is null.
12439  A null string is also an empty string.
12440 
12441  Example:
12442  \code
12443  QString a; // a.unicode() == 0, a.length() == 0
12444  QString b = ""; // b.unicode() == "", b.length() == 0
12445  a.isNull(); // TRUE, because a.unicode() == 0
12446  a.isEmpty(); // TRUE, because a.length() == 0
12447  b.isNull(); // FALSE, because b.unicode() != 0
12448  b.isEmpty(); // TRUE, because b.length() == 0
12449  \endcode
12450 
12451  \sa isEmpty(), length()
12452 */
12453 
12454 /*!
12455  \fn bool QString::isEmpty() const
12456 
12457  Returns TRUE if the string is empty, i.e. if length() == 0.
12458  An empty string is not always a null string.
12459 
12460  See example in isNull().
12461 
12462  \sa isNull(), length()
12463 */
12464 
12465 /*!
12466  \fn uint QString::length() const
12467 
12468  Returns the length of the string.
12469 
12470  Null strings and empty strings have zero length.
12471 
12472  \sa isNull(), isEmpty()
12473 */
12474 
12475 /*!
12476  Truncates the string at position \a newLen if newLen is less than the
12477  current length . Otherwise, nothing happens.
12478 
12479  Example:
12480  \code
12481  QString s = "truncate this string";
12482  s.truncate( 5 ); // s == "trunc"
12483  \endcode
12484 
12485  In Qt 1.x, it was possible to "truncate" a string to a longer
12486  length. This is no longer possible.
12487 
12488 */
12489 
12490 void QString::truncate( uint newLen )
12491 {
12492  if ( newLen < d->len )
12493  setLength( newLen );
12494 }
12495 
12496 /*### Make this public in 3.0
12497  Ensures that at least \a newLen characters are allocated, and
12498  sets the length to \a newLen. This function always detaches the
12499  string from other references to the same data. Any new space
12500  allocated is \e not defined.
12501 
12502  If \a newLen is 0, this string becomes empty, unless this string is
12503  null, in which case it remains null.
12504 
12505  \sa truncate(), isNull(), isEmpty()
12506 */
12507 
12508 void QString::setLength( uint newLen )
12509 {
12510  if ( d->count != 1 || newLen > d->maxl || // detach, grow, or
12511  ( newLen*4 < d->maxl && d->maxl > 4 ) ) { // shrink
12512  Q2HELPER(stat_copy_on_write++)
12513  Q2HELPER(stat_copy_on_write_size+=d->len)
12514  uint newMax = 4;
12515  while ( newMax < newLen )
12516  newMax *= 2;
12517  QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
12518  uint len = QMIN( d->len, newLen );
12519  if ( d->unicode )
12520  memcpy( nd, d->unicode, sizeof(QChar)*len );
12521  deref();
12522  d = new QStringData( nd, newLen, newMax );
12523  } else {
12524  d->len = newLen;
12525  d->dirtyascii = 1;
12526  }
12527 }
12528 
12529 /*! Returns a string equal to this one, but with the lowest-numbered
12530  occurrence of \c %i (for a positive integer i) replaced by \a a.
12531 
12532  \code
12533  label.setText( tr("Rename %1 to %2?").arg(oldName).arg(newName) );
12534  \endcode
12535 
12536  \a fieldwidth is the minimum amount of space \a a is padded to. A
12537  positive value produces right-aligned text, while a negative value
12538  produces left aligned text.
12539 
12540  \warning Using arg() for constructing "real" sentences
12541  programmatically is likely to lead to translation problems.
12542  Inserting objects like numbers or file names is fairly safe.
12543 
12544  \warning Relying on spaces to create alignment is prone to lead to
12545  translation problems.
12546 
12547  If there is no \c %i pattern, a warning message (qWarning()) is
12548  printed and the text as appended at the end of the string. This is
12549  error recovery and should not occur in correct code.
12550 
12551  \sa QObject::tr()
12552 */
12553 QString QString::arg(const QString& a, int fieldwidth) const
12554 {
12555  int pos, len;
12556  QString r = *this;
12557 
12558  if ( !findArg( pos, len ) ) {
12559  qWarning( "QString::arg(): Argument missing: %s, %s",
12560  (const char *)ascii(), (const char *)ascii() );
12561  // Make sure the text at least appears SOMEWHERE
12562  r += ' ';
12563  pos = r.length();
12564  len = 0;
12565  }
12566 
12567  r.replace( pos, len, a );
12568  if ( fieldwidth < 0 ) {
12569  QString s;
12570  while ( (uint)-fieldwidth > a.length() ) {
12571  s += ' ';
12572  fieldwidth++;
12573  }
12574  r.insert( pos + a.length(), s );
12575  } else if ( fieldwidth ) {
12576  QString s;
12577  while ( (uint)fieldwidth > a.length() ) {
12578  s += ' ';
12579  fieldwidth--;
12580  }
12581  r.insert( pos, s );
12582  }
12583 
12584  return r;
12585 }
12586 
12587 
12588 /*! \overload
12589 
12590  \a a is expressed in to \a base notation, which is decimal by
12591  default and must be in the range 2-36 inclusive.
12592 */
12593 QString QString::arg(long a, int fieldwidth, int base) const
12594 {
12595  return arg( QString::number( a, base ), fieldwidth );
12596 }
12597 
12598 /*! \overload
12599 
12600  \a a is expressed in to \a base notation, which is decimal by
12601  default and must be in the range 2-36 inclusive.
12602 */
12603 QString QString::arg(ulong a, int fieldwidth, int base) const
12604 {
12605  return arg( QString::number( a, base ), fieldwidth );
12606 }
12607 
12608 /*!
12609  \overload QString QString::arg(int a, int fieldwidth, int base) const
12610 
12611  \a a is expressed in to \a base notation, which is decimal by
12612  default and must be in the range 2-36 inclusive.
12613 
12614 */
12615 
12616 /*!
12617  \overload QString QString::arg(uint a, int fieldwidth, int base) const
12618 
12619  \a a is expressed in to \a base notation, which is decimal by
12620  default and must be in the range 2-36 inclusive.
12621 */
12622 
12623 /*!
12624  \overload QString QString::arg(short a, int fieldwidth, int base) const
12625 
12626  \a a is expressed in to \a base notation, which is decimal by
12627  default and must be in the range 2-36 inclusive.
12628 */
12629 
12630 /*!
12631  \overload QString QString::arg(ushort a, int fieldwidth, int base) const
12632 
12633  \a a is expressed in to \a base notation, which is decimal by
12634  default and must be in the range 2-36 inclusive.
12635 */
12636 
12637 
12638 /*! \overload
12639 
12640  \a a is assumed to be in the Latin1 character set.
12641 */
12642 QString QString::arg(char a, int fieldwidth) const
12643 {
12644  QString c;
12645  c += a;
12646  return arg( c, fieldwidth );
12647 }
12648 
12649 /*! \overload
12650 */
12651 QString QString::arg(QChar a, int fieldwidth) const
12652 {
12653  QString c;
12654  c += a;
12655  return arg( c, fieldwidth );
12656 }
12657 
12658 /*! \overload
12659 
12660  \a is formatted according to the \a fmt format specified, which is
12661  'g' by default and can be any of 'f', 'F', 'e', 'E', 'g' or 'G', all
12662  of which have the same meaning as for sprintf(). \a prec determines
12663  the precision, just as for number() and sprintf().
12664 */
12665 QString QString::arg(double a, int fieldwidth, char fmt, int prec) const
12666 {
12667  return arg( QString::number( a, fmt, prec ), fieldwidth );
12668 }
12669 
12670 
12671 /*!
12672  Just 1-digit arguments.
12673 */
12674 bool QString::findArg(int& pos, int& len) const
12675 {
12676  char lowest=0;
12677  for (uint i=0; i<length(); i++) {
12678  if ( at(i) == '%' && i+1<length() ) {
12679  char dig = at(i+1);
12680  if ( dig >= '0' && dig <= '9' ) {
12681  if ( !lowest || dig < lowest ) {
12682  lowest = dig;
12683  pos = i;
12684  len = 2;
12685  }
12686  }
12687  }
12688  }
12689  return lowest != 0;
12690 }
12691 
12692 /*!
12693  Safely builds a formatted string from a format string and an
12694  arbitrary list of arguments. The format string supports all
12695  the escape sequences of printf() in the standard C library.
12696 
12697  The %s escape sequence expects a utf8() encoded string.
12698  The format string \e cformat is expected to be in latin1. If you need a unicode
12699  format string, use QString::arg() instead. For typesafe
12700  string building, with full Unicode support, you can use QTextOStream
12701  like this:
12702 
12703  \code
12704  QString str;
12705  QString s = ...;
12706  int x = ...;
12707  QTextOStream(&str) << s << " : " << x;
12708  \endcode
12709 
12710  For \link QObject::tr() translations,\endlink especially if the
12711  strings contains more than one escape sequence, you should consider
12712  using the arg() function instead. This allows the order of the
12713  replacements to be controlled by the translator, and has Unicode
12714  support.
12715 
12716  \sa arg()
12717 */
12718 
12719 QString &QString::sprintf( const char* cformat, ... )
12720 {
12721  va_list ap;
12722  va_start( ap, cformat );
12723 
12724  if ( !cformat || !*cformat ) {
12725  // Qt 1.x compat
12726  *this = QString::fromLatin1( "" );
12727  return *this;
12728  }
12729  QString format = QString::fromLatin1( cformat );
12730 
12731  static QRegExp *escape = 0;
12732  if (!escape)
12733  escape = new QRegExp( "%#?0?-? ?\\+?'?[0-9*]*\\.?[0-9*]*h?l?L?q?Z?" );
12734 
12735  QString result;
12736  uint last = 0;
12737 
12738  int len = 0;
12739  int pos;
12740  while ( 1 ) {
12741  pos = escape->match( cformat, last, &len );
12742  // Non-escaped text
12743  if ( pos > (int)last )
12744  result += format.mid(last,pos-last);
12745  if ( pos < 0 ) {
12746  // The rest
12747  if ( last < format.length() )
12748  result += format.mid(last);
12749  break;
12750  }
12751  last = pos + len + 1;
12752 
12753  // Escape
12754  QString f = format.mid( pos, len );
12755  uint width, decimals;
12756  int params = 0;
12757  int wpos = f.find('*');
12758  if ( wpos >= 0 ) {
12759  params++;
12760  width = va_arg( ap, int );
12761  if ( f.find('*', wpos + 1) >= 0 ) {
12762  decimals = va_arg( ap, int );
12763  params++;
12764  } else {
12765  decimals = 0;
12766  }
12767  } else {
12768  decimals = width = 0;
12769  }
12770  QString replacement;
12771  if ( format[pos+len] == 's' ||
12772  format[pos+len] == 'S' ||
12773  format[pos+len] == 'c' )
12774  {
12775  bool rightjust = ( f.find('-') < 0 );
12776  // Yes, %-5s really means left adjust in sprintf
12777 
12778  if ( wpos < 0 ) {
12779  QRegExp num( "[0-9]+" );
12780  QRegExp dot( "\\." );
12781  int nlen;
12782  int p = num.match( f.data(), 0, &nlen );
12783  int q = dot.match( f.data(), 0 );
12784  if ( q < 0 || (p < q && p >= 0) )
12785  width = f.mid( p, nlen ).toInt();
12786  if ( q >= 0 ) {
12787  p = num.match( f.data(), q );
12788  // "decimals" is used to specify string truncation
12789  if ( p >= 0 )
12790  decimals = f.mid( p, nlen ).toInt();
12791  }
12792  }
12793 
12794  if ( format[pos+len] == 's' ) {
12795 #ifndef QT_NO_TEXTCODEC
12796  QString s = QString::fromUtf8(va_arg(ap, char*));
12797 #else
12798  QString s = QString::fromLatin1(va_arg(ap, char*));
12799 #endif
12800  if ( decimals <= 0 )
12801  replacement = s;
12802  else
12803  replacement = s.left(decimals);
12804  } else {
12805  int ch = va_arg(ap, int);
12806  replacement = QChar((ushort)ch);
12807  }
12808  if ( replacement.length() < width ) {
12809  replacement = rightjust
12810  ? replacement.rightJustify(width)
12811  : replacement.leftJustify(width);
12812  }
12813  } else if ( format[pos+len] == '%' ) {
12814  replacement = '%';
12815  } else if ( format[pos+len] == 'n' ) {
12816  int* n = va_arg(ap, int*);
12817  *n = result.length();
12818  } else {
12819  char in[64], out[330] = "";
12820  strncpy(in,f.latin1(),63);
12821  char fch = format[pos+len].latin1();
12822  in[f.length()] = fch;
12823  switch ( fch ) {
12824  case 'd': case 'i': case 'o': case 'u': case 'x': case 'X': {
12825  int value = va_arg(ap, int);
12826  switch (params) {
12827  case 0: ::sprintf( out, in, value ); break;
12828  case 1: ::sprintf( out, in, width, value ); break;
12829  case 2: ::sprintf( out, in, width, decimals, value ); break;
12830  }
12831  } break;
12832  case 'e': case 'E': case 'f': case 'g': case 'G': {
12833  double value = va_arg(ap, double);
12834  switch (params) {
12835  case 0: ::sprintf( out, in, value ); break;
12836  case 1: ::sprintf( out, in, width, value ); break;
12837  case 2: ::sprintf( out, in, width, decimals, value ); break;
12838  }
12839  } break;
12840  case 'p': {
12841  void* value = va_arg(ap, void*);
12842  switch (params) {
12843  case 0: ::sprintf( out, in, value ); break;
12844  case 1: ::sprintf( out, in, width, value ); break;
12845  case 2: ::sprintf( out, in, width, decimals, value ); break;
12846  }
12847  } break;
12848  }
12849  replacement = QString::fromLatin1(out);
12850  }
12851  result += replacement;
12852  }
12853  *this = result;
12854 
12855  va_end( ap );
12856  return *this;
12857 }
12858 
12859 /*!
12860  Fills the string with \a len characters of value \a c.
12861 
12862  If \a len is negative, the current string length is used.
12863 */
12864 
12865 void QString::fill( QChar c, int len )
12866 {
12867  if ( len < 0 )
12868  len = length();
12869  if ( len == 0 ) {
12870  *this = "";
12871  } else {
12872  deref();
12873  QChar * nd = QT_ALLOC_QCHAR_VEC( len );
12874  d = new QStringData(nd,len,len);
12875  while (len--) *nd++ = c;
12876  }
12877 }
12878 
12879 
12880 /*!
12881  \fn QString QString::copy() const
12882 
12883  \obsolete
12884 
12885  Returns a deep copy of this string.
12886 
12887  Doing this is redundant in Qt 2.x, since QString is implicitly
12888  shared, and so will automatically be deeply copied as necessary.
12889 */
12890 
12891 /*!
12892  Finds the first occurrence of the character \a c, starting at
12893  position \a index. If \a index is -1, the search starts at the
12894  last character; if -2, at the next to last character; etc.
12895 
12896  The search is case sensitive if \a cs is TRUE, or case insensitive
12897  if \a cs is FALSE.
12898 
12899  Returns the position of \a c, or -1 if \a c could not be found.
12900 */
12901 
12902 int QString::find( QChar c, int index, bool cs ) const
12903 {
12904  if ( index < 0 )
12905  index += length();
12906  if ( (uint)index >= length() ) // index outside string
12907  return -1;
12908  register const QChar *uc;
12909  uc = unicode()+index;
12910  int n = length()-index;
12911  if ( cs ) {
12912  while ( n-- && *uc != c )
12913  uc++;
12914  } else {
12915  c = c.lower();
12916  while ( n-- && uc->lower() != c )
12917  uc++;
12918  }
12919  if ( uint(uc - unicode()) >= length() )
12920  return -1;
12921  return (int)(uc - unicode());
12922 }
12923 
12924 /*!
12925  Finds the first occurrence of the string \a str, starting at position
12926  \a index. If \a index is -1, the search starts at the last character;
12927  if -2, at the next to last character; etc.
12928 
12929  The search is case sensitive if \a cs is TRUE, or case insensitive if
12930  \a cs is FALSE.
12931 
12932  Returns the position of \a str, or -1 if \a str could not be found.
12933 */
12934 
12935 int QString::find( const QString& str, int index, bool cs ) const
12936 {
12937  /*
12938  We use some weird hashing for efficiency's sake. Instead of
12939  comparing strings, we compare the hash value of str with that of
12940  a part of this QString. Only if that matches, we call ucstrncmp
12941  or ucstrnicmp.
12942 
12943  The hash value of a string is the sum of the cells of its
12944  QChars.
12945  */
12946  if ( index < 0 )
12947  index += length();
12948  int lstr = str.length();
12949  int lthis = length() - index;
12950  if ( (uint)lthis > length() )
12951  return -1;
12952  int delta = lthis - lstr;
12953  if ( delta < 0 )
12954  return -1;
12955 
12956  const QChar *uthis = unicode() + index;
12957  const QChar *ustr = str.unicode();
12958  uint hthis = 0;
12959  uint hstr = 0;
12960  int i;
12961  if ( cs ) {
12962  for ( i = 0; i < lstr; i++ ) {
12963  hthis += uthis[i].cell();
12964  hstr += ustr[i].cell();
12965  }
12966  i = 0;
12967  while ( TRUE ) {
12968  if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
12969  return index + i;
12970  if ( i == delta )
12971  return -1;
12972  hthis += uthis[i + lstr].cell();
12973  hthis -= uthis[i].cell();
12974  i++;
12975  }
12976  } else {
12977  for ( i = 0; i < lstr; i++ ) {
12978  hthis += uthis[i].lower().cell();
12979  hstr += ustr[i].lower().cell();
12980  }
12981  i = 0;
12982  while ( TRUE ) {
12983  if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
12984  return index + i;
12985  if ( i == delta )
12986  return -1;
12987  hthis += uthis[i + lstr].lower().cell();
12988  hthis -= uthis[i].lower().cell();
12989  i++;
12990  }
12991  }
12992 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
12993  return -1;
12994 #endif
12995 }
12996 
12997 /*!
12998  \fn int QString::findRev( const char* str, int index ) const
12999 
13000  Equivalent to findRev(QString(str), index).
13001 */
13002 
13003 /*!
13004  \fn int QString::find( const char* str, int index ) const
13005 
13006  Equivalent to find(QString(str), index).
13007 */
13008 
13009 /*!
13010  Finds the first occurrence of the character \a c, starting at
13011  position \a index and searching backwards. If \a index is -1,
13012  the search starts at the last character; if -2, at the next to
13013  last character; etc.
13014 
13015  The search is case sensitive if \a cs is TRUE, or case insensitive if \a
13016  cs is FALSE.
13017 
13018  Returns the position of \a c, or -1 if \a c could not be found.
13019 */
13020 
13021 int QString::findRev( QChar c, int index, bool cs ) const
13022 {
13023  QString t( c );
13024  return findRev( t, index, cs );
13025 }
13026 
13027 /*!
13028  Finds the first occurrence of the string \a str, starting at
13029  position \a index and searching backwards. If \a index is -1,
13030  the search starts at the last character; -2, at the next to last
13031  character; etc.
13032 
13033  The search is case sensitive if \a cs is TRUE, or case insensitive if \e
13034  cs is FALSE.
13035 
13036  Returns the position of \a str, or -1 if \a str could not be found.
13037 */
13038 
13039 int QString::findRev( const QString& str, int index, bool cs ) const
13040 {
13041  /*
13042  See QString::find() for explanations.
13043  */
13044  int lthis = length();
13045  if ( index < 0 )
13046  index += lthis;
13047 
13048  int lstr = str.length();
13049  int delta = lthis - lstr;
13050  if ( index < 0 || index > lthis || delta < 0 )
13051  return -1;
13052  if ( index > delta )
13053  index = delta;
13054 
13055  const QChar *uthis = unicode();
13056  const QChar *ustr = str.unicode();
13057  uint hthis = 0;
13058  uint hstr = 0;
13059  int i;
13060  if ( cs ) {
13061  for ( i = 0; i < lstr; i++ ) {
13062  hthis += uthis[index + i].cell();
13063  hstr += ustr[i].cell();
13064  }
13065  i = index;
13066  while ( TRUE ) {
13067  if ( hthis == hstr && ucstrncmp(uthis + i, ustr, lstr) == 0 )
13068  return i;
13069  if ( i == 0 )
13070  return -1;
13071  i--;
13072  hthis -= uthis[i + lstr].cell();
13073  hthis += uthis[i].cell();
13074  }
13075  } else {
13076  for ( i = 0; i < lstr; i++ ) {
13077  hthis += uthis[index + i].lower().cell();
13078  hstr += ustr[i].lower().cell();
13079  }
13080  i = index;
13081  while ( TRUE ) {
13082  if ( hthis == hstr && ucstrnicmp(uthis + i, ustr, lstr) == 0 )
13083  return i;
13084  if ( i == 0 )
13085  return -1;
13086  i--;
13087  hthis -= uthis[i + lstr].lower().cell();
13088  hthis += uthis[i].lower().cell();
13089  }
13090  }
13091 #if defined(Q_SPURIOUS_NON_VOID_WARNING)
13092  return -1;
13093 #endif
13094 }
13095 
13096 
13097 /*!
13098  Returns the number of times the character \a c occurs in the string.
13099 
13100  The match is case sensitive if \a cs is TRUE, or case insensitive if \a cs
13101  is FALSE.
13102 */
13103 
13104 int QString::contains( QChar c, bool cs ) const
13105 {
13106  int count = 0;
13107  const QChar *uc = unicode();
13108  if ( !uc )
13109  return 0;
13110  int n = length();
13111  if ( cs ) { // case sensitive
13112  while ( n-- )
13113  if ( *uc++ == c )
13114  count++;
13115  } else { // case insensitive
13116  c = c.lower();
13117  while ( n-- ) {
13118  if ( uc->lower() == c )
13119  count++;
13120  uc++;
13121  }
13122  }
13123  return count;
13124 }
13125 
13126 /*!
13127  \overload
13128 */
13129 int QString::contains( const char* str, bool cs ) const
13130 {
13131  return contains(QString(str),cs);
13132 }
13133 
13134 /*!
13135  \overload int QString::contains (char c, bool cs) const
13136 */
13137 
13138 /*!
13139  \overload int QString::find (char c, int index, bool cs) const
13140 
13141 */
13142 
13143 /*!
13144  \overload int QString::findRev (char c, int index, bool cs) const
13145 
13146 */
13147 
13148 /*!
13149  Returns the number of times \a str occurs in the string.
13150 
13151  The match is case sensitive if \a cs is TRUE, or case insensitive if \e
13152  cs is FALSE.
13153 
13154  This function counts overlapping substrings, for example, "banana"
13155  contains two occurrences of "ana".
13156 
13157  \sa findRev()
13158 */
13159 
13160 int QString::contains( const QString &str, bool cs ) const
13161 {
13162  int count = 0;
13163  const QChar *uc = unicode();
13164  if ( !uc )
13165  return 0;
13166  int len = str.length();
13167  int n = length();
13168  while ( n-- ) { // counts overlapping strings
13169  // ### Doesn't account for length of this - searches over "end"
13170  if ( cs ) {
13171  if ( ucstrncmp( uc, str.unicode(), len ) == 0 )
13172  count++;
13173  } else {
13174  if ( ucstrnicmp(uc, str.unicode(), len) == 0 )
13175  count++;
13176  }
13177  uc++;
13178  }
13179  return count;
13180 }
13181 
13182 /*!
13183  Returns a substring that contains the \a len leftmost characters
13184  of the string.
13185 
13186  The whole string is returned if \a len exceeds the length of the
13187  string.
13188 
13189 
13190  Example:
13191  \code
13192  QString s = "Pineapple";
13193  QString t = s.left( 4 ); // t == "Pine"
13194  \endcode
13195 
13196  \sa right(), mid(), isEmpty()
13197 */
13198 
13200 {
13201  if ( isEmpty() ) {
13202  return QString();
13203  } else if ( len == 0 ) { // ## just for 1.x compat:
13204  return QString::fromLatin1("");
13205  } else if ( len > length() ) {
13206  return *this;
13207  } else {
13208  QString s( len, TRUE );
13209  memcpy( s.d->unicode, d->unicode, len*sizeof(QChar) );
13210  s.d->len = len;
13211  return s;
13212  }
13213 }
13214 
13215 /*!
13216  Returns a substring that contains the \a len rightmost characters
13217  of the string.
13218 
13219  The whole string is returned if \a len exceeds the length of the
13220  string.
13221 
13222  Example:
13223  \code
13224  QString s = "Pineapple";
13225  QString t = s.right( 5 ); // t == "apple"
13226  \endcode
13227 
13228  \sa left(), mid(), isEmpty()
13229 */
13230 
13232 {
13233  if ( isEmpty() ) {
13234  return QString();
13235  } else if ( len == 0 ) { // ## just for 1.x compat:
13236  return QString::fromLatin1("");
13237  } else {
13238  uint l = length();
13239  if ( len > l )
13240  len = l;
13241  QString s( len, TRUE );
13242  memcpy( s.d->unicode, d->unicode+(l-len), len*sizeof(QChar) );
13243  s.d->len = len;
13244  return s;
13245  }
13246 }
13247 
13248 /*!
13249  Returns a substring that contains the \a len characters of this
13250  string, starting at position \a index.
13251 
13252  Returns a null string if the string is empty or \a index is out
13253  of range. Returns the whole string from \a index if \a index+len exceeds
13254  the length of the string.
13255 
13256  Example:
13257  \code
13258  QString s = "Five pineapples";
13259  QString t = s.mid( 5, 4 ); // t == "pine"
13260  \endcode
13261 
13262  \sa left(), right()
13263 */
13264 
13266 {
13267  uint slen = length();
13268  if ( isEmpty() || index >= slen ) {
13269  return QString();
13270  } else if ( len == 0 ) { // ## just for 1.x compat:
13271  return QString::fromLatin1("");
13272  } else {
13273  if ( len > slen-index )
13274  len = slen - index;
13275  if ( index == 0 && len == length() )
13276  return *this;
13277  register const QChar *p = unicode()+index;
13278  QString s( len, TRUE );
13279  memcpy( s.d->unicode, p, len*sizeof(QChar) );
13280  s.d->len = len;
13281  return s;
13282  }
13283 }
13284 
13285 /*!
13286  Returns a string of length \a width that contains this
13287  string and padded by the \a fill character.
13288 
13289  If the length of the string exceeds \a width and \a truncate is FALSE,
13290  then the returned string is a copy of the string.
13291  If the length of the string exceeds \a width and \a truncate is TRUE,
13292  then the returned string is a left(\a width).
13293 
13294  Example:
13295  \code
13296  QString s("apple");
13297  QString t = s.leftJustify(8, '.'); // t == "apple..."
13298  \endcode
13299 
13300  \sa rightJustify()
13301 */
13302 
13304 {
13305  QString result;
13306  int len = length();
13307  int padlen = width - len;
13308  if ( padlen > 0 ) {
13309  result.setLength(len+padlen);
13310  if ( len )
13311  memcpy( result.d->unicode, unicode(), sizeof(QChar)*len );
13312  QChar* uc = result.d->unicode + len;
13313  while (padlen--)
13314  *uc++ = fill;
13315  } else {
13316  if ( truncate )
13317  result = left( width );
13318  else
13319  result = *this;
13320  }
13321  return result;
13322 }
13323 
13324 /*!
13325  Returns a string of length \a width that contains pad
13326  characters followed by the string.
13327 
13328  If the length of the string exceeds \a width and \a truncate is FALSE,
13329  then the returned string is a copy of the string.
13330  If the length of the string exceeds \a width and \a truncate is TRUE,
13331  then the returned string is a left(\a width).
13332 
13333  Example:
13334  \code
13335  QString s("pie");
13336  QString t = s.rightJustify(8, '.'); // t == ".....pie"
13337  \endcode
13338 
13339  \sa leftJustify()
13340 */
13341 
13343 {
13344  QString result;
13345  int len = length();
13346  int padlen = width - len;
13347  if ( padlen > 0 ) {
13348  result.setLength( len+padlen );
13349  QChar* uc = result.d->unicode;
13350  while (padlen--)
13351  *uc++ = fill;
13352  if ( len )
13353  memcpy( uc, unicode(), sizeof(QChar)*len );
13354  } else {
13355  if ( truncate )
13356  result = left( width );
13357  else
13358  result = *this;
13359  }
13360  return result;
13361 }
13362 
13363 /*!
13364  Returns a new string that is the string converted to lower case.
13365 
13366  Example:
13367  \code
13368  QString s("TeX");
13369  QString t = s.lower(); // t == "tex"
13370  \endcode
13371 
13372  \sa upper()
13373 */
13374 
13376 {
13377  QString s(*this);
13378  int l=length();
13379  if ( l ) {
13380  s.real_detach(); // could do this only when we find a change
13381  register QChar *p=s.d->unicode;
13382  if ( p ) {
13383  while ( l-- ) {
13384  *p = p->lower();
13385  p++;
13386  }
13387  }
13388  }
13389  return s;
13390 }
13391 
13392 /*!
13393  Returns a new string that is the string converted to upper case.
13394 
13395  Example:
13396  \code
13397  QString s("TeX");
13398  QString t = s.upper(); // t == "TEX"
13399  \endcode
13400 
13401  \sa lower()
13402 */
13403 
13405 {
13406  QString s(*this);
13407  int l=length();
13408  if ( l ) {
13409  s.real_detach(); // could do this only when we find a change
13410  register QChar *p=s.d->unicode;
13411  if ( p ) {
13412  while ( l-- ) {
13413  *p = p->upper();
13414  p++;
13415  }
13416  }
13417  }
13418  return s;
13419 }
13420 
13421 
13422 /*!
13423  Returns a new string that has white space removed from the start and the end.
13424 
13425  White space means any character for which QChar::isSpace() returns
13426  TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13427  (FF), 13 (CR), and 32 (Space).
13428 
13429  Example:
13430  \code
13431  QString s = " space ";
13432  QString t = s.stripWhiteSpace(); // t == "space"
13433  \endcode
13434 
13435  \sa simplifyWhiteSpace()
13436 */
13437 
13439 {
13440  if ( isEmpty() ) // nothing to do
13441  return *this;
13442  if ( !at(0).isSpace() && !at(length()-1).isSpace() )
13443  return *this;
13444 
13445  register const QChar *s = unicode();
13446  QString result = fromLatin1("");
13447 
13448  int start = 0;
13449  int end = length() - 1;
13450  while ( start<=end && s[start].isSpace() ) // skip white space from start
13451  start++;
13452  if ( start > end ) { // only white space
13453  return result;
13454  }
13455  while ( end && s[end].isSpace() ) // skip white space from end
13456  end--;
13457  int l = end - start + 1;
13458  result.setLength( l );
13459  if ( l )
13460  memcpy( result.d->unicode, &s[start], sizeof(QChar)*l );
13461  return result;
13462 }
13463 
13464 
13465 /*!
13466  Returns a new string that has white space removed from the start and the end,
13467  plus any sequence of internal white space replaced with a single space
13468  (ASCII 32).
13469 
13470  White space means any character for which QChar::isSpace() returns
13471  TRUE. This includes ASCII characters 9 (TAB), 10 (LF), 11 (VT), 12
13472  (FF), 13 (CR), and 32 (Space).
13473 
13474  \code
13475  QString s = " lots\t of\nwhite space ";
13476  QString t = s.simplifyWhiteSpace(); // t == "lots of white space"
13477  \endcode
13478 
13479  \sa stripWhiteSpace()
13480 */
13481 
13483 {
13484  if ( isEmpty() ) // nothing to do
13485  return *this;
13486  QString result;
13487  result.setLength( length() );
13488  const QChar *from = unicode();
13489  const QChar *fromend = from+length();
13490  int outc=0;
13491  QChar *to = result.d->unicode;
13492  while ( TRUE ) {
13493  while ( from!=fromend && from->isSpace() )
13494  from++;
13495  while ( from!=fromend && !from->isSpace() )
13496  to[outc++] = *from++;
13497  if ( from!=fromend )
13498  to[outc++] = ' ';
13499  else
13500  break;
13501  }
13502  if ( outc > 0 && to[outc-1] == ' ' )
13503  outc--;
13504  result.truncate( outc );
13505  return result;
13506 }
13507 
13508 
13509 /*!
13510  Insert \a s into the string before position \a index.
13511 
13512  If \a index is beyond the end of the string, the string is extended with
13513  spaces (ASCII 32) to length \a index and \a s is then appended.
13514 
13515  \code
13516  QString s = "I like fish";
13517  s.insert( 2, "don't "); // s == "I don't like fish"
13518  s = "x";
13519  s.insert( 3, "yz" ); // s == "x yz"
13520  \endcode
13521 */
13522 
13524 {
13525  // the sub function takes care of &s == this case.
13526  return insert( index, s.unicode(), s.length() );
13527 }
13528 
13529 /*!
13530  Insert \a len units of QChar data from \a s into the string before
13531  position \a index.
13532 */
13533 
13535 {
13536  if ( len == 0 )
13537  return *this;
13538  uint olen = length();
13539  int nlen = olen + len;
13540 
13541  int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13542  if ( df >= 0 && (uint)df < d->maxl ) {
13543  // Part of me - take a copy.
13544  QChar *tmp = QT_ALLOC_QCHAR_VEC( len );
13545  memcpy(tmp,s,len*sizeof(QChar));
13546  insert(index,tmp,len);
13547  QT_DELETE_QCHAR_VEC( tmp );
13548  return *this;
13549  }
13550 
13551  if ( index >= olen ) { // insert after end of string
13552  setLength( len+index );
13553  int n = index-olen;
13554  QChar* uc = d->unicode+olen;
13555  while (n--)
13556  *uc++ = ' ';
13557  memcpy( d->unicode+index, s, sizeof(QChar)*len );
13558  } else { // normal insert
13559  setLength( nlen );
13560  memmove( d->unicode+index+len, unicode()+index,
13561  sizeof(QChar)*(olen-index) );
13562  memcpy( d->unicode+index, s, sizeof(QChar)*len );
13563  }
13564  return *this;
13565 }
13566 
13567 /*!
13568  Insert \a c into the string at (before) position \a index and returns
13569  a reference to the string.
13570 
13571  If \a index is beyond the end of the string, the string is extended with
13572  spaces (ASCII 32) to length \a index and \a c is then appended.
13573 
13574  Example:
13575  \code
13576  QString s = "Ys";
13577  s.insert( 1, 'e' ); // s == "Yes"
13578  s.insert( 3, '!'); // s == "Yes!"
13579  \endcode
13580 
13581  \sa remove(), replace()
13582 */
13583 
13585 {
13586  QString s( c );
13587  return insert( index, s );
13588 }
13589 
13590 /*!
13591  \overload QString& QString::insert( uint index, char c )
13592 */
13593 
13594 /*!
13595  \fn QString &QString::prepend( const QString &s )
13596 
13597  Prepend \a s to the string. Equivalent to insert(0,s).
13598 
13599  \sa insert()
13600 */
13601 
13602 /*!
13603  \fn QString& QString::prepend( char ch )
13604  Prepends \a ch to the string and returns a reference to the result.
13605 
13606  \sa insert()
13607  */
13608 
13609 /*!
13610  \fn QString& QString::prepend( QChar ch )
13611  Prepends \a ch to the string and returns a reference to the result.
13612 
13613  \sa insert()
13614  */
13615 
13616 
13617 /*!
13618  Removes \a len characters starting at position \a index from the
13619  string and returns a reference to the string.
13620 
13621  If \a index is too big, nothing happens. If \a index is valid, but
13622  \a len is too large, the rest of the string is removed.
13623 
13624  \code
13625  QString s = "Montreal";
13626  s.remove( 1, 4 );
13627  // s == "Meal"
13628  \endcode
13629 
13630  \sa insert(), replace()
13631 */
13632 
13634 {
13635  uint olen = length();
13636  if ( index + len >= olen ) { // range problems
13637  if ( index < olen ) { // index ok
13638  setLength( index );
13639  }
13640  } else if ( len != 0 ) {
13641  real_detach();
13642  memmove( d->unicode+index, d->unicode+index+len,
13643  sizeof(QChar)*(olen-index-len) );
13644  setLength( olen-len );
13645  }
13646  return *this;
13647 }
13648 
13649 /*!
13650  Replaces \a len characters starting at position \a index from the
13651  string with \a s, and returns a reference to the string.
13652 
13653  If \a index is too big, nothing is deleted and \a s is inserted at the
13654  end of the string. If \a index is valid, but \a len is too large, \e
13655  str replaces the rest of the string.
13656 
13657  \code
13658  QString s = "Say yes!";
13659  s.replace( 4, 3, "NO" ); // s == "Say NO!"
13660  \endcode
13661 
13662  \sa insert(), remove()
13663 */
13664 
13666 {
13667  return replace( index, len, s.unicode(), s.length() );
13668 }
13669 
13670 
13671 /*!
13672  Replaces \a len characters starting at position \a index by
13673  \a slen units ot QChar data from \a s, and returns a reference to the string.
13674 
13675  \sa insert(), remove()
13676 */
13677 
13679 {
13680  if ( len == slen && index + len <= length() ) {
13681  // Optimized common case: replace without size change
13682  real_detach();
13683  memcpy( d->unicode+index, s, len*sizeof(QChar) );
13684  } else {
13685  int df = (int)(s - d->unicode); // ### pointer subtraction, cast down to int
13686  if ( df >= 0 && (uint)df < d->maxl ) {
13687  // Part of me - take a copy.
13688  QChar *tmp = QT_ALLOC_QCHAR_VEC( slen );
13689  memcpy(tmp,s,slen*sizeof(QChar));
13690  replace(index,len,tmp,slen);
13691  QT_DELETE_QCHAR_VEC( tmp );
13692  return *this;
13693  }
13694 
13695  remove( index, len );
13696  insert( index, s, slen );
13697  }
13698  return *this;
13699 }
13700 
13701 
13702 
13703 /*!
13704  Finds the first occurrence of the regular expression \a rx, starting at
13705  position \a index. If \a index is -1, the search starts at the last
13706  character; if -2, at the next to last character; etc.
13707 
13708  Returns the position of the next match, or -1 if \a rx was not found.
13709 
13710  \sa findRev() replace() contains()
13711 */
13712 
13713 int QString::find( const QRegExp &rx, int index ) const
13714 {
13715  if ( index < 0 )
13716  index += length();
13717  return rx.match( data(), index );
13718 }
13719 
13720 /*!
13721  Finds the first occurrence of the regular expression \a rx, starting at
13722  position \a index and searching backwards. If \a index is -1, the
13723  search starts at the last character; if -2, at the next to last
13724  character; etc.
13725 
13726  Returns the position of the next match (backwards), or -1 if \a rx was not
13727  found.
13728 
13729  \sa find()
13730 */
13731 
13732 int QString::findRev( const QRegExp &rx, int index ) const
13733 {
13734  if ( index < 0 ) // neg index ==> start from end
13735  index += length();
13736  if ( (uint)index > length() ) // bad index
13737  return -1;
13738  while( index >= 0 ) {
13739  if ( rx.match( data(), index ) == index )
13740  return index;
13741  index--;
13742  }
13743  return -1;
13744 }
13745 
13746 /*!
13747  Counts the number of overlapping occurrences of \a rx in the string.
13748 
13749  Example:
13750  \code
13751  QString s = "banana and panama";
13752  QRegExp r = QRegExp("a[nm]a", TRUE, FALSE);
13753  s.contains( r ); // 4 matches
13754  \endcode
13755 
13756  \sa find() findRev()
13757 */
13758 
13759 int QString::contains( const QRegExp &rx ) const
13760 {
13761  if ( isEmpty() )
13762  return rx.match( data() ) < 0 ? 0 : 1;
13763  int count = 0;
13764  int index = -1;
13765  int len = length();
13766  while ( index < len-1 ) { // count overlapping matches
13767  index = rx.match( data(), index+1 );
13768  if ( index < 0 )
13769  break;
13770  count++;
13771  }
13772  return count;
13773 }
13774 
13775 
13776 /*!
13777  Replaces every occurrence of \a rx in the string with \a str.
13778  Returns a reference to the string.
13779 
13780  Examples:
13781  \code
13782  QString s = "banana";
13783  s.replace( QRegExp("a.*a"), "" ); // becomes "b"
13784 
13785  QString s = "banana";
13786  s.replace( QRegExp("^[bn]a"), " " ); // becomes " nana"
13787 
13788  QString s = "banana";
13789  s.replace( QRegExp("^[bn]a"), "" ); // NOTE! becomes ""
13790  \endcode
13791 
13792  \sa find() findRev()
13793 */
13794 
13795 QString &QString::replace( const QRegExp &rx, const QString &str )
13796 {
13797  if ( isEmpty() )
13798  return *this;
13799  int index = 0;
13800  int slen = str.length();
13801  int len;
13802  while ( index < (int)length() ) {
13803  index = rx.match( data(), index, &len, FALSE );
13804  if ( index >= 0 ) {
13805  replace( index, len, str );
13806  index += slen;
13807  if ( !len )
13808  break; // Avoid infinite loop on 0-length matches, e.g. [a-z]*
13809  }
13810  else
13811  break;
13812  }
13813  return *this;
13814 }
13815 
13816 static bool
13818 {
13819  if ( base <= 10 )
13820  return c.isDigit() && c.digitValue() < base;
13821  else
13822  return c.isDigit() || (c >= 'a' && c < char('a'+base-10))
13823  || (c >= 'A' && c < char('A'+base-10));
13824 }
13825 
13826 /*!
13827  Returns the string converted to a <code>long</code> value.
13828 
13829  If \a ok is non-null, \a *ok is set to TRUE if there are no
13830  conceivable errors, and FALSE if the string is not a number at all, or if
13831  it has trailing garbage.
13832 */
13833 
13834 long QString::toLong( bool *ok, int base ) const
13835 {
13836  const QChar *p = unicode();
13837  long val=0;
13838  int l = length();
13839  const long max_mult = INT_MAX / base;
13840  bool is_ok = FALSE;
13841  int neg = 0;
13842  if ( !p )
13843  goto bye;
13844  while ( l && p->isSpace() ) // skip leading space
13845  l--,p++;
13846  if ( l && *p == '-' ) {
13847  l--;
13848  p++;
13849  neg = 1;
13850  } else if ( *p == '+' ) {
13851  l--;
13852  p++;
13853  }
13854 
13855  // NOTE: toULong() code is similar
13856  if ( !l || !ok_in_base(*p,base) )
13857  goto bye;
13858  while ( l && ok_in_base(*p,base) ) {
13859  l--;
13860  int dv;
13861  if ( p->isDigit() ) {
13862  dv = p->digitValue();
13863  } else {
13864  if ( *p >= 'a' && *p <= 'z' )
13865  dv = *p - 'a' + 10;
13866  else
13867  dv = *p - 'A' + 10;
13868  }
13869  if ( val > max_mult || (val == max_mult && dv > (INT_MAX%base)+neg) )
13870  goto bye;
13871  val = base*val + dv;
13872  p++;
13873  }
13874  if ( neg )
13875  val = -val;
13876  while ( l && p->isSpace() ) // skip trailing space
13877  l--,p++;
13878  if ( !l )
13879  is_ok = TRUE;
13880 bye:
13881  if ( ok )
13882  *ok = is_ok;
13883  return is_ok ? val : 0;
13884 }
13885 
13886 /*!
13887  Returns the string converted to an <code>unsigned long</code>
13888  value.
13889 
13890  If \a ok is non-null, \a *ok is set to TRUE if there are no
13891  conceivable errors, and FALSE if the string is not a number at all,
13892  or if it has trailing garbage.
13893 */
13894 
13895 ulong QString::toULong( bool *ok, int base ) const
13896 {
13897  const QChar *p = unicode();
13898  ulong val=0;
13899  int l = length();
13900  const ulong max_mult = 429496729; // UINT_MAX/10, rounded down
13901  bool is_ok = FALSE;
13902  if ( !p )
13903  goto bye;
13904  while ( l && p->isSpace() ) // skip leading space
13905  l--,p++;
13906  if ( *p == '+' )
13907  l--,p++;
13908 
13909  // NOTE: toLong() code is similar
13910  if ( !l || !ok_in_base(*p,base) )
13911  goto bye;
13912  while ( l && ok_in_base(*p,base) ) {
13913  l--;
13914  uint dv;
13915  if ( p->isDigit() ) {
13916  dv = p->digitValue();
13917  } else {
13918  if ( *p >= 'a' && *p <= 'z' )
13919  dv = *p - 'a' + 10;
13920  else
13921  dv = *p - 'A' + 10;
13922  }
13923  if ( val > max_mult || (val == max_mult && dv > (UINT_MAX%base)) )
13924  goto bye;
13925  val = base*val + dv;
13926  p++;
13927  }
13928 
13929  while ( l && p->isSpace() ) // skip trailing space
13930  l--,p++;
13931  if ( !l )
13932  is_ok = TRUE;
13933 bye:
13934  if ( ok )
13935  *ok = is_ok;
13936  return is_ok ? val : 0;
13937 }
13938 
13939 /*!
13940  Returns the string converted to an <code>unsigned long</code>
13941  value.
13942 
13943  If \a ok is non-null, \a *ok is set to TRUE if there are no
13944  conceivable errors, and FALSE if the string is not a number at all,
13945  or if it has trailing garbage.
13946 */
13947 
13948 uint64 QString::toUInt64( bool *ok, int base ) const
13949 {
13950  const QChar *p = unicode();
13951  uint64 val=0;
13952  int l = length();
13953  const uint64 max_mult = 1844674407370955161ULL; // ULLONG_MAX/10, rounded down
13954  bool is_ok = FALSE;
13955  if ( !p )
13956  goto bye;
13957  while ( l && p->isSpace() ) // skip leading space
13958  l--,p++;
13959  if ( *p == '+' )
13960  l--,p++;
13961 
13962  // NOTE: toULong() code is similar
13963  if ( !l || !ok_in_base(*p,base) )
13964  goto bye;
13965  while ( l && ok_in_base(*p,base) ) {
13966  l--;
13967  uint dv;
13968  if ( p->isDigit() ) {
13969  dv = p->digitValue();
13970  } else {
13971  if ( *p >= 'a' && *p <= 'z' )
13972  dv = *p - 'a' + 10;
13973  else
13974  dv = *p - 'A' + 10;
13975  }
13976  if ( val > max_mult || (val == max_mult && dv > (ULLONG_MAX%base)) )
13977  goto bye;
13978  val = base*val + dv;
13979  p++;
13980  }
13981 
13982  while ( l && p->isSpace() ) // skip trailing space
13983  l--,p++;
13984  if ( !l )
13985  is_ok = TRUE;
13986 bye:
13987  if ( ok )
13988  *ok = is_ok;
13989  return is_ok ? val : 0;
13990 }
13991 
13992 
13993 /*!
13994  Returns the string converted to a <code>short</code> value.
13995 
13996  If \a ok is non-null, \a *ok is set to TRUE if there are no
13997  conceivable errors, and FALSE if the string is not a number at all, or if
13998  it has trailing garbage.
13999 */
14000 
14001 short QString::toShort( bool *ok, int base ) const
14002 {
14003  long v = toLong( ok, base );
14004  if ( ok && *ok && (v < -32768 || v > 32767) ) {
14005  *ok = FALSE;
14006  v = 0;
14007  }
14008  return (short)v;
14009 }
14010 
14011 /*!
14012  Returns the string converted to an <code>unsigned short</code> value.
14013 
14014  If \a ok is non-null, \a *ok is set to TRUE if there are no
14015  conceivable errors, and FALSE if the string is not a number at all, or if
14016  it has trailing garbage.
14017 */
14018 
14019 ushort QString::toUShort( bool *ok, int base ) const
14020 {
14021  ulong v = toULong( ok, base );
14022  if ( ok && *ok && (v > 65535) ) {
14023  *ok = FALSE;
14024  v = 0;
14025  }
14026  return (ushort)v;
14027 }
14028 
14029 
14030 /*!
14031  Returns the string converted to a <code>int</code> value.
14032 
14033  \code
14034  QString str("FF");
14035  bool ok;
14036  int hex = str.toInt( &ok, 16 ); // will return 255, and ok set to TRUE
14037  int dec = str.toInt( &ok, 10 ); // will return 0, and ok set to FALSE
14038  \endcode
14039 
14040  If \a ok is non-null, \a *ok is set to TRUE if there are no
14041  conceivable errors, and FALSE if the string is not a number at all,
14042  or if it has trailing garbage.
14043 */
14044 
14045 int QString::toInt( bool *ok, int base ) const
14046 {
14047  return (int)toLong( ok, base );
14048 }
14049 
14050 /*!
14051  Returns the string converted to an <code>unsigned int</code> value.
14052 
14053  If \a ok is non-null, \a *ok is set to TRUE if there are no
14054  conceivable errors, and FALSE if the string is not a number at all,
14055  or if it has trailing garbage.
14056 */
14057 
14058 uint QString::toUInt( bool *ok, int base ) const
14059 {
14060  return (uint)toULong( ok, base );
14061 }
14062 
14063 /*!
14064  Returns the string converted to a <code>double</code> value.
14065 
14066  If \a ok is non-null, \a *ok is set to TRUE if there are no conceivable
14067  errors, and FALSE if the string is not a number at all, or if it has
14068  trailing garbage.
14069 */
14070 
14071 double QString::toDouble( bool *ok ) const
14072 {
14073  char *end;
14074 
14075  QCString a = latin1();
14076  // Just latin1() is not sufficient, since U0131 would look like '1'.
14077  for (uint i=0; i<d->len; i++)
14078  if ( d->unicode[i].row() )
14079  a[(int)i]='z';
14080 
14081  double val = strtod( a.data() ? a.data() : "", &end );
14082  if ( ok )
14083  *ok = ( a && *a && ( end == 0 || *end == '\0' ) );
14084  return val;
14085 }
14086 
14087 /*!
14088  Returns the string converted to a <code>float</code> value.
14089 
14090  If \a ok is non-null, \a *ok is set to TRUE if there are no
14091  conceivable errors, and FALSE if the string is not a number at all,
14092  or if it has trailing garbage.
14093 */
14094 
14095 float QString::toFloat( bool *ok ) const
14096 {
14097  return (float)toDouble( ok );
14098 }
14099 
14100 
14101 /*!
14102  Sets the string to the printed value of \a n and returns a
14103  reference to the string.
14104 
14105  The value is converted to \a base notation (default is decimal).
14106  The base must be a value from 2 to 36.
14107 */
14108 
14110 {
14111 #if defined(CHECK_RANGE)
14112  if ( base < 2 || base > 36 ) {
14113  qWarning( "QString::setNum: Invalid base %d", base );
14114  base = 10;
14115  }
14116 #endif
14117  char charbuf[65*sizeof(QChar)];
14118  QChar *buf = (QChar*)charbuf;
14119  QChar *p = &buf[64];
14120  int len = 0;
14121  bool neg;
14122  if ( n < 0 ) {
14123  neg = TRUE;
14124  if ( n == INT_MIN ) {
14125  // Cannot always negate this special case
14126  QString s1, s2;
14127  s1.setNum(n/base);
14128  s2.setNum((-(n+base))%base);
14129  *this = s1 + s2;
14130  return *this;
14131  }
14132  n = -n;
14133  } else {
14134  neg = FALSE;
14135  }
14136  do {
14137  *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14138  n /= base;
14139  len++;
14140  } while ( n );
14141  if ( neg ) {
14142  *--p = '-';
14143  len++;
14144  }
14145  return setUnicode( p, len );
14146 }
14147 
14148 /*!
14149  Sets the string to the printed unsigned value of \a n and
14150  returns a reference to the string.
14151 
14152  The value is converted to \a base notation (default is decimal).
14153  The base must be a value from 2 to 36.
14154 */
14155 
14157 {
14158 #if defined(CHECK_RANGE)
14159  if ( base < 2 || base > 36 ) {
14160  qWarning( "QString::setNum: Invalid base %d", base );
14161  base = 10;
14162  }
14163 #endif
14164  char charbuf[65*sizeof(QChar)];
14165  QChar *buf = (QChar*)charbuf;
14166  QChar *p = &buf[64];
14167  int len = 0;
14168  do {
14169  *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
14170  n /= base;
14171  len++;
14172  } while ( n );
14173  return setUnicode(p,len);
14174 }
14175 
14176 /*!
14177  \fn QString &QString::setNum( int n, int base )
14178  Sets the string to the printed value of \a n and returns a reference
14179  to the string.
14180 */
14181 
14182 /*!
14183  \fn QString &QString::setNum( uint n, int base )
14184  Sets the string to the printed unsigned value of \a n and returns a
14185  reference to the string.
14186 */
14187 
14188 /*!
14189  \fn QString &QString::setNum( short n, int base )
14190  Sets the string to the printed value of \a n and returns a reference
14191  to the string.
14192 */
14193 
14194 /*!
14195  \fn QString &QString::setNum( ushort n, int base )
14196  Sets the string to the printed unsigned value of \a n and returns a
14197  reference to the string.
14198 */
14199 
14200 /*! Sets the string to the printed value of \a n, formatted in the \a f
14201  format with \a prec precision, and returns a reference to the
14202  string.
14203 
14204  \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14205  same meaning as for sprintf().
14206 */
14207 
14208 QString &QString::setNum( double n, char f, int prec )
14209 {
14210 #if defined(CHECK_RANGE)
14211  if ( !(f=='f' || f=='F' || f=='e' || f=='E' || f=='g' || f=='G') ) {
14212  qWarning( "QString::setNum: Invalid format char '%c'", f );
14213  f = 'f';
14214  }
14215 #endif
14216  char format[20];
14217  char buf[120]; // enough for 99 precision?
14218  char *fs = format; // generate format string
14219  *fs++ = '%'; // "%.<prec>l<f>"
14220  if ( prec >= 0 ) {
14221  if ( prec > 99 ) // buf big enough for precision?
14222  prec = 99;
14223  *fs++ = '.';
14224  if ( prec >= 10 ) {
14225  *fs++ = prec / 10 + '0';
14226  *fs++ = prec % 10 + '0';
14227  } else {
14228  *fs++ = prec + '0';
14229  }
14230  }
14231  *fs++ = 'l';
14232  *fs++ = f;
14233  *fs = '\0';
14234  ::sprintf( buf, format, n );
14235  return setLatin1(buf);
14236 }
14237 
14238 /*!
14239  \overload QString &QString::setNum( float n, char f, int prec )
14240 */
14241 
14242 
14243 /*!
14244  A convenience factory function that returns a string representation
14245  of the number \a n.
14246 
14247  \sa setNum()
14248  */
14250 {
14251  QString s;
14252  s.setNum( n, base );
14253  return s;
14254 }
14255 
14256 /*!
14257  A convenience factory function that returns a string representation
14258  of the number \a n.
14259 
14260  \sa setNum()
14261  */
14263 {
14264  QString s;
14265  s.setNum( n, base );
14266  return s;
14267 }
14268 
14269 /*!
14270  A convenience factory function that returns a string representation
14271  of the number \a n.
14272 
14273  \sa setNum()
14274  */
14276 {
14277  QString s;
14278  s.setNum( n, base );
14279  return s;
14280 }
14281 
14282 /*!
14283  A convenience factory function that returns a string representation
14284  of the number \a n.
14285 
14286  \sa setNum()
14287  */
14289 {
14290  QString s;
14291  s.setNum( n, base );
14292  return s;
14293 }
14294 
14295 /*!
14296  This static function returns the printed value of \a n, formatted in the
14297  \a f format with \a prec precision.
14298 
14299  \a f can be 'f', 'F', 'e', 'E', 'g' or 'G', all of which have the
14300  same meaning as for sprintf().
14301 
14302  \sa setNum()
14303  */
14304 QString QString::number( double n, char f, int prec )
14305 {
14306  QString s;
14307  s.setNum( n, f, prec );
14308  return s;
14309 }
14310 
14311 
14312 /*! \obsolete
14313 
14314  Sets the character at position \a index to \a c and expands the
14315  string if necessary, filling with spaces.
14316 
14317  This method is redundant in Qt 2.x, because operator[] will expand
14318  the string as necessary.
14319 */
14320 
14322 {
14323  int spaces = index - d->len;
14324  at(index) = c;
14325  while (spaces-->0)
14326  d->unicode[--index]=' ';
14327 }
14328 
14329 
14330 /*!
14331  \fn const char* QString::data() const
14332 
14333  \obsolete
14334 
14335  Returns a pointer to a 0-terminated classic C string.
14336 
14337  In Qt 1.x, this returned a char* allowing direct manipulation of the
14338  string as a sequence of bytes. In Qt 2.x where QString is a Unicode
14339  string, char* conversion constructs a temporary string, and hence
14340  direct character operations are meaningless.
14341 */
14342 
14343 /*!
14344  \fn bool QString::operator!() const
14345  Returns TRUE if it is a null string, otherwise FALSE. Thus
14346  you can write:
14347 
14348 \code
14349  QString name = getName();
14350  if ( !name )
14351  name = "Rodney";
14352 \endcode
14353 
14354  Note that if you say:
14355 
14356 \code
14357  QString name = getName();
14358  if ( name )
14359  doSomethingWith(name);
14360 \endcode
14361 
14362  Then this will call <tt>operator const char*()</tt>, which will do what
14363  you want, but rather inefficiently - you may wish to define the macro
14364  QT_NO_ASCII_CAST when writing code which you wish to strictly remain
14365  Unicode-clean.
14366 
14367  When you want the above semantics, use <tt>!isNull()</tt>
14368  or even <tt>!!</tt>:
14369 
14370 \code
14371  QString name = getName();
14372  if ( !!name )
14373  doSomethingWith(name);
14374 \endcode
14375 */
14376 
14377 
14378 /*!
14379  \fn QString& QString::append( const QString& str )
14380  Appends \a str to the string and returns a reference to the result.
14381  Equivalent to operator+=().
14382  */
14383 
14384 /*!
14385  \fn QString& QString::append( char ch )
14386  Appends \a ch to the string and returns a reference to the result.
14387  Equivalent to operator+=().
14388  */
14389 
14390 /*!
14391  \fn QString& QString::append( QChar ch )
14392  Appends \a ch to the string and returns a reference to the result.
14393  Equivalent to operator+=().
14394  */
14395 
14396 /*!
14397  Appends \a str to the string and returns a reference to the string.
14398 */
14400 {
14401  uint len1 = length();
14402  uint len2 = str.length();
14403  if ( len2 ) {
14404  setLength(len1+len2);
14405  memcpy( d->unicode+len1, str.unicode(), sizeof(QChar)*len2 );
14406  } else if ( isNull() && !str.isNull() ) { // ## just for 1.x compat:
14407  *this = fromLatin1("");
14408  }
14409  return *this;
14410 }
14411 
14412 /*!
14413  Appends \a c to the string and returns a reference to the string.
14414 */
14415 
14417 {
14418  setLength(length()+1);
14419  d->unicode[length()-1] = c;
14420  return *this;
14421 }
14422 
14423 /*!
14424  Appends \a c to the string and returns a reference to the string.
14425 */
14426 
14428 {
14429  setLength(length()+1);
14430  d->unicode[length()-1] = c;
14431  return *this;
14432 }
14433 
14434 
14435 
14436 /*! \fn char QChar::latin1() const
14437 
14438  Returns a latin-1 copy of this character, if this character is in
14439  the latin-1 character set. If not, this function returns 0.
14440 */
14441 
14442 
14443 /*!
14444  Returns a Latin-1 representation of the string. Note that the returned
14445  value is undefined if the string contains non-Latin-1 characters. If you
14446  want to convert strings into formats other than Unicode, see the
14447  QTextCodec classes.
14448 
14449  This function is mainly useful for boot-strapping legacy code to
14450  use Unicode.
14451 
14452  The result remains valid so long as one unmodified
14453  copy of the source string exists.
14454 
14455  \sa utf8(), local8Bit()
14456 */
14457 const char* QString::latin1() const
14458 {
14459  if ( d->ascii ) {
14460  if ( d->dirtyascii )
14461  delete [] d->ascii;
14462  else
14463  return d->ascii;
14464  }
14465  Q2HELPER(stat_get_ascii++)
14466  Q2HELPER(stat_get_ascii_size+=d->len)
14467  static QTextCodec* codec = QTextCodec::codecForMib(106);
14468  if (codec) // we use utf8 coding also for latin1 if possible
14469  {
14470  QCString utf8str(codec->fromUnicode(*this));
14471  d->ascii = new char[utf8str.length()+1];
14472  if (utf8str.isEmpty())
14473  {
14474  d->ascii[0]='\0'; // make empty string
14475  }
14476  else // copy string
14477  {
14478  qstrcpy(d->ascii,utf8str.data());
14479  }
14480  }
14481  else // fall back to latin1
14482  {
14483  d->ascii = unicodeToAscii( d->unicode, d->len );
14484  }
14485  QCString utf8str(utf8());
14486  d->dirtyascii = 0;
14487  return d->ascii;
14488 }
14489 
14490 /*! \obsolete
14491 
14492  This functions simply calls latin1() and returns the result.
14493 */
14494 const char* QString::ascii() const
14495 {
14496  return latin1();
14497 }
14498 
14499 #ifndef QT_NO_TEXTCODEC
14500 /*!
14501  Returns the string encoded in UTF8 format.
14502 
14503  See QTextCodec for more diverse coding/decoding of Unicode strings.
14504 
14505  \sa QString::fromUtf8(), local8Bit(), latin1()
14506 */
14508 {
14509  static QTextCodec* codec = QTextCodec::codecForMib(106);
14510  return codec
14511  ? codec->fromUnicode(*this)
14512  : QCString(latin1());
14513 }
14514 
14515 /*!
14516  Returns the unicode string decoded from the
14517  first \a len bytes of \a utf8. If \a len is -1 (the default), the
14518  length of \a utf8 is used. If trailing partial characters are in
14519  \a utf8, they are ignored.
14520 
14521  See QTextCodec for more diverse coding/decoding of Unicode strings.
14522 */
14523 QString QString::fromUtf8(const char* utf8, int len)
14524 {
14525  static QTextCodec* codec = QTextCodec::codecForMib(106);
14526  if ( len < 0 ) len = qstrlen(utf8);
14527  return codec
14528  ? codec->toUnicode(utf8, len)
14529  : QString::fromLatin1(utf8, len);
14530 }
14531 #endif // QT_NO_TEXTCODEC
14532 /*!
14533  Creates a QString from Latin1 text. This is the same as the
14534  QString(const char*) constructor, but you can make that constructor
14535  invisible if you compile with the define QT_NO_CAST_ASCII, in which
14536  case you can explicitly create a QString from Latin-1 text using
14537  this function.
14538 */
14539 QString QString::fromLatin1(const char* chars, int len)
14540 {
14541  uint l;
14542  QChar *uc;
14543  if ( len < 0 ) {
14544  uc = internalAsciiToUnicode(chars,&l);
14545  } else {
14546  uc = internalAsciiToUnicode(chars,&l,len);
14547  }
14548  return QString(new QStringData(uc,l,l), TRUE);
14549 }
14550 
14551 /*!
14552  \fn const QChar* QString::unicode() const
14553 
14554  Returns the Unicode representation of the string. The result
14555  remains valid until the string is modified.
14556 */
14557 
14558 /*!
14559  Returns the string encoded in a locale-specific format. On X11, this
14560  is the QTextCodec::codecForLocale(). On Windows, it is a system-defined
14561  encoding.
14562 
14563  See QTextCodec for more diverse coding/decoding of Unicode strings.
14564 
14565  \sa QString::fromLocal8Bit(), latin1(), utf8()
14566 */
14567 
14568 
14570 {
14571 #ifdef QT_NO_TEXTCODEC
14572  return latin1();
14573 #else
14574 #ifdef _WS_X11_
14575  static QTextCodec* codec = QTextCodec::codecForLocale();
14576  return codec
14577  ? codec->fromUnicode(*this)
14578  : QCString(latin1());
14579 #endif
14580 #ifdef _WS_MAC_
14581  static QTextCodec* codec = QTextCodec::codecForLocale();
14582  return codec
14583  ? codec->fromUnicode(*this)
14584  : QCString(latin1());
14585 #endif
14586 #ifdef _WS_WIN_
14587  return qt_winQString2MB( *this );
14588 #endif
14589 #ifdef _WS_QWS_
14590  return utf8(); // ##### if there is ANY 8 bit format supported?
14591 #endif
14592 #endif
14593 }
14594 
14595 /*!
14596  Returns the unicode string decoded from the
14597  first \a len bytes of \a local8Bit. If \a len is -1 (the default), the
14598  length of \a local8Bit is used. If trailing partial characters are in
14599  \a local8Bit, they are ignored.
14600 
14601  \a local8Bit is assumed to be encoded in a locale-specific format.
14602 
14603  See QTextCodec for more diverse coding/decoding of Unicode strings.
14604 */
14606 {
14607 #ifdef QT_NO_TEXTCODEC
14608  return fromLatin1( local8Bit, len );
14609 #else
14610 
14611  if ( !local8Bit )
14612  return QString::null;
14613 #ifdef _WS_X11_
14614  static QTextCodec* codec = QTextCodec::codecForLocale();
14615  if ( len < 0 ) len = qstrlen(local8Bit);
14616  return codec
14617  ? codec->toUnicode(local8Bit, len)
14618  : QString::fromLatin1(local8Bit,len);
14619 #endif
14620 #ifdef _WS_MAC_
14621  static QTextCodec* codec = QTextCodec::codecForLocale();
14622  if ( len < 0 ) len = qstrlen(local8Bit);
14623  return codec
14624  ? codec->toUnicode(local8Bit, len)
14625  : QString::fromLatin1(local8Bit,len);
14626 #endif
14627 // Should this be OS_WIN32?
14628 #ifdef _WS_WIN_
14629  if ( len >= 0 ) {
14630  QCString s(local8Bit,len+1);
14631  return qt_winMB2QString(s);
14632  }
14633  return qt_winMB2QString( local8Bit );
14634 #endif
14635 #ifdef _WS_QWS_
14636  return fromUtf8(local8Bit,len);
14637 #endif
14638 #endif // QT_NO_TEXTCODEC
14639 }
14640 
14641 /*!
14642  \fn QString::operator const char *() const
14643 
14644  Returns latin1(). Be sure to see the warnings documented there.
14645  Note that for new code which you wish to be strictly Unicode-clean,
14646  you can define the macro QT_NO_ASCII_CAST when compiling your code
14647  to hide this function so that automatic casts are not done. This
14648  has the added advantage that you catch the programming error
14649  described under operator!().
14650 */
14651 
14652 /*!
14653  \fn QChar QString::at( uint ) const
14654 
14655  Returns the character at \a i, or 0 if \a i is beyond the length
14656  of the string.
14657 
14658  Note: If this QString is not const or const&, the non-const at()
14659  will be used instead, which will expand the string if \a i is beyond
14660  the length of the string.
14661 */
14662 
14663 /*!
14664  \fn QChar QString::constref(uint i) const
14665  Equivalent to at(i), this returns the QChar at \a i by value.
14666 
14667  \sa ref()
14668 */
14669 
14670 /*!
14671  \fn QChar& QString::ref(uint i)
14672  Returns the QChar at \a i by reference.
14673 
14674  \sa constref()
14675 */
14676 
14677 /*!
14678  \fn QChar QString::operator[](int) const
14679 
14680  Returns the character at \a i, or QChar::null if \a i is beyond the
14681  length of the string.
14682 
14683  Note: If this QString is not const or const&, the non-const operator[]
14684  will be used instead, which will expand the string if \a i is beyond
14685  the length of the string.
14686 */
14687 
14688 /*!
14689  \fn QCharRef QString::operator[](int)
14690 
14691  Returns an object that references the character at \a i.
14692  This reference
14693  can then be assigned to, or otherwise used immediately, but
14694  becomes invalid once further modifications are made to the string.
14695  The QCharRef internal class can be used much like a constant QChar, but
14696  if you assign to it, you change the original string (which enlarges
14697  and detaches itself). You will get compilation errors if you try to
14698  use the result as anything but a QChar.
14699 */
14700 
14701 /*!
14702  \fn QCharRef QString::at( uint i )
14703  Returns a reference to the character at \a i, expanding
14704  the string with QChar::null if necessary. The resulting reference
14705  can then be assigned to, or otherwise used immediately, but
14706  becomes invalid once further modifications are made to the string.
14707 */
14708 
14709 /*!
14710  Internal chunk of code to handle the
14711  uncommon cases of at() above.
14712 */
14714 {
14715  uint olen = d->len;
14716  if ( i >= olen ) {
14717  setLength( i+1 ); // i is index; i+1 is needed length
14718  for ( uint j=olen; j<=i; j++ )
14719  d->unicode[j] = QChar::null;
14720  } else {
14721  // Just be sure to detach
14722  real_detach();
14723  }
14724 }
14725 
14726 
14727 /*!
14728  Resizes the string to \a len unicode characters and copies \a unicode
14729  into the string. If \a unicode is null, nothing is copied, but the
14730  string is resized to \a len anyway. If \a len is zero, the string
14731  becomes a \link isNull() null\endlink string.
14732 
14733  \sa setLatin1(), isNull()
14734 */
14735 
14737 {
14738  if ( len == 0 ) { // set to null string
14739  if ( d != shared_null ) { // beware of nullstring being set to nullstring
14740  deref();
14742  d->ref();
14743  }
14744  } else if ( d->count != 1 || len > d->maxl ||
14745  ( len*4 < d->maxl && d->maxl > 4 ) ) { // detach, grown or shrink
14746  Q2HELPER(stat_copy_on_write++)
14747  Q2HELPER(stat_copy_on_write_size+=d->len)
14748  uint newMax = 4;
14749  while ( newMax < len )
14750  newMax *= 2;
14751  QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
14752  if ( unicode )
14753  memcpy( nd, unicode, sizeof(QChar)*len );
14754  deref();
14755  d = new QStringData( nd, len, newMax );
14756  } else {
14757  d->len = len;
14758  d->dirtyascii = 1;
14759  if ( unicode )
14760  memcpy( d->unicode, unicode, sizeof(QChar)*len );
14761  }
14762  return *this;
14763 }
14764 
14765 /*!
14766  Resizes the string to \a len unicode characters and copies
14767  \a unicode_as_ushorts into the string (on some X11 client
14768  platforms this will involve a byte-swapping pass).
14769 
14770  If \a unicode is null, nothing is copied, but the
14771  string is resized to \a len anyway. If \a len is zero, the string
14772  becomes a \link isNull() null\endlink string.
14773 
14774  \sa setLatin1(), isNull()
14775 */
14776 QString& QString::setUnicodeCodes( const ushort* unicode_as_ushorts, uint len )
14777 {
14778  setUnicode((const QChar*)unicode_as_ushorts, len);
14779  QChar t(0x1234);
14780  if ( unicode_as_ushorts && *((ushort*)&t) == 0x3412 ) {
14781  // Need to byteswap
14782  char* b = (char*)d->unicode;
14783  while ( len-- ) {
14784  char c = b[0];
14785  b[0] = b[1];
14786  b[1] = c;
14787  b += sizeof(QChar);
14788  }
14789  }
14790  return *this;
14791 }
14792 
14793 
14794 /*!
14795  Sets this string to \a str, interpreted as a classic Latin 1 C string.
14796  If the \a len argument is negative (default), it is set to strlen(str).
14797 
14798  If \a str is 0 a null string is created. If \a str is "" an empty
14799  string is created.
14800 
14801  \sa isNull(), isEmpty()
14802 */
14803 
14804 QString &QString::setLatin1( const char *str, int len )
14805 {
14806  if ( str == 0 )
14807  return setUnicode(0,0);
14808  if ( len < 0 )
14809  len = qstrlen(str);
14810  if ( len == 0 ) { // won't make a null string
14811  deref();
14812  uint l;
14813  QChar *uc = internalAsciiToUnicode(str,&l);
14814  d = new QStringData(uc,l,l);
14815  } else {
14816  setUnicode( 0, len ); // resize but not copy
14817  QChar *p = d->unicode;
14818  while ( len-- )
14819  *p++ = *str++;
14820  }
14821  return *this;
14822 }
14823 
14824 
14825 /*!
14826  \fn int QString::compare (const QString & s1, const QString & s2)
14827 
14828  Compare \a s1 to \a s2 returning an integer less than, equal to, or
14829  greater than zero if s1 is, respectively, lexically less than, equal to,
14830  or greater than s2.
14831 */
14832 
14833 /*!
14834  Compares this string to \a s, returning an integer less than, equal to, or
14835  greater than zero if it is, respectively, lexically less than, equal to,
14836  or greater than \a s.
14837 */
14838 int QString::compare( const QString& s ) const
14839 {
14840  return ucstrcmp(*this,s);
14841 }
14842 
14843 bool operator==( const QString &s1, const QString &s2 )
14844 {
14845  return (s1.length() == s2.length()) && s1.isNull() == s2.isNull() &&
14846  (memcmp((char*)s1.unicode(),(char*)s2.unicode(),
14847  s1.length()*sizeof(QChar)) ==0);
14848 }
14849 
14850 bool operator!=( const QString &s1, const QString &s2 )
14851 { return !(s1==s2); }
14852 
14853 bool operator<( const QString &s1, const QString &s2 )
14854 { return ucstrcmp(s1,s2) < 0; }
14855 
14856 bool operator<=( const QString &s1, const QString &s2 )
14857 { return ucstrcmp(s1,s2) <= 0; }
14858 
14859 bool operator>( const QString &s1, const QString &s2 )
14860 { return ucstrcmp(s1,s2) > 0; }
14861 
14862 bool operator>=( const QString &s1, const QString &s2 )
14863 { return ucstrcmp(s1,s2) >= 0; }
14864 
14865 
14866 bool operator==( const QString &s1, const char *s2 )
14867 { return s1==QString(s2); }
14868 
14869 bool operator==( const char *s1, const QString &s2 )
14870 { return QString(s1)==s2; }
14871 
14872 bool operator!=( const QString &s1, const char *s2 )
14873 { return !(s1==s2); }
14874 
14875 bool operator!=( const char *s1, const QString &s2 )
14876 { return !(s1==s2); }
14877 
14878 bool operator<( const QString &s1, const char *s2 )
14879 { return ucstrcmp(s1,s2) < 0; }
14880 
14881 bool operator<( const char *s1, const QString &s2 )
14882 { return ucstrcmp(s1,s2) < 0; }
14883 
14884 bool operator<=( const QString &s1, const char *s2 )
14885 { return ucstrcmp(s1,s2) <= 0; }
14886 
14887 bool operator<=( const char *s1, const QString &s2 )
14888 { return ucstrcmp(s1,s2) <= 0; }
14889 
14890 bool operator>( const QString &s1, const char *s2 )
14891 { return ucstrcmp(s1,s2) > 0; }
14892 
14893 bool operator>( const char *s1, const QString &s2 )
14894 { return ucstrcmp(s1,s2) > 0; }
14895 
14896 bool operator>=( const QString &s1, const char *s2 )
14897 { return ucstrcmp(s1,s2) >= 0; }
14898 
14899 bool operator>=( const char *s1, const QString &s2 )
14900 { return ucstrcmp(s1,s2) >= 0; }
14901 
14902 
14903 /*****************************************************************************
14904  Documentation for QString related functions
14905  *****************************************************************************/
14906 
14907 /*!
14908  \fn bool operator==( const QString &s1, const QString &s2 )
14909  \relates QString
14910  Returns TRUE if the two strings are equal, or FALSE if they are different.
14911  A null string is different from an empty, non-null string.
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 the two strings are equal, or FALSE if they are different.
14920 
14921  Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14922 */
14923 
14924 /*!
14925  \fn bool operator==( const char *s1, const QString &s2 )
14926  \relates QString
14927  Returns TRUE if the two strings are equal, or FALSE if they are different.
14928 
14929  Equivalent to <code>qstrcmp(s1,s2) == 0</code>.
14930 */
14931 
14932 /*!
14933  \fn bool operator!=( const QString &s1, const QString &s2 )
14934  \relates QString
14935  Returns TRUE if the two strings are different, or FALSE if they are equal.
14936 
14937  Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14938 */
14939 
14940 /*!
14941  \fn bool operator!=( const QString &s1, const char *s2 )
14942  \relates QString
14943  Returns TRUE if the two strings are different, or FALSE if they are equal.
14944 
14945  Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14946 */
14947 
14948 /*!
14949  \fn bool operator!=( const char *s1, const QString &s2 )
14950  \relates QString
14951  Returns TRUE if the two strings are different, or FALSE if they are equal.
14952 
14953  Equivalent to <code>qstrcmp(s1,s2) != 0</code>.
14954 */
14955 
14956 /*!
14957  \fn bool operator<( const QString &s1, const char *s2 )
14958  \relates QString
14959  Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
14960 
14961  Equivalent to <code>qstrcmp(s1,s2) < 0</code>.
14962 */
14963 
14964 /*!
14965  \fn bool operator<( const char *s1, const QString &s2 )
14966  \relates QString
14967  Returns TRUE if \a s1 is alphabetically less than \a s2, otherwise FALSE.
14968 
14969  Equivalent to <code>qstrcmp(s1,s2) < 0</code>.
14970 */
14971 
14972 /*!
14973  \fn bool operator<=( const QString &s1, const char *s2 )
14974  \relates QString
14975  Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
14976  otherwise FALSE.
14977 
14978  Equivalent to <code>qstrcmp(s1,s2) <= 0</code>.
14979 */
14980 
14981 /*!
14982  \fn bool operator<=( const char *s1, const QString &s2 )
14983  \relates QString
14984  Returns TRUE if \a s1 is alphabetically less than or equal to \a s2,
14985  otherwise FALSE.
14986 
14987  Equivalent to <code>qstrcmp(s1,s2) <= 0</code>.
14988 */
14989 
14990 /*!
14991  \fn bool operator>( const QString &s1, const char *s2 )
14992  \relates QString
14993  Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
14994 
14995  Equivalent to <code>qstrcmp(s1,s2) > 0</code>.
14996 */
14997 
14998 /*!
14999  \fn bool operator>( const char *s1, const QString &s2 )
15000  \relates QString
15001  Returns TRUE if \a s1 is alphabetically greater than \a s2, otherwise FALSE.
15002 
15003  Equivalent to <code>qstrcmp(s1,s2) > 0</code>.
15004 */
15005 
15006 /*!
15007  \fn bool operator>=( const QString &s1, const char *s2 )
15008  \relates QString
15009  Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
15010  otherwise FALSE.
15011 
15012  Equivalent to <code>qstrcmp(s1,s2) >= 0</code>.
15013 */
15014 
15015 /*!
15016  \fn bool operator>=( const char *s1, const QString &s2 )
15017  \relates QString
15018  Returns TRUE if \a s1 is alphabetically greater than or equal to \a s2,
15019  otherwise FALSE.
15020 
15021  Equivalent to <code>qstrcmp(s1,s2) >= 0</code>.
15022 */
15023 
15024 /*!
15025  \fn QString operator+( const QString &s1, const QString &s2 )
15026  \relates QString
15027  Returns the concatenated string of s1 and s2.
15028 */
15029 
15030 /*!
15031  \fn QString operator+( const QString &s1, const char *s2 )
15032  \relates QString
15033  Returns the concatenated string of s1 and s2.
15034 */
15035 
15036 /*!
15037  \fn QString operator+( const char *s1, const QString &s2 )
15038  \relates QString
15039  Returns the concatenated string of s1 and s2.
15040 */
15041 
15042 /*!
15043  \fn QString operator+( const QString &s, char c )
15044  \relates QString
15045  Returns the concatenated string of s and c.
15046 */
15047 
15048 /*!
15049  \fn QString operator+( char c, const QString &s )
15050  \relates QString
15051  Returns the concatenated string of c and s.
15052 */
15053 
15054 
15055 /*****************************************************************************
15056  QString stream functions
15057  *****************************************************************************/
15058 #ifndef QT_NO_DATASTREAM
15059 /*!
15060  \relates QString
15061  Writes a string to the stream.
15062 
15063  \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15064 */
15065 
15067 {
15068  if ( s.version() == 1 ) {
15069  QCString l( str.latin1() );
15070  s << l;
15071  }
15072  else {
15073  const char* ub = (const char*)str.unicode();
15074  if ( ub || s.version() < 3 ) {
15075  if ( QChar::networkOrdered() ==
15077  s.writeBytes( ub, (int)sizeof(QChar)*str.length() );
15078  } else {
15079  static const uint auto_size = 1024;
15080  char t[auto_size];
15081  char *b;
15082  if ( str.length()*sizeof(QChar) > auto_size ) {
15083  b = new char[str.length()*sizeof(QChar)];
15084  } else {
15085  b = t;
15086  }
15087  int l = str.length();
15088  char *c=b;
15089  while ( l-- ) {
15090  *c++ = ub[1];
15091  *c++ = ub[0];
15092  ub+=sizeof(QChar);
15093  }
15094  s.writeBytes( b, (int)sizeof(QChar)*str.length() );
15095  if ( str.length()*sizeof(QChar) > auto_size )
15096  delete [] b;
15097  }
15098  } else {
15099  // write null marker
15100  s << (Q_UINT32)0xffffffff;
15101  }
15102  }
15103  return s;
15104 }
15105 
15106 /*!
15107  \relates QString
15108  Reads a string from the stream.
15109 
15110  \sa \link datastreamformat.html Format of the QDataStream operators \endlink
15111 */
15112 
15114 {
15115 #ifdef QT_QSTRING_UCS_4
15116 #if defined(_CC_GNU_)
15117 #warning "operator>> not working properly"
15118 #endif
15119 #endif
15120  if ( s.version() == 1 ) {
15121  QCString l;
15122  s >> l;
15123  str = QString( l );
15124  }
15125  else {
15126  Q_UINT32 bytes;
15127  s >> bytes; // read size of string
15128  if ( bytes == 0xffffffff ) { // null string
15129  str = QString::null;
15130  } else if ( bytes > 0 ) { // not empty
15131  str.setLength( bytes/2 );
15132  char* b = (char*)str.d->unicode;
15133  s.readRawBytes( b, bytes );
15134  if ( QChar::networkOrdered() !=
15136  bytes /= 2;
15137  while ( bytes-- ) {
15138  char c = b[0];
15139  b[0] = b[1];
15140  b[1] = c;
15141  b += 2;
15142  }
15143  }
15144  } else {
15145  str = "";
15146  }
15147  }
15148  return s;
15149 }
15150 #endif // QT_NO_DATASTREAM
15151 
15152 /*****************************************************************************
15153  QConstString member functions
15154  *****************************************************************************/
15155 
15156 /*!
15157  \class QConstString qstring.h
15158  \brief A QString which uses constant Unicode data.
15159 
15160  In order to minimize copying, highly optimized applications can use
15161  QConstString to provide a QString-compatible object from existing
15162  Unicode data. It is then the user's responsibility to make sure
15163  that the Unicode data must exist for the entire lifetime of the
15164  QConstString object.
15165 */
15166 
15167 /*!
15168  Constructs a QConstString that uses the first \a length Unicode
15169  characters in the array \a unicode. Any attempt to modify
15170  copies of the string will cause it to create a copy of the
15171  data, thus it remains forever unmodified.
15172 
15173  Note that \a unicode is \e not \e copied. The caller \e must be
15174  able to guarantee that \a unicode will not be deleted or
15175  modified. Since that is generally not the case with \c const strings
15176  (they are references), this constructor demands a non-const pointer
15177  even though it never modifies \a unicode.
15178 */
15180  QString(new QStringData(unicode, length, length),TRUE)
15181 {
15182 }
15183 
15184 /*!
15185  Destroys the QConstString, creating a copy of the data if
15186  other strings are still using it.
15187 */
15189 {
15190  if ( d->count > 1 ) {
15191  QChar* cp = QT_ALLOC_QCHAR_VEC( d->len );
15192  memcpy( cp, d->unicode, d->len*sizeof(QChar) );
15193  d->unicode = cp;
15194  } else {
15195  d->unicode = 0;
15196  }
15197 
15198  // The original d->unicode is now unlinked.
15199 }
15200 
15201 /*!
15202  \fn const QString& QConstString::string() const
15203 
15204  Returns a constant string referencing the data passed during
15205  construction.
15206 */
15207 
15208 /*!
15209  Returns whether the strings starts with \a s, or not.
15210  */
15211 bool QString::startsWith( const QString& s ) const
15212 {
15213  for ( int i =0; i < (int) s.length(); i++ ) {
15214  if ( i >= (int) length() || d->unicode[i] != s[i] )
15215  return FALSE;
15216  }
15217  return TRUE;
15218 }
15219 
15220 
15221 
15222 #if defined(_OS_WIN32_)
15223 
15224 #include <windows.h>
15225 
15226 /*!
15227  Returns a static Windows TCHAR* from a QString, possibly adding NUL.
15228 
15229  The lifetime of the return value is until the next call to this function.
15230 */
15231 const void* qt_winTchar(const QString& str_in, bool addnul)
15232 {
15233  // So that the return value lives long enough.
15234  static QString str;
15235  str = str_in;
15236 
15237 #ifdef UNICODE
15238  static uint buflen = 256;
15239  static TCHAR *buf = new TCHAR[buflen];
15240 
15241  const QChar* uc = str.unicode();
15242 
15243 #define EXTEND if (str.length() > buflen) { delete buf; buf = new TCHAR[buflen=str.length()+1]; }
15244 
15245 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15246  EXTEND
15247  for ( int i=str.length(); i--; )
15248  buf[i] = uc[i].row() << 8 | uc[i].cell();
15249  if ( addnul )
15250  buf[str.length()] = 0;
15251 #else
15252  // Same endianness of TCHAR
15253  if ( addnul ) {
15254  EXTEND
15255  memcpy(buf,uc,sizeof(TCHAR)*str.length());
15256  buf[str.length()] = 0;
15257  } else {
15258  return uc;
15259  }
15260 #endif
15261  return buf;
15262 #undef EXTEND
15263 
15264 #else
15265  return str.latin1();
15266 #endif
15267 }
15268 
15269 /*!
15270  Makes a new null terminated Windows TCHAR* from a QString.
15271 */
15272 void* qt_winTchar_new(const QString& str)
15273 {
15274  TCHAR* result = new TCHAR[str.length()+1];
15275  memcpy(result, qt_winTchar(str,FALSE), sizeof(TCHAR)*str.length());
15276  result[str.length()] = 0;
15277  return result;
15278 }
15279 
15280 /*!
15281  Makes a QString from a Windows TCHAR*.
15282 */
15283 QString qt_winQString(void* tc)
15284 {
15285 #ifdef UNICODE
15286 
15287  int len=0;
15288  while ( ((TCHAR*)tc)[len] )
15289  len++;
15290 #if defined(_WS_X11_) || defined(_OS_WIN32_BYTESWAP_)
15291  QString r;
15292  for ( int i=0; i<len; i++ )
15293  r += QChar(((TCHAR*)tc)[i]&0xff,((TCHAR*)tc)[i]>>8);
15294  return r;
15295 #else
15296  // Same endianness of TCHAR
15297  return QString((QChar*)tc,len);
15298 #endif
15299 #undef EXTEND
15300 #else
15301  return (TCHAR*)tc;
15302 #endif
15303 }
15304 
15305 QCString qt_winQString2MB( const QString& s, int uclen )
15306 {
15307  if ( uclen < 0 )
15308  uclen = s.length();
15309  if ( uclen == 0 )
15310  return QCString();
15311  BOOL used_def;
15312  int bufSize=4096;
15313  QCString mb(bufSize);
15314  int len;
15315  while ( !(len=WideCharToMultiByte(CP_ACP, 0, (const WCHAR*)s.unicode(), uclen,
15316  mb.rawData(), bufSize-1, 0, &used_def)) )
15317  {
15318  int r = GetLastError();
15319  if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15320  bufSize=1+WideCharToMultiByte( CP_ACP, 0,
15321  (const WCHAR*)s.unicode(), uclen,
15322  0, 0, 0, &used_def);
15323  mb.resize(bufSize);
15324  // and try again...
15325  } else {
15326  // Fail.
15327  qWarning("WideCharToMultiByte cannot convert multibyte text (error %d): %s (UTF8)",
15328  r, s.utf8().data());
15329  break;
15330  }
15331  }
15332  mb[len]='\0';
15333  return mb;
15334 }
15335 
15336 // WATCH OUT: mblen must include the NUL (or just use -1)
15337 QString qt_winMB2QString( const char* mb, int mblen )
15338 {
15339  if ( !mb || !mblen )
15340  return QString::null;
15341  const int wclen_auto = 4096;
15342  WCHAR wc_auto[wclen_auto];
15343  int wclen = wclen_auto;
15344  WCHAR *wc = wc_auto;
15345  int len;
15346  while ( !(len=MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15347  mb, mblen, wc, wclen )) )
15348  {
15349  int r = GetLastError();
15350  if ( r == ERROR_INSUFFICIENT_BUFFER ) {
15351  if ( wc != wc_auto ) {
15352  qWarning("Size changed in MultiByteToWideChar");
15353  break;
15354  } else {
15355  wclen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
15356  mb, mblen, 0, 0 );
15357  wc = new WCHAR[wclen];
15358  // and try again...
15359  }
15360  } else {
15361  // Fail.
15362  qWarning("MultiByteToWideChar cannot convert multibyte text");
15363  break;
15364  }
15365  }
15366  if ( len <= 0 )
15367  return QString::null;
15368  QString s( (QChar*)wc, len-1 ); // len-1: we don't want terminator
15369  if ( wc != wc_auto )
15370  delete [] wc;
15371  return s;
15372 }
15373 
15374 
15375 #endif // _OS_WIN32_
static const Q_UINT16 di_03[]
Definition: qstring.cpp:5996
bool deref()
Definition: qshared.h:50
static QTextCodec * codecForLocale()
Definition: qtextcodec.cpp:542
end
while True: pbar.update(maxval-len(onlies[E][S])) #print iS, "/", len(onlies[E][S]) found = False for...
static const Q_UINT16 di_0B[]
Definition: qstring.cpp:6241
static const Q_UINT16 li_00[]
Definition: qstring.cpp:7680
static const Q_UINT8 dir_01[]
Definition: qstring.cpp:8486
static const Q_UINT16 di_07[]
Definition: qstring.cpp:6136
void setAutoDelete(bool del)
Definition: qstack.h:55
static const Q_INT8 num_0[]
Definition: qstring.cpp:10316
bool resize(uint newlen)
Definition: qcstring.h:225
static const Q_UINT16 case_3[]
Definition: qstring.cpp:9930
char * rawData() const
Definition: qcstring.h:216
QDataStream & operator<<(QDataStream &s, const QString &str)
Definition: qstring.cpp:15066
bool isNull() const
Definition: qarray.h:68
QConstString(QChar *unicode, uint length)
Definition: qstring.cpp:15179
static const Q_UINT8 ui_13[]
Definition: qstring.cpp:1037
static const Q_UINT8 ui_02[]
Definition: qstring.cpp:442
bool isNumber() const
Definition: qstring.cpp:11046
Joining
Definition: qstring.h:131
static const Q_UINT16 li_07[]
Definition: qstring.cpp:7925
void qDebug(const char *msg,...)
Definition: qglobal.cpp:376
const QChar * unicode() const
Definition: qstring.h:508
int byteOrder() const
Definition: qdatastream.h:132
static const Q_UINT8 dir_17[]
Definition: qstring.cpp:9046
QString & sprintf(const char *format,...)
Definition: qstring.cpp:12719
#define NEG1
Definition: qstring.cpp:11687
static const Q_UINT16 case_1[]
Definition: qstring.cpp:9860
static QString fromLocal8Bit(const char *, int len=-1)
Definition: qstring.cpp:14605
uint toUInt(bool *ok=0, int base=10) const
Definition: qstring.cpp:14058
QString leftJustify(uint width, QChar fill=' ', bool trunc=FALSE) const
Definition: qstring.cpp:13303
static const Q_UINT16 di_32[]
Definition: qstring.cpp:6836
static const Q_UINT16 di_F9[]
Definition: qstring.cpp:6906
Category
Definition: qstring.h:76
static const Q_UINT16 li_02[]
Definition: qstring.cpp:7750
bool isEmpty() const
Definition: qstring.h:682
QChar()
Definition: qstring.h:205
static const Q_UINT8 ui_FF[]
Definition: qstring.cpp:2332
uchar cl
Definition: qstring.h:189
QString lower() const
Definition: qstring.cpp:13375
long toLong(bool *ok=0, int base=10) const
Definition: qstring.cpp:13834
QString visual(int index=0, int len=-1)
Definition: qstring.cpp:11705
static const Q_UINT8 ui_18[]
Definition: qstring.cpp:1212
Direction direction() const
Definition: qstring.cpp:11114
static QCString result
char * ascii
Definition: qstring.h:343
The QRegExp class provides pattern matching using regular expressions or wildcards.
Definition: qregexp.h:46
QString rightJustify(uint width, QChar fill=' ', bool trunc=FALSE) const
Definition: qstring.cpp:13342
static QChar LRM((ushort) 0x200e)
static int ucstrcmp(const QString &as, const QString &bs)
Definition: qstring.cpp:10693
static const Q_UINT8 ui_0C[]
Definition: qstring.cpp:792
static const int maxlen
Definition: qregexp.cpp:904
static const Q_UINT8 ui_FB[]
Definition: qstring.cpp:2227
uint length() const
Definition: qcstring.h:195
static const Q_UINT8 ui_DB[]
Definition: qstring.cpp:2052
static const Q_UINT16 di_30[]
Definition: qstring.cpp:6766
static const Q_UINT8 ui_2E[]
Definition: qstring.cpp:1632
static const Q_UINT8 dir_03[]
Definition: qstring.cpp:8556
static const Q_UINT16 di_0A[]
Definition: qstring.cpp:6206
static const Q_UINT16 li_0B[]
Definition: qstring.cpp:8030
while(1)
Definition: code.cpp:12603
static const Q_UINT8 dir_0E[]
Definition: qstring.cpp:8906
static const Q_UINT8 dir_09[]
Definition: qstring.cpp:8731
void deleteSelf()
Definition: qstring.cpp:12383
static QString number(long, int base=10)
Definition: qstring.cpp:14249
virtual QCString fromUnicode(const QString &uc, int &lenInOut) const
Definition: qtextcodec.cpp:783
static const Q_UINT16 di_1E[]
Definition: qstring.cpp:6451
static const Q_UINT8 dir_2F[]
Definition: qstring.cpp:9501
static uint computeNewMax(uint len)
Definition: qstring.cpp:12071
bool isSpace() const
Definition: qstring.cpp:11006
static const Q_UINT8 ui_10[]
Definition: qstring.cpp:932
ushort toUShort(bool *ok=0, int base=10) const
Definition: qstring.cpp:14019
QString mid(uint index, uint len=0xffffffff) const
Definition: qstring.cpp:13265
static const Q_UINT8 ui_F8[]
Definition: qstring.cpp:2157
friend Q_EXPORT QDataStream & operator>>(QDataStream &, QString &)
Definition: qstring.cpp:15113
static const Q_UINT8 dir_00[]
Definition: qstring.cpp:8451
bool startsWith(const QString &) const
Definition: qstring.cpp:15211
static QChar LRO((ushort) 0x202d)
static const Q_UINT16 di_06[]
Definition: qstring.cpp:6101
static bool ok_in_base(QChar c, int base)
Definition: qstring.cpp:13817
ushort unicode() const
Definition: qstring.h:151
QChar::Decomposition tag()
Definition: qstring.cpp:11465
static const Q_UINT8 ui_25[]
Definition: qstring.cpp:1492
Joining joining() const
Definition: qstring.cpp:11132
uchar rw
Definition: qstring.h:188
static const Q_UINT8 dir_18[]
Definition: qstring.cpp:9081
static const Q_UINT16 li_0F[]
Definition: qstring.cpp:8135
static bool format(QChar::Decomposition tag, QString &str, int index, int len)
Definition: qstring.cpp:11496
#define QT_STATIC_CONST_IMPL
Definition: qglobal.h:381
bool isLetter() const
Definition: qstring.cpp:11035
static const Q_UINT8 ui_31[]
Definition: qstring.cpp:1737
const bool FALSE
Definition: qglobal.h:370
static int symmetricPairsSize
Definition: qstring.cpp:10681
uint len
Definition: qstring.h:344
static constexpr double fs
Definition: Units.h:100
static const Q_UINT8 dir_0B[]
Definition: qstring.cpp:8801
static const Q_UINT8 ui_FE[]
Definition: qstring.cpp:2297
static const Q_UINT8 ui_0A[]
Definition: qstring.cpp:722
Definition: qstack.h:46
uint count
Definition: qshared.h:51
static const Q_UINT16 li_03[]
Definition: qstring.cpp:7785
QChar head()
Definition: qstring.cpp:11457
bool operator<(const QString &s1, const char *s2)
Definition: qstring.cpp:14878
QString & setUnicodeCodes(const ushort *unicode_as_ushorts, uint len)
Definition: qstring.cpp:14776
Definition: qarray.h:46
The QString class provides an abstraction of Unicode text and the classic C null-terminated char arra...
Definition: qstring.h:350
static const Q_UINT8 dir_0F[]
Definition: qstring.cpp:8941
void qWarning(const char *msg,...)
Definition: qglobal.cpp:409
void deref()
Definition: qstring.cpp:12373
QString upper() const
Definition: qstring.cpp:13404
static const Q_UINT8 ui_26[]
Definition: qstring.cpp:1527
static const Q_UINT16 di_2F[]
Definition: qstring.cpp:6731
unsigned char level
Definition: qstring.cpp:11679
static const Q_UINT8 ui_30[]
Definition: qstring.cpp:1702
static const Q_UINT8 dir_0A[]
Definition: qstring.cpp:8766
string dir
bool operator>=(const QString &s1, const char *s2)
Definition: qstring.cpp:14896
static constexpr double ub
Definition: Units.h:80
int match(QString &str, unsigned int index)
Definition: qstring.cpp:11473
static QString fromLatin1(const char *, int len=-1)
Definition: qstring.cpp:14539
The QChar class provides a light-weight Unicode character.
Definition: qstring.h:56
static const Q_UINT16 di_FB[]
Definition: qstring.cpp:6976
void fill(QChar c, int len=-1)
Definition: qstring.cpp:12865
static QStrList * l
Definition: config.cpp:1044
static const Q_UINT8 ui_21[]
Definition: qstring.cpp:1352
Category category() const
Definition: qstring.cpp:11096
static const Q_UINT8 ui_12[]
Definition: qstring.cpp:1002
Decomposition decompositionTag() const
Definition: qstring.cpp:11210
Q_UINT16 first()
Definition: qstring.cpp:11431
static const Q_UINT8 ui_15[]
Definition: qstring.cpp:1107
static const Q_UINT16 di_24[]
Definition: qstring.cpp:6661
static QChar * asciiToUnicode(const char *, uint *len, uint maxlen=(uint)-1)
Definition: qstring.cpp:12005
unsigned char uchar
Definition: nybbler.cc:11
QString simplifyWhiteSpace() const
Definition: qstring.cpp:13482
static const Q_UINT8 ui_14[]
Definition: qstring.cpp:1072
static const Q_UINT8 dir_22[]
Definition: qstring.cpp:9221
static const Q_UINT16 li_FB[]
Definition: qstring.cpp:8380
static const Q_UINT8 ui_17[]
Definition: qstring.cpp:1177
static const Q_UINT8 dir_21[]
Definition: qstring.cpp:9186
unsigned char Q_UINT8
Definition: qglobal.h:416
QString & remove(uint index, uint len)
Definition: qstring.cpp:13633
static const Q_UINT8 dir_02[]
Definition: qstring.cpp:8521
static const Q_UINT8 ui_0D[]
Definition: qstring.cpp:827
void push(const type *d)
Definition: qstack.h:58
uchar & cell()
Definition: qstring.h:167
static const Q_UINT16 case_21[]
Definition: qstring.cpp:10175
int compare(const QString &s) const
Definition: qstring.cpp:14838
#define QMIN(a, b)
Definition: qglobal.h:391
QCString local8Bit() const
Definition: qstring.cpp:14569
static const Q_UINT16 symmetricPairs[]
Definition: qstring.cpp:10666
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
static const Q_UINT8 ui_04[]
Definition: qstring.cpp:512
type * data() const
Definition: qarray.h:63
static const Q_UINT8 dir_25[]
Definition: qstring.cpp:9326
static const Q_UINT16 di_01[]
Definition: qstring.cpp:5926
bool operator<=(const QString &s1, const char *s2)
Definition: qstring.cpp:14884
static const Q_UINT16 li_0A[]
Definition: qstring.cpp:7995
int digitValue() const
Definition: qstring.cpp:11075
static const Q_UINT8 dir_0C[]
Definition: qstring.cpp:8836
signed char Q_INT8
Definition: qglobal.h:415
static const Q_UINT8 ui_27[]
Definition: qstring.cpp:1562
QString arg(long a, int fieldwidth=0, int base=10) const
Definition: qstring.cpp:12593
static char * unicodeToAscii(const QChar *, uint len)
Definition: qstring.cpp:12058
static const Q_UINT16 case_20[]
Definition: qstring.cpp:10140
const char * data() const
Definition: qstring.h:542
#define Q2HELPER(x)
Definition: qstring.cpp:12221
static constexpr double as
Definition: Units.h:101
bool isLetterOrNumber() const
Definition: qstring.cpp:11055
static const Q_UINT16 li_30[]
Definition: qstring.cpp:8345
static const Q_UINT16 li_1E[]
Definition: qstring.cpp:8205
uint maxl
Definition: qstring.h:345
static const Q_UINT16 di_2E[]
Definition: qstring.cpp:6696
Q_UINT16 next()
Definition: qstring.cpp:11432
Q_EXPORT uint qstrlen(const char *str)
Definition: qcstring.h:81
virtual QString toUnicode(const char *chars, int len) const
Definition: qtextcodec.cpp:757
static QChar::Direction resolv[5][5]
Definition: qstring.cpp:11689
static const Q_UINT8 ui_2F[]
Definition: qstring.cpp:1667
static const Q_UINT16 di_00[]
Definition: qstring.cpp:5891
static const Q_UINT16 li_01[]
Definition: qstring.cpp:7715
QString & setNum(short, int base=10)
Definition: qstring.h:706
static const Q_UINT8 ui_0E[]
Definition: qstring.cpp:862
Q_UINT16 * ligatures
Definition: qstring.cpp:11440
const double e
static const Q_INT8 num_b[]
Definition: qstring.cpp:10421
static QChar PDF((ushort) 0x202c)
QString & operator+=(const QString &str)
Definition: qstring.cpp:14399
static const Q_UINT8 ui_20[]
Definition: qstring.cpp:1317
static const Q_UINT16 case_4[]
Definition: qstring.cpp:9965
QChar at(uint i) const
Definition: qstring.h:492
const char * ascii() const
Definition: qstring.cpp:14494
QDataStream & writeBytes(const char *, uint len)
static const Q_UINT8 dir_06[]
Definition: qstring.cpp:8661
float toFloat(bool *ok=0) const
Definition: qstring.cpp:14095
static int ucstrncmp(const QChar *a, const QChar *b, int l)
Definition: qstring.cpp:10711
static bool networkOrdered()
Definition: qstring.h:172
int contains(QChar c, bool cs=TRUE) const
Definition: qstring.cpp:13104
bool isEmpty() const
Definition: qstack.h:57
static const Q_UINT8 dir_FF[]
Definition: qstring.cpp:9746
static const Q_INT8 num_ff[]
Definition: qstring.cpp:10596
static const Q_UINT16 case_1e[]
Definition: qstring.cpp:10070
QString left(uint len) const
Definition: qstring.cpp:13199
static const Q_INT8 num_f[]
Definition: qstring.cpp:10526
static const Q_UINT8 ui_FD[]
Definition: qstring.cpp:2262
uint length() const
Definition: qstring.h:679
static const Q_UINT8 ui_E0[]
Definition: qstring.cpp:2122
bool mirrored() const
Definition: qstring.cpp:11149
std::void_t< T > n
static const Q_UINT8 dir_30[]
Definition: qstring.cpp:9536
const double a
static const Q_INT8 num_e[]
Definition: qstring.cpp:10491
static const Q_UINT8 ui_28[]
Definition: qstring.cpp:1597
static constexpr double mb
Definition: Units.h:79
QChar mirroredChar() const
Definition: qstring.cpp:11165
QT_STATIC_CONST QChar replacement
Definition: qstring.h:69
QDataStream & readRawBytes(char *, uint len)
static const Q_UINT8 ui_00[]
Definition: qstring.cpp:370
static const Q_UINT8 ui_24[]
Definition: qstring.cpp:1457
static QTextCodec * codecForMib(int mib)
Definition: qtextcodec.cpp:354
const unsigned short * ucs2() const
Definition: qstring.cpp:12092
static QChar LRE((ushort) 0x202a)
unsigned long ulong
Definition: qglobal.h:352
bool isPrint() const
Definition: qstring.cpp:10996
p
Definition: test.py:223
QString & replace(uint index, uint len, const QString &)
Definition: qstring.cpp:13665
static const Q_UINT16 case_fb[]
Definition: qstring.cpp:10210
static const Q_UINT16 di_1F[]
Definition: qstring.cpp:6486
static Entry * current
static const Q_UINT8 dir_26[]
Definition: qstring.cpp:9361
const char * data() const
Definition: qcstring.h:207
static const Q_UINT16 li_06[]
Definition: qstring.cpp:7890
static const Q_UINT16 di_0F[]
Definition: qstring.cpp:6381
static const Q_UINT16 li_21[]
Definition: qstring.cpp:8275
static const Q_UINT16 di_0E[]
Definition: qstring.cpp:6346
static QChar RLE((ushort) 0x202b)
CodeOutputInterface * code
static const Q_UINT8 dir_16[]
Definition: qstring.cpp:9011
static const Q_UINT8 ui_16[]
Definition: qstring.cpp:1142
string tmp
Definition: languages.py:63
static const Q_UINT8 ui_01[]
Definition: qstring.cpp:407
static const Q_UINT8 dir_1F[]
Definition: qstring.cpp:9116
QT_STATIC_CONST QChar byteOrderMark
Definition: qstring.h:70
void compose()
Definition: qstring.cpp:11543
static const Q_UINT16 ligature_map[]
Definition: qstring.cpp:7187
static const Q_UINT8 ui_09[]
Definition: qstring.cpp:687
signed char override
Definition: qstring.cpp:11680
void subat(uint)
Definition: qstring.cpp:14713
static int ucstrnicmp(const QChar *a, const QChar *b, int l)
Definition: qstring.cpp:10720
static const Q_UINT16 li_1F[]
Definition: qstring.cpp:8240
static QString fromUcs2(const unsigned short *ucs2)
Definition: qstring.cpp:12119
QChar lower() const
Definition: qstring.cpp:11229
static const Q_UINT16 li_04[]
Definition: qstring.cpp:7820
unsigned int Q_UINT32
Definition: qglobal.h:420
bool isPunct() const
Definition: qstring.cpp:11026
static const Q_UINT16 di_FD[]
Definition: qstring.cpp:7046
void ref()
Definition: qshared.h:49
static const Q_UINT8 *const unicode_info[256]
Definition: qstring.cpp:2367
QString & operator=(const QString &)
Definition: qstring.cpp:12402
static const Q_UINT16 di_05[]
Definition: qstring.cpp:6066
int findRev(QChar c, int index=-1, bool cs=TRUE) const
Definition: qstring.cpp:13021
static const Q_UINT16 di_20[]
Definition: qstring.cpp:6521
QLigature(QChar c)
Definition: qstring.cpp:11444
static const Q_UINT8 dir_FE[]
Definition: qstring.cpp:9711
static const Q_UINT8 dir_2E[]
Definition: qstring.cpp:9466
static const Q_UINT8 dir_23[]
Definition: qstring.cpp:9256
static const Q_UINT8 dir_10[]
Definition: qstring.cpp:8976
QString stripWhiteSpace() const
Definition: qstring.cpp:13438
static const Q_UINT8 ui_05[]
Definition: qstring.cpp:547
Direction
Definition: qstring.h:118
int version() const
Definition: qdatastream.h:141
static const Q_UINT16 di_09[]
Definition: qstring.cpp:6171
int match(const QCString &str, int index=0, int *len=0, bool indexIsStart=TRUE) const
Definition: qregexp.cpp:649
static const Q_UINT8 ui_07[]
Definition: qstring.cpp:617
unsigned short Q_UINT16
Definition: qglobal.h:418
static const Q_UINT16 di_0D[]
Definition: qstring.cpp:6311
static const Q_UINT16 di_FE[]
Definition: qstring.cpp:7081
static const Q_UINT8 dir_24[]
Definition: qstring.cpp:9291
QBidiState(unsigned char l, signed char o)
Definition: qstring.cpp:11682
static const Q_UINT16 di_21[]
Definition: qstring.cpp:6556
static const Q_UINT16 *const ligature_info[256]
Definition: qstring.cpp:8415
static const Q_UINT8 ui_FA[]
Definition: qstring.cpp:2192
static const Q_UINT8 ui_06[]
Definition: qstring.cpp:582
static const Q_UINT16 li_0D[]
Definition: qstring.cpp:8100
unsigned short ushort
Definition: qglobal.h:350
static const Q_UINT8 ui_03[]
Definition: qstring.cpp:477
void setExpand(uint index, QChar c)
Definition: qstring.cpp:14321
static const Q_UINT8 dir_FD[]
Definition: qstring.cpp:9676
static const Q_UINT8 dir_0D[]
Definition: qstring.cpp:8871
static const Q_UINT8 ui_33[]
Definition: qstring.cpp:1807
static const Q_UINT16 di_0C[]
Definition: qstring.cpp:6276
static const Q_UINT8 ui_D8[]
Definition: qstring.cpp:2017
static const Q_UINT8 dir_28[]
Definition: qstring.cpp:9431
bool operator>(const QString &s1, const char *s2)
Definition: qstring.cpp:14890
static QString fromUtf8(const char *, int len=-1)
Definition: qstring.cpp:14523
bool isDigit() const
Definition: qstring.cpp:11066
bool isMark() const
Definition: qstring.cpp:11017
static const Q_UINT16 di_02[]
Definition: qstring.cpp:5961
QStringData * d
Definition: qstring.h:560
static const Q_UINT8 ui_4D[]
Definition: qstring.cpp:1877
bool operator==(const QString &s1, const QString &s2)
Definition: qstring.cpp:14843
static QChar * internalAsciiToUnicode(const QByteArray &ba, uint *len)
Definition: qstring.cpp:11977
uint dirtyascii
Definition: qstring.h:346
static const Q_UINT16 di_31[]
Definition: qstring.cpp:6801
static const Q_UINT8 dir_20[]
Definition: qstring.cpp:9151
int find(QChar c, int index=0, bool cs=TRUE) const
Definition: qstring.cpp:12902
QT_STATIC_CONST QChar byteOrderSwapped
Definition: qstring.h:71
static const Q_UINT8 ui_DF[]
Definition: qstring.cpp:2087
void truncate(uint pos)
Definition: qstring.cpp:12490
static const Q_UINT8 ui_23[]
Definition: qstring.cpp:1422
static const Q_UINT16 case_2[]
Definition: qstring.cpp:9895
static unsigned int reverse(QString &chars, unsigned char *level, unsigned int a, unsigned int b)
Definition: qstring.cpp:11649
static const Q_UINT8 dir_07[]
Definition: qstring.cpp:8696
QT_STATIC_CONST QChar nbsp
Definition: qstring.h:72
static const Q_UINT8 *const direction_info[256]
Definition: qstring.cpp:9781
static const Q_UINT16 case_10[]
Definition: qstring.cpp:10035
static const Q_UINT8 dir_05[]
Definition: qstring.cpp:8626
static const Q_UINT8 ui_08[]
Definition: qstring.cpp:652
static const Q_UINT8 ui_11[]
Definition: qstring.cpp:967
static const Q_UINT8 ui_1E[]
Definition: qstring.cpp:1247
static const Q_INT8 num_d[]
Definition: qstring.cpp:10456
static const Q_INT8 num_20[]
Definition: qstring.cpp:10561
QChar::Direction basicDirection()
Definition: qstring.cpp:11621
char latin1() const
Definition: qstring.h:150
#define QT_DELETE_QCHAR_VEC(P)
Definition: qstring.cpp:11947
QChar * unicode
Definition: qstring.h:342
static const Q_INT8 *const decimal_info[256]
Definition: qstring.cpp:10631
static const Q_UINT16 di_FC[]
Definition: qstring.cpp:7011
static const Q_UINT16 di_33[]
Definition: qstring.cpp:6871
Q_EXPORT char * qstrcpy(char *dst, const char *src)
Definition: qcstring.h:87
int toInt(bool *ok=0, int base=10) const
Definition: qstring.cpp:14045
QT_STATIC_CONST QChar null
Definition: qstring.h:68
static const Q_UINT16 di_04[]
Definition: qstring.cpp:6031
const char * latin1() const
Definition: qstring.cpp:14457
uchar & row()
Definition: qstring.h:168
bool remove()
Definition: qstack.h:60
static bool * b
Definition: config.cpp:1043
bool isNull() const
Definition: qstring.h:379
static const Q_UINT16 case_5[]
Definition: qstring.cpp:10000
static const Q_UINT16 di_10[]
Definition: qstring.cpp:6416
static const Q_UINT16 li_22[]
Definition: qstring.cpp:8310
static const Q_UINT16 decomposition_map[]
Definition: qstring.cpp:2403
Q_UINT16 current()
Definition: qstring.cpp:11433
static const Q_UINT8 dir_FB[]
Definition: qstring.cpp:9606
static const Q_UINT8 ui_34[]
Definition: qstring.cpp:1842
bool operator!=(const QString &s1, const QString &s2)
Definition: qstring.cpp:14850
list x
Definition: train.py:276
static const Q_UINT16 case_0[]
Definition: qstring.cpp:9825
QString & setLatin1(const char *, int len=-1)
Definition: qstring.cpp:14804
static const Q_UINT8 dir_27[]
Definition: qstring.cpp:9396
void setLength(uint pos)
Definition: qstring.cpp:12508
The QDataStream class provides serialization of binary data to a QIODevice.
Definition: qdatastream.h:47
static const Q_UINT16 case_1f[]
Definition: qstring.cpp:10105
static const Q_INT8 num_6[]
Definition: qstring.cpp:10351
static const Null null
Definition: qstring.h:376
static const Q_UINT8 ui_0B[]
Definition: qstring.cpp:757
static const Q_UINT16 case_ff[]
Definition: qstring.cpp:10245
static const Q_UINT16 li_0C[]
Definition: qstring.cpp:8065
static const Q_UINT16 *const case_info[256]
Definition: qstring.cpp:10280
static const Q_UINT16 di_23[]
Definition: qstring.cpp:6626
static const Q_UINT8 ui_0F[]
Definition: qstring.cpp:897
#define QT_ALLOC_QCHAR_VEC(N)
Definition: qstring.cpp:11946
static const Q_UINT8 ui_9F[]
Definition: qstring.cpp:1912
const char * cs
QString decomposition() const
Definition: qstring.cpp:11186
Provides conversion between text encodings.
Definition: qtextcodec.h:62
std::string escape(std::string const &str)
static bool is_neutral(unsigned short dir)
Definition: qstring.cpp:11607
static const Q_UINT8 dir_A4[]
Definition: qstring.cpp:9571
static const Q_INT8 num_9[]
Definition: qstring.cpp:10386
Q_UINT16 * cur
Definition: qstring.cpp:11441
static const Q_UINT8 ui_A4[]
Definition: qstring.cpp:1947
unsigned long long uint64
Definition: qglobal.h:361
static QChar RLO((ushort) 0x202e)
bool findArg(int &pos, int &len) const
Definition: qstring.cpp:12674
static const Q_UINT16 *const decomposition_info[256]
Definition: qstring.cpp:7151
static const Q_UINT8 ui_22[]
Definition: qstring.cpp:1387
static const Q_UINT8 ui_D7[]
Definition: qstring.cpp:1982
QCString utf8() const
Definition: qstring.cpp:14507
uint size() const
Definition: qarray.h:65
static const Q_UINT16 di_22[]
Definition: qstring.cpp:6591
unsigned uint
Definition: qglobal.h:351
byte bytes
Alias for common language habits.
Definition: datasize.h:101
QString & setUnicode(const QChar *unicode, uint len)
Definition: qstring.cpp:14736
static const Q_UINT8 ui_32[]
Definition: qstring.cpp:1772
QString & insert(uint index, const QString &)
Definition: qstring.cpp:13523
static QCString * s
Definition: config.cpp:1042
#define Q_EXPORT
Definition: qglobal.h:468
ulong toULong(bool *ok=0, int base=10) const
Definition: qstring.cpp:13895
const bool TRUE
Definition: qglobal.h:371
static QCString str
QString right(uint len) const
Definition: qstring.cpp:13231
static const Q_UINT16 li_05[]
Definition: qstring.cpp:7855
QChar upper() const
Definition: qstring.cpp:11248
short toShort(bool *ok=0, int base=10) const
Definition: qstring.cpp:14001
void real_detach()
Definition: qstring.cpp:12368
uint64 toUInt64(bool *ok=0, int base=10) const
Definition: qstring.cpp:13948
static const Q_UINT8 dir_04[]
Definition: qstring.cpp:8591
type * top() const
Definition: qstack.h:63
static const Q_UINT16 li_10[]
Definition: qstring.cpp:8170
static QChar RLM((ushort) 0x200f)
QString()
Definition: qstring.h:652
static QStringData * makeSharedNull()
Definition: qstring.cpp:12190
static const Q_UINT8 ui_1F[]
Definition: qstring.cpp:1282
static const Q_UINT8 dir_FC[]
Definition: qstring.cpp:9641
static const Q_UINT16 di_FF[]
Definition: qstring.cpp:7116
static QStringData * shared_null
Definition: qstring.h:561
static const Q_UINT16 li_09[]
Definition: qstring.cpp:7960
double toDouble(bool *ok=0) const
Definition: qstring.cpp:14071
static const Q_UINT16 di_FA[]
Definition: qstring.cpp:6941
Decomposition
Definition: qstring.h:124